ワンクリックで
vs-retro
Use when asked for retro, session learnings, what did we learn, or extract learnings. Routes findings to the right destination.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use when asked for retro, session learnings, what did we learn, or extract learnings. Routes findings to the right destination.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Analyze Codex, Claude Code, or Cursor threads, transcripts, and transcriptions. Use for thread analysis, transcript review, conversation audits, agent-performance diagnosis, comparing sessions, finding loops or corrections, and extracting decisions, outcomes, evidence, and actionable improvements.
Internal reference for vs shared conventions: artifact paths, project ID resolution, storage preference, and skill taxonomy.
Use when asked to scan a named external repo for ideas worth porting. Produces a cited, ranked steals report.
Use when asked to QA, test this site or app, find bugs, or test and fix a user-facing interface. Runs harness-aware browser or computer-use QA, fixes issues, and re-verifies.
Use when the user wants to create/open a pull request, submit changes for review, send changes to dev, or otherwise ship local Git changes. Also use for explicit commit and push or push to main/master or the current branch requests. Requires affirmative publish intent; do not use for review/readiness-only requests. Creates and verifies a GitHub PR by default; honors explicit direct pushes and babysits only when requested.
Use when asked to watch a PR, fix CI, address review comments, or keep a branch merge-ready in a loop.
| name | vs-retro |
| description | Use when asked for retro, session learnings, what did we learn, or extract learnings. Routes findings to the right destination. |
Extract learnings from recent conversations and route them where they belong.
Do NOT write to any file without presenting findings first. The user reviews and selects which learnings to save.Do not include hours, days, weeks, months, or any wall-clock predictions in findings, summaries, or proposed rules. LLM-generated time estimates are noise — agent-assisted dev speed invalidates the old intuitions anyway. State scope and change, not duration.
PROJECT_SLUG=$(pwd | sed 's/[^a-zA-Z0-9]/-/g')
SESSION_DIR="$HOME/.claude/projects/$PROJECT_SLUG"
ls -lt "$SESSION_DIR"/*.jsonl 2>/dev/null | head -5
Default: last 3 sessions. Override with --sessions N.
If no sessions: "No session transcripts found for this project." Stop.
Strip tool_use/tool_result noise. Keep only human-readable user+assistant text.
jq -r 'select(.message.role == "user" or .message.role == "assistant") |
.message.role as $role |
(if (.message.content | type) == "string" then .message.content
else [.message.content[] | select(.type == "text") | .text] | join("\n")
end) as $text |
select($text != "") |
"\($role): \($text)"' "$SESSION_FILE" | tail -100
Node fallback if jq unavailable:
node -e "
const fs=require('fs'),lines=fs.readFileSync(process.argv[1],'utf8').split('\n').filter(Boolean);
for(const l of lines){try{const e=JSON.parse(l);if(!e.message||!['user','assistant'].includes(e.message.role))continue;
const c=e.message.content,t=typeof c==='string'?c:(c||[]).filter(b=>b.type==='text').map(b=>b.text).join('\n');
if(t)console.log(e.message.role+': '+t.slice(0,2000))}catch{}}
" "$SESSION_FILE" | tail -100
Cap at 100 lines per session. Skip sessions under 10 turns.
Scan condensed transcripts for learnings. Look for:
| Signal | Pattern | Example |
|---|---|---|
| Corrections | "no", "don't", "stop", "wrong", "not that" | User corrects agent behavior |
| Preferences | "I prefer", "always", "never", confirmed approaches | User states how they want things done |
| Gotchas | Surprising failure, workaround, non-obvious constraint | Something broke unexpectedly |
| Decisions | Architecture choice, tool selection, process change | A deliberate choice was made |
For each finding, note:
Route each finding to where it belongs:
~/.claude/CLAUDE.md)Personal preferences and rules that apply across all projects:
.claude/CLAUDE.md in current repo)Repo-specific conventions discovered during work:
If the file doesn't exist: flag it. Do not create without explicit confirmation.
~/.agents/skills/<name>/references/user-learnings.md)Learnings specific to a particular skill's behavior:
Only if ~/.agents/skills/<name>/ exists. Skip if the skill directory isn't found.
## Session Retro — 3 sessions analyzed
### User CLAUDE.md (2 findings)
1. **Prefer early returns over nested conditionals**
- Evidence: "no don't nest that, use early return" (session 2026-04-12, turn 15)
- Proposed addition: `- Early returns instead of nested conditionals`
2. **Don't start dev server unless asked**
- Evidence: "I said don't run dev server" (session 2026-04-11, turn 3)
- Proposed addition: `- NEVER start dev server unless explicitly told`
### Per-skill: build-it (1 finding)
1. **Always run tsc before committing**
- Evidence: "build failed because you didn't type-check" (session 2026-04-12, turn 28)
- File: `~/.agents/skills/vs-build-it/references/user-learnings.md`
### Nothing for project CLAUDE.md this round.
Select findings to save (numbers, 'all', or 'none'):
For each approved finding, write to the designated file:
~/.agents/skills/<name>/references/user-learnings.md with a dated entry.Format for per-skill references:
# User Learnings
## 2026-04-12
- Always run tsc before committing — build failed when type-check was skipped
improve-skills)vs-retro and rules-from-prs)Direct: emit Next only. Composed: return to caller.
Prev: completed session | project milestone
Next: done
Relevant: /vs-try-skill