Document Version: 5.0 Last Updated: 2026-04-15 Status: ACTIVE
Shared conventions: See .claude/skills/shared/CONVENTIONS.md
/analyze router: This skill is the repo-handler arm of /analyze — direct
invocation and router dispatch both supported. Handoff contract: the router
passes {target, auto_detected_type: "repo"} as if the skill were invoked
directly.
Repo Analysis
Dual-lens analysis of external GitHub repositories. Creator View surfaces what the repo understands, how it compares to your work, and where you should be challenged. Engineer View assesses health, security, process, and adoption fitness. Both views are always produced; Creator View comes first.
Warm-up (shown at invocation)
Before any work begins, display:
/repo-analysis <target>
depth: <quick | standard | deep> (default: standard)
phases: PHASE N of M (M = 9 Standard, 10 Deep, 1 Quick)
est. time: Standard ~8-15 min | Deep ~20-30 min | Quick <30s
output: .research/analysis/<slug>/
prior feedback: {replay per CONVENTIONS §18 if prior state file exists}
Routing Guide
| You want to… | Use this |
|---|---|
| Analyze one external GitHub repo | /repo-analysis (here) |
| Let router auto-pick repo vs site vs PDF | /analyze <target> |
| Cross-repo synthesis across 3+ analyses | /synthesize |
| Audit the home repo (SoNash itself) | /audit-comprehensive |
| Research a domain or technology broadly | /deep-research |
| Explore design space before planning | /brainstorm |
Critical Rules (MUST follow)
- Standard is the default user depth. Full artifact set: clone + repomix
- dimension wave + Deep Read + Content Eval + Creator View + Engineer View
- Value Map + Coverage Audit + Tag Suggestion + Retro + Routing Menu. Deep
adds the History Wave. Quick Scan (
--depth=quick) is triage state, not a peer user tier — Standard and Deep are the user-invokable depths.
- Write-to-disk-first. Every phase writes its output file before proceeding. Orchestrator verifies file existence, not return values.
- Bands over numbers. Display categorical bands with score in parens.
- No silent skips. After every SHOULD step, verify the expected output exists. If missing: retry once with mitigation, then report to user.
- Home repo guard. If target matches
jasonmichaelbell78-creator/sonash-v0, redirect to/audit-comprehensive. - Rate limit safety. Check
gh api rate_limitbefore every API batch. Abort ifremaining < 200. - State file on every phase transition. Long analyses WILL hit compaction.
- No TDMS auto-pollution. TDMS intake is opt-in via routing menu only.
- Creator View is mandatory for Standard/Deep. Quick Scan includes a lightweight creator lens. The creator lens captures what the repo KNOWS, not just its health.
- Conversational, not clinical. Creator View MUST be written in conversational prose. Anti-goal: must NOT read like a technical manual.
When to Use
- User invokes
/repo-analysiswith a GitHub URL - Evaluate an external repo for adoption, learning, or inspiration
- Understand what a repo knows or teaches
- Structured health report for a dependency decision
- Triage of multiple candidates (Quick Scan each, then promote to Standard)
When NOT to Use
- Cross-repo synthesis →
/synthesize - Home repo audit →
/audit-comprehensive - Domain / technology research →
/deep-research - Quick dependency check →
gh apidirectly
See REFERENCE.md for dimension catalog, tool stack, output schemas, absence patterns, Creator View specification (§14), process details (§15), and full guard rails (§9).
Input
Argument: /repo-analysis <github-url>
Flags: --depth=standard (default) | --depth=quick | --depth=deep |
--lens=adoption|creator (override auto-detected primary lens)
Output: .research/analysis/<repo-slug>/ — analysis.json (unified schema
v3.0, validated by scripts/lib/analysis-schema.js), findings.jsonl,
value-map.json, creator-view.md, summary.md, deep-read.md, content-eval.jsonl,
coverage-audit.jsonl, extraction-journal.jsonl entries. Handler-specific:
repomix-output.txt (gitignored), mined-links.jsonl (curated-list only),
trends.jsonl (re-analysis comparison).
Schema contract: analysis.json MUST validate against the unified Zod schema
in scripts/lib/analysis-schema.js. See CONVENTIONS.md §12.
Process Overview
Standard (default) and Deep share the main pipeline; Quick is standalone triage.
There is no interactive gate between Quick and Standard/Deep — depth is picked
up-front via the --depth flag.
Standard flow (M=9):
VALIDATE Guards -> Home repo? Archived? Rate limits? Fork? Prior feedback replay (§18)?
PHASE 1 of 9 Clone+Repomix -> Blobless clone, generate repomix IMMEDIATELY, verify
PHASE 2 of 9 Dimension Wave -> Inline (<20 files) or agents (large repos)
PHASE 2b of 9 Deep Read -> Read internal artifacts beyond code
PHASE 3.5 of 9 Content Eval -> Evaluate embedded content (links, APIs, refs) — BEFORE Creator View
PHASE 4 of 9 Creator View -> Load home context + Deep Read + Content Eval, compare, challenge
PHASE 5 of 9 Engineer View -> Merge dimensions, compute bands, dual-lens scoring
PHASE 6 of 9 Value Map -> Pattern + knowledge + content + anti-pattern candidates
PHASE 6b of 9 Coverage Audit -> Scan for unexplored content (interactive)
PHASE 6c of 9 Tag Suggestion -> Per _shared/TAG_SUGGESTION.md
SELF-AUDIT + ROUTING
Deep flow (M=10): inserts PHASE 3 of 10 History Wave (12-month temporal
analysis) between Phase 2b and Phase 3.5.
Quick flow (M=1):
VALIDATE Guards -> Home repo? Archived? Rate limits? Fork? Prior feedback?
PHASE 0 of 1 Quick Scan -> API-only, <30s, 18 dimensions + lightweight creator lens
ROUTING -> Queue for Standard | Extract | Done
Quick Scan (Phase 0 — --depth=quick only)
API-only, under 30 seconds. 18 dimensions (QS-01 through QS-18). See REFERENCE.md §1.1. Quick is triage, not a user tier.
Process: Validate → 3 parallel API batches → classify repo type (§5b) → compute dimensions → score 6 summary bands → absence pattern classifier → write artifacts → present inline.
Lightweight creator lens (MUST): After computing health dimensions, read the repo description and README (Contents API, first 200 lines). Write 2-3 sentences: "This repo appears to understand/demonstrate/teach X." Teaser only, not full Creator View.
source_tier: Repos emit source_tier: "T1" (first-party artifacts).
Done when: analysis.json exists AND creator lens sentences written.
Clone + Repomix (Phase 1 of M)
- Clone:
git clone --filter=blob:none --depth=1 <url>to/tmp/ - Generate repomix IMMEDIATELY (MUST). Run
npx repomix@latest --compressand save to output directory. Verify file exists before proceeding. If repomix fails: retry once, then report. Do NOT silently skip — repomix is required for Extract routing. - For Deep:
git fetch --unshallowor--shallow-since="1 year ago". - Update state file.
Done when: clone path recorded AND repomix-output.txt exists and is non-empty.
See REFERENCE.md §15.1 for LFS, monorepo detection, tool availability.
Dimension Wave (Phase 2 of M)
Small repos (<20 files): Analyze inline via Bash. Subagents cannot access temp directories.
Large repos (20+ files): Copy clone to project workspace
(.research/analysis/<slug>/source/), spawn up to 4 concurrent agents. Verify
each agent's output file exists after completion; on 0-byte or missing, capture
task-notification result text and write it to the dimension file.
Dimensions: Security audit, architecture analysis, documentation quality, test infrastructure. See REFERENCE.md §1.2.
Done when: all dimension files exist and are non-empty, with agent failures logged (if any).
Deep Read (Phase 2b of M — MUST for Standard/Deep)
A repo's knowledge lives in docs, examples, guides, notebooks, and referenced resources — not just code. Skipping these is like reviewing a library by looking at the building and ignoring the books.
Artifact discovery (MUST): Scan the clone for:
- Guide/tutorial documents (
guides/,docs/,examples/, non-README*.md) - Notebooks (
.ipynb— methodology, not just code) - Embedded SKILL.md / instruction files (monorepos with per-module docs)
- SOP/methodology documents (HARNESS.md, CONTRIBUTING.md details, architecture docs)
- Referenced external resources (arXiv papers, linked repos, datasets) — cataloged for Phase 3.5 evaluation
Output: deep-read.md listing what was found, read, and cataloged for Phase
3.5. For each read artifact, note knowledge not visible from code.
Feed forward: Deep Read findings feed into Creator View (Phase 4). The Creator View's "What's Relevant To Your Work" section MUST reference specific internal artifacts, not category-level observations.
Done when: deep-read.md exists AND all internal artifacts are cataloged (read or deferred to Phase 3.5).
History Wave (Phase 3 of 10 — Deep only)
12-month temporal analysis: commit velocity, contributor health, churn hotspots. See REFERENCE.md §1.4 and §7 for temporal fingerprint spec.
Done when: history.jsonl exists AND temporal fingerprint written to analysis.json.
Content Evaluation (Phase 3.5 of M — MUST for Standard/Deep)
Phase renumbered from 4b to 3.5 in v5.0 (breaking change for existing state files — see Version History migration note). Execution order is unchanged; the number now matches the execution slot.
Evaluate the repo's embedded content for specific relevance to home context. Runs BEFORE Creator View and feeds into it. A repo's value often lives in its references, not its code.
Applies to ALL repo types (not just curated-list). For curated-list repos, content IS the repo; for framework/library repos, content is internal docs; for research repos, content is external papers and datasets.
Writes content-eval.jsonl (or mined-links.jsonl for curated-list) with one
entry per evaluated item:
{category, name, url, relevance, applicability, home_connection}. This output
feeds Creator View §2.
Done when: content-eval.jsonl (or mined-links.jsonl) exists AND every item has a relevance rating AND the "feed to Creator View §2" handoff is ready.
Full detail — depth tiers, structured-metadata filtering, fetch failure handling, per-type evaluation rubrics — see REFERENCE.md §15.4.
Creator View (Phase 4 of M — MUST for Standard/Deep)
The primary analytical output. Written in conversational prose, not tables. Informed by THREE upstream inputs: home repo context, Deep Read artifacts (Phase 2b), and Content Eval results (Phase 3.5). Do not write Creator View until Phase 3.5 completes.
Home repo context loading (MUST): SESSION_CONTEXT.md, ROADMAP.md,
CLAUDE.md, .claude/skills/, MEMORY.md entries. See REFERENCE.md §14.2.
6 MUST-produce sections (Section 2b required only for product repos):
- What This Repo Understands (+ Blindspots)
- What's Relevant To Your Work
- 2b. Use-As-Is Verdict (product repos only — Adopt/Trial/Extract-only/Avoid)
- Where Your Approach Differs (Ahead / Different / Behind)
- The Challenge
- Knowledge Candidates (T1 active / T2 systems / T3 lower)
- What's Worth Avoiding
Write output to creator-view.md. Self-verify: re-read generated Creator
View; verify each home repo claim references something that exists.
Done when: creator-view.md exists AND all MUST sections written AND Section 2 references specific items from Deep Read + Content Eval.
Full specification — style guide, section prompts, fit-badge derivation, anti-pattern rules — see REFERENCE.md §14.
Engineer View (Phase 5 of M)
Health tables, scoring bands, absence patterns, adoption assessment. 6 summary dimensions: Security, Reliability, Maintainability, Documentation, Process, Velocity. Adoption: Adopt/Trial/Extract/Avoid.
Two scoring lenses computed (adoption + creator); both shown, primary marked.
Override with --lens. See REFERENCE.md §4.
Done when: engineer-view.md OR summary.md contains all 6 bands + absence pattern verdict + adoption classification.
Value Map (Phase 6 of M)
Generate value-map.json with four candidate types:
- Pattern — code, architecture, tooling to extract
- Knowledge — understanding, methodology, insights to learn (E0-E1)
- Content — specific items FROM the repo's content (tutorials, APIs, guides,
papers) with direct home applicability. Promoted from
content-eval.jsonl: anyhighrelevance item MUST become a content candidate AND an extraction entry. - Anti-pattern — cautionary lessons from Creator View §6. Each actionable warning MUST become an anti-pattern candidate.
All four use the same ranking fields (novelty, effort, relevance). Content
candidates include a url. Knowledge candidates use E0-E1. Anti-pattern
candidates use E0.
Scope-explosion prompt: For curated-list repos with >100 entries,
prompt:
"Curated list has N entries. Evaluate all / top 50 by signal / custom scope?".
Soft user-confirmation; never hard-block.
Append relationships to .research/reading-chain.jsonl. Populate
related_repos[] and cross_repo_connections[] in value-map.json.
Done when: value-map.json exists AND all 4 candidate arrays present AND content + anti-pattern promotion rules applied.
Coverage Audit (Phase 6b of M — MUST for Standard/Deep)
After all artifacts are written, scan for content that exists in the repo but
was NOT analyzed. The safety net that catches edge cases. Interactive prompt:
Analyze all / Select categories / Skip. Record user decision in
coverage-audit.jsonl — never silently discard.
Done when: coverage-audit.jsonl exists AND every item has a user_decision
field (analyze / skip) or status: "analyzed".
Full detail — categories scanned, output format, re-analysis triggering — see REFERENCE.md §15.5.
Tag Suggestion (Phase 6c of M — MUST for Standard/Deep)
Follow the canonical protocol in
.claude/skills/_shared/TAG_SUGGESTION.md. Per
CONVENTIONS §14: at least 3 semantic tags per entry, 8 categories, no upper
bound.
Signal sources for repo-analysis: creator-view.md, entry notes,
engineer-view.md, mined-links.jsonl, top dependencies from repomix output.
Done when: user-approved tags written to analysis.json.tags AND each
extraction-journal.jsonl row.
Cross-Repo Extraction Tracking (MUST for Standard/Deep)
After Phase 6, update both files:
.research/extraction-journal.jsonl(machine-readable, unified v2.0 schema shared with website-analysis). Remove stale entries for the repo; write fresh entries for all candidates..research/EXTRACTIONS.md(human-readable, generated). Do NOT edit manually. Run:node scripts/cas/generate-extractions-md.js.
Both are canonical: journal is the data source; EXTRACTIONS.md is the regenerated reading interface.
Done when: grep -c "$SOURCE" .research/extraction-journal.jsonl >= 1 AND
script output confirms the source in EXTRACTIONS.md.
Full record schema + regeneration detail — see REFERENCE.md §15.6.
Delegation & Defaults
At every interactive gate, a default applies if the user does not choose. Record the default explicitly in state so self-audit can verify.
| Gate | Default |
|---|---|
--depth unspecified |
standard |
| Coverage Audit unanswered | skip all (logged in coverage-audit.jsonl) |
| Tag Suggestion unanswered | never auto-approve — block with prompt |
| Scope-explosion prompt | top 50 by signal |
| Routing menu unanswered | 7. Done (cleanup + invocation track) |
| Prior Feedback Replay (CONV §18) | continue unchanged (logged as shown) |
Auto-approve is forbidden for Tag Suggestion — tags require explicit user judgment (CONVENTIONS §14.6).
Per-Phase Artifact Gate (MUST)
After every phase, verify the output file exists and is non-empty before proceeding. If a Write is rejected by a hook (security hook false positive on analysis prose), immediately retry via Bash/Python heredoc.
Verification:
[ -s ".research/analysis/<slug>/<artifact>" ] && echo PASS || echo FAIL
Guard Rails (top 5)
- Rate limit safety —
gh api rate_limitbefore every API batch; abort ifremaining < 200. - Home repo guard — target matches
jasonmichaelbell78-creator/sonash-v0→ redirect to/audit-comprehensive. - Large repo safety — >5000 files or >500MB clone → confirm with user before proceeding.
- Fork detection — archive + fork + low stars → flag as low-signal before Deep.
- Write-rejection bypass — hook-rejected prose writes → retry via Bash/Python, never silently skip.
Full guard catalog — LFS, monorepo, clone safety, framework detection, error handling — see REFERENCE.md §9.
Self-Audit (MUST, before routing)
Run minimum floor per CONVENTIONS §8 plus domain checks:
- Artifact presence (analysis.json, findings.jsonl, value-map.json, creator-view.md, summary.md, deep-read.md, content-eval.jsonl OR mined-links.jsonl, coverage-audit.jsonl, extraction-journal.jsonl)
- Schema contract — analysis.json validates
- Completeness — all ran phases produced output
- Schema drift —
skillVersionmatches expected - Regression check — compare finding count delta vs prior analysis
- REFERENCE.md contract — structure matches
- Extraction journal —
grep -c "$SOURCE">= 1, EXTRACTIONS.md rebuilt - Tags populated —
analysis.json.tagsnon-empty (user-approved) - Coverage audit decisions — every item has
user_decisionoranalyzed - Phase ordering — state file
phases_completedshowsphase-3.5-content-evalbeforephase-4-creator-view,phase-6c-tagsbeforeself-audit - Prior feedback replay —
prior_feedback_shown: trueif prior state existed (CONVENTIONS §18)
Report failures to user before routing.
Routing Menu
Presented after Standard or Deep. 8 options:
| Option | Action |
|---|---|
| 1. Extract value | Load repomix + value-map. Present candidates. |
| 2. Send to TDMS | Transform findings to TDMS. Opt-in only. |
| 3. Deep-plan this | Inject analysis as research context. |
| 4. Save to memory | Persist key findings as project memory. |
| 5. Adoption verdict | Full WR-01 through WR-06 assessment. |
| 6. Explore insights | Deeper conversation about Creator View. |
| 7. Done | Cleanup, confirm artifacts, track invocation. |
| 8. Cross-repo synthesis | If 3+ repos analyzed, offer /synthesize. |
State File & Resume
State file: .claude/state/repo-analysis.<repo-slug>.state.json
Update after every phase. On re-invocation: offer Resume/Re-run/Compare. See REFERENCE.md §8 for schema.
v5.0 migration note: Existing state files with phases_completed containing
phase-4b-content-eval will be auto-migrated to phase-3.5-content-eval on
next resume. Self-audit phase-ordering check accepts either label during
transition window (through v5.2).
Compaction Resilience
Artifacts as checkpoints: analysis.json, findings.jsonl, summary.md, value-map.json, dimension files all persist independently. State file enables phase-level resume.
Integration
- Upstream:
/deep-research,/brainstorm,/analyze(router) - Downstream:
/deep-plan,/synthesize, TDMS, project memory - Neighbors:
/audit-comprehensive(home repo), dimension agents - Cross-skill contract: MUST preserve
last_synthesized_atfield onanalysis.jsonwhen writing — this field is set by/synthesizePhase 5 and must not be dropped by handler re-runs (v2.0 contract, Session #284). - References: REFERENCE.md, ARCHIVE.md, _shared/TAG_SUGGESTION.md
Retro & Prior Feedback Replay
Retro (per CONVENTIONS §10): Before presenting the routing menu, ask: "What
worked well? What would you change next time?" Save to process_feedback in the
state file. Optional structured dimensions: worked_well, would_change,
longest_phase, signal_quality.
Prior Feedback Replay (per CONVENTIONS §18): On re-invocation for the same
target, replay prior process_feedback during VALIDATE and ask whether to
adjust approach. Log prior_feedback_shown: true in the new state file.
Invocation tracking — on Done routing, capture enriched context:
cd scripts/reviews && npx tsx write-invocation.ts --data '{
"skill":"repo-analysis","type":"skill","success":true,
"schema_version":1,"completeness":"stub",
"origin":{"type":"manual"},
"context":{"target":"TARGET_REPO","mode":"repo","depth":"DEPTH",
"lens":"LENS","score":SCORE,"decisions":DECISION_COUNT,
"candidates":CANDIDATE_COUNT}
}'
v5.0 | 2026-04-15 | Skill-audit batch 2026-04-15-analysis-quartet Wave 2.
Breaking: Phase 4b → 3.5 (Content Eval) — state files with
phase-4b-content-eval in phases_completed auto-migrate on resume.
Structural: /analyze router ack, Warm-up block, Routing Guide, Delegation &
Defaults, consolidated top-5 Guard Rails, scope-explosion soft prompt, Done-when
gates per phase, PHASE N of M markers, enriched invocation tracking, Prior
Feedback Replay per CONVENTIONS §18, Tag Suggestion body replaced with
_shared/TAG_SUGGESTION.md reference. Detail extractions to REFERENCE.md §14
(Creator View full spec already present), §15.4 (Content Eval detail), §15.5
(Coverage Audit detail), §15.6 (Extraction Tracking detail). v4.2 footer moved
to ARCHIVE.md in Wave 1.
v4.6 | 2026-04-13 | Session #278: Creator View Section 2b Use-As-Is Verdict as MUST-produce for product repos. Populates analysis.json adoption_verdict / adoption_blockers / adoption_recommendation.
v4.5 | 2026-04-12 | Session #276: Per-phase artifact gate, self-audit +4 checks (EXTRACTIONS.md presence, tags non-empty, coverage decisions recorded, phase ordering in state file).
v4.4 | 2026-04-10 | PR #505 Gemini review: split Process Overview into Standard/Deep and Quick Scan flows; removed stale "GATE Interactive" row.
v4.3 | 2026-04-06 | Convergence: CONVENTIONS.md ref, self-audit phase, schema drift fix, artifact path alignment, agent_budget removal, retro persistence, invocation tracking. Per DECISIONS.md #1-20.
v4.2 and earlier — see ARCHIVE.md.
Version History
| Version | Date | Description |
|---|---|---|
| 5.0 | 2026-04-15 | Skill-audit batch Wave 2 rewrite — phase renumber 4b → 3.5 (breaking). |
| 4.6 | 2026-04-13 | Creator View §2b Use-As-Is Verdict MUST for product repos (application/framework/tool-demo). |
| 4.5 | 2026-04-12 | Per-phase artifact gate + self-audit +4 checks. |
| 4.4 | 2026-04-10 | Split Process Overview into Standard/Deep + Quick Scan. |
| 4.3 | 2026-04-06 | Convergence: CONVENTIONS.md ref, self-audit phase, schema drift fix. |
| 4.2 and earlier | — | See ARCHIVE.md. |