@thedecipherist/mdd 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,11 +1,25 @@
1
1
  <p align="center">
2
- <img src="docs/mdd_hero.webp" alt="MDD Manual-Driven Development for Claude Code" width="100%" />
2
+ <img src="docs/mdd_hero.webp" alt="MDD - Manual-Driven Development for Claude Code" width="100%" />
3
3
  </p>
4
4
 
5
- # MDD Manual-Driven Development for Claude Code
5
+ # MDD - Manual-Driven Development for Claude Code
6
6
 
7
7
  > **One command. Twenty-one modes. Complete feature lifecycle from documentation to verified deployment.**
8
8
 
9
+ <p align="center">
10
+ <a href="https://thedecipherist.github.io/mdd">
11
+ <img src="https://img.shields.io/badge/📖_Documentation-thedecipherist.github.io%2Fmdd-00e5cc?style=for-the-badge&labelColor=08090f" alt="Documentation Site" />
12
+ </a>
13
+ &nbsp;
14
+ <a href="https://thedecipherist.github.io/mdd/user-guide.html">
15
+ <img src="https://img.shields.io/badge/📚_User_Guide-Full_Reference-00ff88?style=for-the-badge&labelColor=08090f" alt="User Guide" />
16
+ </a>
17
+ </p>
18
+
19
+ [![npm version](https://img.shields.io/npm/v/@thedecipherist/mdd)](https://www.npmjs.com/package/@thedecipherist/mdd)
20
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
21
+ [![Node.js ≥18](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
22
+
9
23
  MDD turns Claude Code from a code generator into a structured development partner. Every feature starts with documentation. Every fix starts with an audit. No exceptions.
10
24
 
11
25
  ```bash
@@ -18,23 +32,70 @@ Then in Claude Code:
18
32
  /mdd add user authentication with JWT tokens
19
33
  ```
20
34
 
35
+ 📖 **[Full Documentation Site](https://thedecipherist.github.io/mdd)** · [User Guide](https://thedecipherist.github.io/mdd/user-guide.html) · [GitHub](https://github.com/TheDecipherist/mdd)
36
+
37
+ ---
38
+
39
+ ## Contents
40
+
41
+ - [Why MDD](#why-mdd)
42
+ - [How It Works](#how-it-works)
43
+ - [Installation](#installation)
44
+ - [Quick Start](#quick-start)
45
+ - [All 21 Modes at a Glance](#all-21-modes-at-a-glance)
46
+ - [Build Mode - Feature Development](#build-mode--feature-development)
47
+ - [Audit Mode - Code Review](#audit-mode--code-review)
48
+ - [Status & Notes](#status--notes)
49
+ - [Scan & Update - Drift Detection](#scan--update--drift-detection)
50
+ - [Feature Lifecycle](#feature-lifecycle)
51
+ - [Initiative & Wave Planning](#initiative--wave-planning)
52
+ - [Ops Runbooks](#ops-runbooks)
53
+ - [Feature Doc Format](#feature-doc-format)
54
+ - [The `.mdd/` Directory](#the-mdd-directory)
55
+ - [MDD Versioning](#mdd-versioning)
56
+ - [Real Results: Self-Audit](#real-results-self-audit)
57
+ - [History: From Starter Kit to Standalone Package](#history-from-starter-kit-to-standalone-package)
58
+ - [Dashboards](#dashboards)
59
+ - [Companion Tools](#companion-tools)
60
+ - [License](#license)
61
+
21
62
  ---
22
63
 
23
- ## Why MDD?
64
+ ## Why MDD
24
65
 
25
66
  Most people prompt Claude Code like this: *"fix the bug in my auth system."* Claude reads 40 files, burns through context trying to understand your architecture, and produces something that technically compiles but misses the bigger picture.
26
67
 
27
- MDD flips this. You write structured documentation first, then Claude reads **one doc** instead of 40 files. It gets the full picture in 200 tokens instead of 20,000.
68
+ MDD flips this. You write structured documentation first. Then Claude reads **one doc** instead of 40 files - getting the full picture in 200 tokens instead of 20,000.
69
+
70
+ **The core insight:** AI assistants work better when they have a map before they touch the territory. MDD is that map.
28
71
 
29
72
  **The workflow: Document → Audit → Fix → Verify**
30
73
 
31
74
  | Phase | What happens |
32
75
  |-------|-------------|
33
- | 📋 Document | Write feature docs with YAML frontmatter in `.mdd/docs/` |
34
- | 🔍 Audit | Read source code, write incremental notes to disk (survives compaction) |
35
- | 📊 Analyze | Read notes only → produce severity-rated findings report |
36
- | 🔧 Fix | Execute pre-planned fixes with tests |
37
- | ✅ Verify | Tests pass, types check, documentation updated |
76
+ | 📋 Document | Write feature docs with YAML frontmatter in `.mdd/docs/` before a line of code |
77
+ | 🔍 Audit | Read source code incrementally, write findings to disk (survives context compaction) |
78
+ | 📊 Analyze | Read notes only → produce severity-rated findings report with effort estimates |
79
+ | 🔧 Fix | Execute pre-planned fixes with test-driven green gate loop |
80
+ | ✅ Verify | Real HTTP calls, real DB, real browser - not mocked |
81
+
82
+ ---
83
+
84
+ ## How It Works
85
+
86
+ MDD installs 7 Claude command files into `~/.claude/commands/`. The main router (`mdd.md`) reads your arguments and loads **only the mode file needed** - a `/mdd status` loads ~460 tokens instead of the full ~28,000.
87
+
88
+ ```
89
+ mdd.md (~120 lines) Router - Steps 0/0a/0b, mode dispatch, auto-branch
90
+ mdd-build.md (~680 lines) BUILD MODE - Phases 0–7d
91
+ mdd-audit.md (~240 lines) AUDIT MODE - Phases A1–A7
92
+ mdd-manage.md (~340 lines) STATUS + NOTE + SCAN + UPDATE + DEPRECATE
93
+ mdd-lifecycle.md (~350 lines) REVERSE-ENGINEER + GRAPH + UPGRADE
94
+ mdd-plan.md (~350 lines) PLAN-INITIATIVE + PLAN-WAVE + PLAN-EXECUTE + PLAN-SYNC + …
95
+ mdd-ops.md (~380 lines) OPS DOCUMENT + OPS EXECUTE + OPS UPDATE + OPS LIST + COMMANDS
96
+ ```
97
+
98
+ **Lazy loading is the key optimization.** Each invocation pays only for the mode it needs. The full 28,000-token set is always available but never loaded unnecessarily.
38
99
 
39
100
  ---
40
101
 
@@ -45,164 +106,688 @@ npm install -g @thedecipherist/mdd
45
106
  mdd install # copies Claude commands to ~/.claude/commands/
46
107
  ```
47
108
 
109
+ After installation, `/mdd` is available in every Claude Code session globally - no per-project setup needed.
110
+
48
111
  ```bash
49
- mdd update # update to latest version
112
+ mdd update # update to latest installed version
50
113
  mdd install --dir /custom/path # install to a custom directory
51
114
  ```
52
115
 
53
- After running `mdd install`, the `/mdd` command is available in every Claude Code session globally no per-project setup needed.
116
+ **Version safety:** `mdd install` compares `mdd_version` between the installed and available versions before overwriting. If you have a newer version installed, it won't silently downgrade.
54
117
 
55
118
  ---
56
119
 
57
- ## Usage
58
-
59
- ### Build a new feature
120
+ ## Quick Start
60
121
 
61
122
  ```bash
123
+ # 1. Install globally
124
+ npm install -g @thedecipherist/mdd && mdd install
125
+
126
+ # 2. Open a project in Claude Code
127
+ # 3. Run your first /mdd command:
62
128
  /mdd add user authentication with JWT tokens
63
- /mdd build payment integration with Stripe
64
- /mdd create admin dashboard for user management
129
+
130
+ # Claude will:
131
+ # - Ask a few focused questions about your feature
132
+ # - Write a feature doc to .mdd/docs/01-user-auth.md
133
+ # - Generate test skeletons (all red - that's the point)
134
+ # - Present a block-by-block build plan
135
+ # - Implement with a 5-iteration green gate loop
136
+ # - Verify against the real runtime environment
137
+ ```
138
+
139
+ ---
140
+
141
+ ## All 21 Modes at a Glance
142
+
143
+ ```
144
+ /mdd <feature description> Build Mode - Document, plan, and implement
145
+ /mdd audit [section] Audit Mode - Scan code for violations and drift
146
+ /mdd status Overview: docs, tests, audit state, initiatives
147
+ /mdd scan Detect features whose source files changed
148
+ /mdd update <feature-id> Re-sync a feature doc after code changes
149
+ /mdd note "text" Append a timestamped note to .mdd/.startup.md
150
+ /mdd note list Print the Notes section
151
+ /mdd note clear Wipe all notes (asks for confirmation)
152
+ /mdd deprecate <feature-id> Archive a feature and flag all dependents
153
+ /mdd reverse-engineer [path|feature-id] Generate MDD docs from existing source code
154
+ /mdd graph Render the full cross-feature dependency map
155
+ /mdd upgrade Batch-patch missing frontmatter across all docs
156
+ /mdd commands Show the full command reference in Claude
157
+ /mdd plan-initiative Create a new multi-wave initiative
158
+ /mdd plan-wave <wave-slug> Plan a wave within an existing initiative
159
+ /mdd plan-execute <wave-slug> Run the build flow for every feature in a wave
160
+ /mdd plan-sync Reconcile manual edits to initiative/wave files
161
+ /mdd plan-remove-feature <wave> <feature> Remove a feature from a wave
162
+ /mdd plan-cancel-initiative <slug> Cancel an initiative and archive its waves
163
+ /mdd ops <description> Create a deployment runbook
164
+ /mdd ops list Show all runbooks (global and project)
165
+ /mdd runop <slug> Execute a runbook: pre-flight → canary → post-flight
166
+ /mdd update-op <slug> Edit an existing runbook
167
+ ```
168
+
169
+ ---
170
+
171
+ ## Build Mode - Feature Development
172
+
173
+ Build mode is the core of MDD. It runs 7 phases with 3 mandatory gates.
174
+
175
+ **Pipeline:** Understand → Analyze → Document → Test Skeletons → **🔴 Red Gate** → Plan → Implement → **🟢 Green Gate** → Verify → **✅ Integration Gate**
176
+
177
+ ### Phase 0 - Bootstrap & Mode Detection
178
+
179
+ Before anything else, MDD ensures the `.mdd/` directory structure exists (silently, no prompts). It also offers to create an isolated git worktree for parallel `/mdd` sessions, and checks the current branch to auto-create a feature branch.
180
+
181
+ ### Phase 1 - Understand the Feature
182
+
183
+ MDD launches **3 parallel Explore agents** simultaneously to gather context before asking you anything:
184
+
185
+ - **Agent A (Rules):** reads `CLAUDE.md` and `project-docs/ARCHITECTURE.md` - returns coding rules, quality gates, architecture summary
186
+ - **Agent B (Features):** globs `.mdd/docs/*.md` - returns existing feature IDs, titles, statuses, dependency chains
187
+ - **Agent C (Codebase):** globs `src/**/*` - returns directory structure, key files, detected tech stack
188
+
189
+ After all three return, Claude asks you focused questions. For tooling tasks (docs, scripts, hooks) it skips the database and API questions automatically.
190
+
191
+ **Questions always asked:**
192
+ - Does this feature depend on any existing features?
193
+ - Are there edge cases or error scenarios you already know about?
194
+
195
+ **Questions for backend/API tasks:**
196
+ - Does this need database storage?
197
+ - Does this have API endpoints?
198
+ - Does this need authentication/authorization?
199
+ - Does this need real-time updates, background jobs, or external service integrations?
200
+
201
+ ### Phase 2 - Data Flow & Impact Analysis
202
+
203
+ For non-greenfield projects, MDD traces every piece of data the feature will touch:
204
+
205
+ 1. **Backend origin** - where is this value computed? Which file and line?
206
+ 2. **API transport** - exact shape in the API response, TypeScript type
207
+ 3. **Frontend consumption** - how the UI receives and transforms the value
208
+ 4. **Parallel computations** - is the same concept computed elsewhere? Does it use the same logic?
209
+
210
+ Results go to `.mdd/audits/flow-<feature>-<date>.md`. A mandatory gate presents findings to you before documentation is written. **This gate is not skippable** - you must confirm before proceeding.
211
+
212
+ *Automatically skipped on greenfield projects (no existing docs + fewer than 5 source files).*
213
+
214
+ ### Phase 3 - Write the Feature Doc
215
+
216
+ MDD creates `.mdd/docs/<NN>-<feature-name>.md` with this structure:
217
+
218
+ ```markdown
219
+ ---
220
+ id: 01-user-auth
221
+ title: User Authentication
222
+ depends_on: []
223
+ source_files:
224
+ - src/handlers/auth.ts
225
+ - src/hooks/useAuth.ts
226
+ routes:
227
+ - POST /api/v1/auth/login
228
+ - POST /api/v1/auth/logout
229
+ models:
230
+ - users
231
+ test_files:
232
+ - tests/unit/auth.test.ts
233
+ data_flow: .mdd/audits/flow-user-auth-2026-05-07.md
234
+ last_synced: 2026-05-07
235
+ status: draft
236
+ phase: documentation
237
+ mdd_version: 8
238
+ known_issues: []
239
+ ---
240
+
241
+ # 01 - User Authentication
242
+
243
+ ## Purpose
244
+ ## Architecture
245
+ ## Data Model
246
+ ## API Endpoints
247
+ ## Business Rules
248
+ ## Data Flow
249
+ ## Dependencies
250
+ ## Known Issues
251
+ ```
252
+
253
+ **The doc is the source of truth.** Everything that follows - tests, build plan, implementation - is generated from this document.
254
+
255
+ ### Phase 4 - Test Skeletons
256
+
257
+ From the documented endpoints, business rules, and edge cases, MDD generates test skeletons:
258
+
259
+ ```typescript
260
+ describe('User Authentication', () => {
261
+ describe('POST /api/v1/auth/login', () => {
262
+ it('should return 200 and JWT token on valid credentials', async () => {
263
+ // Arrange
264
+ // Act
265
+ // Assert - minimum 3 assertions
266
+ expect.fail('Not implemented - MDD skeleton');
267
+ });
268
+
269
+ it('should return 401 on invalid password', async () => {
270
+ expect.fail('Not implemented - MDD skeleton');
271
+ });
272
+ });
273
+ });
274
+ ```
275
+
276
+ For features needing both unit and E2E tests, two parallel agents write both files simultaneously.
277
+
278
+ ### Phase 4b - Red Gate (mandatory)
279
+
280
+ Runs the new test files immediately after generation. **All tests must fail** before implementation begins. An unexpected pass means either the assertion is wrong or pre-existing code already satisfies it - both must be diagnosed before proceeding.
281
+
65
282
  ```
283
+ 🔴 Red Gate: 12/12 failing (expected)
284
+ All skeletons confirmed RED - ready to implement.
285
+ ```
286
+
287
+ ### Phase 5 - Build Plan
288
+
289
+ MDD presents a commit-worthy, layered build plan. Each block has:
290
+
291
+ - **End-state** - what is runnable when this block finishes
292
+ - **Commit scope** - a conventional commit one-liner
293
+ - **Verify** - exact command to prove the block is done
294
+ - **Handoff** - what the next block expects to exist
295
+
296
+ Blocks in the same dependency layer can be marked `Runs in: parallel agents` - MDD enforces a file-declaration gate (no two agents can write the same file) and a type-dependency gate before allowing parallelism.
297
+
298
+ ### Phase 6 - Implement (Green Gate Loop)
299
+
300
+ For each block, MDD implements and runs the Green Gate:
301
+
302
+ ```
303
+ Iteration 1–5:
304
+ Run: pnpm test:unit -- --grep "<feature>" AND pnpm typecheck
305
+
306
+ If ALL green → proceed to regression check
307
+ If failing:
308
+ DIAGNOSE (required before any fix):
309
+ - What is the exact error message, file, and line?
310
+ - Which implementation assumption was wrong?
311
+ - What is the ONE targeted fix?
312
+ FIX - implementation only (tests are NEVER modified)
313
+ REPORT: "Iteration N - Root cause: X / Fix applied: Y"
314
+
315
+ Iteration 5 exhausted, still failing:
316
+ STOP. Do not attempt iteration 6.
317
+ Present options: (a) continue debugging, (b) narrow scope, (c) pause and review
318
+ ```
319
+
320
+ After each block goes green, the full test suite runs to catch regressions.
321
+
322
+ ### Phase 7 - Verify + Report
323
+
324
+ **Integration gate** - quality gates alone aren't enough. MDD verifies actual behavior:
325
+
326
+ - **Backend features:** real HTTP calls, real DB queries, response shape matches doc
327
+ - **Frontend features:** browser open, network tab inspection, console error check
328
+ - **Database features:** direct DB query confirmation, EXPLAIN on primary patterns
329
+ - **Tooling features:** run against real scenario, verify output matches doc
330
+
331
+ The ownership default: *"My code is wrong until proven otherwise."* Before accepting any external blocker, MDD runs a minimal probe and forms a specific falsifiable hypothesis.
332
+
333
+ On completion, MDD offers to commit and merge:
334
+ - **Commit & merge** - stages, commits with a conventional message, merges to main
335
+ - **Commit only** - commits on the feature branch, offers to push
336
+ - **Skip** - leaves git state for manual handling
337
+
338
+ ---
339
+
340
+ ## Audit Mode - Code Review
341
+
342
+ Audit mode scales with file count, running 1–8 parallel agents depending on scope:
343
+
344
+ | Files in scope | Agents |
345
+ |---|---|
346
+ | < 10 | 1 (single-agent mode) |
347
+ | 10–25 | 2 |
348
+ | 26–50 | 3 |
349
+ | 51–100 | 5 |
350
+ | 100+ | 8 (default ceiling, overridable via `MDD_MAX_AGENTS`) |
351
+
352
+ ### The Manifest System
353
+
354
+ Before spawning a single agent, MDD writes a manifest to `.mdd/jobs/audit-<date>/MANIFEST.md`:
355
+
356
+ ```
357
+ ## Shard 1 (Agent 1) - files 1-15
358
+ [ ] src/handlers/auth.ts
359
+ [ ] src/handlers/users.ts
360
+ ...
361
+
362
+ ## Shard 2 (Agent 2) - files 16-30
363
+ [ ] src/handlers/billing.ts
364
+ ```
365
+
366
+ State transitions: `[ ] pending → [~] in progress → [x] complete → [!] has findings → [e] error`
367
+
368
+ **Why this matters:** If Claude's context is compacted mid-audit, the manifest survives. Each agent reads its config file on startup, finds the first `[ ]` in its shard, and resumes exactly where it left off. No findings are lost.
369
+
370
+ ### Per-Agent Config
371
+
372
+ Each agent receives a self-contained config file (not the source code):
373
+
374
+ ```
375
+ # Agent 1 Audit Config
376
+ Shard file: .mdd/jobs/audit-<date>/shard-1.md
377
+ Notes file: .mdd/jobs/audit-<date>/agent-1-notes.md
378
+ Manifest: .mdd/jobs/audit-<date>/MANIFEST.md
379
+
380
+ Startup Sequence:
381
+ 1. Read this config file
382
+ 2. Read shard-1.md to know your file list
383
+ 3. Read MANIFEST.md - find the first [ ] entry in Shard 1
384
+ 4. Read the last 20 lines of agent-1-notes.md for continuity
385
+ 5. Begin the per-file loop
386
+ ```
387
+
388
+ ### Per-File Loop
389
+
390
+ Each agent follows this exact loop for every file:
391
+
392
+ 1. Mark file as `[~]` in MANIFEST (write to disk first - before reading)
393
+ 2. Read the source file fully
394
+ 3. Analyze against audit criteria
395
+ 4. Append to `agent-N-notes.md`
396
+ 5. Mark file as `[x]` or `[!]` in MANIFEST
397
+ 6. **Clear context** - every file gets a fresh context window
398
+
399
+ **Context clear is mandatory.** The notes file and manifest are the memory. Every file gets maximum analysis budget.
400
+
401
+ ### Audit Phases
402
+
403
+ - **A1 - Scope:** reads all `.mdd/docs/`, `.mdd/ops/`, resolves source files, detects interrupted audits
404
+ - **A2 - Config Setup:** writes shard files and config files for each agent before spawning
405
+ - **A3 - Parallel Execution:** all agents run simultaneously
406
+ - **A4 - Convergence:** main checks for any `[ ]` or `[~]` entries, re-runs stale shards
407
+ - **A5 - Merge:** merges all agent notes into `audits/notes-<date>.md` in manifest order
408
+ - **A6 - Analyze:** reads notes only (not source again) → produces `audits/report-<date>.md`
409
+ - **A7 - Present & Fix:** shows findings by severity, offers to fix all / P1+P2 only / review first
410
+
411
+ ### Audit Report Format
412
+
413
+ ```
414
+ 🔍 MDD Audit Complete
415
+
416
+ Findings: 20 total (3 P1 Critical, 5 P2 High, 8 P3 Medium, 4 P4 Low)
417
+ Report: .mdd/audits/report-2026-05-07.md
418
+
419
+ Top issues:
420
+ 1. Raw database connection in src/handlers/billing.ts (P1 - use StrictDB)
421
+ 2. JWT secret hardcoded in src/middleware/auth.ts (P1 - use env var)
422
+ 3. No rate limiting on /api/v1/auth/login (P2)
423
+
424
+ Estimated fix time: 6 hours (traditional) → 45 minutes (MDD)
425
+ ```
426
+
427
+ ### Resuming an Interrupted Audit
428
+
429
+ If an audit is interrupted (context limit, manual stop), re-running `/mdd audit` detects the stale job:
430
+
431
+ ```
432
+ Found interrupted audit from 2026-05-07.
433
+ MANIFEST shows 23/57 files complete.
434
+
435
+ [R] Resume - continue from where it left off
436
+ [D] Discard - delete and start fresh
437
+ ```
438
+
439
+ ---
440
+
441
+ ## Status & Notes
66
442
 
67
- Claude interviews you about requirements, writes structured documentation, generates test skeletons (red gate), presents a block-by-block build plan, implements with a 5-iteration green gate loop, then verifies against the real runtime environment.
443
+ ### `/mdd status`
68
444
 
69
- ### Audit existing code
445
+ Gives a complete project snapshot:
446
+
447
+ ```
448
+ 📊 MDD Status
449
+
450
+ Feature docs: 9 files in .mdd/docs/
451
+ Ops runbooks: 2 files in .mdd/ops/
452
+ Last audit: 2026-05-01 (20 findings, 17 fixed, 3 open)
453
+ Test coverage: 125 unit tests, 8 E2E tests
454
+ Known issues: 3 tracked across 2 features
455
+ Quality gates: 0 files over 300 lines
456
+
457
+ Initiatives: 1 total (1 active)
458
+ Active waves: auth-system-wave-2 [1/2 features complete]
459
+
460
+ MDD version: v8 - all files up to date
461
+
462
+ Drift check:
463
+ 8 features in sync
464
+ 1 feature possibly drifted ← run /mdd scan for details
465
+ ```
466
+
467
+ After collecting status, `/mdd status` rebuilds `.mdd/.startup.md` - the session context file that gets loaded at the start of every Claude Code session, keeping Claude oriented without requiring a full codebase read.
468
+
469
+ ### `/mdd note`
470
+
471
+ Three subcommands for maintaining a running log in `.mdd/.startup.md`:
472
+
473
+ ```bash
474
+ /mdd note "switched from PostgreSQL to SQLite for dev"
475
+ /mdd note list # print all notes
476
+ /mdd note clear # wipe notes (asks for confirmation)
477
+ ```
478
+
479
+ Notes are timestamped and survive session resets.
480
+
481
+ ---
482
+
483
+ ## Scan & Update - Drift Detection
484
+
485
+ ### `/mdd scan`
486
+
487
+ Detects which features have drifted since their last MDD session. Uses a single Explore agent to run all git checks in parallel, then classifies each feature:
488
+
489
+ | Classification | Meaning |
490
+ |---|---|
491
+ | ✅ in_sync | `last_synced` exists, all files exist, no commits after sync date |
492
+ | ⚠️ drifted | Commits found after `last_synced` - doc may be stale |
493
+ | ❌ broken | One or more `source_files` not found on disk |
494
+ | ❓ untracked | No `last_synced` field in frontmatter |
495
+
496
+ ```
497
+ 🔍 MDD Scan - Drift Report
498
+
499
+ ✅ 01-project-scaffolding - in sync (last synced: 2026-04-15)
500
+ ⚠️ 04-content-builder - DRIFTED (3 commits since 2026-04-01)
501
+ Latest: "fix: markdown heading parser"
502
+ ❌ 07-github-pages - broken reference (docs/index.html not found)
503
+
504
+ Recommended actions:
505
+ /mdd update 04 - re-sync content-builder doc with code
506
+ /mdd update 07 - fix broken file reference
507
+ ```
508
+
509
+ ### `/mdd update <feature-id>`
510
+
511
+ Re-syncs a feature doc after its code has changed:
512
+
513
+ 1. Reads the current source files
514
+ 2. Diffs doc vs code (new functions, removed endpoints, changed business rules)
515
+ 3. Presents a change summary and asks for confirmation
516
+ 4. Rewrites only the affected sections (preserves `known_issues`, `depends_on`)
517
+ 5. Generates test skeletons for any new documented behaviors
518
+ 6. Updates `last_synced` to today
70
519
 
71
520
  ```bash
72
- /mdd audit # full codebase audit
73
- /mdd audit database # audit a specific section
74
- /mdd audit authentication # audit just auth-related code
521
+ /mdd update 04 # by number
522
+ /mdd update 04-content-builder # by full slug
523
+ ```
524
+
525
+ ---
526
+
527
+ ## Feature Lifecycle
528
+
529
+ ### `/mdd deprecate <feature-id>`
530
+
531
+ Archives a feature cleanly and flags all dependents:
532
+
533
+ 1. Shows a deprecation summary including which other features depend on this one
534
+ 2. Moves the doc to `.mdd/docs/archive/`
535
+ 3. Adds a `known_issues` warning to each dependent doc
536
+ 4. Asks separately about deleting source files and test files - never auto-deletes
537
+
538
+ ### `/mdd reverse-engineer [path|feature-id]`
539
+
540
+ Generates MDD documentation from existing undocumented code:
541
+
542
+ - **No argument:** scans `src/` for files not registered in any `.mdd/docs/*.md`
543
+ - **File path:** generates a doc for that specific file
544
+ - **Feature ID:** regenerates an existing doc - shows a before/after comparison
545
+
546
+ For 4+ files, uses parallel Explore agents to read in batches. Always discloses limitations upfront:
547
+
548
+ ```
549
+ ⚠️ Reverse-engineer limitations:
550
+ - "Purpose" section is inferred - review business intent carefully
551
+ - Implicit constraints (SLAs, compliance, product decisions) are not captured
552
+ - Confirm accuracy before treating this doc as the source of truth
553
+ ```
554
+
555
+ ### `/mdd graph`
556
+
557
+ Renders the full cross-feature dependency map and detects issues:
558
+
559
+ - **Broken dependency:** depends on a deprecated/archived feature
560
+ - **Risky dependency:** a `complete` feature depends on a `draft` or `in_progress` one
561
+ - **Orphan:** a feature with no dependents and no dependencies
562
+ - **Task dependency:** a feature incorrectly lists a one-off task doc in `depends_on`
563
+
564
+ ```
565
+ 📊 MDD Dependency Graph
566
+
567
+ 06-command-system ──────────────────► 01-project-scaffolding
568
+ 09-integrations ────────────────────► 06-command-system
569
+ 04-content-builder ─────────────────► 03-database-layer
570
+
571
+ Issues:
572
+ ⚠️ 09-integrations depends on 06-command-system (status: in_progress) - risky
573
+ ❌ 05-testing-framework depends on 10-old-auth (deprecated) - broken
75
574
  ```
76
575
 
77
- Scales across parallel agents (1–8 depending on file count). Notes written to disk every file so findings survive context compaction. Produces a severity-rated report (P1 Critical → P4 Low) with effort estimates.
576
+ Saved to `.mdd/audits/graph-<date>.md`.
78
577
 
79
- ### Day-to-day operations
578
+ ### `/mdd upgrade`
579
+
580
+ Batch-patches missing frontmatter fields (`last_synced`, `status`, `phase`) across all `.mdd/docs/*.md` files. Safe to run multiple times - already-present fields are never overwritten.
581
+
582
+ Infers sensible defaults from git history, existing field values, and archive status. Shows a plan before writing anything.
583
+
584
+ ---
585
+
586
+ ## Initiative & Wave Planning
587
+
588
+ For large features that span multiple weeks or deployment cycles, MDD provides a structured planning system.
589
+
590
+ ### Initiatives
591
+
592
+ An initiative is a named goal decomposed into waves. Each wave has a "demo-state" - something concrete that a user can do when the wave is complete.
80
593
 
81
594
  ```bash
82
- /mdd status # overview: docs, tests, audit state, drift
83
- /mdd scan # detect features whose source files changed since last session
84
- /mdd update 04 # re-sync a feature doc after code changes
85
- /mdd note "switched to PostgreSQL" # append a timestamped note to session context
86
- /mdd commands # show this reference table in Claude
595
+ /mdd plan-initiative # creates a new initiative with named waves
87
596
  ```
88
597
 
89
- ### Feature lifecycle
598
+ This writes `.mdd/initiatives/<slug>.md` with a hash-locked frontmatter. If you manually edit the file, MDD detects the hash mismatch on the next operation and requires you to run `/mdd plan-sync` first.
599
+
600
+ ### Waves
601
+
602
+ Each wave is a set of features that collectively deliver the demo-state.
90
603
 
91
604
  ```bash
92
- /mdd reverse-engineer src/handlers/payments.ts # generate docs from undocumented code
93
- /mdd graph # dependency map with broken/risky dep warnings
94
- /mdd deprecate 03 # retire a feature cleanly, flag dependents
95
- /mdd upgrade # batch-patch missing frontmatter across all docs
605
+ /mdd plan-wave auth-system-wave-1 # plan a wave's features and dependencies
96
606
  ```
97
607
 
98
- ### Initiative & wave planning
608
+ Before planning a wave, MDD enforces:
609
+ - **Open questions gate:** all product questions must be resolved before wave planning
610
+ - **Depends-on gate:** the wave's dependency (another wave) must be `complete` first
611
+ - **Feature ordering check:** internal feature dependencies within the wave are validated
612
+
613
+ ### Execution
99
614
 
100
615
  ```bash
101
- /mdd plan-initiative "auth system" # create a multi-wave initiative
102
- /mdd plan-wave auth-system "Auth Foundation" # plan a wave with a demo state
103
- /mdd plan-execute auth-system-wave-1 # implement all features in a wave
104
- /mdd plan-sync auth-system # re-stamp waves after initiative changes
105
- /mdd plan-remove-feature auth-system-wave-1 auth-signup
106
- /mdd plan-cancel-initiative auth-system
616
+ /mdd plan-execute auth-system-wave-1 # run full MDD build for each feature in order
107
617
  ```
108
618
 
109
- ### Ops runbooks
619
+ Two modes:
620
+ - **Automated** - minimal interruptions, pauses only on 5-iteration failures or integration failures
621
+ - **Interactive** - full MDD gates on every feature, full plan confirmations
622
+
623
+ Features are executed in dependency order, skipping already-`complete` ones. If interrupted, re-running resumes from the first `active` or `planned` feature.
624
+
625
+ ### Sync, Remove, Cancel
110
626
 
111
627
  ```bash
112
- /mdd ops deploy swarmk to dokploy # create a deployment runbook
113
- /mdd ops list # list all runbooks (global + project)
114
- /mdd runop swarmk-dokploy # execute: pre-flight canary primary → post-flight
115
- /mdd update-op swarmk-dokploy # edit an existing runbook
628
+ /mdd plan-sync # reconcile manual edits via hash comparison
629
+ /mdd plan-remove-feature <wave> <feature> # remove a feature from a wave
630
+ /mdd plan-cancel-initiative <slug> # cancel initiative, archive waves, flag feature docs
116
631
  ```
117
632
 
118
633
  ---
119
634
 
120
- ## What Gets Installed
635
+ ## Ops Runbooks
636
+
637
+ Deployment runbooks for reproducing infrastructure operations reliably.
121
638
 
122
- `mdd install` copies 7 files to `~/.claude/commands/`:
639
+ ### Creating a Runbook
123
640
 
124
- | File | Contents | Lines |
125
- |------|----------|-------|
126
- | `mdd.md` | Router — Steps 0/0a/0b, mode dispatch, auto-branch | ~120 |
127
- | `mdd-build.md` | BUILD MODE — Phases 0–7d (branch check, understand, data flow, docs, test skeletons, red gate, plan, implement, verify, commit) | ~680 |
128
- | `mdd-audit.md` | AUDIT MODE — Phases A1–A7 (scope, agent config, parallel execution, convergence, merge, analyze, fix) | ~240 |
129
- | `mdd-manage.md` | STATUS + NOTE + SCAN + UPDATE + DEPRECATE modes | ~340 |
130
- | `mdd-lifecycle.md` | REVERSE-ENGINEER + GRAPH + UPGRADE modes | ~350 |
131
- | `mdd-plan.md` | PLAN-INITIATIVE + PLAN-WAVE + PLAN-EXECUTE + PLAN-SYNC + PLAN-REMOVE-FEATURE + PLAN-CANCEL-INITIATIVE modes | ~350 |
132
- | `mdd-ops.md` | OPS DOCUMENT + OPS EXECUTE + OPS UPDATE + OPS LIST + COMMANDS modes | ~380 |
641
+ ```bash
642
+ /mdd ops deploy swarmk to dokploy
643
+ ```
133
644
 
134
- The router loads only the mode file needed for each invocation a `/mdd status` loads ~460 tokens instead of the full ~28,000. The full set is available but never loaded unnecessarily.
645
+ MDD asks: project-local (`.mdd/ops/`) or global (`~/.claude/ops/`)? Global runbooks are reusable across all projects. A collision check prevents project runbooks from shadowing global ones.
646
+
647
+ The runbook format includes:
648
+ - **Services** - each service with its Docker image, port, and health check command
649
+ - **Regions** - deployment targets with `deploy_order` and `role` (canary/primary)
650
+ - **Deployment strategy** - sequential or parallel, gate type (`health_check` / `manual` / `none`), `on_gate_failure` behavior
651
+ - **Credentials** - env var names only (never values)
652
+ - **MCP servers** - any MCP tools required during deployment
653
+
654
+ ### Executing a Runbook
655
+
656
+ ```bash
657
+ /mdd runop swarmk-dokploy
658
+ ```
659
+
660
+ Execution flow:
661
+ 1. **Pre-flight health check** - runs each service's health check across all regions, displays a status table
662
+ 2. **Deploy region by region** (in `deploy_order`):
663
+ - Deploy unhealthy services
664
+ - Run the region gate (health check / manual confirm / automatic)
665
+ - On gate failure: `stop` / `skip_region` / `rollback` per config
666
+ 3. **Post-flight health check** - full cross-region before/after table
667
+ 4. **Summary** - pass/fail per region, steps executed, `last_synced` updated in runbook
668
+
669
+ ```bash
670
+ /mdd ops list # show all runbooks (global + project) with last-run status
671
+ /mdd update-op <slug> # edit a runbook, re-ask all questions with current values pre-filled
672
+ ```
673
+
674
+ ---
675
+
676
+ ## Feature Doc Format
677
+
678
+ Every `.mdd/docs/<NN>-<feature-name>.md` file uses this YAML frontmatter:
679
+
680
+ | Field | Purpose |
681
+ |-------|---------|
682
+ | `id` | Auto-numbered slug (e.g., `01-user-auth`) |
683
+ | `title` | Human-readable title |
684
+ | `edition` | Project name or `Both` |
685
+ | `depends_on` | List of feature doc IDs this feature requires |
686
+ | `source_files` | Files that will be created or modified |
687
+ | `routes` | API routes (e.g., `POST /api/v1/auth/login`) |
688
+ | `models` | Database collections/tables used |
689
+ | `test_files` | Test files for this feature |
690
+ | `data_flow` | Path to flow analysis doc, or `greenfield` |
691
+ | `last_synced` | Date of last doc-to-code sync (drives drift detection in `/mdd scan`) |
692
+ | `status` | `draft` → `in_progress` → `complete` → `deprecated` |
693
+ | `phase` | Last completed phase name |
694
+ | `mdd_version` | Version of MDD that created/last updated this doc |
695
+ | `known_issues` | Issues discovered during audits or implementation |
696
+
697
+ **`depends_on` rules:**
698
+ - Feature docs only - never list task docs (one-off, frozen, no ongoing contract)
699
+ - IDs must reference existing docs - `/mdd graph` detects broken references
700
+ - Only add, never remove without discussion - removing breaks the dependency chain
135
701
 
136
702
  ---
137
703
 
138
704
  ## The `.mdd/` Directory
139
705
 
140
- All MDD artifacts live in a single dotfile directory:
706
+ All MDD artifacts live in one place:
141
707
 
142
708
  ```
143
709
  .mdd/
144
710
  ├── docs/ # Feature documentation (one .md per feature)
145
711
  │ ├── 01-<feature-name>.md # auto-numbered, YAML frontmatter
146
- │ └── archive/ # Deprecated feature docs
712
+ │ └── archive/ # Deprecated or cancelled feature docs
147
713
  ├── initiatives/ # Initiative files (/mdd plan-initiative)
148
- ├── waves/ # Wave files (/mdd plan-wave)
149
- ├── ops/ # Ops runbooks (/mdd ops)
150
- ├── audits/ # Audit artifacts (gitignored)
714
+ ├── waves/ # Wave execution files (/mdd plan-wave)
715
+ ├── ops/ # Project-scoped deployment runbooks
716
+ ├── audits/ # ⚠️ gitignored - regenerated by /mdd audit
151
717
  │ ├── flow-<feature>-<date>.md # Data flow analysis (Phase 2)
152
- │ ├── notes-<date>.md # Raw reading notes (Audit Phase A2)
153
- │ ├── report-<date>.md # Severity-rated findings (Audit Phase A3)
718
+ │ ├── notes-<date>.md # Raw reading notes (Audit Phase A5)
719
+ │ ├── report-<date>.md # Severity-rated findings (Audit Phase A6)
154
720
  │ ├── scan-<date>.md # Drift report (/mdd scan)
155
- └── graph-<date>.md # Dependency graph (/mdd graph)
156
- ├── jobs/ # Active audit jobs (gitignored, auto-deleted)
157
- └── .startup.md # Auto-generated session context
721
+ ├── graph-<date>.md # Dependency graph (/mdd graph)
722
+ │ └── MANIFEST-<date>.md # Permanent audit manifest (which files had findings)
723
+ ├── jobs/ # ⚠️ gitignored - auto-deleted when audit completes
724
+ │ └── audit-<date>/ # Active audit job (agents write here during audit)
725
+ │ ├── MANIFEST.md
726
+ │ ├── shard-N.md
727
+ │ ├── agent-N-config.md
728
+ │ └── agent-N-notes.md
729
+ └── .startup.md # Auto-generated session context (read by Claude on start)
158
730
  ```
159
731
 
160
- `.mdd/audits/` and `.mdd/jobs/` are automatically added to `.gitignore` on first run.
732
+ `.mdd/audits/` and `.mdd/jobs/` are automatically added to `.gitignore` on first run. Everything else in `.mdd/` is committed - it's your project's knowledge base.
161
733
 
162
- ---
163
-
164
- ## Build Mode in Detail
734
+ ### The `.startup.md` File
165
735
 
166
- Build mode runs 7 phases with 3 mandatory gates:
736
+ This file is the session context that orients Claude at the start of every conversation. MDD rebuilds it automatically after every `status`, `audit`, or `note` command:
167
737
 
168
- **Pipeline:** Understand → Analyze → Document → Test Skeletons → **Red Gate** → Plan → Implement → **Green Gate** → Verify → **Integration Gate**
738
+ ```markdown
739
+ ## Project Snapshot
740
+ Generated: 2026-05-07 | Branch: feat/user-auth
169
741
 
170
- - **Phase 1** gathers context using 3 parallel Explore agents (rules, existing features, codebase structure)
171
- - **Phase 2** is a mandatory Data Flow & Impact Analysis gate — traces every data value end-to-end before writing a line of docs; automatically skipped on greenfield projects
172
- - **Red Gate** runs every test skeleton to confirm it actually fails before implementation begins
173
- - Build plan uses commit-worthy blocks with runnable end-states, verification commands, and handoff contracts; independent blocks annotated for parallel execution
174
- - **Green Gate** implements each block with a 5-iteration diagnosis-first loop — states root cause before each fix; stops at 5 and escalates rather than continuing blindly
175
- - **Integration Gate** verifies real behavior (real HTTP calls, real DB, real browser) before marking complete
742
+ ## Stack
743
+ Framework: Express + React | DB: PostgreSQL | Host: Dokploy
176
744
 
177
- ---
745
+ ## Features Documented
746
+ 01-project-scaffolding (complete)
747
+ 02-user-auth (in_progress)
748
+ ...
178
749
 
179
- ## Audit Mode in Detail
750
+ ## Last Audit
751
+ 2026-05-01 - 20 findings, 17 fixed, 3 open
180
752
 
181
- Audit mode scales with file count (1–8 parallel agents):
753
+ ## Rules Summary
754
+ [key rules from CLAUDE.md]
182
755
 
183
- | Files in scope | Agents |
184
- |---|---|
185
- | < 10 | 1 (single-agent mode) |
186
- | 10–25 | 2 |
187
- | 26–50 | 3 |
188
- | 51–100 | 5 |
189
- | 100+ | 8 |
756
+ ---
757
+ ## Notes
758
+ - [2026-05-07] switched from JWT lib to jose for better ESM support
759
+ ```
190
760
 
191
- Each agent gets a shard of files and a config file. Agents clear context between every file — every file gets a full context window with maximum analysis budget. Notes are written to disk so findings survive compaction. The manifest tracks `[ ] pending → [~] in progress → [x] complete → [!] findings → [e] error` for every file.
761
+ The auto-generated section above the `---` is rebuilt each time. The Notes section below is append-only and preserved.
192
762
 
193
763
  ---
194
764
 
195
765
  ## MDD Versioning
196
766
 
197
- Every feature doc, wave, and initiative created by MDD is stamped with `mdd_version: N` in its frontmatter. `/mdd status` shows a breakdown of which docs are on which version. `mdd install` compares `mdd_version` between the installed and available versions before overwriting — no silent overwrites.
767
+ Every file created by MDD is stamped with `mdd_version: N` in its frontmatter. This tracks which version of the workflow created or last updated each doc.
768
+
769
+ ```bash
770
+ mdd install # compares versions before overwriting - no silent upgrades
771
+ /mdd status # shows version breakdown across all docs
772
+ ```
773
+
774
+ Current MDD version: **8**
775
+
776
+ `/mdd status` version output:
777
+ ```
778
+ MDD version: v8 (current)
779
+ v8: 9 files - up to date
780
+ v7: 2 files - run /mdd upgrade to refresh these docs
781
+ v0 (unversioned): 1 file - created before versioning was introduced
782
+ ```
198
783
 
199
- The current MDD version is `8` (bumped with each release to this package).
784
+ Run `/mdd upgrade` after updating MDD to batch-patch older docs.
200
785
 
201
786
  ---
202
787
 
203
788
  ## Real Results: Self-Audit
204
789
 
205
- The [Claude Code Mastery Starter Kit](https://github.com/TheDecipherist/claude-code-mastery-project-starter-kit) used MDD to audit itself:
790
+ The [Claude Code Mastery Starter Kit](https://github.com/TheDecipherist/claude-code-mastery-project-starter-kit) used MDD to audit itself. Real numbers, no cherry-picking:
206
791
 
207
792
  | Audit Step | Time | Output |
208
793
  |------------|------|--------|
@@ -212,16 +797,91 @@ The [Claude Code Mastery Starter Kit](https://github.com/TheDecipherist/claude-c
212
797
  | A5: Fix All | 10 min 53s | 17/20 fixed, 125 tests written |
213
798
  | **Total** | **~48 min** | **20 findings, 125 tests from zero** |
214
799
 
800
+ **P1 findings fixed:**
801
+ - 3 raw database connections replaced with StrictDB
802
+ - 2 hardcoded secrets moved to environment variables
803
+ - 1 missing input validation on a public endpoint
804
+
805
+ ---
806
+
807
+ ## History: From Starter Kit to Standalone Package
808
+
809
+ MDD started as one component of the **[Claude Code Mastery Project Starter Kit](https://github.com/TheDecipherist/claude-code-mastery-project-starter-kit)** - a full project scaffolding tool with 27 slash commands, 9 hooks, TypeScript-first quality gates, agents, skills, and the StrictDB database layer.
810
+
811
+ Within the starter kit, the entire MDD workflow lived in a single `mdd.md` file (~28,000 tokens) that was loaded in full on every invocation. This worked, but it meant every `/mdd status` call burned the entire command budget even though it only needed the status logic.
812
+
813
+ **Two things changed:**
814
+
815
+ 1. **Split into 7 files** - the monolithic `mdd.md` was broken into a router + 6 mode files. The router loads only the file needed for each invocation. A `/mdd status` now costs ~460 tokens instead of 28,000. The full capability is always available, but never loaded unnecessarily.
816
+
817
+ 2. **Extracted as a standalone npm package** - MDD now lives at `@thedecipherist/mdd` and installs into Claude Code with a single `mdd install`. You don't need the starter kit to use MDD. You don't need to clone a repo, configure anything, or adapt a boilerplate. Just `npm install -g @thedecipherist/mdd && mdd install` and you're done.
818
+
819
+ **The starter kit still exists** and is still maintained. It provides the broader scaffolding for TypeScript projects: CLAUDE.md templates, hooks configuration, StrictDB integration, custom agents, and skills. MDD is one part of that ecosystem. But now you can use MDD on its own - in any project, any tech stack, any language - without adopting the full kit.
820
+
821
+ **What this means in practice:**
822
+ - If you have an existing project → `npm install -g @thedecipherist/mdd && mdd install` and start running `/mdd` commands
823
+ - If you want the full starter kit experience → clone the starter kit and MDD is included
824
+ - If you're already on the starter kit → upgrade to the standalone MDD package for the optimized split-file version
825
+
826
+ ---
827
+
828
+ ## Dashboards
829
+
830
+ MDD ships with two companion dashboards for exploring your `.mdd/` workspace — one terminal-native, one browser-based. Both are available as standalone packages today and **will soon be merged directly into the `mdd` package**, so they'll be launchable via the `mdd` command without a separate install.
831
+
832
+ ### mdd-tui — Terminal Dashboard
833
+
834
+ A live terminal UI for navigating your MDD workspace without leaving the command line. Shows feature doc health, drift status, audit reports, initiative/wave progress, and full markdown content in a split-pane view.
835
+
836
+ ```bash
837
+ npm install -g mdd-tui
838
+ mdd-tui
839
+ ```
840
+
841
+ **Key features:**
842
+ - Split-pane: scrollable file list (left) + full markdown render (right)
843
+ - Initiative tree with collapsible waves and feature-level progress counters
844
+ - Drift status icons — see which docs are in sync vs. changed at a glance
845
+ - Ops runbook browser and audit report viewer
846
+ - Keyboard-driven navigation (`j`/`k` to move, `h`/`l` to switch panes, `r` to refresh, `q` to quit)
847
+
848
+ [npm: mdd-tui](https://www.npmjs.com/package/mdd-tui) · [GitHub](https://github.com/TheDecipherist/mdd-tui)
849
+
850
+ ### mdd-dashboard — Browser Dashboard *(in active development)*
851
+
852
+ A visual, browser-based dashboard for MDD projects. Renders your feature dependency graph as an interactive D3 diagram with live reload on file changes.
853
+
854
+ > **Status:** mdd-dashboard is in active development and not yet fully operational. Early adopters are welcome — expect rough edges while it catches up to the full MDD feature set.
855
+
856
+ ```bash
857
+ npm install -g mdd-dashboard
858
+ mdd-dashboard
859
+ # MDD Dashboard running at http://localhost:7321
860
+ ```
861
+
862
+ **Key features:**
863
+ - Interactive D3 graph — force simulation or strict hierarchy (initiative → wave → feature) layout
864
+ - Three-tier filter system: live search, type chips, status dropdown, advanced field filters, and git-aware filters
865
+ - Live reload via SSE — graph updates the moment you save a `.mdd/` file, no page refresh needed
866
+ - Click any node to open a detail panel: full doc body, git history, source files, depends-on navigation
867
+ - Mini-map overlay for large graphs (100+ docs)
868
+
869
+ [npm: mdd-dashboard](https://www.npmjs.com/package/mdd-dashboard) · [GitHub](https://github.com/TheDecipherist/mdd-dashboard)
870
+
871
+ ---
872
+
873
+ > **Coming soon:** Both dashboards will be merged into the `mdd` package so you can launch either directly from the `mdd` CLI — no separate install needed.
874
+
215
875
  ---
216
876
 
217
877
  ## Companion Tools
218
878
 
219
- - **[mdd-tui](https://github.com/TheDecipherist/mdd-tui)** Terminal dashboard for browsing your `.mdd/` workspace (docs, audits, graph, ops runbooks) in a live TUI. Install: `npm install -g @thedecipherist/mdd-tui`
220
- - **[Claude Code Mastery Starter Kit](https://github.com/TheDecipherist/claude-code-mastery-project-starter-kit)** Full project scaffolding with hooks, rules, skills, and agents. MDD is one component of the kit.
221
- - **[strictdb](https://www.npmjs.com/package/strictdb)** Database wrapper with guardrails used across starter kit projects
879
+ - **[mdd-tui](https://github.com/TheDecipherist/mdd-tui)** - Terminal dashboard for browsing your `.mdd/` workspace (docs, audits, graph, ops runbooks) in a live TUI. `npm install -g mdd-tui`
880
+ - **[Claude Code Mastery Starter Kit](https://github.com/TheDecipherist/claude-code-mastery-project-starter-kit)** - Full project scaffolding: hooks, CLAUDE.md templates, TypeScript rules, agents, skills, StrictDB. MDD originated here.
881
+ - **[strictdb](https://www.npmjs.com/package/strictdb)** - Database wrapper with guardrails used across starter kit projects
222
882
 
223
883
  ---
224
884
 
225
885
  ## License
226
886
 
227
- MIT [TheDecipherist](https://github.com/TheDecipherist)
887
+ MIT - [TheDecipherist](https://github.com/TheDecipherist)
package/dist/cli.js CHANGED
@@ -4,6 +4,7 @@ import { install } from './install.js';
4
4
  import { readFileSync } from 'fs';
5
5
  import { fileURLToPath } from 'url';
6
6
  import { join, dirname } from 'path';
7
+ import { cwd } from 'process';
7
8
  const __filename = fileURLToPath(import.meta.url);
8
9
  const __dirname = dirname(__filename);
9
10
  const pkg = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'));
@@ -16,12 +17,24 @@ program
16
17
  .command('install')
17
18
  .description('Install MDD Claude commands to ~/.claude/commands/')
18
19
  .option('--dir <path>', 'Custom install directory (default: ~/.claude/commands)', '~/.claude/commands')
20
+ .option('--install-local', 'Install to .claude/commands/ in the current project directory', false)
19
21
  .option('--force', 'Overwrite existing files even if already up to date', false)
20
- .action(install);
22
+ .action(function (options) {
23
+ const dirExplicit = this.getOptionValueSource('dir') === 'cli';
24
+ const local = options.installLocal && !dirExplicit;
25
+ const effectiveDir = local ? join(cwd(), '.claude/commands') : options.dir;
26
+ install({ dir: effectiveDir, force: options.force, local });
27
+ });
21
28
  program
22
29
  .command('update')
23
30
  .description('Update MDD commands to latest version (alias for install --force)')
24
31
  .option('--dir <path>', 'Custom install directory', '~/.claude/commands')
25
- .action((options) => install({ ...options, force: true }));
32
+ .option('--install-local', 'Update the local project install instead of global', false)
33
+ .action(function (options) {
34
+ const dirExplicit = this.getOptionValueSource('dir') === 'cli';
35
+ const local = options.installLocal && !dirExplicit;
36
+ const effectiveDir = local ? join(cwd(), '.claude/commands') : options.dir;
37
+ install({ dir: effectiveDir, force: true, local });
38
+ });
26
39
  program.parse();
27
40
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAwB,CAAC;AAEzG,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,cAAc,EAAE,wDAAwD,EAAE,oBAAoB,CAAC;KACtG,MAAM,CAAC,SAAS,EAAE,qDAAqD,EAAE,KAAK,CAAC;KAC/E,MAAM,CAAC,OAAO,CAAC,CAAC;AAEnB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mEAAmE,CAAC;KAChF,MAAM,CAAC,cAAc,EAAE,0BAA0B,EAAE,oBAAoB,CAAC;KACxE,MAAM,CAAC,CAAC,OAAwB,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAE9E,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAwB,CAAC;AAEzG,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,cAAc,EAAE,wDAAwD,EAAE,oBAAoB,CAAC;KACtG,MAAM,CAAC,iBAAiB,EAAE,+DAA+D,EAAE,KAAK,CAAC;KACjG,MAAM,CAAC,SAAS,EAAE,qDAAqD,EAAE,KAAK,CAAC;KAC/E,MAAM,CAAC,UAAyB,OAAgE;IAC/F,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC;IACnD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAC3E,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mEAAmE,CAAC;KAChF,MAAM,CAAC,cAAc,EAAE,0BAA0B,EAAE,oBAAoB,CAAC;KACxE,MAAM,CAAC,iBAAiB,EAAE,oDAAoD,EAAE,KAAK,CAAC;KACtF,MAAM,CAAC,UAAyB,OAA+C;IAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC;IACnD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAC3E,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/dist/install.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  interface InstallOptions {
2
2
  dir: string;
3
3
  force?: boolean;
4
+ local?: boolean;
4
5
  }
5
6
  export declare function install(options: InstallOptions): void;
6
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAUD,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAwErD"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAUD,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CA4ErD"}
package/dist/install.js CHANGED
@@ -73,7 +73,10 @@ export function install(options) {
73
73
  else {
74
74
  console.log(` ${installed} file(s) installed/updated${skipped > 0 ? `, ${skipped} skipped` : ''}`);
75
75
  }
76
- console.log('\nOpen Claude Code and run /mdd to get started.\n');
76
+ if (options.local) {
77
+ console.log(' Tip: add .claude/commands/ to your .gitignore to keep these files out of git.\n');
78
+ }
79
+ console.log('Open Claude Code and run /mdd to get started.\n');
77
80
  }
78
81
  function getMddVersion(content) {
79
82
  const match = content.match(/^mdd_version:\s*(\d+)/m);
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thedecipherist/mdd",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "MDD — Manual-Driven Development workflow for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {