Help us improve
Share bugs, ideas, or general feedback.
From plugin-tools
Reviews Claude Code skill performance in sessions: preprocesses JSONL logs with Node script, analyzes via Sonnet sub-agent, recommends SKILL.md improvements.
npx claudepluginhub kenneth-liao/ai-launchpad-marketplace --plugin plugin-toolsHow this skill is triggered — by the user, by Claude, or both
Slash command
/plugin-tools:skill-retroThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyze how skills performed in the current session and apply improvements via skill-creator.
Diagnoses and optimizes Agent Skills (SKILL.md) by scanning session transcripts for underused skills, wasted context, and CSO issues, then outputting a prioritized report.
Analyzes past Claude Code sessions to validate skill/agent/hook behavior against SKILL.md specifications. Useful for debugging unexpected skill execution or verifying correct workflow completion.
Analyzes skill executions from conversation friction, file diffs, user feedback, diagnostics, and lessons to propose concrete improvements to SKILL.md files for efficiency.
Share bugs, ideas, or general feedback.
Analyze how skills performed in the current session and apply improvements via skill-creator.
Run the preprocessing script to extract a clean transcript from the current session's JSONL log:
node ${CLAUDE_SKILL_DIR}/scripts/preprocess.mjs --cwd <current-working-directory>
Capture the JSON output. Key fields:
transcript_file — path to the temp file containing the full transcript (at ~/.claude/tmp/skill-retro-<session-id>.json)stats.skill_invocations — count of skills usedThe script writes the full transcript to a temp file to avoid flooding the main thread's context window. Only the summary (stats + file path) appears in stdout.
If the script fails (e.g., no session files found), report the error and stop.
If skill_invocations is 0, tell the user: "No skills were invoked in this session — nothing to analyze." and stop.
Spawn an analysis sub-agent (using the Agent tool, model: sonnet):
${CLAUDE_SKILL_DIR}/references/analysis-prompt.mdtranscript_file in Step 1's output[SKILL INVOCATION] markers combined with installed plugin cache paths.findings, well_executed, and severity_summaryParse the agent's response into structured findings.
Once the analysis agent has finished, delete the temp file created in Step 1:
rm <transcript_file>
If the agent returns 0 findings, tell the user: "All skills performed well this session. No improvements identified." Show the well_executed list and stop.
Don't just present raw findings — interpret them. For each finding, add your own reasoning:
Group findings by skill and present with your interpretation:
## Skill Performance Report
### scheduler:manage (3 findings)
**1. [high] gap_coverage — pause command doesn't verify unload succeeded**
The `_launchctl_unload` helper silently swallows errors, so the registry can say "paused" while the job is still running.
- **Fix:** Add return-code checking to `_launchctl_unload` in the manage script, and add a post-unload verification step in SKILL.md's Pause operation.
- **Effort:** Moderate — script change + SKILL.md update
- **Recommend: Action** — This caused real user confusion in this session.
**2. [medium] gap_coverage — No error recovery entry for "task still runs after pausing"**
The assistant had to improvise the entire investigation.
- **Fix:** Add a new row to the Error Recovery table in SKILL.md.
- **Effort:** Quick — one table row addition
- **Recommend: Action** — Low effort, high value.
**3. [low] execution_quality — list command shows registry status without cross-checking launchd**
Would require the list command to shell out to `launchctl list` and reconcile.
- **Fix:** Add launchd state reconciliation to the list operation in the manage script.
- **Effort:** High-lift — requires new script logic and testing across platforms.
- **Recommend: Defer** — Nice-to-have but significant work. Not worth addressing now.
### Well Executed
- list presented clean, accurate registry data
- Assistant correctly went outside the skill to diagnose the real issue
---
I recommend actioning findings 1 and 2. Finding 3 is high-lift and better deferred.
Proceed with these? (y/adjust/none)
Key principles:
Wait for user confirmation. If "none", show summary and stop.
For each skill with selected findings, determine where to edit:
Resolution order:
Project-level skill — path contains .claude/skills/ relative to a project
→ Candidate: edit in place (user owns it)
User-level skill — path is under ~/.claude/skills/
→ Candidate: edit in place (user owns it)
Installed plugin — path is under ~/.claude/plugins/cache/
→ Try to trace to source:
a. Extract plugin name from the path
b. Check if cwd is a marketplace project containing that plugin's source (look for <plugin-name>/skills/<skill-name>/SKILL.md)
c. If not found, ask user: "Where is the source code for the <plugin-name> plugin? Provide a path, or type 'installed' to edit the installed copy."
→ If "installed": warn that changes will be overwritten on plugin update, proceed only if user confirms
→ If user provides a path: verify it exists and contains the skill
Current project contains source — cwd has ./<plugin-name>/skills/<skill-name>/SKILL.md
→ Candidate: edit in place
For each resolved path, confirm with the user before proceeding:
I'll make changes to <skill-name> at:
→ /path/to/resolved/source/SKILL.md
Is this the right location? (y/n or provide correct path)
Do NOT proceed to implementation until every path is confirmed.
For each affected skill (with confirmed source path), spawn an implementation sub-agent:
One agent per skill — can run in parallel since they edit different files
Agent prompt:
"You are improving a Claude Code skill based on performance analysis findings.
Skill: <skill-name>
Source path: <confirmed-path-to-skill-directory>
SKILL.md location: <confirmed-path>/SKILL.md
Findings to address: <list all selected findings for this skill with full observation, evidence, and proposed_improvement>
Instructions:
skill-creator:skill-creator skillAfter all implementation agents complete, present a summary:
## Skill Retro Complete
### Changes Applied
| Skill | Source Path | Changes |
|-------|------------|---------|
| scheduler:manage | /path/to/SKILL.md | Added return-code checking to _launchctl_unload, post-unload verification step |
| scheduler:manage | /path/to/SKILL.md | Added "task still runs after pausing" to Error Recovery table |
### Deferred
- scheduler:manage #3 (launchd state reconciliation) — high-lift, deferred
### Well Executed
- list operation presented clean, accurate registry data
~/.claude/tmp/skill-retro-*.json and only outputs a summary to stdout. Clean up the temp file after the analysis sub-agent has finished reading it.