cc-changelog
CONTRIBUTOR TOOL - Track CC changelog, extract new versions since last check, analyze impact on plugin (breaking changes,…
Compute metrics for Claude Code sessions. Discovers via ccrider, filters trivial, computes friction/opportunity/fingerprint scores. Use for broad session triage.
Claude Code
$ npx -y skills add oliver-kriska/claude-elixir-phoenix --skill session-scan --agent claude-code
Codex
$ npx skills add oliver-kriska/claude-elixir-phoenix --skill session-scan -a codex -y
Cursor
$ npx skills add oliver-kriska/claude-elixir-phoenix --skill session-scan -a cursor -y
Gemini CLI
$ npx skills add oliver-kriska/claude-elixir-phoenix --skill session-scan -a gemini-cli -y
GitHub Copilot
$ npx skills add oliver-kriska/claude-elixir-phoenix --skill session-scan -a github-copilot -y
OpenCode
$ npx skills add oliver-kriska/claude-elixir-phoenix --skill session-scan -a opencode -y
Windsurf
$ npx skills add oliver-kriska/claude-elixir-phoenix --skill session-scan -a windsurf -y
name: session-scan description: Compute metrics for Claude Code sessions. Discovers via ccrider, filters trivial, computes friction/opportunity/fingerprint scores. Use for broad session triage. argument-hint: "[--since DATE] [--project NAME] [--limit N] [--list] [--rescan]" disable-model-invocation: true
Compute deterministic metrics for sessions discovered via ccrider MCP.
**NEVER call `mcp__ccrider__get_session_messages` in main context.** Each response is 5-50KB of JSON. Fetching N sessions directly = context crash.
**You MUST delegate all scoring to subagents.** The main context only does: discovery, deduplication, subagent spawning, and result collection.
Requires **ccrider MCP**. If not available:
> ccrider MCP is required. See: <https://github.com/neilberkman/ccrider>
/session-scan # Last 7 days, up to 50 sessions /session-scan --since 2026-02-01 # Since specific date /session-scan --project enaia # Filter by project name /session-scan --limit 20 # Cap session count /session-scan --list # Discovery only, no scoring /session-scan --rescan # Recompute already-scanned sessions
Extract from `$ARGUMENTS`:
mcp__ccrider__list_recent_sessions(limit: N, project: PROJECT, after_date: SINCE)
Filter out sessions with < 10 messages. If `--list`: show table and stop.
Read `.claude/session-metrics/metrics.jsonl` (if exists). Skip sessions already scanned unless `--rescan` flag is set. Report: "N new sessions to scan (M already in ledger)"
Glob: **/session-scan/references/compute-metrics.py
Store as `SCORER_PATH` (absolute). `PROJECT_ROOT` = current working directory.
**DO NOT fetch messages yourself. DO NOT run Python yourself.** **You MUST use the Task tool to spawn subagents.**
For EACH unscanned session, spawn a haiku subagent using this template:
Task(subagent_type="general-purpose", model="haiku", mode="bypassPermissions", prompt="""
Score one Claude Code session. Steps:
1. Fetch messages:
mcp__ccrider__get_session_messages(session_id: "{SESSION_ID}", last_n: 200)
2. Write the full tool result (messages JSON) to:
{PROJECT_ROOT}/.claude/session-metrics/_tmp_{SHORT_ID}.json
3. Run scorer and capture result in ONE Bash command:
python3 {SCORER_PATH} {PROJECT_ROOT}/.claude/session-metrics/_tmp_{SHORT_ID}.json --session-id {SESSION_ID} --project {PROJECT_NAME} > {PROJECT_ROOT}/.claude/session-metrics/_result_{SHORT_ID}.json && rm {PROJECT_ROOT}/.claude/session-metrics/_tmp_{SHORT_ID}.json
4. Report back: "Scored {SHORT_ID}: friction=X.XX fingerprint=Y"
If ccrider fails, report the error and exit.
""")**Spawn ALL subagents in parallel.** Wait for all to complete.
for f in .claude/session-metrics/_result_*.json; do cat "$f" >> .claude/session-metrics/metrics.jsonl rm "$f" done
Show summary table sorted by friction (descending):
| ID | Project | Date | Type | Friction | Opportunity | Tier2? | |----------|---------|------------|-------------|----------|-------------|--------| | ffa155ee | enaia | 2026-02-18 | bug-fix | 0.42 | 0.65 | Yes | | 90a74843 | wedding | 2026-02-17 | feature | 0.15 | 0.20 | No |
If Tier 2 eligible: suggest `/session-deep-dive --from-scan`.
Write `.claude/session-metrics/latest-scan.json`:
{
"scanned_at": "2026-02-20T14:30:00Z",
"sessions_discovered": 25,
"sessions_scanned": 18,
"sessions_skipped": 7,
"tier2_eligible": 5
}See `references/scoring-guide.md` for full algorithm documentation.
1. **NEVER call `get_session_messages` in main context** — WILL crash context 2. **ONE subagent per session** — each fetches exactly ONE session 3. **`mode="bypassPermissions"` on every Task** — subagents need Write+Bash 4. **Absolute paths in subagent prompts** — subagents don't inherit context 5. **Result files, not direct append** — avoid jsonl race conditions 6. **NEVER modify existing metrics.jsonl entries** — append-only ledger 7. **ALWAYS delete temp and result files** after processing
Docs: phxagents.dev -- install guides per runtime, the runtime compatibility matrix, all 26 Iron Laws, and a browsable skill and agent catalog. Claude Code is great.
CONTRIBUTOR TOOL - Track CC changelog, extract new versions since last check, analyze impact on plugin (breaking changes,…
Run an A/B codex review experiment — holistic codex review vs 3 focused dimension passes (security, ecto, liveview) on the branch…
CONTRIBUTOR TOOL - Validate plugin against latest Claude Code documentation. Catches breaking changes, deprecations, discovers…
Guide plugin development workflow — editing skills, agents, hooks, or eval framework in this repo. Use when modifying files in…
Generate X/Twitter release promotion posts with ASCII tables and CodeSnap rendering. Use when writing release posts, promotion…
CONTRIBUTOR TOOL - Cut a plugin release: bump plugin.json version, finalize CHANGELOG, update README if needed, gate on make ci,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.