Skip to content

feat(agent)!: align skill install with the Agent Skills standard#271

Draft
powxenv wants to merge 1 commit into
TestSprite:mainfrom
powxenv:chore/agentskills-standard
Draft

feat(agent)!: align skill install with the Agent Skills standard#271
powxenv wants to merge 1 commit into
TestSprite:mainfrom
powxenv:chore/agentskills-standard

Conversation

@powxenv

@powxenv powxenv commented Jul 22, 2026

Copy link
Copy Markdown

What does this PR do?

Aligns agent install with 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

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that changes existing behavior)
  • Documentation only
  • Build / CI / chore

Checklist

  • PR targets the main branch.
  • Commits follow Conventional Commits
    (feat(...), fix(...), docs(...), …).
  • npm run lint and npm run format:check pass.
  • npm run typecheck passes.
  • npm test passes and coverage stays at or above the 80% gate.
  • New behavior is covered by unit tests (mock-based; no network or
    credentials required).
  • No secrets, API keys, internal endpoints, or personal data are included.
  • User-facing changes are reflected in README.md / DOCUMENTATION.md where
    relevant.

Notes for reviewers

Breaking changes

This restructures the install model, so existing behavior changes for current users:

  • Per-agent bespoke formats removed. Codex no longer receives a managed section in 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. The wrap() / own-file / managed-section machinery is gone in favor of one standard SKILL.md.
  • Install output schema changed. agent install results carry a new mode (canonical | symlink) field, and path now reflects the canonical-or-symlink model rather than each agent's bespoke location.
  • Existing installs go stale. Skills written in the old format will surface as stale/modified under agent status until refreshed — re-running agent install (with --force where needed) brings them in line.

What's preserved: the claude / kiro / copilot aliases still resolve, and agent install with no --target still defaults to claude-code — so the commands existing scripts use keep working; only the on-disk layout and output change.

Implementation notes

  • Model: canonical .agents/skills/<skill>/SKILL.md is 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.
  • Path safety: both the canonical write and the symlink landing walk each path component with lstat and refuse to traverse a planted symlink (exit 5), so a malicious symlink can't redirect a write outside --dir.
  • Tests: the install/status/conflict/force/dry-run/path-safety paths are covered exhaustively by unit tests using an in-memory filesystem (deterministic, cross-platform, no real-symlink fragility); coverage on agent.ts is ~92% lines, with the remainder being defensive error handling and real-fs wrappers exercised by the e2e suite.

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.
@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 1e7a64f8-0143-4607-bbcc-9d691e6ba973

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

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 /assign on it (the triage bot assigns you automatically). If it's already assigned to someone else, please coordinate with them or pick another issue — unclaimed-issue PRs are not reviewed. After fixing it, edit the PR description or push a commit to re-run this check. See CONTRIBUTING → Contribution model.

@github-actions github-actions Bot added the needs-issue PR not linked to an issue yet — please open one first and claim it (see CONTRIBUTING) label Jul 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-issue PR not linked to an issue yet — please open one first and claim it (see CONTRIBUTING)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Hackathon] Support Agent Skills standard for install/setup

1 participant