Commit Graph

73 Commits

Author SHA1 Message Date
Trevin Chow 0d4799b124 fix(converters): exclude slash commands from FQ agent name rewriting
Add `/` to the negative lookbehind so 3-segment slash commands like
`/team:ops:deploy` are not rewritten to `/deploy`. Agent references
are never preceded by `/`, so this cleanly separates the two.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:01:32 -07:00
Trevin Chow bf19bac0a4 fix(converters): OpenCode subagent model and FQ agent name resolution (#477)
Two fixes for OpenCode compatibility:

1. Omit model field on subagents so they inherit from the parent session.
   Writing an explicit provider-prefixed model (e.g. anthropic/claude-haiku-4-5)
   causes ProviderModelNotFoundError when the user's OpenCode env uses a
   different provider.

2. Rewrite fully-qualified agent names in skill markdown during conversion.
   OpenCode resolves agents by flat filename, so 3-segment references like
   compound-engineering:review:coherence-reviewer must become coherence-reviewer.
   2-segment skill references are preserved. The transform applies to all .md
   files in skill directories (SKILL.md + references) via a new
   transformAllMarkdown flag on copySkillDir.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 15:52:52 -07:00
Trevin Chow c65a698d93 fix(converters): preserve user config when writing MCP servers (#479)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 11:46:57 -07:00
Octopus e372b43d30 feat(model): add MiniMax provider prefix for cross-platform model normalization (#463) 2026-03-31 00:22:50 -07:00
Trevin Chow 638b38abd2 fix(review): harden ce-review base resolution (#452) 2026-03-30 01:10:45 -07:00
Trevin Chow f93d10cf60 feat(converters): centralize model field normalization across targets (#442)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:08:35 -07:00
Trevin Chow 35678b8add feat(testing): close the testing gap in ce:work, ce:plan, and testing-reviewer (#438)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:07:05 -07:00
Trevin Chow 9caaf071d9 feat(review): make review mandatory across pipeline skills (#433)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 20:31:03 -07:00
Trevin Chow 3706a9764b feat(ce-review): add headless mode for programmatic callers (#430)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 16:09:21 -07:00
Trevin Chow 914f9b0d98 feat(ce-review): add base: and plan: arguments, extract scope detection (#405)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 07:59:54 -07:00
Trevin Chow da390a65a2 refactor: merge deepen-plan into ce:plan as automatic confidence check (#404) 2026-03-26 22:15:58 -07:00
Trevin Chow b25480af9e fix: sanitize colons in skill/agent names for Windows path compatibility (#398) 2026-03-26 16:15:48 -07:00
Trevin Chow 0877b693ce fix: add strict YAML validation for plugin frontmatter (#399) 2026-03-26 14:07:28 -07:00
Trevin Chow daddb7d72f fix: consolidate compound-docs into ce-compound skill (#390) 2026-03-26 11:41:19 -07:00
Trevin Chow e09a7426be feat: add branch-based plugin install for worktree workflows (#395) 2026-03-26 11:01:56 -07:00
thefutureisw0rk f819e435a5 fix: one-step codex installs by preferring bundled plugins (#383)
Co-authored-by: The Future is Work <future@Thes-Mac-Studio.local>
2026-03-25 21:39:45 -07:00
Trevin Chow 8ebc77b8e6 fix: guard CONTEXTUAL_RISK_FLAGS lookup against prototype pollution (#377) 2026-03-25 14:17:39 -07:00
Trevin Chow ce9016fac5 feat: integrate orphaned stack-specific reviewers into ce:review (#375) 2026-03-25 13:47:43 -07:00
Trevin Chow 7c5ff445e3 feat: promote ce:review-beta to stable ce:review (#371) 2026-03-24 21:00:38 -07:00
Trevin Chow 2612ed6b3d feat: rationalize todo skill names and optimize skills (#368) 2026-03-24 18:35:09 -07:00
Trevin Chow 65e5621dbe refactor: consolidate todo storage under .context/compound-engineering/todos/ (#361) 2026-03-24 09:54:30 -07:00
Trevin Chow 18d22afde2 feat: redesign document-review skill with persona-based review (#359) 2026-03-24 01:51:22 -07:00
Trevin Chow e932276866 feat: add ce:review-beta with structured persona pipeline (#348) 2026-03-23 21:49:04 -07:00
Trevin Chow 4087e1df82 feat: fix skill transformation pipeline across all targets (#334) 2026-03-21 19:45:20 -07:00
Trevin Chow 838aeb79d0 fix: add cursor-marketplace as release-please component (#315) 2026-03-18 18:47:00 -07:00
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