Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Coding
codebase-explainer
Try itProduce a durable onboarding artifact for a codebase — writes ONBOARDING.md covering a "read this first" minimum, system overview, dependency map, startup flow, auth flow, and 5-15 important files, every claim backed by file:line citations; refreshes an existing onboarding doc instead of rewriting it. Use this skill whenever the user says "explain this codebase", "explain the codebase", "onboard me", "give me a tour", "tour this repo", "what does this repo do", "where do I start", "codebase overview", "read this first", "I haven't looked at this in months", or "/codebase-explainer" — even if they don't name the skill.
What it does
Produce a durable onboarding artifact — the document past-you wishes you'd written before stepping away from this repo for six months. Not a chat answer that disappears: a committed with a tight "read this first" list, system overview, dependency map, startup flow, auth flow, and the important fil…
The skill document
Codebase Explainer
Produce a durable onboarding artifact — the document past-you wishes you'd written before stepping away from this repo for six months. Not a chat answer that disappears: a committed ONBOARDING.md with a tight "read this first" list, system overview, dependency map, startup flow, auth flow, and the important files. Every claim cited with file:line.
When to use this skill
- "explain this codebase" / "explain the codebase" / "what does this repo do"
- "onboard me" / "give me a tour" / "tour this repo" / "where do I start"
- "I haven't looked at this in months" / "I forgot how this works"
- "codebase overview" / "read this first" / "create an onboarding doc"
/codebase-explainer//onboard
Do not auto-trigger for:
- Architecture refactor suggestions →
improve-codebase-architecture - Feature implementation →
task-executor - Bug triage →
diagnose - A specific diff review →
code-review - Session hand-off (different artifact, session-scoped) →
handoff
Workflow
1. Detect the lay of the land (no sub-agents yet)
Read root-level signals directly to scope the exploration:
- Manifests —
package.json,pyproject.toml,Cargo.toml,go.mod,*.csproj,*.sln,Gemfile,composer.json,pom.xml,build.gradle*. - Entry-point hints —
next.config.*,vite.config.*,tsconfig.json,Procfile,Dockerfile,docker-compose*.yml,main.*,Program.cs,manage.py. - Existing docs —
README.md,CONTEXT.md,docs/, anyONBOARDING.mdalready present. - Workspace shape — monorepo (
pnpm-workspace.yaml,lerna.json,nx.json,turbo.json) vs. single project.
If an ONBOARDING.md already exists, this is refresh mode: read it first, then look for drift (new top-level deps, moved entry points, new/removed routes, auth changes) and update in place — don't rewrite from scratch.
2. Run Explore sub-agents in parallel
Spawn subagent_type=Explore calls in a single message so they run concurrently. Brief each agent self-containedly — it has no conversation context. Default fan-out:
- System overview — what this project actually does, key domains, top-level modules, public-facing surfaces (HTTP routes / CLI commands / exported APIs).
- Dependency map — top-level prod deps only (skip dev/test/types). For each: what it does in this codebase (not generic), and the load-bearing call site (
file:line). If a dep is genuinely non-obvious (niche library, internal fork, name that doesn't reveal its purpose), the agent MAY checkcontext7(or any docs-MCP server available in the environment) for a one-line "what is this library" —context7__resolve-library-id→context7__query-docs. Skip the lookup for well-known libraries (React, Express, Prisma, etc.) — the generic description is what we're trying to avoid; what matters is how it's used here. The "how it's used here" line requires a call site the agent actually opened. If no call site is found, the row reads "declared but no usage found" — that's a finding (candidate for removal), not a gap to paper over with a guess from the package name. - Startup flow — entry point → bootstrap → config loading → server start. A numbered sequence with
file:lineper step. - Auth flow — login/session/token handling, middleware/guards, user model, where authorization decisions are made. This section must be a traced code path — a middleware/guard/session check the agent read this session, cited
file:line— never an inference from an auth library appearing in the manifest. If none, the agent must say "no auth detected" explicitly AND state what was searched (e.g. "grepped for middleware,session,jwt,[Authorize], guards — no hits") so Step 3 doesn't fabricate one. - Important files — the 5–15 files a new contributor must know about, each with a one-line "why it matters." A file earns its slot by being load-bearing, and the agent names the evidence per file: imported widely (roughly how many importers), owns a core domain concept, or is an entry point. "Looks important" is not evidence.
Each agent reports back in ≤300 words with file:line citations. Don't ask Explore to read entire files — ask for the specific answer plus citations.
3. Synthesize ONBOARDING.md
Write the artifact to docs/ONBOARDING.md if a docs/ directory exists, otherwise ONBOARDING.md at repo root.
No-fabrication gate: every claim in the file traces to a probe run this session — a file an agent read, a grep it ran. If a claim can't name its probe, it's a hypothesis: verify it or omit it. Never fill a section by inference from framework conventions ("Next.js apps usually…").
Sections, in this order:
- Read this first — 3–7 bullets max. The minimum a fresh contributor needs to not be dangerous.
- System overview — 1–3 paragraphs. What it does, who it serves, the dominant architectural shape.
- Startup flow — numbered, with
file:lineper step. - Auth flow — same shape, or a one-liner "No authentication layer — this is X (searched: middleware, session/token handling, guards)" if the agent confirmed none.
- Dependency map — table:
Dependency | What it does here | Key call site. - Important files — bulleted list with
file:lineand a one-line "why it matters." - Project glossary (optional) — only if
CONTEXT.mdexists or domain terms surfaced repeatedly during exploration. - Footer — one line: "Generated by
/codebase-explainer. Re-run to refresh."
No timestamps in the file body (dates rot). The git history is the timestamp.
4. Render a condensed summary inline
After writing the file, render in chat: the "Read this first" bullets verbatim, plus a one-sentence pointer to the file path. Do not re-paste the full document — the file is the artifact.
5. Offer the share step (optional)
If making this teammate-accessible would help, mention ShareOnboardingGuide — it uploads ONBOARDING.md and returns a link. Offer once; never auto-invoke.
Examples
Example 1: First pass on a six-month-old project
User: "I haven't touched this repo since November — onboard me"
Claude:
- Reads
package.json,next.config.ts,prisma/schema.prisma, existingREADME.md. Notes: Next.js App Router + NextAuth + Prisma + Postgres. - Spawns five Explore agents in parallel (overview, deps, startup, auth, important files) in one message.
- Synthesizes → writes
ONBOARDING.mdwith startup flow rooted atapp/layout.tsx:12→lib/auth.ts:34and auth flow citing the NextAuthauthOptionsand therequireSession()helper. - Prints the "Read this first" bullets and the file path. Offers
ShareOnboardingGuide.
Example 2: Refresh against an existing onboarding doc
User: "/codebase-explainer — refresh the onboarding doc, I added Stripe and a new admin route last sprint"
Claude:
- Reads existing
docs/ONBOARDING.md. Spawns Explore agents scoped to "what's changed": new top-level deps, new routes underapp/**/route.ts, auth changes. - Updates the dependency map (Stripe row added with
lib/payments/stripe.ts:18citation), appends the admin route to startup flow, leaves untouched sections alone. - Reports a diff-style summary in chat: "+1 dep, +1 route, auth unchanged."
Anti-patterns
- ❌ Generic framework descriptions ("This is a Next.js app."). Call out what makes THIS codebase non-obvious — the custom session helper, the funky background job runner, the legacy module that traps newcomers.
- ❌ Listing every dependency including dev/test/types. Prod + top-level only.
- ❌ "Important files" with 40 entries. 5–15 is the budget. If you can't pick, you don't understand the codebase yet — Explore more.
- ❌ Inventing an auth flow when there isn't one. If the agent reports no auth, the section says "No authentication layer" plus what was searched. That's load-bearing information for a future reader.
- ❌ Auth described from the manifest instead of the code. ❌ "Uses NextAuth for authentication" because
next-authsits inpackage.jsonvs. ✅ "Requests hitmiddleware.ts:8→auth()fromlib/auth.ts:12; unauthenticated users redirect atmiddleware.ts:19." Trace the path or write "none detected (searched: …)". - ❌ Papering over a dependency with no found call site. "Declared but no usage found" goes in the table verbatim — it's a finding.
- ❌ Important files picked by vibes. Each entry names its evidence: import count, domain concept owned, or entry-point role.
- ❌ Reading whole source files into the main context. Sub-agents return summaries with
file:linecitations — trust them. - ❌ Claims without
file:linecitations. A claim the next reader can't verify rots fast. - ❌ Hard-coded dates ("as of November 2025") in the file body. Git history is the timestamp.
- ❌ Rewriting an existing
ONBOARDING.mdfrom scratch when the user asked to refresh. - ✅ Tight "read this first," cited everywhere, explicit about absences, refreshable.
Notes
- Composes with
improve-codebase-architecture: an onboarding pass often surfaces shallow-module clusters worth a deepening review. Hand the user a pointer; don't propose refactors here. - Composes with
handoff:ONBOARDING.mdis project-level orientation (durable across many sessions); a handoff is session-level state. Different artifacts, both useful. ShareOnboardingGuide(when available in the environment) uploadsONBOARDING.mdand returns a teammate-shareable link. Optional; user-initiated.
Related skills
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Run Git operations — commits, branches, merges, rebases, conflict resolution, and recovery — with safety rules enforced.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
More from dennisrongo
Browse all skillsSurface architectural friction in a codebase and propose **deepening opportunities** — refactors that turn shallow modules into deep ones, informed by the project's `CONTEXT.md` glossary and `docs/adr/` decisions. Walks the codebase with an Explore sub-agent, applies the **deletion test** to suspected pass-through modules, presents a numbered list of candidates with files / problem / solution / benefits, and drops into a grilling loop once the user picks one — naming new concepts into `CONTEXT.md` inline and offering an ADR only when a rejection is load-bearing. Writes no production code. Use this skill whenever the user says "improve architecture", "improve the architecture", "architecture review", "find refactoring opportunities", "find deepening opportunities", "find shallow modules", "make this more testable", "this code is hard to navigate", or invokes `/improve-codebase-architecture` — even if they don't name the skill.
Write and run E2E tests for React Native / Expo apps using Maestro CLI — the open-source tool that drives the **real native app** on an Android emulator or iOS simulator, not a web build. Covers what browser-based e2e (Playwright, Expect, e2e-verify) cannot reach: native components, biometrics, secure storage, push notifications, platform-specific modules. Write YAML flows, run headed for authoring or headless for CI. Scripts currently automate the Android workflow end-to-end (Java + SDK detection, emulator boot, adb reverse); iOS simulator setup requires Xcode + `xcrun simctl` and is documented but not automated by the setup script. Use this skill whenever the user says "test my react native app", "e2e test the mobile app", "write maestro tests", "test the expo app", "automate emulator testing", or "/maestro-mobile-test" — even if they don't name the skill. Not for web apps (e2e-verify), unit/component tests (write-tests with RNTL + Jest), or API contract tests.
Verify a change end-to-end in a real browser, routed by one question — who needs this check to run again? Ephemeral checks run via Expect (millionco/expect) or browser-use (AI agent driving headless Chromium — references/browser-use.md) when installed, else Claude driving the browser directly; regression-critical flows (auth, money, signup, checkout, deletion) get durable Playwright tests under write-tests discipline. Evidence rule either way — an AI-walked flow yields "no issues found in the paths walked" with observations quoted, never "e2e passes". Safety gate: never production, never real user cookies. Use this skill whenever the user says "verify this in the browser", "test it end to end", "test my web app", "e2e test this", "write playwright tests", "run expect", "run browser-use", "smoke test the UI", or "/e2e-verify" — even if they don't name the skill. Not for native mobile (maestro-mobile-test), unit/integration authoring (write-tests), or debugging a failing e2e test (diagno
Pre-commit SQL code review for uncommitted database changes. Detects antipatterns that cause real production incidents — broken TRY/CATCH error handling, swallowed errors, retry patterns without loops, tables missing PK/indexes, type-mismatch truncation, dynamic-SQL injection, NOLOCK in write paths, UPDATE/DELETE without WHERE, hardcoded env values, cross-DB refs, and more (full catalog in the skill body). Reports BLOCKER/WARN/INFO findings with file:line citations and fixes. Never edits SQL. Use this skill whenever the user says "/sql-review", "review my SQL", "review the SQL diff", "lint the SQL", "check my SQL changes", "SQL pre-commit check", "audit my stored proc", or asks about SQL antipatterns in a diff — even if they don't name the skill. Distinct from code-review (general review) — this carries SQL-specific incident patterns.
Scaffold a new Tauri 2 desktop app (Rust backend + TypeScript/React frontend) using a thin-frontend / rich-Rust-backend architecture with modular commands, trait-based platform abstractions, encrypted secrets at rest, single-instance enforcement, a self-hosted updater, and a cross-platform CI matrix. Three modes: full project scaffold, add a Tauri command slice, add a Rust module slice. Use this skill whenever the user says "create a new Tauri app", "scaffold a Tauri 2 project", "new desktop app with Tauri", "Tauri + React project", "add a Tauri command end-to-end", "add a Rust module to my Tauri app", "my Tauri conventions", or "/tauri-2-app" — even if they don't name the skill. Full good-pattern catalog and pitfall list live in the skill body.
Turn a feature idea, conversation context, or rough notes into researched, detailed, dependency-ordered checkbox tasks appended to the project's roadmap/backlog file — exactly the format goal-runner consumes, so a fresh unattended session can execute them. Grounds every task in the actual codebase before writing it (grep/read or Explore scouts; think-like-fable rigor if installed), puts what + done-when on the checkbox line with verified files, acceptance criteria, and a verification command in plain sub-bullets, and labels assumptions. Appends to the existing ROADMAP.md/BACKLOG.md/TODO.md; when none exists it asks once and defaults to ROADMAP.md. Use this skill whenever the user says "add this to the backlog", "add it to the roadmap", "plan these tasks", "break this down into tasks", "capture this as roadmap tasks", "turn these notes into a task list", or "/backlog-planner" — even if they don't name the skill. Not for executing tasks (goal-runner, task-executor, autopilot) — this writ