* feat: installer v2 — selective install, interactive TUI, consolidate cluster
One coherent, dependency-free installer (bash 3.2+, zero deps) that
consolidates 7 conflicting install.sh PRs and fixes#532.
Selective install (compose freely; empty = everything):
- --division / --agent / --agents-file filter across both source tools and
the flat converted outputs via a slug-based allow-set (#157, #487)
- --list [tools|teams|agents] and --dry-run
Install mechanics:
- --link symlink vs copy (#233); --path + env-var fallbacks (#216);
auto-run convert.sh when integration files are missing (#426);
resolve_tool_path dynamic detection (#327); set -e-safe increments (#505)
Interactive wizard (pure bash):
- Tools -> Teams -> Review, arrow-key nav, space toggle, a/n all/none,
live / search, live agent counts, inline OpenCode capacity warning,
alt-screen takeover with trap-based Ctrl-C restore, non-TTY fallback
#532: installing a subset keeps you under OpenCode's ~119 scanner cap
(upstream anomalyco/opencode#27988); installer warns when exceeded; README
documents it.
New scripts/lib.sh holds shared frontmatter/slug helpers (used by
convert.sh too) + ANSI/TUI primitives.
Closes#157, #216, #233, #327, #426, #487, #505.
Co-Authored-By: kienbui1995 <kienbui1995@users.noreply.github.com>
Co-Authored-By: Shiven0504 <Shiven0504@users.noreply.github.com>
Co-Authored-By: rounakkumarsingh <rounakkumarsingh@users.noreply.github.com>
Co-Authored-By: toukanno <toukanno@users.noreply.github.com>
Co-Authored-By: ilyaivasyk <ilyaivasyk@users.noreply.github.com>
Co-Authored-By: Jason2031 <Jason2031@users.noreply.github.com>
Co-Authored-By: ShaoJiaZhen <ShaoJiaZhen@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(installer): robust arrow-key reading (bash 3.2 integer timeouts + SS3)
read_key used a fractional -t 0.01 timeout, which bash 3.2 (/bin/bash on
macOS) doesn't support — so arrow-key escape bytes ([A/[B) leaked through
and were parsed as letter commands (toggling instead of moving). Rewrite
to read the sequence byte-by-byte with integer timeouts and handle both
CSI ([) and SS3 (O) cursor modes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(installer): clear-to-end-of-line per row so frames don't bleed
draw_frame only cleared below the frame (\033[0J), so when a new screen's
lines were shorter than the previous screen's, the old tails (tool paths,
warnings) bled through on the right. Now erase-to-eol (\033[K) on every
line before the screen-clear.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(installer): 2-column grid for Tools/Teams on the Review screen
Replaces the wrapping space-joined 'Tools:'/'Teams:' lines with a compact
column-major 2-column grid (each item on its own line, like the selectors),
so long rosters stay readable and on-screen instead of wrapping.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(installer): Review layout — space after Teams, warning below Install
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(installer): consistent screen layout across all 3 screens
Standard vertical rhythm everywhere: pager -> description -> content ->
selection summary -> navigation -> warnings. Splits the selector footer
into separate summary/nav/warning lines (SEL_SUMMARY_FN/SEL_NAV/
SEL_WARN_FN) and reorders the Review screen to match.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: kienbui1995 <kienbui1995@users.noreply.github.com>
Co-authored-by: Shiven0504 <Shiven0504@users.noreply.github.com>
Co-authored-by: rounakkumarsingh <rounakkumarsingh@users.noreply.github.com>
Co-authored-by: toukanno <toukanno@users.noreply.github.com>
Co-authored-by: ilyaivasyk <ilyaivasyk@users.noreply.github.com>
Co-authored-by: Jason2031 <Jason2031@users.noreply.github.com>
Co-authored-by: ShaoJiaZhen <ShaoJiaZhen@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Migrates Gemini CLI to native subagents (~/.gemini/agents/) + quotes zk-steward description. Rebased from #472; e2e-verified with real gemini v0.43.0. Closes#473.
Co-Authored-By: Tomo Wang <tomo_wang@163.com>
Adds Codex as a conversion/install target: each agent → `~/.codex/agents/<slug>.toml` with the three required Codex fields (name, description, developer_instructions).
Validated: all 184 agents generate valid, parseable TOML (incl. 21k-char agents with embedded code blocks) via the PR's TOML basic-string escaper. Matches OpenAI's documented custom-agent schema.
Thanks @yunuskilicdev.
Adds finance/ to AGENT_DIRS in all 3 scripts, CI workflow trigger paths, CONTRIBUTING.md category list, and README.md division roster. Also fixes duplicate sales entry in lint-agents.sh.
Syncs agent directory lists (academic/, sales/, strategy/) across all three scripts: lint-agents.sh, convert.sh, install.sh. Refactors install.sh to use shared AGENT_DIRS constant, eliminating duplication. Closes#242.
Remove redundant tools list from agent.yaml generation since extend: default
already inherits Kimi's default toolset. This simplifies maintenance and
follows the reviewer's suggestion to avoid hardcoded tool lists.
Closes review feedback on PR #195
Add complete support for Kimi Code CLI agent format.
- Add convert_kimi() function to generate YAML agent specs
- Add install_kimi() function to install agents to ~/.config/kimi/agents/
- Add Kimi to tool detection and installer UI
- Add integrations/kimi/ directory (generated files gitignored)
- Update integrations/README.md with Kimi documentation
- Add generated agent directories to .gitignore
Users can generate agents with: ./scripts/convert.sh --tool kimi
Running `convert.sh --tool aider` previously also wrote the Windsurf
output (and vice versa) because write_single_file_outputs dumped all
formats unconditionally. Each single-file format now only writes when
its tool is selected.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add convert_qwen() to scripts/convert.sh for generating Qwen SubAgent .md files
- Add install_qwen() to scripts/install.sh for installing to .qwen/agents/ (project-scoped)
- Add qwen detection, tool label, and install cases
- Update README.md with Qwen in supported tools table + usage section
- Add integrations/qwen/agents/ to .gitignore + create .gitkeep
- Add Qwen Code compatibility note to CONTRIBUTING.md
- Preserve tools: field in Qwen output when present in source agents
- Fix interactive installer to show dynamic [1-N] toggle range
- Update README roadmap checklist to include Qwen Code
Qwen SubAgents use minimal YAML frontmatter (name, description) with optional tools: field preserved from source. Body content passes through unchanged.
Tested with 120 agents — all convert and install successfully.
Add yellow, violet, rose, lime, gray, and fuchsia to
resolve_opencode_color() — these were passing through as
plain strings and breaking OpenCode's hex-only color validation.
Fixes#108
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
OpenClaw support:
- Add section-splitting convert_openclaw() to convert.sh that routes
## headers by keyword into SOUL.md (persona) vs AGENTS.md (operations)
and generates IDENTITY.md with emoji + vibe from frontmatter
- Add integrations/openclaw/ to .gitignore
Frontmatter additions (all 112 agents):
- Add emoji and vibe fields to every agent for OpenClaw IDENTITY.md
generation and future dashboard/catalog use
- Add services field to carousel-growth-engine (Gemini API, Upload-Post)
- Add emoji/vibe to 7 new paid-media agents from PR #83
Agent quality:
- Rewrite accounts-payable-agent to be vendor-agnostic (remove AgenticBTC
dependency, use generic payments.* interface)
Documentation:
- CONTRIBUTING.md: Add Persona/Operations section grouping guidance,
emoji/vibe/services frontmatter fields, external services editorial policy
- README.md: Add OpenClaw to supported tools, update agent count to 112,
reduce third-party OpenClaw repo mention to one-line attribution
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add game-development to AGENT_DIRS in convert.sh, lint-agents.sh,
install.sh, and the CI workflow
- Remove maxdepth 1 from find commands so nested subdirectories
(e.g., game-development/unity/) are discovered
- Update CI git diff globs to **/*.md for recursive matching
- Remove strategy from lint AGENT_DIRS (playbooks, not agents)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prepares infrastructure for the upcoming Paid Media Division (PR #83).
Registers paid-media in convert.sh, lint-agents.sh, install.sh, and
the lint-agents GitHub Actions workflow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Without mode: subagent, all 68 agents default to mode: all and appear as
primary agents the user Tab-cycles through, making the UX unusable.
With mode: subagent they are invoked on-demand via @agent-name.
OpenCode only accepts hex color codes (e.g. #00FFFF), not named colors
(e.g. cyan). Add resolve_opencode_color() with a 14-entry lookup table
and wire it into convert_opencode(). Colors already in hex pass through.
OpenCode docs now specify agents/ (plural) as the standard directory name;
agent/ (singular) is legacy backwards-compat. Update the converter output
path, installer source/dest paths, and .gitignore entry accordingly.