Commit Graph

48 Commits

Author SHA1 Message Date
Trevin Chow
4952007cab fix: remove plugin versions from marketplace.json and fix brittle test
- Remove plugin version fields from marketplace.json -- canonical
  versions live in each plugin's plugin.json. Duplicating them created
  drift that release-please couldn't maintain.
- Remove version sync logic from metadata.ts (description sync kept)
- Fix release-preview test to compute expected versions dynamically
  from current manifests instead of hardcoding them
2026-03-18 01:45:49 -07:00
Trevin Chow
754c2a893b fix: stabilize compound-engineering component counts (#299) 2026-03-17 23:46:27 -07:00
Trevin Chow
51f906c9ff fix: enforce release metadata consistency (#297) 2026-03-17 19:17:25 -07:00
Trevin Chow
78971c9027 fix: make GitHub releases canonical for release-please (#295) 2026-03-17 18:40:51 -07:00
Trevin Chow
f47f829d81 feat: migrate repo releases to manual release-please (#293) 2026-03-17 17:58:13 -07:00
Kieran Klaassen
6f561f94b4 fix: harden codex copied skill rewriting (#285) 2026-03-16 21:25:59 -07:00
Kieran Klaassen
82c1fe86df chore: remove deprecated workflows:* skill aliases (#284)
* docs: capture codex skill prompt model

* fix: align codex workflow conversion

* chore: remove deprecated workflows:* skill aliases

The workflows:brainstorm, workflows:plan, workflows:work, workflows:review,
and workflows:compound aliases have been deprecated long enough. Remove them
and update skill counts (46 → 41) across plugin.json, marketplace.json,
README, and CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Trevin Chow <trevin@trevinchow.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 23:19:03 -05:00
Sphia Sadek
dfff20e1ad fix(kiro): parse .mcp.json wrapper key and support remote MCP servers (#259)
* fix(kiro): parse .mcp.json wrapper key and support remote MCP servers

* refactor: extract unwrapMcpServers helper to deduplicate parser logic

Address review feedback by extracting the mcpServers unwrap logic
into a shared helper used by both loadMcpServers and loadMcpPaths.
2026-03-16 23:09:07 -05:00
Kieran Klaassen
d2ab6c0768 feat(plugin): release v2.39.0 with community contributions
Bump plugin to 2.39.0 with features from Matt Van Horn (@mvanhorn):
context budget precheck, plan sequence numbers, review serial mode,
agent-browser debugging commands, test-browser port detection, lfg
phase gating, and Context7 API key auth.

Also fixes MCP server merge order so plugin servers correctly
overwrite stale entries during sync.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 17:02:50 -07:00
Kieran Klaassen
c21fbe54e9 Merge pull request #240 from mvanhorn/osc/85-fix-pretooluse-hook-concurrency
fix(hooks): replace sys.exit(2) with non-fatal tool blocking in PreToolUse
2026-03-10 16:45:48 -07:00
Matt Van Horn
598222e11c fix(hooks): wrap PreToolUse handlers in try-catch to prevent parallel tool call crashes
When Claude makes parallel tool calls and a PreToolUse hook command
fails, the thrown error can crash the entire batch, causing API 400
errors. Wrap generated tool.execute.before handlers in try-catch so
failures are logged but non-fatal.

Fixes #85

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 21:44:59 -07:00
Matt Van Horn
1db76800f9 fix(install): merge config instead of overwriting on opencode target
The sync path's mergeJsonConfigAtKey had incoming entries overwriting
existing user entries on conflict. Reverse the spread order so user
config wins, matching the install path's existing behavior.

Also add merge feedback logging and a test for the sync merge path.

Fixes #125

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 21:43:39 -07:00
Kieran Klaassen
4e9899f346 fix(openclaw): emit empty configSchema in plugin manifests
OpenClaw rejects generated plugin manifests that omit configSchema, even for tool plugins with no user configuration. Always emit an empty object schema so converted installs boot cleanly.\n\nAdd converter and writer regression coverage for the manifest shape.\n\nFixes #224
2026-03-03 20:30:27 -08:00
Kieran Klaassen
168c946033 feat(sync): add Claude home sync parity across providers 2026-03-02 21:02:21 -08:00
Kieran Klaassen
15b2296bd8 chore: Resolve conflicts with main, update to v0.12.0
- sync.ts: add gemini + all targets, keep copilot, remove cursor (native), use shared hasPotentialSecrets
- install.ts + convert.ts: import both detectInstalledTools and resolveTargetOutputRoot; update --to all block to use new object API; fix resolvedScope ordering (was referencing target before definition)
- CHANGELOG.md: add v0.12.0 entry (auto-detect + Gemini sync)
- README.md: merge all install targets, collapsible output format table, sync defaults to --target all
- package.json: bump to 0.12.0
- sync --target now defaults to "all" when omitted

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-01 15:12:21 -08:00
Kieran Klaassen
19f581b7af chore: Resolve merge conflict with main (openclaw + qwen + windsurf)
- Combine windsurf scope support from this branch with openclaw/qwen targets from main
- Update resolve-output.ts utility to handle openclaw/qwen with openclawHome/qwenHome/pluginName
- Add openclawHome/qwenHome args to install.ts and convert.ts
- Register openclaw and qwen in targets/index.ts alongside windsurf
- Add openclaw/qwen coverage to resolve-output.test.ts (4 new tests → 288 total)
- Update README to document all 10 targets including windsurf and openclaw

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 14:53:42 -08:00
Kieran Klaassen
f442409d9f chore: Resolve merge conflict with qwen target
Both openclaw (#217) and qwen (#220) modified install.ts and targets/index.ts.
Combined both targets: openclawHome + qwenHome in resolveTargetOutputRoot,
both registered in the targets registry.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-01 14:44:18 -08:00
Kieran Klaassen
305fea486f fix: Address review findings in Qwen converter
- Fix P1: Remove dead TOOL_MAP constant (defined but never referenced)
- Fix P1: Replace curl fallback for remote MCP servers with warn-and-skip,
  matching the kiro pattern — curl is not an MCP server
- Fix P1: Remove incorrect literal cwd field ("${extensionPath}${/}") from
  stdio MCP server config; the value was never interpolated
- Fix P1: Fix plugin.name → plugin.manifest.name in generateContextFile
  (plugin.name does not exist on ClaudePlugin; produced "# undefined")
- Fix P1: Wire qwenHome through resolveTargetOutputRoot; previously the
  --qwen-home CLI flag was parsed but silently discarded
- Fix P1: Remove hardcoded "compound-engineering" from qwen output path;
  now uses plugin.manifest.name via new qwenHome + pluginName params
- Fix P1: Collapse dead-code resolveQwenPaths branches (both returned
  identical structures; simplify to a single return)
- Fix P3: Remove rewriting of .opencode/ paths to .qwen/ — Claude plugins
  do not reference opencode paths, and rewriting them is incorrect
- Fix P3: inferTemperature now returns undefined for unrecognized agents
  instead of 0.3 (matching the explicit doc branch), letting the model
  use its default temperature
- Fix P2: Add lookbehind guards to rewriteQwenPaths() matching kiro pattern
  to avoid rewriting paths inside compound tokens or URLs
- Update --qwen-home default to ~/.qwen/extensions (plugin name appended)
- Add qwen-converter.test.ts with 16 tests covering all scenarios

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-01 14:38:42 -08:00
Kieran Klaassen
4b60bcaf6c fix: Address review findings in OpenClaw converter
- Fix P1: Replace incomplete string escaping in generateEntryPoint with
  JSON.stringify() to prevent code injection via command names/descriptions
  with backslashes, newlines, or other special characters
- Fix P1: Remove hardcoded 'compound-engineering' output path; resolve
  from plugin.manifest.name via new openclawHome + pluginName params
- Fix P2: Add --openclaw-home CLI flag (default: ~/.openclaw/extensions)
  consistent with --codex-home and --pi-home patterns
- Fix P2: Emit typed `const skills: Record<string, string> = {}` in
  generated TypeScript to prevent downstream type errors
- Fix P3: Add lookbehind guards to rewritePaths() matching kiro pattern
- Fix P3: Extract duplicated disableModelInvocation filter to variable
- Fix P3: Build manifest skills list before constructing manifest object
  (no post-construction mutation)
- Export ClaudeToOpenClawOptions type alias for interface clarity
- Add openclaw-converter.test.ts with 13 tests covering all scenarios

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-01 14:35:31 -08:00
Ryan Burnham
6fe51a0602 feat(windsurf): add Windsurf as converter target with global scope support
Add `--to windsurf` target for the converter CLI with full spec compliance
per docs/specs/windsurf.md:

- Claude agents → Windsurf skills (skills/{name}/SKILL.md)
- Claude commands → Windsurf workflows (workflows/{name}.md, flat)
- Pass-through skills copy unchanged
- MCP servers → mcp_config.json (merged with existing, 0o600 permissions)
- Hooks skipped with warning, CLAUDE.md skipped

Global scope support via generic --scope flag (Windsurf as first adopter):
- --to windsurf defaults to global (~/.codeium/windsurf/)
- --scope workspace for project-level .windsurf/ output
- --output overrides scope-derived paths

Shared utilities extracted (resolveTargetOutputRoot, hasPotentialSecrets)
to eliminate duplication across CLI commands.

68 new tests (converter, writer, scope resolution).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 18:36:34 +08:00
Adrian
27319bd85f phase 05: change permissions default to none 2026-02-20 13:31:31 -05:00
Adrian
3914dfdebe phase 04: deep merge opencode json 2026-02-20 13:30:17 -05:00
Adrian
5abddbcbd9 phase 03: write command md files 2026-02-20 13:28:25 -05:00
Adrian
f0b6ce9689 phase 02: convert command to md files 2026-02-20 13:20:48 -05:00
Adrian
da94da90db phase 01: type change for command files 2026-02-20 13:16:02 -05:00
Wilson Tovar
7a41f64f06 test(kiro): add converter and writer tests for Kiro provider 2026-02-17 12:35:23 -08:00
Kieran Klaassen
4f5efbf852 resolve merge conflict: use native Cursor plugin install, add Copilot sync 2026-02-17 10:24:58 -08:00
Eric Zakariasson
7549f38623 Merge branch 'main' into chore/remove-cursor-target-support 2026-02-17 10:07:38 -08:00
Brayan Jules
dbb25c63dd fix: Preserve command namespace in Copilot skill names
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>
2026-02-17 02:05:37 -03:00
Brayan Jules
a21bc5844d Merge branch 'main' into feat/copilot-converter-target 2026-02-15 09:25:05 -03:00
Kieran Klaassen
e4d730d5b4 feat: add detect-tools utility and Gemini sync with tests 2026-02-14 21:08:44 -08:00
Kieran Klaassen
d487915f0f fix: address code review findings for gemini target
- 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>
2026-02-14 20:46:31 -08:00
Kieran Klaassen
201ad6d0fb feat(gemini): add Gemini CLI as sixth target provider
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>
2026-02-14 20:33:21 -08:00
Brayan Jules
4f7c598f27 feat: Add GitHub Copilot converter target
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>
2026-02-15 00:14:40 -03:00
ericzakariasson
e469ab0cc0 Remove cursor target and add plugin metadata 2026-02-13 12:14:48 -05:00
Kieran Klaassen
e41904a569 Add droid and cursor sync targets, extract shared path helpers
- 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>
2026-02-12 20:37:25 -08:00
Kieran Klaassen
84af459c79 Merge pull request #182 from waltbeaman/fix/bare-model-alias-resolution
Fix bare Claude model alias resolution in OpenCode converter
2026-02-12 22:05:20 -06:00
Walt Beaman
4132af155a Fix bare Claude model alias resolution in OpenCode converter
normalizeModel() turned bare aliases like 'haiku' into 'anthropic/haiku',
which is not a valid OpenCode model ID. This caused
ProviderModelNotFoundError when agents using model: haiku (e.g.
learnings-researcher, lint) were invoked during workflows like /plan.

Add CLAUDE_FAMILY_ALIASES map to resolve haiku, sonnet, and opus to their
full model IDs (e.g. anthropic/claude-haiku-4-5). A console.warn alerts
during conversion so the map can be updated when new versions release.
2026-02-12 21:01:51 -06:00
Geet Khosla
e84fef7a56 feat: add first-class pi target with mcporter/subagent compatibility 2026-02-12 23:07:34 +01:00
Kieran Klaassen
20446e9add Fix: install by name always fetches from GitHub (#180)
* feat(cursor): add Cursor CLI as target provider

Add converter, writer, types, and tests for converting Claude Code
plugins to Cursor-compatible format (.mdc rules, commands, skills,
mcp.json). Agents become Agent Requested rules (alwaysApply: false),
commands are plain markdown, skills copy directly, MCP is 1:1 JSON.

* docs: add Cursor spec and update README with cursor target

* chore: bump CLI version to 0.5.0 for cursor target

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: note Cursor IDE + CLI compatibility in README

* fix: install by name always fetches from GitHub

Previously, `install compound-engineering` would resolve to any local
directory named `compound-engineering` in the current working directory
before trying GitHub. This broke installs when users had a same-named
directory that wasn't a valid plugin.

Now bare names always go to GitHub. Only explicit paths (starting with
./ or / or ~) are treated as local paths.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 15:24:58 -06:00
Kieran Klaassen
0aaca5a7a7 Add Cursor CLI as target provider (#179)
* feat(cursor): add Cursor CLI as target provider

Add converter, writer, types, and tests for converting Claude Code
plugins to Cursor-compatible format (.mdc rules, commands, skills,
mcp.json). Agents become Agent Requested rules (alwaysApply: false),
commands are plain markdown, skills copy directly, MCP is 1:1 JSON.

* docs: add Cursor spec and update README with cursor target

* chore: bump CLI version to 0.5.0 for cursor target

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: note Cursor IDE + CLI compatibility in README

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 15:16:43 -06:00
Kieran Klaassen
56b174a056 Add configurable review agents via setup skill and compound-engineering.local.md (#124)
* feat(commands): add /compound-engineering-setup for configurable agents

Adds a new setup command that allows users to configure which review
agents to use instead of hardcoding them in workflows. This enables:

- Multi-step onboarding with AskUserQuestion for easy setup
- Auto-detection of project type (Rails, Python, TypeScript, etc.)
- Three setup modes: Quick (smart defaults), Advanced, and Minimal
- Configuration stored in .claude/compound-engineering.json
- Support for both global (~/.claude/) and project-specific config

Updated workflows to read from config:
- /workflows:review - reads reviewAgents from config
- /plan_review - reads planReviewAgents from config
- /workflows:work - references config for reviewer agents
- /workflows:compound - references config for specialized agents

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: auto-trigger setup when no config exists

Workflows now detect missing config and offer inline quick setup:
- "Quick Setup" - auto-detect project type, create config, continue
- "Full Setup" - run /compound-engineering-setup for customization
- "Skip" - use defaults just this once

This ensures users get onboarded automatically when running any
workflow for the first time, without needing to know about the
setup command beforehand.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(review): wire all conditionalAgents categories

Extended /workflows:review to invoke conditional agents for:
- migrations (existing)
- frontend (new): JS/TS/Stimulus changes
- architecture (new): structural changes, 10+ files
- data (new): model/ActiveRecord changes

Each category reads from conditionalAgents.* config key and
runs appropriate specialized agents when file patterns match.

Resolves: todos/001-ready-p2-conditional-agents-not-invoked.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* chore: mark todo #001 as complete

* feat(setup): add custom agent discovery and modify flow

- Auto-detect custom agents in .claude/agents/ and ~/.claude/agents/
- Add modify existing config flow (add/remove agents, view config)
- Include guide for creating custom review agents
- Add customAgents mapping in config to track agent file paths
- Update changelog with new config schema including customAgents

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* chore: remove completed todos directory

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* [2.29.1] Improve /workflows:brainstorm question flow

- Add "Ask more questions" option at handoff phase
- Clarify that Claude should ask the user questions (not wait for user)
- Require resolving ALL open questions before offering to proceed

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Simplify plugin settings: replace 486-line wizard with .local.md pattern

- Rewrite setup.md (486 → 95 lines): detect project type, create
  .claude/compound-engineering.local.md with smart defaults
- Make review.md and work.md config-aware: read agents from .local.md
  frontmatter, fall back to auto-detected defaults
- Wire schema-drift-detector into review.md migrations conditional block
- Delete technical_review.md (duplicated /plan_review)
- Add disable-model-invocation to setup.md
- Bump to v2.32.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Rewrite .claude/ paths for OpenCode/Codex targets, add npm publish workflow

- Converters now rewrite .claude/ → .opencode/ (OpenCode) and .codex/ (Codex)
  in command bodies and agent bodies so .local.md settings work cross-platform
- Apply transformContentForCodex to agent bodies (was only commands before)
- Add GitHub Action to auto-publish to npm on version bump merge to main
- Bump to v0.4.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(workflows-work): require post-deploy monitoring section

Add a mandatory Post-Deploy Monitoring & Validation section to the /workflows:work PR template, include no-impact fallback guidance, and enforce it in the quality checklist.

* Add learnings-researcher to review workflow, fix docs site counts

- Add learnings-researcher as parallel agent #14 in /workflows:review
  so past solutions from docs/solutions/ are surfaced during code review
- Make /release-docs command invocable (remove disable-model-invocation)
- Fix stale counts across docs site (agents 28→29, commands 19→24,
  skills 15→18, MCP servers 2→1)
- Bump version to 2.32.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Move /release-docs to local .claude/commands/, bump to 2.32.2

Repo maintenance command doesn't need to be distributed to plugin users.
Update command count 24 → 23 across plugin.json, marketplace.json, and docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Move settings to project root: compound-engineering.local.md

Tool-agnostic location — works for Claude, Codex, OpenCode without
path rewriting. No global fallback, just project root.

Update commands (setup, review, work) and converter tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Make /compound-engineering-setup interactive with auto-detect fast path

Two paths: "Auto-configure" (one click, smart defaults) or "Customize"
(pick stack, focus areas, review depth). Uses AskUserQuestion throughout.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Replace /compound-engineering-setup command with setup skill

Setup is now a skill invoked on-demand when compound-engineering.local.md
doesn't exist. Review and work commands just say "invoke the setup skill"
instead of inlining the full setup flow.

- Remove commands/setup.md (command)
- Add skills/setup/SKILL.md (skill with interactive AskUserQuestion flow)
- Simplify review.md and work.md to reference the skill
- Counts: 29 agents, 22 commands, 19 skills

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Prepare v2.33.0 release: setup skill, configurable review agents

- Bump version to 2.33.0
- Consolidate CHANGELOG entries for this branch
- Fix README: update counts (29/22/19), add setup + resolve-pr-parallel skills
- Remove stale /compound-engineering-setup command reference

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-12 11:43:16 -06:00
Adam Tervort
4ab08dce78 Add Factory Droid as a converter target (#174)
Adds a new 'droid' target to the converter that outputs Claude Code plugins
in Factory Droid's format:

- Commands flattened to ~/.factory/commands/ (strips namespace prefixes)
- Agents converted to droids in ~/.factory/droids/ with proper frontmatter
- Skills copied to ~/.factory/skills/
- Content transforms: Task calls, slash commands, and @agent references
  adapted to Droid conventions

This resolves the manual workaround described in issue #31 by automating
the conversion from Claude Code plugin format to Factory Droid's expected
directory structure.

Includes 13 tests covering converter logic and file writer behavior.

Co-authored-by: adamprime <adamprime@hey.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-02-11 11:48:13 -06:00
Kieran Klaassen
f744b797ef Reduce context token usage by 79% — fix silent component exclusion (#161)
* Update create-agent-skills to match 2026 official docs, add /triage-prs command

- Rewrite SKILL.md to document that commands and skills are now merged
- Add new frontmatter fields: disable-model-invocation, user-invocable, context, agent
- Add invocation control table and dynamic context injection docs
- Fix skill-structure.md: was incorrectly recommending XML tags over markdown headings
- Update official-spec.md with complete 2026 specification
- Add local /triage-prs command for PR triage workflow
- Add PR triage plan document

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* [2.31.0] Reduce context token usage by 79%, include recent community contributions

The plugin was consuming 316% of Claude Code's description character budget
(~50,500 chars vs 16,000 limit), causing components to be silently excluded.
Now at 65% (~10,400 chars) with all components visible.

Changes:
- Trim all 29 agent descriptions (move examples to body)
- Add disable-model-invocation to 18 manual commands
- Add disable-model-invocation to 6 manual skills
- Include recent community contributions in changelog
- Fix component counts (29 agents, 24 commands, 18 skills)

Contributors: @trevin, @terryli, @robertomello, @zacwilliams,
@aarnikoskela, @samxie, @davidalley

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix: keep disable-model-invocation off commands called by /lfg, rename xcode-test

- Remove disable-model-invocation from test-browser, feature-video,
  resolve_todo_parallel — these are called programmatically by /lfg and /slfg
- Rename xcode-test to test-xcode to match test-browser naming convention

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix: keep git-worktree skill auto-invocable (used by /workflows:work)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(converter): support disable-model-invocation frontmatter

Parse disable-model-invocation from command and skill frontmatter.
Commands/skills with this flag are excluded from OpenCode command maps
and Codex prompt/skill generation, matching Claude Code behavior where
these components are user-only invocable.

Bump converter version to 0.3.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 22:28:51 -06:00
Zac Williams
c69c47fe9b fix: backup existing config files before overwriting (#119)
Before writing config.toml (Codex) or opencode.json (OpenCode), the CLI
attempts to create a timestamped backup of any existing config file.
This prevents accidental data loss when users have customized configs.

Backup is best-effort - if it fails (e.g., unusual permissions), the
install continues without blocking.

Backup files are named: config.toml.bak.2026-01-23T21-16-40-065Z
2026-02-08 16:58:51 -06:00
terry-li-hm
1dea33c305 fix(codex): Transform Claude Code syntax to Codex-compatible syntax (#120)
Adds comprehensive content transformation for Codex compatibility:

1. Task agent calls: `Task agent-name(args)` → `Use the $agent-name skill to: args`
2. Slash commands: `/command-name` → `/prompts:command-name`
3. Agent references: `@agent-name` → `$agent-name skill`

This bridges the syntax gap between Claude Code and Codex:
- Claude Code uses Task tool with subagent_types
- Codex uses skills and /prompts: namespace

Transformations are applied to both skill and prompt files during conversion.

Tested with Codex CLI 0.89.0 - all transformations working correctly.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 15:33:19 -06:00
Kieran Klaassen
907746f83e fix(opencode): use correct global config path ~/.config/opencode (#117)
The OpenCode installer was writing to ~/.opencode but OpenCode expects
global configuration at ~/.config/opencode per XDG Base Directory spec.

Fixes:
- src/commands/install.ts: Change default output from ~/.opencode to
  ~/.config/opencode
- src/targets/opencode.ts: Recognize "opencode" basename (not just
  ".opencode") for direct writes without nesting

Closes #114

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-23 08:53:52 -08:00
Kieran Klaassen
e97f85bd53 feat: add OpenCode/Codex outputs and update changelog (#104)
* Add OpenCode converter coverage and specs

* Add Codex target support and spec docs

* Generate Codex command skills and refresh spec docs

* Add global Codex install path

* fix: harden plugin path loading and codex descriptions

* feat: ensure codex agents block on convert/install

* docs: clarify target branch usage for review

* chore: prep npm package metadata and release notes

* docs: mention opencode and codex in changelog

* docs: update CLI usage and remove stale todos

* feat: install from GitHub with global outputs
2026-01-21 19:00:30 -06:00