feat(agent)!: align skill install with the Agent Skills standard#271
feat(agent)!: align skill install with the Agent Skills standard#271powxenv wants to merge 1 commit into
Conversation
Replace the per-agent bespoke install formats with the Agent Skills open standard: one canonical .agents/skills/<skill>/SKILL.md per project, read directly by universal agents (Codex, Cursor, Cline, Gemini CLI, Copilot, …) and via a relative symlink by every other agent. The bundled registry grows from 8 hand-wired targets to the full standard set (72 agent ids). BREAKING CHANGE: agent install no longer writes per-agent bespoke formats. Codex no longer receives a managed section in AGENTS.md and Windsurf no longer receives a size-capped compact body — both now read the canonical .agents/skills/. The install result schema gains a `mode` (canonical | symlink) field and `path` reflects the new model. Skills written in the old format report stale/modified under `agent status` until refreshed (re-run `agent install`, add --force where needed). The legacy aliases (claude, kiro, copilot) and the claude-code default are preserved, so existing commands keep working.
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Thanks for the PR, @powxenv! It links an issue, but that issue isn't assigned to you yet: #270 (unassigned). Per our workflow, claim the issue first by commenting |
What does this PR do?
Aligns
agent installwith the Agent Skills open standard. Instead of hand-wiring a few agents with bespoke formats, the CLI now writes one canonical skill per project at.agents/skills/<skill>/SKILL.md(the standard's shared directory), and each agent reads it directly (universal agents) or via a symlink back to it. The bundled registry grows from 8 targets to the full standard set (72 agent ids), so any skills-compatible agent works out of the box.This broadens adoption (works with 72 agents instead of 8), simplifies maintenance (one uniform code path instead of per-agent
wrap()/mode/compact-body machinery), and follows a vendor-neutral standard already adopted by the agents users run.Related issue
Closes #270
Type of change
Checklist
mainbranch.(
feat(...),fix(...),docs(...), …).npm run lintandnpm run format:checkpass.npm run typecheckpasses.npm testpasses and coverage stays at or above the 80% gate.credentials required).
README.md/DOCUMENTATION.mdwhererelevant.
Notes for reviewers
Breaking changes
This restructures the install model, so existing behavior changes for current users:
AGENTS.md; Windsurf no longer receives a size-capped compact body. Both now read the canonical.agents/skills/(codex directly, windsurf via symlink), like every other agent. Thewrap()/ own-file / managed-section machinery is gone in favor of one standardSKILL.md.agent installresults carry a newmode(canonical|symlink) field, andpathnow reflects the canonical-or-symlink model rather than each agent's bespoke location.stale/modifiedunderagent statusuntil refreshed — re-runningagent install(with--forcewhere needed) brings them in line.What's preserved: the
claude/kiro/copilotaliases still resolve, andagent installwith no--targetstill defaults toclaude-code— so the commands existing scripts use keep working; only the on-disk layout and output change.Implementation notes
.agents/skills/<skill>/SKILL.mdis the single source of truth. Universal agents (Codex, Cursor, Cline, Gemini CLI, Copilot, …) read it directly; every other agent gets a relative symlink from its own skills folder back to it — no drift between agents.lstatand refuse to traverse a planted symlink (exit 5), so a malicious symlink can't redirect a write outside--dir.agent.tsis ~92% lines, with the remainder being defensive error handling and real-fswrappers exercised by the e2e suite.