From introspector
Build or update a mindmap and guided tour of a codebase or document set. Use when the user asks to "introspect", "map", "give a tour of", "explain the structure of", or "onboard me to" a repo, directory, or set of docs. Produces a Mermaid mindmap of concepts/modules plus a guided reading tour, enriched with semantic understanding.
How this skill is triggered — by the user, by Claude, or both
Slash command
/introspector:introspectThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn a repository (or a set of documents) into two artifacts:
Turn a repository (or a set of documents) into two artifacts:
The workflow is scan deterministically, then enrich semantically. A bundled Node.js scanner does the mechanical inventory so you can spend your effort on the parts that need judgement: naming concepts, grouping modules meaningfully, and writing the narrative.
path/to/project"The scanner walks the current working directory (respecting .gitignore),
classifies files, groups modules, links tests to their targets, and extracts
document outlines. It writes a deterministic baseline you will build on.
node "${CLAUDE_PLUGIN_ROOT}/src/cli.ts" --json
--mode code|docs|mixed only to override auto-detection../.introspector/ and re-running overwrites them in place:
mindmap.md — baseline report (Mermaid mindmap + tour + tables)mindmap.mmd — the raw Mermaid diagraminventory.json — the structured inventory you will read nextRequires Node.js ≥ 22.18 (the scanner runs TypeScript directly via type stripping). If
nodeis unavailable, fall back to doing the inventory by hand with Glob/Grep, following the same model described ininventory.json's shape.
Read ./.introspector/inventory.json. It gives you, without re-reading the
whole tree: totals, languages, modules[] (with code/test/doc files and LOC),
tests[] (each test mapped to likely target sources), and docs[] (per-document
heading outlines). Use it to decide which files are worth opening.
The baseline groups by directory. Your job is to add meaning:
src/api
with what they actually are ("HTTP API layer", "Auth", "Persistence").Keep the mindmap readable — aim for 3–6 top-level branches and avoid dumping every file. Group aggressively; a mindmap is a map, not a file listing.
Overwrite ./.introspector/mindmap.md with your enriched version. Preserve
the structure so it stays diffable and re-runnable:
## Mindmap — a mermaid mindmap block. Validate it: the first line is
mindmap, the root is root((name)), indentation is consistent (2 spaces per
level), and labels contain no parentheses/brackets/quotes (they break
Mermaid). The mmLabel helper in src/mindmap.ts shows the sanitization rules.## Guided tour — a numbered, opinionated reading order with one line per stop
explaining why it matters.## What is tested (code) or ## Documentation outline (prose).## Modules / concept table for reference.If a prior mindmap.md exists, treat this as an update: preserve still-accurate
prose and only revise what changed.
The scanner also writes ./.introspector/insights.json (data + objective
scores) and a self-contained ./.introspector/insights.html. Three of the four
visual channels are already meaningful from the deterministic pass (size, test
coverage, documentation amount, prose structure). Your job is to fill the
judgment-only fields the heuristics cannot:
Read insights.json. Focus on nodes carrying flags
(untested, oversized, stub, broken-link, orphan) and on the
largest nodes — those are where author attention pays off.
Open a representative sample of those files (do not read everything).
For each sampled node, set judgment fields — and only these:
scores.quality (0..1) — code: documentation/comment quality; prose:
writing quality. This drives the fill hue (gray until you set it).scores.structure (0..1) for code nodes — cohesion / "doing too
much" / layering (prose structure is already computed; leave it).notes[] — one or two short, specific, author-facing callouts.flags (e.g. god-object, unclear-name); keep
the objective ones the scanner set.Set meta.aiEnriched to true.
Re-render: rebuild insights.html from the updated insights.json using the
bundled renderer so the page reflects your judgments:
node --experimental-strip-types -e "import('${CLAUDE_PLUGIN_ROOT}/src/render-html.ts').then(m => { const fs = require('fs'); const i = JSON.parse(fs.readFileSync('./.introspector/insights.json','utf8')); fs.writeFileSync('./.introspector/insights.html', m.renderHtml(i)); })"
Leave deterministic fields (size, test, docAmount, prose structure,
objective flags) untouched — re-running the scanner recomputes them and will
overwrite AI fields, so the enrichment is the last step.
Tell the user where the artifacts are (./.introspector/mindmap.md and the
interactive ./.introspector/insights.html), show the Mermaid mindmap inline so
it renders, and offer to commit them or go deeper on any branch of the map.
inventory.json and only open representative files
per module rather than everything.Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Applies a firm's KYC/AML rules grid to parsed onboarding records: assigns risk rating, checks required documents, outputs rule outcomes with citations, and routes for escalation.
Generates daily or weekly digests of activity from connected sources (chat, email, docs, tasks, CRM), highlighting action items, decisions, mentions, and project updates.
npx claudepluginhub fingerskier/introspector --plugin introspector