plugin-tools/skills/skill-retro/SKILL.md
Use when reviewing how skills performed during a session, when the user wants to analyze skill invocations and identify improvements, or when the user says "skill retro", "review skills", "how did skills do", "improve this skill", or "skill retrospective".
npx skillsauth add kenneth-liao/ai-launchpad-marketplace skill-retroInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.development
Manage scheduled Claude Code tasks — add (recurring or one-off), list, pause, resume, remove, view results, and test execution of skills, prompts, and scripts with safety controls and notifications. Use when the user mentions scheduling, cron, automated tasks, recurring tasks, background tasks, running something on a schedule, periodic execution, or wants a skill/prompt/script to run automatically at a set time. Cross-platform (macOS, Linux, Windows).
tools
Upgrade a plugin's skills, hooks, and patterns to align with latest Claude Code capabilities and best practices. Use when a plugin needs modernization, after Claude Code updates, or when the user says "upgrade plugin", "modernize plugin", or "update plugin to latest patterns".
tools
Run or generate test suites for any skill. Use when testing a skill before deployment, after making changes, before/after plugin upgrades, when validating skill behavior, or when the user says "test skill", "run skill tests", "generate tests for skill", or "check for regressions".
tools
Update the context system based on our conversation so far.