* feat(#1243): consume Claude plugin-provided skills via native Skill-tool directive + grant Skill to agent_skills-consumer agents - Relax global skill name validation to accept namespaced form `^[A-Za-z0-9_-]+(:[A-Za-z0-9_-]+)*$` - Namespaced names (containing colon) on claude runtime emit a Skill-tool load directive instead of a @-include line - Namespaced names on non-claude runtimes are skipped with a warning - Bare unresolved names retain existing warn-and-skip behavior (no promotion to directive) - Grant `Skill` tool to all 22 agent_skills consumer agents; 5 generated agents updated via research-profiles.cjs + regen, 17 hand-authored agents edited directly - Add 16 TDD tests in describe('bug #1243') covering happy/mixed/precedence/negative/cross-runtime/regression/grant cases Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs(#1243): document plugin-provided skills in agent_skills Update the Agent Skills Injection reference in CONFIGURATION.md with the three entry forms (project-relative, global:<name>, global:<plugin>:<skill>), the Claude-only runtime behaviour of the namespaced form and the warn-skip on other runtimes, the plugin pre-install prerequisite, and the consumer-agent Skill tool grant. Add docs/how-to/attach-a-plugin-skill-to-a-gsd-agent.md with a step-by-step guide for installing the plugin, locating the namespaced skill name, wiring it into agent_skills, and verifying injection. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(#1243): align agent_skills docs with emitted block format + mixed-block regression test (code-review) - Replace two-section mixed-block example (bogus "Load these plugin-provided skills using the Skill tool:" header) with the actual single-section inline format in CONFIGURATION.md and docs/how-to/attach-a-plugin-skill-to-a-gsd-agent.md - Fix quoted warning text in how-to doc to exactly match the emitted string: [agent-skills] WARNING: Plugin-namespaced skill "global:<name>" requires a Skill-tool-capable runtime (claude) — skipping on runtime "<runtime>" - Replace phantom agent slugs (gsd-checker, gsd-researcher, gsd-advisor, gsd-synthesizer) in CONFIGURATION.md Supported Agent Types with real agents/gsd-*.md examples (gsd-plan-checker, gsd-phase-researcher, gsd-code-reviewer, gsd-ui-auditor, gsd-research-synthesizer) - Add byte-identical mixed-block regression test: one path-resolvable global skill + one plugin-namespaced skill on claude runtime → asserts r.ir.block === single-section interleaved block, no secondary header Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(#1243): regenerate agent-size baseline for the Skill-tool grant The 22 agent_skills-consumer agents each grew +7 bytes from adding `Skill` to their tools list; refresh the committed per-agent size baseline (#1074 guard). * chore(#1243): add Added changeset fragment * fix(#1243): traceable allow-test-rule ref + separator-agnostic byte-identical tests (CI) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
4.0 KiB
How to attach a plugin-provided skill to a GSD agent
Use this guide when you have a Claude Code plugin that ships a skill and you want GSD agents to load it automatically at spawn time. The global:<plugin>:<skill> entry form makes GSD emit a Skill-tool load directive so the agent picks up the plugin skill alongside any project-local or personal global skills.
This feature works on the Claude runtime only. On other runtimes (Codex, Gemini, Cursor, etc.) the entry is skipped with a warning. Plan accordingly if your team uses multiple runtimes.
1. Install the plugin in Claude Code
GSD does not install or manage Claude Code plugins. Install the plugin first:
/plugin install <plugin-source>
Verify the plugin is active and note the skill names it exposes. The plugin's documentation or README will list available skill names in the format plugin:skill — for example, coderabbit:code-review.
2. Find the namespaced skill name
The name you need has two colon-separated segments after global::
global:<plugin>:<skill>
For example, if the plugin slug is coderabbit and it provides a skill called code-review, the entry is:
global:coderabbit:code-review
Each segment must consist of alphanumeric characters, underscores, or hyphens only. No spaces, no slashes, no dots.
3. Add the entry to agent_skills
Open .planning/config.json and add the namespaced skill to the array for the agent type that should receive it:
{
"agent_skills": {
"gsd-executor": [
"skills/project-conventions",
"global:coderabbit:code-review"
],
"gsd-verifier": [
"global:coderabbit:code-review"
]
}
}
You can mix all three entry forms freely within the same array — project-relative paths, global:<name> personal skills, and global:<plugin>:<skill> plugin skills.
Or set it from the CLI:
gsd-tools query config-set agent_skills.gsd-executor '["skills/project-conventions","global:coderabbit:code-review"]'
4. Verify the injection
Start a phase on the Claude runtime. When the target agent is spawned, its Task() prompt will contain an <agent_skills> block that includes a Skill-tool load directive for the plugin skill:
<agent_skills>
Read these user-configured skills:
- @skills/project-conventions/SKILL.md
- Load the `coderabbit:code-review` skill via the Skill tool before proceeding (plugin-provided).
</agent_skills>
Both entry types appear in the same Read these user-configured skills: section, interleaved in config order. There is no separate header for plugin-provided skills.
If you see [agent-skills] WARNING: Plugin-namespaced skill "global:coderabbit:code-review" requires a Skill-tool-capable runtime (claude) — skipping on runtime "<runtime>" in the logs, the entry is being skipped because the active runtime is not Claude. The configuration is still valid; no change is needed.
Notes
- Plugin must be pre-installed. GSD only references the skill by namespaced name. If the plugin is not installed in Claude Code, the Skill tool call will fail at agent runtime — GSD cannot validate plugin presence at configuration time.
- Which agents support it. All 22 GSD agent types that consume
agent_skillscarry theSkilltool, so any of them can load plugin-provided skills. See Agent Skills Injection — Supported Agent Types for the full list. - Non-Claude runtimes. The
global:<plugin>:<skill>entry is silently skipped with a warning on non-Claude runtimes. Project-relative andglobal:<name>entries work on all runtimes. - Security boundary. Plugin skill content is resolved entirely by Claude Code at agent runtime. GSD does not read, cache, or validate the plugin's files.