From skill-designer
Review session logs for the current project, audit recurring errors, identify friction points, and suggest new Skills or CLAUDE.md improvements. Use when reviewing past sessions, auditing errors, or improving session quality.
How this skill is triggered — by the user, by Claude, or both
Slash command
/skill-designer:suggestThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Review session logs for the current project to find recurring errors, friction points, and opportunities for improvement. Produces actionable recommendations: CLAUDE.md updates, new Skills, hooks, or code fixes.
Review session logs for the current project to find recurring errors, friction points, and opportunities for improvement. Produces actionable recommendations: CLAUDE.md updates, new Skills, hooks, or code fixes.
Focus area (optional): If $ARGUMENTS is provided, narrow the review to that topic (e.g., "sql errors", "date assumptions", "slow queries"). Otherwise, perform a full review.
Session logs are JSONL files stored at:
~/.claude/projects/-{project-path-with-dashes}/
The project path is derived from the current working directory with / replaced by - and prefixed with -.
To find the session directory:
# Convert CWD to the Claude project path
PROJECT_DIR="$HOME/.claude/projects/-$(echo "$PWD" | tr '/' '-' | sed 's/^-//')"
To list sessions (most recent first):
ls -t "$PROJECT_DIR"/*.jsonl 2>/dev/null | head -20
Each JSONL file is one session. Each line is a JSON object with fields including:
type: message type (human, assistant, tool_use, tool_result)message.role: user or assistantmessage.content: array of content blocks (text, tool_use, tool_result)Important: Session files can be very large (10MB+). Use jq with streaming/filters rather than reading entire files into memory. Skip the current session's file (match by most recent modification time if needed).
Find all instances where code execution failed and required multiple attempts.
Failed bash commands — look for tool_result blocks containing error indicators:
# Count errors per session
for f in $(ls -t "$PROJECT_DIR"/*.jsonl | head -20); do
errors=$(jq -r 'select(.message.content) | .message.content[] | select(.type == "tool_result" and .is_error == true) | .content' "$f" 2>/dev/null | wc -l)
if [ "$errors" -gt 0 ]; then
echo "$(basename "$f" .jsonl): $errors errors"
fi
done
Common error patterns to search for:
Traceback (most recent call last) — Python exceptionsError:, ERROR, error: — general errorscommand not found — missing tools/commandsModuleNotFoundError, ImportError — missing Python packagesConnectionRefusedError, OperationalError — database connection failuresFileNotFoundError — wrong file pathsAssertionError — assertion failures (e.g., load_dotenv() issues)SyntaxError — malformed codePermission denied — access issuesIdentify retry sequences — look for the same tool being called multiple times in succession with similar content, where earlier calls failed:
# Extract tool_use + tool_result pairs to identify retries
jq -c 'select(.message.content) | .message.content[] | select(.type == "tool_use") | {tool: .name, id: .id}' "$SESSION_FILE" 2>/dev/null
Create a table:
| Error Category | Frequency (sessions) | Example Error | Session ID(s) |
|---|
Beyond outright errors, identify patterns of wasted effort:
2024, 2025 in assistant messages that were correctedFileNotFoundError or No such fileGrep or Glob queries appearing across multiple sessionsRead at the start of many sessionsBulleted list of friction points with session references:
abc123, def456For each error category and friction point, recommend the most appropriate fix:
| Fix Type | When to Use | Example |
|---|---|---|
| CLAUDE.md update | Guidance, constraints, awareness needed at session start | "Always use lagged data for predictions" |
| Claude Code Skill | Structured, reusable pattern with specific steps/templates | db-query skill with connection template |
| Helper script/CLI | Reusable code that eliminates manual steps | trader review-universe command |
| Hook | Automated validation on every tool use | check-python-env.py pre-run hook |
| Code fix | The underlying code is wrong or fragile | Fix function to handle edge case |
Decision criteria:
Rank recommendations by: (frequency of error) × (token cost per occurrence) × (ease of fix)
Scoring guide:
Present as a table:
| Priority | Score | Problem | Frequency | Token Cost | Ease | Fix Type | Description |
|---|---|---|---|---|---|---|---|
| 1 | 125 | SQL connection failures | 5 | 5 | 5 | Skill | db-query skill with connection template |
| 2 | ... | ... | ... | ... | ... | ... | ... |
For the top 3-5 recommendations, draft ready-to-commit content:
allowed-tools to restrict to minimum necessary toolsdisable-model-invocation: true for user-invoked skillsReview the current project's CLAUDE.md for:
Structure your final output as:
Table of error categories with frequencies and example session IDs.
Bulleted list with session references.
Ranked table with scores.
Ready-to-commit CLAUDE.md updates, Skills, hooks — each in a fenced code block with the target file path.
Outdated items, bloat candidates, missing sections, consistency issues.
jq filters — don't read entire JSONL files as text$ARGUMENTS is set, filter to only that topic area to stay focusednpx claudepluginhub flockcover/cc-plugins --plugin skill-designerAnalyzes Claude Code session logs to extract tool usage stats, thinking blocks, error patterns, debug trajectories, and generate actionable productivity recommendations. Provides cc-session CLI for overviews, timelines, searches.
Reviews completed coding sessions to extract actionable improvements: DX friction, documentation gaps, architecture issues, anti-patterns, bug prevention, and tooling updates.
Performs comprehensive analysis of Claude Code sessions, examining git history, conversation logs, code changes, and gathering user feedback to generate actionable retrospective reports with insights for continuous improvement.