Unquoted bracket syntax in `argument-hint` frontmatter causes YAML to
parse the value as an array/mapping instead of a string literal. This
crashes Claude Code's tab-completion TUI with React error #31 ("Objects
are not valid as a React child") when the renderer tries to display the
hint.
Two commands affected:
- `heal-skill`: `[optional: ...]` parsed as `[{optional: "..."}]`
- `create-agent-skill`: `[skill ...]` parsed as `["skill ..."]`
Fix: wrap values in quotes, consistent with the other 18 commands in the
plugin that already quote their `argument-hint` values.
Ref: https://github.com/anthropics/claude-code/issues/29422
Reports and decisions are implementation artifacts that don't need to
persist in the repository. Plans in docs/plans/ are retained as living
documents that track implementation progress.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Strengthen brainstorm intake: thorough read, carry ALL content, reference source inline
- Add origin: frontmatter field to all three plan templates (MINIMAL, MORE, A LOT)
- Rename References to Sources sections, add brainstorm as first entry
- Add brainstorm cross-check checklist in final review step
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add System-Wide Test Check to work command task execution loop (5 questions: callbacks, real chain coverage, orphaned state, API parity, error alignment)
- Add integration test guidance to Test Continuously section
- Add System-Wide Impact sections to plan templates (MORE + A LOT)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- fix(lfg, slfg): make ralph-loop step optional — graceful fallback
when ralph-wiggum skill not installed (#154); add explicit
"do not stop" instruction across all pipeline steps (#134)
- fix(plan): add mandatory "Write Plan File" step with explicit Write
tool instructions before post-generation options — plan always
written to disk even in LFG/SLFG pipeline context (#155, #134)
- fix(plan): use full qualified agent name for spec-flow-analyzer
to prevent Claude prepending wrong 'workflows:' prefix (#193)
Closes#154, #155, #193
Contributing to #134
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Stop stripping namespace prefixes when converting commands to Copilot
skills. `workflows:plan` now becomes `workflows-plan` instead of just
`plan`, avoiding clashes with Copilot's own features in the chat UI.
Also updates slash command references in body text to match:
`/workflows:plan` → `/workflows-plan`.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add copilot case to resolveTargetOutputRoot so `install --to copilot`
writes to .github/ in the current directory instead of falling through
to the opencode default (~/.config/opencode).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The copilot entry in the targets record was missing its closing `},`
after merging with the gemini target branch, causing a parse error.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Extract named GeminiMcpServer type (eliminates NonNullable indexing)
- Deep-merge mcpServers in settings.json (preserves existing entries)
- Warn when existing settings.json cannot be parsed
- Add test for uniqueName dedup (agent/skill name collision)
- Add test for TOML triple-quote escaping
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add `--to gemini` support for both `convert` and `install` commands,
converting Claude Code plugins into Gemini CLI-compatible format.
- Agents convert to `.gemini/skills/*/SKILL.md` with description frontmatter
- Commands convert to `.gemini/commands/*.toml` with TOML prompt format
- Namespaced commands create directory structure (workflows:plan -> workflows/plan.toml)
- Skills pass through unchanged (identical SKILL.md standard)
- MCP servers written to `.gemini/settings.json` with merge support
- Content transforms: .claude/ paths, Task calls, @agent references
- Hooks emit warning (different format in Gemini)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Copilot as the 6th converter target, transforming Claude Code plugins
into Copilot's native format: custom agents (.agent.md), agent skills
(SKILL.md), and MCP server configuration JSON.
Component mapping:
- Agents → .github/agents/{name}.agent.md (with Copilot frontmatter)
- Commands → .github/skills/{name}/SKILL.md
- Skills → .github/skills/{name}/ (copied as-is)
- MCP servers → .github/copilot-mcp-config.json
- Hooks → skipped with warning
Also adds `compound sync copilot` support and fixes YAML quoting for
the `*` character in frontmatter serialization.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Plan templates now include `status: active` in YAML frontmatter
- /workflows:work updates plan status to `completed` after shipping
- Agents can grep frontmatter to distinguish current vs historical plans
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add sync --target droid (skills to ~/.factory/skills/)
- Add sync --target cursor (skills + MCP to .cursor/)
- Extract expandHome/resolveTargetHome to src/utils/resolve-home.ts
- Remove duplicated path helpers from convert.ts and install.ts
- Bump version to 0.6.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>