Skill-loader returns "Launching skill" but body fails to load — 3 plugin skills with template-heavy SKILL.md + Agent dispatch references
Symptom
When invoking 3 specific plugin skills via the Skill tool, the tool result shows Launching skill: <name> but the skill body does NOT load into context. A subsequent system-reminder then prompts to re-invoke the skill, creating a loop. Observed 3 instances in one session across 3 different skills.
Affected vs working
Affected (intermittent, never reliably loads): sdd-plugin:sdd-start, sdd-plugin:sdd-implement, sdd-plugin:sdd-review
Working in the same plugin (same install path, same frontmatter format, same encoding, similar file size): sdd-plugin:sdd-spec, sdd-plugin:sdd-next, sdd-plugin:sdd-close
The SKILL.md content for both groups is structurally identical (UTF-8 no BOM, --- delimited frontmatter with name + description, file size 2.0–3.4 KB). Plugin manifest at ~/.claude/plugins/cache/sdd-plugin-local/sdd-plugin/0.1.0/.claude-plugin/plugin.json is canonical.
Pattern correlation
The 3 affected skills share traits the working ones lack:
- Heavy
{{APPROVER}}template interpolation - References to subagent dispatch (Agent tool,
model: opus,isolation: worktree) - Typically invoked with large pasted args (multi-paragraph context blocks reflecting orchestrator state)
The working skills tend to be invoked with smaller arg payloads.
Hypothesis (unconfirmed)
Argument-handling timeout when args exceed some inline-context budget — the harness silently drops the skill body but the Launching skill status returns successfully, leaving the assistant in a loop with no error to diagnose.
Cannot confirm without harness-side telemetry.
Logs
No skill-loader errors in ~/Library/Logs/Claude/main.log. Only expected [PluginScan] Skipping legacy command "sdd-plugin:sdd-*" — name collides with skills/ entry warnings, which are the expected behavior after retiring command shims in favor of skills.
Workaround
Manual dispatch via Agent tool with equivalent semantics:
| Affected skill | Workaround | Equivalence |
|---|---|---|
| sdd-review | Agent with subagent_type: pr-review-toolkit:code-reviewer + model: opus + isolation: worktree | Equivalent — the skill is itself an Agent-dispatch wrapper |
| sdd-implement | Manual general-purpose Agent + chip prompt construction | Slightly lossy — loses pre-flight "STOP and WAIT" gate |
| sdd-start | Direct file reads (.workflow/active.yaml + decisions index + handoff) | Lossy — loses structured pre-flight file-read sequence |
For sdd-review the workaround is functionally identical, so the friction is tolerable. For start/implement, the orchestrator must compensate manually for the lost gates.
Environment
- Claude Code CLI (not Claude Desktop)
- macOS Darwin 25.5.0
- Model:
claude-opus-4-7[1m](Opus 4.7, 1M context window) - Plugin: custom SDD plugin (canonical Spec-Driven-Development workflow)
Repro hint
Trigger: invoke any of the 3 affected skills with multi-paragraph args (~2-3 KB of pasted orchestrator context). Frequency in our usage: ~3 fails per ~5-8 invocations, intermittent.
Happy to share specific SKILL.md contents, plugin.json, or session transcripts privately if useful for debugging.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗