skills/doctor/SKILL.md
Comprehensive health check of PDLC state, docs, tasks, and code alignment
npx skillsauth add pdlc-os/pdlc doctorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are running a PDLC health check. This is a read-only diagnostic — nothing is modified unless the user explicitly approves fixes at the end.
Neo leads the doctor check — architectural oversight gives the broadest view across code, docs, tasks, and state.
Before the first user-facing message, read skills/formatting.md and output a Sub-phase Transition Header for "DOCTOR" followed by:
Neo (Architect): "Running a full health check on the project. I'll scan state files, task graph, docs, and code to find anything out of sync. This is read-only — I'll present findings and you decide what to fix."
Read these files (skip any that don't exist — their absence is itself a finding):
docs/pdlc/memory/STATE.mddocs/pdlc/memory/ROADMAP.mddocs/pdlc/memory/DECISIONS.mddocs/pdlc/memory/CONSTITUTION.mddocs/pdlc/memory/INTENT.mddocs/pdlc/memory/OVERVIEW.mddocs/pdlc/memory/CHANGELOG.mddocs/pdlc/memory/DEPLOYMENTS.mddocs/pdlc/memory/episodes/index.mddocs/pdlc/memory/.pending-party.json (if exists)docs/pdlc/memory/.pending-decision.json (if exists)Run: bd list --json (capture all Beads tasks)
Run: git log --oneline -50 (recent commit history)
Run: git status (working tree state)
Verify all expected memory files exist:
| File | Required | Created during | |------|----------|---------------| | CONSTITUTION.md | Yes | Init | | INTENT.md | Yes | Init | | STATE.md | Yes | Init | | ROADMAP.md | Yes | Init | | DECISIONS.md | Yes | Init | | CHANGELOG.md | Yes | Init | | OVERVIEW.md | Yes | Init | | DEPLOYMENTS.md | Yes | Init | | episodes/index.md | Yes | Init |
Findings:
[CRITICAL] [filename] is missing. Was init completed?[WARNING] [filename] exists but has no contentRead STATE.md and validate internal consistency:
[Phase] / [Sub-phase] / [ISO 8601]Findings:
[CRITICAL] STATE.md phase is [X] but sub-phase is [Y] — these don't match[WARNING] STATE.md is Idle but active feature is [X] — should be "none"[INFO] Last checkpoint is [N] days old — is work still in progress?Cross-reference roadmap status with actual state:
docs/pdlc/memory/episodes/Findings:
[CRITICAL] ROADMAP has [N] features marked In Progress — only 1 should be active[WARNING] [F-NNN] marked Shipped but Episode column is empty[CRITICAL] [F-NNN] references episode [file] but it doesn't exist[WARNING] [F-NNN] is In Progress but STATE.md active feature is [X]Model override: This check uses the Haiku model. Beads diagnostics and task graph operations are mechanical CLI work.
Run: bd doctor
This is Beads' built-in diagnostic. It checks the .beads/ database for internal corruption, orphaned records, and integrity issues. Capture the output.
If bd doctor reports issues:
bd doctor may suggest fix commands — capture those for the fix phaseIf bd doctor passes clean:
"Beads internal health: ✓ clean"
Cross-reference Beads tasks with project state:
git log --oneline --grep="[task-id]" for each done task; flag any with no matching commitsbd dep tree and check for cyclesFindings:
bd doctor issue → [CRITICAL/WARNING] Beads internal: [issue from bd doctor][WARNING] Beads task [id] is claimed but STATE.md has no active task[WARNING] Beads task [id] marked done but no matching git commits found[CRITICAL] Feature [F-NNN] is Shipped but [N] Beads tasks are still open[CRITICAL] Circular dependency detected in task graph: [details]The roadmap-level Beads task is the authoritative claim lock. STATE.md's Roadmap Claim block and ROADMAP.md's Claimed-by column are caches. These four checks catch drift before it misroutes a /brainstorm:
bd list --claimed-by me --label roadmap --status in-progress --json against STATE.md's Roadmap Claim block.
_None held._ → [WARNING] Beads holds a roadmap claim on [F-NNN] not reflected in STATE.md. The next session-start banner will prompt resume, or run /brainstorm [F-NNN] to rebuild STATE.md.[WARNING] STATE.md references roadmap claim [F-NNN] but Beads shows no active claim. Force-released? Run /brainstorm [F-NNN] to re-claim or clear the block manually.[CRITICAL] STATE.md claims [F-NNN-A] but Beads shows [F-NNN-B] claimed by you. Reconcile before continuing.roadmap task with status in-progress, check the assignee's recent commits on any matching feature/* branch.
bd list --label roadmap --status in-progress --json
git log --since="30 days ago" --all --author="[assignee-email]" --oneline | grep -c "feature/[feature-name]"
If the count is 0 AND the claim is >30 days old → [INFO] [F-NNN] claimed by [email] since [date] with no commits on feature/[name] in the last 30 days. Nudge the owner or run /release [F-NNN].F-NNN label.
bd list --label roadmap --json | jq -r '.[] | .labels[]? | select(test("^F-\\d+$"))' | sort | uniq -c | awk '$1 > 1'
Any duplicate → [CRITICAL] Multiple Beads tasks share label [F-NNN]. Likely a migration bug. Investigate which is authoritative and bd close the stale one(s).[WARNING] F-NNN: ROADMAP shows Status=[X] but Beads task status is [Y]. Re-render ROADMAP from Beads.[WARNING] F-NNN: ROADMAP shows Priority=[X] but Beads label priority:[Y]. One or the other was edited in isolation.[WARNING] F-NNN: ROADMAP shows Claimed by=[X] but Beads assignee is [Y]. STATE.md reconciliation on next session will fix this.bd list --label roadmap --json returns []. This is the expected state for projects initialized before v2.11.0 added claim coordination. Every F-NNN is effectively unprotected against multi-dev double-claim.
[WARNING] ROADMAP.md lists [N] features but no roadmap-labeled Beads tasks exist. Multi-dev claim coordination is disabled until these are bootstrapped./diagnose --fix): iterate over ROADMAP.md Feature Backlog rows and run bd create --label roadmap --label F-NNN --label priority:N --status <planned|shipped|dropped> per row. Shipped/Dropped rows get the corresponding status. Rows showing In Progress with a Claimed by value get the matching bd claim to preserve the existing assignee. The same bootstrap is offered inline by /brainstorm the first time a post-upgrade user runs it — so this finding is informational for users who haven't yet re-entered brainstorm.End of model override. Return to Neo's assigned model (Opus) for remaining checks.
Read skills/doctor/checks-and-report.md and execute it completely (document vs code drift, git history analysis, pending file health, Constitution compliance, report presentation, and fix mode).
skills/state-reconciliation.md.data-ai
Run a feature autonomously from approved-PRD to shipped, evaluated by a per-turn Sentinel hook. Requires bypass-permissions mode and Agent Teams mode.
development
# Variant Convergence **Topic slug:** `variant-convergence` **Triggers:** - **Inception path — Brainstorm Design Step 10.7:** after Step 10.6 (Design-Laws Audit) completes, before Step 11 (PRD design-doc link updates) and the Step 12 design approval gate. Variants are HTML mockups Muse generates. - **Construction path — Build Review Step 12.5:** after Party Review (Step 12) writes its review file and Muse appends the *As-Built Audit* section to `ux-review.md`, before the Step 13 Review approval
data-ai
Force-release a stuck roadmap-level feature claim (admin command)
devops
Bypass the deploy-before-Operation guardrails block with a single confirmation