launch-project-audit
Tells a non-coder the truth about what is finished versus half-built — and where the hidden gap is: code that exists but nothing calls.
Why this exists
READMEs and "done" Linear tickets lie. "It compiles" is not "it's wired." The single most common hidden gap is built-disconnected — a real implementation that no route imports, no button calls, no frontend hits. A non-coder cannot see it by eye; reference/dead-code tooling can. This skill produces the evidence-cited map that the rest of the crew acts on.
It complements, never replaces, the existing auditors — it is the ONE thing none of them does (a feature-by-feature build-state + pipeline-stage map). Explicitly defer: security findings → security-audit; UI/design → impeccable (installed skill); autonomy/leverage scoring → leverage-audit; runtime per-step logging → audit-emit. This skill only owns "what's built vs stubbed vs disconnected vs wired vs tested, and how far to production."
Triggers
- "scan my project", "what's built", "what's left", "is this ready".
- Step 2 of
ship-it, after launch-charter is loaded.
Method
Work cheaply first; escalate only for judgment.
- Flatten the repo (cheap/auxiliary model). Use
rendergit (github.com/karpathy/rendergit) to turn the repo into one page, or fall back to git ls-files + reading key files. Feed to the cheap model for the bulk pass. Do not load the frontier model yet.
- Inventory features from the flattened repo + every spec /
.md / CLAUDE.md / AGENTS.md / HERMES.md / config/harness/projects.json.
- Classify each feature's BUILD STATE on concrete signals, not vibes:
not-started — named in docs but no file/route/component exists.
stubbed — file exists but body is a placeholder: TODO, FIXME, raise NotImplementedError, return None, empty handler, "coming soon", mock/hardcoded data where real logic belongs.
built-disconnected — implemented but nothing imports it / no route points to it / the handler is never called. Detect with dead-code tooling: dashboard (TS) knip, ts-prune, depcheck, madge; backend (Python) vulture, ruff (F401/unused), deptry. This is the category a non-coder cannot see.
built-wired — implemented AND connected AND data flows end to end.
built-tested — the above, with tests in tests/ that actually cover it.
- Escalate only ambiguous calls to the FRONTIER model — keeps cost down.
- Map PIPELINE STAGE per feature (
idea → in-progress → PR-open → merged → in-production). Cross-reference GitHub branches/PRs/merges with the live deploys: Railway for app/server/* (FastAPI), Vercel for dashboard/* (Next.js). A feature can be built-wired in code but only merged, not in-production — surface that gap explicitly.
Output
One plain-English table, sorted closest-to-done LAST so unfinished work is on top:
Feature | Build state | Pipeline stage | What's missing | Suggested next step.
Save to .harness/audits/audit-<YYYY-MM-DD>.md. Emit a curator_proposal row via audit_emit.row(...) so the run is logged in .harness/swarm/swarm.jsonl.
Safety bindings
- Read-only. This skill never modifies code, only reports.
- Respects the kill-switch (
TAO_SWARM_ENABLED=0) — reporting still runs, no builder dispatch.
- Cites evidence per row; honours
pii-redactor on any quoted code containing secrets.
Verification
- Every
built-disconnected and stubbed row names the exact file/symbol AND the signal proving it (the missing reference, the TODO, the empty handler).
- A row that cannot cite evidence is marked
needs-human-look, never guessed.
- Re-running on an unchanged tree produces the same classifications (deterministic on the cheap pass).
- Pipeline stage for at least one
app/server/* and one dashboard/* feature is cross-checked against the live Railway/Vercel deploy, not just the branch.
Out of scope
- Fixing anything — see
launch-enhance-debloat.
- Security / design / leverage scoring — delegated to
security-audit / impeccable / leverage-audit.
- Per-step runtime audit logging — that's
audit-emit.
References
launch-review — consumes this audit as input.
security-audit, impeccable (installed skill), leverage-audit — the auditors this skill defers to.
AGENTS.md boundary matrix (which paths are safe to touch later).
1---2name: launch-project-audit3description: Scan the codebase and produce a plain-English map of every feature — what's built, stubbed, orphaned (built-disconnected), wired, or tested — plus how far each piece has travelled toward production. Cheap model for the bulk pass, frontier only for ambiguous calls. Use on "what's actually built", "scan the project", "what's left", or as step 2 of /ship-it.4---56# launch-project-audit78Tells a non-coder the truth about what is finished versus half-built — and where the hidden gap is: code that exists but nothing calls.910## Why this exists1112READMEs and "done" Linear tickets lie. "It compiles" is not "it's wired." The single most common hidden gap is `built-disconnected` — a real implementation that no route imports, no button calls, no frontend hits. A non-coder cannot see it by eye; reference/dead-code tooling can. This skill produces the evidence-cited map that the rest of the crew acts on.1314It complements, never replaces, the existing auditors — it is the ONE thing none of them does (a feature-by-feature build-state + pipeline-stage map). Explicitly defer: security findings → [`security-audit`](../security-audit/SKILL.md); UI/design → `impeccable` (installed skill); autonomy/leverage scoring → [`leverage-audit`](../leverage-audit/SKILL.md); runtime per-step logging → [`audit-emit`](../audit-emit/SKILL.md). This skill only owns "what's built vs stubbed vs disconnected vs wired vs tested, and how far to production."1516## Triggers1718- "scan my project", "what's built", "what's left", "is this ready".19- Step 2 of [`ship-it`](../ship-it/SKILL.md), after [`launch-charter`](../launch-charter/SKILL.md) is loaded.2021## Method2223Work cheaply first; escalate only for judgment.24251. **Flatten the repo (cheap/auxiliary model).** Use `rendergit` (github.com/karpathy/rendergit) to turn the repo into one page, or fall back to `git ls-files` + reading key files. Feed to the cheap model for the bulk pass. Do not load the frontier model yet.262. **Inventory features** from the flattened repo + every spec / `.md` / `CLAUDE.md` / `AGENTS.md` / `HERMES.md` / `config/harness/projects.json`.273. **Classify each feature's BUILD STATE** on concrete signals, not vibes:28 - `not-started` — named in docs but no file/route/component exists.29 - `stubbed` — file exists but body is a placeholder: `TODO`, `FIXME`, `raise NotImplementedError`, `return None`, empty handler, "coming soon", mock/hardcoded data where real logic belongs.30 - `built-disconnected` — implemented but nothing imports it / no route points to it / the handler is never called. Detect with dead-code tooling: dashboard (TS) `knip`, `ts-prune`, `depcheck`, `madge`; backend (Python) `vulture`, `ruff` (F401/unused), `deptry`. This is the category a non-coder cannot see.31 - `built-wired` — implemented AND connected AND data flows end to end.32 - `built-tested` — the above, with tests in `tests/` that actually cover it.334. **Escalate only ambiguous calls to the FRONTIER model** — keeps cost down.345. **Map PIPELINE STAGE per feature** (`idea → in-progress → PR-open → merged → in-production`). Cross-reference GitHub branches/PRs/merges with the live deploys: Railway for `app/server/*` (FastAPI), Vercel for `dashboard/*` (Next.js). A feature can be `built-wired` in code but only `merged`, not `in-production` — surface that gap explicitly.3536## Output3738One plain-English table, sorted closest-to-done LAST so unfinished work is on top:39`Feature | Build state | Pipeline stage | What's missing | Suggested next step`.4041Save to `.harness/audits/audit-<YYYY-MM-DD>.md`. Emit a `curator_proposal` row via `audit_emit.row(...)` so the run is logged in `.harness/swarm/swarm.jsonl`.4243## Safety bindings4445- Read-only. This skill never modifies code, only reports.46- Respects the kill-switch (`TAO_SWARM_ENABLED=0`) — reporting still runs, no builder dispatch.47- Cites evidence per row; honours `pii-redactor` on any quoted code containing secrets.4849## Verification50511. Every `built-disconnected` and `stubbed` row names the exact file/symbol AND the signal proving it (the missing reference, the TODO, the empty handler).522. A row that cannot cite evidence is marked `needs-human-look`, never guessed.533. Re-running on an unchanged tree produces the same classifications (deterministic on the cheap pass).544. Pipeline stage for at least one `app/server/*` and one `dashboard/*` feature is cross-checked against the live Railway/Vercel deploy, not just the branch.5556## Out of scope5758- Fixing anything — see [`launch-enhance-debloat`](../launch-enhance-debloat/SKILL.md).59- Security / design / leverage scoring — delegated to `security-audit` / `impeccable` / `leverage-audit`.60- Per-step runtime audit logging — that's [`audit-emit`](../audit-emit/SKILL.md).6162## References6364- [`launch-review`](../launch-review/SKILL.md) — consumes this audit as input.65- [`security-audit`](../security-audit/SKILL.md), `impeccable` (installed skill), [`leverage-audit`](../leverage-audit/SKILL.md) — the auditors this skill defers to.66- `AGENTS.md` boundary matrix (which paths are safe to touch later).