@jakkrichm/create-nexus-devflow 2.0.25 → 2.0.27

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.
Files changed (122) hide show
  1. package/README.md +1 -1
  2. package/dist/bin/create-nexus-devflow.d.ts +18 -1
  3. package/dist/bin/create-nexus-devflow.js +439 -11
  4. package/dist/bin/create-nexus-devflow.js.map +1 -1
  5. package/dist/lib/command-catalog.d.ts +11 -0
  6. package/dist/lib/command-catalog.js +63 -0
  7. package/dist/lib/command-catalog.js.map +1 -0
  8. package/dist/lib/current-work.js +94 -48
  9. package/dist/lib/current-work.js.map +1 -1
  10. package/dist/lib/dashboard-page.d.ts +2 -0
  11. package/dist/lib/dashboard-page.js +201 -0
  12. package/dist/lib/dashboard-page.js.map +1 -0
  13. package/dist/lib/dashboard-snapshot.d.ts +49 -0
  14. package/dist/lib/dashboard-snapshot.js +96 -0
  15. package/dist/lib/dashboard-snapshot.js.map +1 -0
  16. package/dist/lib/dashboard.d.ts +2 -0
  17. package/dist/lib/dashboard.js +360 -8
  18. package/dist/lib/dashboard.js.map +1 -1
  19. package/dist/lib/discoveries.d.ts +19 -0
  20. package/dist/lib/discoveries.js +81 -0
  21. package/dist/lib/discoveries.js.map +1 -0
  22. package/dist/lib/doctor.d.ts +26 -0
  23. package/dist/lib/doctor.js +474 -0
  24. package/dist/lib/doctor.js.map +1 -0
  25. package/dist/lib/findings.d.ts +26 -2
  26. package/dist/lib/findings.js +165 -1
  27. package/dist/lib/findings.js.map +1 -1
  28. package/dist/lib/gatekeeper.d.ts +19 -0
  29. package/dist/lib/gatekeeper.js +77 -0
  30. package/dist/lib/gatekeeper.js.map +1 -0
  31. package/dist/lib/git-hooks.d.ts +16 -0
  32. package/dist/lib/git-hooks.js +78 -0
  33. package/dist/lib/git-hooks.js.map +1 -0
  34. package/dist/lib/history.d.ts +6 -1
  35. package/dist/lib/history.js +98 -11
  36. package/dist/lib/history.js.map +1 -1
  37. package/dist/lib/ideas.d.ts +26 -0
  38. package/dist/lib/ideas.js +179 -0
  39. package/dist/lib/ideas.js.map +1 -0
  40. package/dist/lib/status.d.ts +2 -0
  41. package/dist/lib/status.js +60 -6
  42. package/dist/lib/status.js.map +1 -1
  43. package/dist/lib/update.js +2 -2
  44. package/dist/lib/update.js.map +1 -1
  45. package/dist/lib/version-check.d.ts +22 -0
  46. package/dist/lib/version-check.js +59 -0
  47. package/dist/lib/version-check.js.map +1 -0
  48. package/dist/lib/workflow-state.d.ts +23 -0
  49. package/dist/lib/workflow-state.js +112 -0
  50. package/dist/lib/workflow-state.js.map +1 -0
  51. package/dist/scripts/prepare-template.js +3 -3
  52. package/package.json +1 -1
  53. package/template/{.claude/skills/00-discover → .agents/skills/00-explore}/SKILL.md +10 -10
  54. package/template/.agents/skills/10-define/SKILL.md +4 -4
  55. package/template/.agents/skills/20-spec/SKILL.md +2 -3
  56. package/template/.agents/skills/30-plan/SKILL.md +2 -3
  57. package/template/.agents/skills/40-execute/SKILL.md +2 -2
  58. package/template/.agents/skills/50-verify/SKILL.md +2 -2
  59. package/template/.agents/skills/60-report/SKILL.md +3 -3
  60. package/template/{.claude/skills/70-release → .agents/skills/70-deliver}/SKILL.md +7 -13
  61. package/template/.agents/skills/adopt/SKILL.md +136 -73
  62. package/template/.agents/skills/audit/SKILL.md +275 -0
  63. package/template/.agents/skills/autopilot/SKILL.md +228 -147
  64. package/template/.agents/skills/brainstorm/SKILL.md +3 -3
  65. package/template/.agents/skills/brief/SKILL.md +74 -51
  66. package/template/.agents/skills/check/SKILL.md +96 -76
  67. package/template/.agents/skills/ci/SKILL.md +140 -61
  68. package/template/.agents/skills/complete/SKILL.md +156 -101
  69. package/template/.agents/skills/convert-any-to-md/SKILL.md +2 -2
  70. package/template/.agents/skills/debug/SKILL.md +124 -49
  71. package/template/.agents/skills/devflow/SKILL.md +16 -10
  72. package/template/.agents/skills/discovery/SKILL.md +166 -0
  73. package/template/.agents/skills/doctor/SKILL.md +188 -72
  74. package/template/.agents/skills/feature/SKILL.md +195 -102
  75. package/template/.agents/skills/fix/SKILL.md +41 -90
  76. package/template/.agents/skills/idea/SKILL.md +3 -3
  77. package/template/.agents/skills/implement/SKILL.md +189 -46
  78. package/template/.agents/skills/onboard/SKILL.md +215 -85
  79. package/template/.agents/skills/overview/SKILL.md +51 -85
  80. package/template/.agents/skills/prototype/SKILL.md +82 -27
  81. package/template/.agents/skills/release/SKILL.md +160 -0
  82. package/template/.agents/skills/report-html/SKILL.md +2 -2
  83. package/template/.agents/skills/rollback/SKILL.md +123 -77
  84. package/template/.agents/skills/status/SKILL.md +109 -0
  85. package/template/.agents/skills/test/SKILL.md +2 -2
  86. package/template/.agents/skills/tests/SKILL.md +126 -0
  87. package/template/.agents/skills/try/SKILL.md +77 -65
  88. package/template/{.agents/skills/00-discover → .claude/skills/00-explore}/SKILL.md +9 -9
  89. package/template/.claude/skills/10-define/SKILL.md +2 -2
  90. package/template/.claude/skills/20-spec/SKILL.md +1 -1
  91. package/template/.claude/skills/30-plan/SKILL.md +1 -1
  92. package/template/.claude/skills/60-report/SKILL.md +1 -1
  93. package/template/{.agents/skills/70-release → .claude/skills/70-deliver}/SKILL.md +6 -12
  94. package/template/.claude/skills/adopt/SKILL.md +2 -2
  95. package/template/.claude/skills/audit/SKILL.md +141 -0
  96. package/template/.claude/skills/autopilot/SKILL.md +74 -52
  97. package/template/.claude/skills/brief/SKILL.md +67 -45
  98. package/template/.claude/skills/ci/SKILL.md +1 -1
  99. package/template/.claude/skills/complete/SKILL.md +1 -1
  100. package/template/.claude/skills/debug/SKILL.md +1 -1
  101. package/template/.claude/skills/devflow/SKILL.md +7 -7
  102. package/template/.claude/skills/discovery/SKILL.md +145 -0
  103. package/template/.claude/skills/doctor/SKILL.md +1 -1
  104. package/template/.claude/skills/feature/SKILL.md +67 -18
  105. package/template/.claude/skills/fix/SKILL.md +1 -1
  106. package/template/.claude/skills/idea/SKILL.md +2 -2
  107. package/template/.claude/skills/onboard/SKILL.md +3 -3
  108. package/template/.claude/skills/overview/SKILL.md +39 -88
  109. package/template/.claude/skills/prototype/SKILL.md +1 -1
  110. package/template/.claude/skills/release/SKILL.md +171 -0
  111. package/template/.claude/skills/rollback/SKILL.md +2 -2
  112. package/template/AGENTS.md +5 -5
  113. package/template/devflow/build-plan.md +40 -0
  114. package/template/devflow/context/ai-interaction.md +4 -4
  115. package/template/devflow/context/coding-standards.md +3 -3
  116. package/template/devflow/context/current-stage.md +1 -1
  117. package/template/devflow/context/findings.md +1 -1
  118. package/template/devflow/history/HISTORY.md +2 -2
  119. package/template/devflow/project-plan.md +27 -0
  120. package/template/devflow/reference/mockup.html +476 -0
  121. package/template/devflow/reference/project-overview-template.md +39 -0
  122. package/template/devflow/reference/running-id-contract.md +24 -2
@@ -63,7 +63,7 @@ nexus-devflow/
63
63
  ├── .nexus/ # Metadata tracking & upstream baseline ledger
64
64
  ├── devflow/ # Framework workspace context, history, and discoveries
65
65
  │ ├── context/ # Living source-of-truth context files
66
- │ ├── discoveries/ # Pre-delivery discovery records (00-discover.md)
66
+ │ ├── discoveries/ # Pre-delivery discovery records (00-explore.md)
67
67
  │ ├── history/ # Master delivery archive (features/, fixes/, rollbacks/, HISTORY.md)
68
68
  │ └── ideas.md # Idea Inbox and backlog
69
69
  ├── packages/
@@ -79,7 +79,7 @@ nexus-devflow/
79
79
  ## 6. Naming Conventions
80
80
 
81
81
  - **Files & Directories**:
82
- - Skills and command directories: `kebab-case` (e.g. `00-discover`, `report-html`, `sync-upstream`).
82
+ - Skills and command directories: `kebab-case` (e.g. `00-explore`, `report-html`, `sync-upstream`).
83
83
  - Source modules and scripts: `kebab-case.ts` / `kebab-case.mjs` (e.g. `current-work.ts`, `check-devflow.ts`).
84
84
  - Test files: `[module].test.ts` (e.g. `status.test.ts`, `uninstall.test.ts`).
85
85
  - **Identifiers**:
@@ -117,7 +117,7 @@ Testing is a core quality gate in Nexus-DevFlow, not an afterthought:
117
117
  - `fixed`: Repaired in code, pending QA re-verification.
118
118
  - `closed`: Verified by QA as completely resolved without regressions.
119
119
  - `accepted`: Formally waived with recorded user justification.
120
- - **P0/P1 Blockers**: Any P0 or P1 finding in `open` or `fixed` status unconditionally blocks `/complete` and `70-release`.
120
+ - **P0/P1 Blockers**: Any P0 or P1 finding in `open` or `fixed` status unconditionally blocks `/complete` and `70-deliver`.
121
121
 
122
122
  ---
123
123
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  - **Active Discovery ID**: `None`
4
4
  - **Active Running ID**: `None`
5
- - **Current Stage**: `Idle (Ready for new /feature, /fix, /00-discover, or /10-define)`
5
+ - **Current Stage**: `Idle (Ready for new /feature, /fix, /00-explore, or /10-define)`
6
6
  - **Living Spec**: `None`
7
7
  - **Last Completed Run**: `None`
8
8
  - **Last Updated**: `None`
@@ -6,7 +6,7 @@
6
6
  > `### <ID> [<SEVERITY>] <STATUS> - <Title>`
7
7
  > - **Severities**: `P0` (Critical Blocker), `P1` (High Blocker), `P2` (Medium), `P3` (Low / Polish)
8
8
  > - **Statuses**: `unverified`, `open`, `fixed`, `closed`, `accepted`, `invalid`
9
- > - **Release Gate Rule**: Any `P0` or `P1` finding in `open` or `fixed` status unconditionally blocks `/complete` and `70-release`.
9
+ > - **Release Gate Rule**: Any `P0` or `P1` finding in `open` or `fixed` status unconditionally blocks `/complete` and `70-deliver`.
10
10
 
11
11
  ---
12
12
 
@@ -1,6 +1,6 @@
1
1
  # Master Release History Ledger
2
2
 
3
- This master ledger tracks all released delivery runs, milestones, and rollbacks in chronological order. Each entry is recorded during `/complete` or `70-release` and links to its exact Git commit hash, release status, category, and archived delivery artifacts.
3
+ This master ledger tracks all released delivery runs, milestones, and rollbacks in chronological order. Each entry is recorded during `/complete` or `70-deliver` and links to its exact Git commit hash, release status, category, and archived delivery artifacts.
4
4
 
5
5
  ---
6
6
 
@@ -8,7 +8,7 @@ This master ledger tracks all released delivery runs, milestones, and rollbacks
8
8
 
9
9
  | Completed Date | Run ID | Category | Title | Git Commit | Status | Archive Link |
10
10
  | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
11
- | _No shipped runs yet_ | - | - | Run `/feature` or `/00-discover` to start your first delivery run | - | - | - |
11
+ | _No shipped runs yet_ | - | - | Run `/feature` or `/00-explore` to start your first delivery run | - | - | - |
12
12
 
13
13
  ---
14
14
 
@@ -0,0 +1,27 @@
1
+ # 🗺️ Project Plan (User-Owned Architectural Vision)
2
+
3
+ > **Document Type**: Project Plan (User-Owned)
4
+ > **Purpose**: Single source of truth for high-level product vision, architecture, constraints, and non-goals. Distilled into `devflow/context/project-overview.md` by `/overview`.
5
+
6
+ ---
7
+
8
+ ## 1. Product Vision & Problem Statement
9
+ - **What this is**: A description of the project and the core problem it solves.
10
+ - **Target Audience**: Who will use this system and why.
11
+ - **Core Value Proposition**: Key differentiator and value delivered.
12
+
13
+ ## 2. Architecture & Tech Stack
14
+ - **Runtime / Framework**: Primary language, framework, and runtime (e.g. Node.js, Next.js, FastAPI, Go).
15
+ - **Storage / Database**: Data persistence layers, caching, and state storage.
16
+ - **Key Modules / Services**: High-level module breakdown and directory responsibilities.
17
+ - **Integration Points**: External APIs, MCP servers, or third-party services.
18
+
19
+ ## 3. Constraints & Non-Goals
20
+ - **Non-Goals**: What this project explicitly will NOT do in the current scope.
21
+ - **Technical Constraints**: Performance targets, security standards, offline requirements, or backward compatibility rules.
22
+ - **Delivery Rules**: Dual-Track workflow discipline (Fast-Track for standard features, Deep-Track for epics).
23
+
24
+ ## 4. Key Milestones & Roadmap
25
+ - **Milestone 1**: Core Foundation & MVP
26
+ - **Milestone 2**: Feature Expansion & Integrations
27
+ - **Milestone 3**: Enterprise Hardening & Release Polish
@@ -0,0 +1,476 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>Nexus-DevFlow — Blueprint Dashboard</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com">
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
+ <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Inter:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
10
+ <style>
11
+ :root{
12
+ --font-display:'Space Grotesk',sans-serif;
13
+ --font-sans:'Inter',sans-serif;
14
+ --font-mono:'IBM Plex Mono',monospace;
15
+ --bg:#0a2540; --bg-deep:#071b30; --panel:rgba(255,255,255,.035);
16
+ --ink:#eaf3ff; --ink-soft:#b7d3ef; --ink-muted:#6f93b8;
17
+ --line:rgba(191,224,255,.16); --line-strong:rgba(191,224,255,.34);
18
+ --cyan:#7dd8ff; --cyan-dim:#3f7fa8;
19
+ --gold:#f2c14e; --gold-soft:rgba(242,193,78,.14);
20
+ --mint:#6fe3b4; --mint-soft:rgba(111,227,180,.14);
21
+ --redline:#ff6b5b; --redline-soft:rgba(255,107,91,.14);
22
+ --violet:#b39bff; --violet-soft:rgba(179,155,255,.14);
23
+ }
24
+ *{box-sizing:border-box}
25
+ body{
26
+ margin:0;min-height:100vh;background:var(--bg);color:var(--ink);
27
+ font-family:var(--font-sans);-webkit-font-smoothing:antialiased;
28
+ background-image:
29
+ linear-gradient(rgba(125,216,255,.07) 1px,transparent 1px),
30
+ linear-gradient(90deg,rgba(125,216,255,.07) 1px,transparent 1px),
31
+ radial-gradient(circle at 8% -6%,rgba(125,216,255,.14),transparent 40rem);
32
+ background-size:34px 34px,34px 34px,auto;
33
+ }
34
+ .sheet{width:min(1180px,calc(100% - 40px));margin:0 auto;padding:34px 0 70px;position:relative}
35
+ .crop{position:fixed;width:18px;height:18px;border-color:var(--line-strong);opacity:.7;pointer-events:none}
36
+ .crop.tl{top:14px;left:14px;border-top:1px solid;border-left:1px solid}
37
+ .crop.tr{top:14px;right:14px;border-top:1px solid;border-right:1px solid}
38
+ .crop.bl{bottom:14px;left:14px;border-bottom:1px solid;border-left:1px solid}
39
+ .crop.br{bottom:14px;right:14px;border-bottom:1px solid;border-right:1px solid}
40
+
41
+ .titleblock{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding-bottom:18px;margin-bottom:10px;border-bottom:1px solid var(--line-strong);flex-wrap:wrap}
42
+ .dwg-no{font:600 11px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);display:flex;align-items:center;gap:8px;margin-bottom:12px}
43
+ .dwg-no::before{content:"";width:20px;height:1px;background:var(--cyan)}
44
+ .titleblock h1{margin:0 0 6px;font-family:var(--font-display);font-weight:700;font-size:clamp(30px,4vw,46px);letter-spacing:-.02em}
45
+ .path{color:var(--ink-muted);font:12px/1.6 var(--font-mono)}
46
+ .badge-row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
47
+ .badge{padding:3px 9px;border:1px solid var(--line-strong);border-radius:3px;font:600 10px/1.6 var(--font-mono);letter-spacing:.04em;color:var(--ink-muted)}
48
+ .badge.mint{border-color:rgba(111,227,180,.4);color:var(--mint);background:var(--mint-soft)}
49
+ .badge.violet{border-color:rgba(179,155,255,.4);color:var(--violet);background:var(--violet-soft)}
50
+ .tb-table{display:grid;grid-template-columns:auto auto;gap:3px 18px;font:11px/1.5 var(--font-mono);text-align:right}
51
+ .tb-table dt{color:var(--ink-muted);letter-spacing:.06em;text-transform:uppercase;text-align:left}
52
+ .tb-table dd{margin:0;color:var(--ink-soft)}
53
+ .live-wrap{display:flex;align-items:center;gap:8px;margin-bottom:26px}
54
+ .live-dot{position:relative;width:7px;height:7px;border-radius:50%;background:var(--mint)}
55
+ .live-dot::after{content:"";position:absolute;inset:-4px;border-radius:50%;background:var(--mint);opacity:0;animation:pulseRing 2.2s ease-out infinite}
56
+ @keyframes pulseRing{0%{transform:scale(.5);opacity:.5}100%{transform:scale(2.4);opacity:0}}
57
+
58
+ /* ---- dual-track pipeline ---- */
59
+ .pipeline{margin-bottom:26px;padding:22px 24px 20px;border:1px solid var(--line);border-radius:4px;background:var(--panel)}
60
+ .pipeline-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;flex-wrap:wrap}
61
+ .pipeline-title{font:600 11px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--cyan)}
62
+ .track-tabs{display:flex;gap:6px}
63
+ .tab{padding:6px 12px;border:1px solid var(--line-strong);border-radius:99px;background:transparent;color:var(--ink-muted);font:600 10.5px var(--font-mono);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:.15s ease}
64
+ .tab:hover{border-color:var(--cyan);color:var(--cyan)}
65
+ .tab.on{background:var(--cyan);color:var(--bg-deep);border-color:var(--cyan)}
66
+ .track-view{display:none}
67
+ .track-view.on{display:block}
68
+ .stepper{display:flex;gap:0;overflow-x:auto;padding-bottom:4px}
69
+ .step{flex:1 1 0;min-width:100px;position:relative;padding:0 10px 0 0}
70
+ .step:last-child{padding-right:0}
71
+ .step-conn{position:absolute;top:9px;left:calc(50% + 10px);right:calc(-50% + 10px);height:1px;background:var(--line-strong)}
72
+ .step:last-child .step-conn{display:none}
73
+ .step.done .step-conn{background:var(--mint)}
74
+ .step-dot{width:19px;height:19px;border-radius:50%;border:2px solid var(--line-strong);display:flex;align-items:center;justify-content:center;font:700 9px var(--font-mono);color:var(--ink-muted);background:var(--bg-deep);position:relative;z-index:1}
75
+ .step.done .step-dot{border-color:var(--mint);color:var(--mint)}
76
+ .step.active .step-dot{border-color:var(--gold);color:var(--gold);box-shadow:0 0 0 4px rgba(242,193,78,.18)}
77
+ .step-name{margin-top:9px;font:600 10.5px/1.3 var(--font-mono);color:var(--ink-soft);letter-spacing:.02em}
78
+ .step.active .step-name{color:var(--gold)}
79
+ .step.done .step-name{color:var(--mint)}
80
+ .step-cmd{margin-top:3px;font:10px var(--font-mono);color:var(--ink-muted)}
81
+ .track-note{margin-top:14px;color:var(--ink-muted);font:11.5px/1.6 var(--font-mono);padding-top:12px;border-top:1px dashed var(--line)}
82
+ .track-note b{color:var(--ink-soft)}
83
+
84
+ .stats{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:4px;overflow:hidden;margin-bottom:26px}
85
+ .stat{background:var(--bg-deep);padding:14px 16px}
86
+ .stat-num{font:700 24px/1 var(--font-display);color:var(--ink);letter-spacing:-.02em}
87
+ .stat-num.mint{color:var(--mint)} .stat-num.gold{color:var(--gold)} .stat-num.redline{color:var(--redline)} .stat-num.violet{color:var(--violet)}
88
+ .stat-label{margin-top:4px;color:var(--ink-muted);font:10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase}
89
+
90
+ .grid{display:grid;grid-template-columns:repeat(12,1fr);gap:20px;margin-bottom:20px}
91
+ .card{position:relative;grid-column:span 4;min-width:0;padding:clamp(20px,2.4vw,28px);border:1px solid var(--line);border-radius:4px;background:var(--panel);opacity:0;transform:translateY(8px);animation:cardIn .4s cubic-bezier(.4,0,.2,1) forwards}
92
+ .sheet > .card{margin-bottom:20px}
93
+ .card::before,.card::after{content:"";position:absolute;width:8px;height:8px;border-color:var(--line-strong);opacity:.8}
94
+ .card::before{top:-1px;left:-1px;border-top:1px solid;border-left:1px solid}
95
+ .card::after{bottom:-1px;right:-1px;border-bottom:1px solid;border-right:1px solid}
96
+ .card.wide{grid-column:span 8} .card.full{grid-column:1/-1}
97
+ @keyframes cardIn{to{opacity:1;transform:translateY(0)}}
98
+ .card-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px;flex-wrap:wrap}
99
+ .label{color:var(--cyan);font:600 10px/1 var(--font-mono);letter-spacing:.12em;text-transform:uppercase}
100
+ .value{font:700 18px/1.3 var(--font-display);letter-spacing:-.01em}
101
+ .muted{color:var(--ink-muted);font-size:12.5px;line-height:1.6}
102
+ .tag{padding:4px 9px;border:1px solid var(--line-strong);border-radius:3px;color:var(--ink-muted);background:rgba(255,255,255,.03);font:600 10px/1 var(--font-mono);letter-spacing:.05em;text-transform:uppercase;display:inline-block}
103
+ .tag.ok,.tag.ready,.tag.active{border-color:rgba(111,227,180,.4);background:var(--mint-soft);color:var(--mint)}
104
+ .tag.warning,.tag.blocked{border-color:rgba(255,107,91,.4);background:var(--redline-soft);color:var(--redline)}
105
+ .tag.progress{border-color:rgba(242,193,78,.4);background:var(--gold-soft);color:var(--gold)}
106
+ .tag.track{border-color:rgba(179,155,255,.4);background:var(--violet-soft);color:var(--violet)}
107
+ .facts{display:grid;gap:10px}
108
+ .fact{display:flex;justify-content:space-between;gap:16px;padding-bottom:9px;border-bottom:1px dashed var(--line)}
109
+ .fact:last-child{border-bottom:0;padding-bottom:0}
110
+ .fact span:first-child{color:var(--ink-muted);font-size:11.5px}
111
+ .fact span:last-child{color:var(--ink-soft);font:11.5px var(--font-mono);text-align:right}
112
+ .progress{height:6px;margin:14px 0 9px;border-radius:99px;background:rgba(255,255,255,.06);overflow:hidden}
113
+ .progress-bar{display:block;height:100%;border-radius:inherit;background:var(--gold);box-shadow:0 0 10px rgba(242,193,78,.5)}
114
+ ul{margin:0;padding:0;list-style:none}
115
+ li{padding:9px 0;border-bottom:1px dashed var(--line);color:var(--ink-soft);font-size:12.5px;line-height:1.55}
116
+ li:last-child{border-bottom:0}
117
+ li.empty{color:var(--ink-muted)}
118
+
119
+ .sev-row{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
120
+ .sev{flex:1;min-width:64px;text-align:center;padding:8px 6px;border:1px solid var(--line);border-radius:3px;background:rgba(255,255,255,.02)}
121
+ .sev-count{font:700 17px var(--font-display)}
122
+ .sev-label{font:9px var(--font-mono);color:var(--ink-muted);letter-spacing:.06em;margin-top:2px}
123
+ .sev.p0 .sev-count{color:var(--redline)} .sev.p1 .sev-count{color:var(--gold)}
124
+ .sev.p2 .sev-count{color:var(--cyan)} .sev.p3 .sev-count{color:var(--ink-muted)}
125
+
126
+ .doctor-item{display:flex;align-items:flex-start;gap:9px;padding:9px 0;border-bottom:1px dashed var(--line);font-size:12.5px;color:var(--ink-soft)}
127
+ .doctor-item:last-child{border-bottom:0}
128
+ .dchk{flex:0 0 auto;width:15px;height:15px;border-radius:3px;display:flex;align-items:center;justify-content:center;font:700 10px var(--font-mono);margin-top:1px}
129
+ .dchk.ok{background:var(--mint-soft);color:var(--mint)} .dchk.warn{background:var(--redline-soft);color:var(--redline)}
130
+
131
+ .disc-item{padding:9px 0;border-bottom:1px dashed var(--line)}
132
+ .disc-item:last-child{border-bottom:0}
133
+ .disc-id{font:700 11px var(--font-mono);color:var(--violet)}
134
+ .disc-title{color:var(--ink-soft);font-size:12.5px;margin-top:2px}
135
+ .disc-status{font:10px var(--font-mono);color:var(--ink-muted);margin-top:3px;text-transform:uppercase;letter-spacing:.05em}
136
+
137
+ .cmd-row{display:flex;flex-wrap:wrap;gap:10px}
138
+ .cmdp{position:relative;padding:8px 13px;border:1px solid var(--line-strong);border-radius:3px;background:rgba(255,255,255,.02);color:var(--ink-soft);font:11px var(--font-mono);cursor:pointer;transition:.15s ease;white-space:nowrap}
139
+ .cmdp:hover{border-color:var(--cyan);color:var(--cyan);background:rgba(125,216,255,.06)}
140
+ .cmdp b{color:var(--cyan);font-weight:700}
141
+ .cmdp::after{content:attr(data-tip);position:absolute;z-index:20;left:50%;bottom:calc(100% + 10px);width:max-content;max-width:min(280px,80vw);padding:9px 11px;border:1px solid var(--line-strong);border-radius:3px;background:#041525;color:var(--ink-soft);font:10.5px/1.5 var(--font-mono);white-space:normal;text-align:left;box-shadow:0 10px 28px rgba(0,0,0,.35);opacity:0;visibility:hidden;transform:translate(-50%,5px);transition:.15s ease;pointer-events:none}
142
+ .cmdp:hover::after,.cmdp:focus-visible::after{opacity:1;visibility:visible;transform:translate(-50%,0)}
143
+
144
+ .adapters{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
145
+ .adapter{padding:14px;border:1px solid var(--line);border-radius:3px;background:rgba(255,255,255,.02)}
146
+ .adapter-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
147
+ .adapter-badge{width:26px;height:22px;border-radius:3px;display:flex;align-items:center;justify-content:center;font:700 9px var(--font-mono);color:var(--bg-deep);flex:0 0 auto}
148
+ .adapter-name{font:600 12px var(--font-mono);color:var(--ink-soft)}
149
+ .adapter-path{font:10px var(--font-mono);color:var(--ink-muted);margin:2px 0 6px}
150
+ .adapter-status{font:11px var(--font-mono);color:var(--ink-muted);display:flex;align-items:center;gap:6px}
151
+ .dot{width:6px;height:6px;border-radius:50%}
152
+ .dot.mint{background:var(--mint)} .dot.redline{background:var(--redline)}
153
+
154
+ .filters{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
155
+ .chip{padding:6px 12px;border:1px solid var(--line-strong);border-radius:99px;background:transparent;color:var(--ink-muted);font:600 10.5px var(--font-mono);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:.15s ease}
156
+ .chip:hover{border-color:var(--cyan);color:var(--cyan)}
157
+ .chip.on{background:var(--cyan);color:var(--bg-deep);border-color:var(--cyan)}
158
+ .idea{display:grid;grid-template-columns:1fr auto;gap:8px 14px;padding:14px 0;border-bottom:1px dashed var(--line);align-items:start}
159
+ .idea:last-child{border-bottom:0}
160
+ .idea-id{font:700 11px var(--font-mono);color:var(--cyan);letter-spacing:.04em}
161
+ .idea-title{font:600 13.5px var(--font-sans);color:var(--ink);margin-top:3px;line-height:1.4}
162
+ .idea-desc{color:var(--ink-muted);font-size:12px;line-height:1.55;margin-top:5px}
163
+ .idea-feas{margin-top:6px;font:11px var(--font-mono);color:var(--ink-muted)}
164
+ .idea-feas b{color:var(--ink-soft)}
165
+ .idea-feas.high{color:var(--mint)} .idea-feas.med{color:var(--gold)}
166
+ .cmd-chip{align-self:start;padding:5px 10px;border:1px solid var(--line-strong);border-radius:3px;background:rgba(255,255,255,.03);color:var(--cyan);font:600 11px var(--font-mono);cursor:pointer;white-space:nowrap;transition:.15s ease}
167
+ .cmd-chip:hover{background:var(--cyan);color:var(--bg-deep)}
168
+ .more-note{margin-top:12px;color:var(--ink-muted);font:11px var(--font-mono);text-align:center;padding-top:10px;border-top:1px dashed var(--line)}
169
+
170
+ .hist-item{display:flex;gap:12px;padding:10px 0;border-bottom:1px dashed var(--line);align-items:baseline}
171
+ .hist-item:last-child{border-bottom:0}
172
+ .hist-bar{width:3px;align-self:stretch;border-radius:2px;flex:0 0 auto}
173
+ .hist-bar.feature{background:var(--cyan)} .hist-bar.fix{background:var(--gold)} .hist-bar.rollback{background:var(--redline)}
174
+ .hist-type{font:700 10px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);flex:0 0 76px}
175
+ .hist-title{color:var(--ink-soft);font-size:12.5px;line-height:1.5}
176
+
177
+ .ticket{background:var(--bg-deep);border:1px solid var(--line-strong)}
178
+ .ticket-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
179
+ .copy-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:3px;background:transparent;color:var(--cyan);border:1px solid var(--cyan-dim);font:600 11px var(--font-mono);cursor:pointer;transition:.15s ease}
180
+ .copy-btn:hover{background:var(--cyan);color:var(--bg-deep)}
181
+ .copy-btn.copied{background:var(--mint);color:var(--bg-deep);border-color:var(--mint)}
182
+ .command{font:700 clamp(20px,3vw,28px)/1.3 var(--font-mono);color:var(--gold);margin:4px 0 8px}
183
+ .ticket .muted{font-size:13px;color:var(--ink-soft)}
184
+
185
+ footer{margin-top:26px;padding-top:16px;border-top:1px solid var(--line);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;color:var(--ink-muted);font:11px var(--font-mono)}
186
+ footer a{color:var(--cyan);text-decoration:none}
187
+
188
+ @media (max-width:920px){
189
+ .grid .card,.grid .card.wide{grid-column:1/-1}
190
+ .stats{grid-template-columns:repeat(2,1fr)}
191
+ .adapters{grid-template-columns:repeat(2,1fr)}
192
+ .titleblock{flex-direction:column;align-items:flex-start}
193
+ .tb-table{text-align:left}
194
+ .stepper{gap:14px}
195
+ }
196
+ @media (max-width:560px){
197
+ .sheet{width:min(100% - 24px,1180px);padding-top:22px}
198
+ .grid{gap:14px;margin-bottom:14px}
199
+ .card{padding:18px}
200
+ .sheet > .card{margin-bottom:14px}
201
+ .cmdp::after{position:fixed;left:12px;right:12px;bottom:18px;width:auto;max-width:none;transform:translateY(5px)}
202
+ .cmdp:hover::after,.cmdp:focus-visible::after{transform:translateY(0)}
203
+ }
204
+ @media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
205
+ </style>
206
+ </head>
207
+ <body>
208
+ <span class="crop tl"></span><span class="crop tr"></span><span class="crop bl"></span><span class="crop br"></span>
209
+
210
+ <main class="sheet">
211
+
212
+ <header class="titleblock">
213
+ <div>
214
+ <div class="dwg-no">JAKKRICH / NEXUS-DEVFLOW · WORKSPACE STATUS</div>
215
+ <h1>nexus-devflow</h1>
216
+ <div class="path">The 3-Pillars &amp; Dual-Track Agentic Workflow Layer</div>
217
+ <div class="badge-row">
218
+ <span class="badge mint">npm v2.0.25</span>
219
+ <span class="badge mint">Health: OK</span>
220
+ <span class="badge">MIT license</span>
221
+ <span class="badge violet">Track: Idle</span>
222
+ </div>
223
+ </div>
224
+ <dl class="tb-table">
225
+ <dt>Package</dt><dd>@jakkrichm/create-nexus-devflow</dd>
226
+ <dt>Adapters</dt><dd>4 detected</dd>
227
+ <dt>Branch</dt><dd>main</dd>
228
+ <dt>Revision</dt><dd>2026-08-22</dd>
229
+ </dl>
230
+ </header>
231
+ <div class="live-wrap"><span class="live-dot"></span><span class="muted" style="font:11px var(--font-mono)">Status snapshot · health OK · npx @jakkrichm/create-nexus-devflow status</span></div>
232
+
233
+ <!-- Dual-Track Delivery Model -->
234
+ <section class="pipeline">
235
+ <div class="pipeline-head">
236
+ <span class="pipeline-title">Dual-Track Delivery Model</span>
237
+ <div class="track-tabs" id="track-tabs">
238
+ <button class="tab on" data-t="fast">🏎️ Fast-Track · 4 steps</button>
239
+ <button class="tab" data-t="deep">🏗️ Deep-Track · 8 stages</button>
240
+ </div>
241
+ </div>
242
+
243
+ <div class="track-view on" id="view-fast">
244
+ <div class="stepper">
245
+ <div class="step"><span class="step-conn"></span><span class="step-dot">1</span><div class="step-name">feature / fix</div><div class="step-cmd">/feature · /fix</div></div>
246
+ <div class="step"><span class="step-conn"></span><span class="step-dot">2</span><div class="step-name">implement</div><div class="step-cmd">/implement</div></div>
247
+ <div class="step"><span class="step-conn"></span><span class="step-dot">3</span><div class="step-name">check</div><div class="step-cmd">/check</div></div>
248
+ <div class="step"><span class="step-dot">4</span><div class="step-name">complete</div><div class="step-cmd">/complete</div></div>
249
+ </div>
250
+ <div class="track-note"><b>Idle:</b> no active Fast-Track run. Use <code>/feature</code> or <code>/fix</code> to create the Single Living Spec in <code>devflow/context/current-feature.md</code>. Recommended for about 85% of daily engineering work.</div>
251
+ </div>
252
+
253
+ <div class="track-view" id="view-deep">
254
+ <div class="stepper">
255
+ <div class="step"><span class="step-conn"></span><span class="step-dot">00</span><div class="step-name">00-explore</div></div>
256
+ <div class="step"><span class="step-conn"></span><span class="step-dot">10</span><div class="step-name">10-define</div></div>
257
+ <div class="step"><span class="step-conn"></span><span class="step-dot">20</span><div class="step-name">20-spec</div></div>
258
+ <div class="step"><span class="step-conn"></span><span class="step-dot">30</span><div class="step-name">30-plan</div></div>
259
+ <div class="step"><span class="step-conn"></span><span class="step-dot">40</span><div class="step-name">40-execute</div></div>
260
+ <div class="step"><span class="step-conn"></span><span class="step-dot">50</span><div class="step-name">50-verify</div></div>
261
+ <div class="step"><span class="step-conn"></span><span class="step-dot">60</span><div class="step-name">60-report</div></div>
262
+ <div class="step"><span class="step-dot">70</span><div class="step-name">70-deliver</div></div>
263
+ </div>
264
+ <div class="track-note"><b>Reference model:</b> no active Deep-Track run. Recommended for architectural epics, database migrations, security audits, and multi-agent coordination. Progress lives in <code>devflow/context/current-run/</code> and is archived on <code>/70-deliver</code>.</div>
265
+ </div>
266
+ </section>
267
+
268
+ <section class="card full ticket" style="animation-delay:.01s">
269
+ <div class="ticket-head">
270
+ <span class="label">Next Action</span>
271
+ <button class="copy-btn" id="copy-btn">
272
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
273
+ <span id="copy-text">Copy command</span>
274
+ </button>
275
+ </div>
276
+ <div class="command" id="next-command">/feature</div>
277
+ <div class="muted">Workspace is idle and ready for new work. Start a Fast-Track feature, or use <code>/00-explore</code> when the scope needs deeper discovery first.</div>
278
+ </section>
279
+
280
+ <section class="stats">
281
+ <div class="stat"><div class="stat-num mint">35</div><div class="stat-label">Runs released</div></div>
282
+ <div class="stat"><div class="stat-num redline">0</div><div class="stat-label">Active findings</div></div>
283
+ <div class="stat"><div class="stat-num gold">4</div><div class="stat-label">Pending ideas</div></div>
284
+ <div class="stat"><div class="stat-num">4/4</div><div class="stat-label">Adapters synced</div></div>
285
+ <div class="stat"><div class="stat-num violet">Idle</div><div class="stat-label">Current state</div></div>
286
+ </section>
287
+
288
+ <section class="grid">
289
+ <article class="card" style="animation-delay:.02s">
290
+ <div class="card-head"><span class="label">Nexus-DevFlow</span><span class="tag ok">up to date</span></div>
291
+ <div class="facts">
292
+ <div class="fact"><span>Installed / latest</span><span>v2.0.25 / v2.0.25</span></div>
293
+ <div class="fact"><span>Adapters</span><span>antigravity, codex, claude, copilot</span></div>
294
+ <div class="fact"><span>Architecture</span><span>3-Pillars + Dual-Track</span></div>
295
+ </div>
296
+ </article>
297
+
298
+ <article class="card wide" style="animation-delay:.05s">
299
+ <div class="card-head">
300
+ <span class="label">Current Work</span>
301
+ <span style="display:flex;gap:6px"><span class="tag track">no active track</span><span class="tag ready">ready</span></span>
302
+ </div>
303
+ <div class="value">No active delivery run</div>
304
+ <div class="progress"><span class="progress-bar" style="width:100%;background:var(--mint)"></span></div>
305
+ <div class="muted">Last completed: 039-dynamic-overview-compiler · 2026-08-22</div>
306
+ </article>
307
+
308
+ <article class="card" style="animation-delay:.08s">
309
+ <div class="card-head"><span class="label">Git Status</span><span class="tag warning">1 changed</span></div>
310
+ <div class="facts">
311
+ <div class="fact"><span>Branch</span><span>main</span></div>
312
+ <div class="fact"><span>Working Tree</span><span>1 changed file</span></div>
313
+ <div class="fact"><span>Upstream</span><span>origin/main</span></div>
314
+ </div>
315
+ </article>
316
+
317
+ <article class="card" style="animation-delay:.11s">
318
+ <div class="card-head"><span class="label">Findings Ledger</span><span class="value">0</span></div>
319
+ <div class="sev-row">
320
+ <div class="sev p0"><div class="sev-count">0</div><div class="sev-label">P0</div></div>
321
+ <div class="sev p1"><div class="sev-count">0</div><div class="sev-label">P1</div></div>
322
+ <div class="sev p2"><div class="sev-count">0</div><div class="sev-label">P2</div></div>
323
+ <div class="sev p3"><div class="sev-count">0</div><div class="sev-label">P3</div></div>
324
+ </div>
325
+ <ul><li class="empty">No blocking findings</li></ul>
326
+ </article>
327
+
328
+ <article class="card" style="animation-delay:.14s">
329
+ <div class="card-head"><span class="label">Completion</span><span class="tag ready">idle</span></div>
330
+ <ul><li>No active run to complete</li></ul>
331
+ </article>
332
+
333
+ <article class="card" style="animation-delay:.17s">
334
+ <div class="card-head"><span class="label">Warnings</span><span class="value">0</span></div>
335
+ <ul><li class="empty">No status warnings</li></ul>
336
+ </article>
337
+ </section>
338
+
339
+ <!-- new: doctor + discoveries (extra amenities) -->
340
+ <section class="grid">
341
+ <article class="card wide" style="animation-delay:.19s">
342
+ <div class="card-head"><span class="label">Doctor · Health Check</span><span class="muted">npx create-nexus-devflow doctor</span></div>
343
+ <div class="doctor-item"><span class="dchk ok">✓</span><span>Adapters detected — .agents/skills &amp; .claude/skills present and in sync</span></div>
344
+ <div class="doctor-item"><span class="dchk ok">✓</span><span>package.json scripts wired (devflow, doctor, status)</span></div>
345
+ <div class="doctor-item"><span class="dchk ok">✓</span><span>Installed version matches npm registry latest: <code>2.0.25</code></span></div>
346
+ <div class="doctor-item"><span class="dchk ok">✓</span><span>No orphaned devflow/runs/ legacy folders (2.0 layout confirmed)</span></div>
347
+ </article>
348
+
349
+ <article class="card" style="animation-delay:.22s">
350
+ <div class="card-head"><span class="label">Discoveries</span><span class="value">0</span></div>
351
+ <div class="disc-item">
352
+ <div class="disc-id">NO ACTIVE DISCOVERY</div>
353
+ <div class="disc-title">Use /00-explore to investigate a request before delivery commitment.</div>
354
+ <div class="disc-status" style="color:var(--mint)">workspace ready</div>
355
+ </div>
356
+ </article>
357
+ </section>
358
+
359
+ <!-- new: quick command palette -->
360
+ <section class="card full" style="animation-delay:.24s">
361
+ <div class="card-head"><span class="label">Quick Commands</span><span class="muted">click to copy</span></div>
362
+ <div class="cmd-row" id="cmd-palette">
363
+ <button class="cmdp" data-cmd="devflow" data-tip="Inspect workflow state and route your intent to the right next command."><b>devflow</b></button>
364
+ <button class="cmdp" data-cmd="doctor" data-tip="Run a read-only health check for setup, scripts, adapters, and workflow drift.">doctor</button>
365
+ <button class="cmdp" data-cmd="overview" data-tip="Compile plans and repository context into the living project-overview.md.">overview</button>
366
+ <button class="cmdp" data-cmd="idea" data-tip="Capture and enrich a new idea in the centralized Idea Inbox.">idea</button>
367
+ <button class="cmdp" data-cmd="debug" data-tip="Investigate a bug and establish its root cause before implementation.">debug</button>
368
+ <button class="cmdp" data-cmd="brief" data-tip="Preview scope, dependencies, risks, and likely size before creating a run.">brief</button>
369
+ <button class="cmdp" data-cmd="onboard" data-tip="Detect the stack and establish baseline context for a fresh project.">onboard</button>
370
+ <button class="cmdp" data-cmd="adopt" data-tip="Survey an existing codebase and bootstrap DevFlow context for it.">adopt</button>
371
+ <button class="cmdp" data-cmd="try" data-tip="Guide a human through manual QA: where to go, what to do, and what to expect.">try</button>
372
+ <button class="cmdp" data-cmd="rollback" data-tip="Plan a safe reversal with dependency and regression risk analysis.">rollback</button>
373
+ <button class="cmdp" data-cmd="ci" data-tip="Set up the GitHub Actions verification workflow for the project.">ci</button>
374
+ <button class="cmdp" data-cmd="test" data-tip="Inspect test suites and verify the test runner configuration.">test</button>
375
+ <button class="cmdp" data-cmd="autopilot" data-tip="Run a bounded Fast-Track or Deep-Track execution loop with quality gates.">autopilot</button>
376
+ <button class="cmdp" data-cmd="prototype" data-tip="Create a throwaway static HTML/CSS mockup to settle UI direction before build.">prototype</button>
377
+ <button class="cmdp" data-cmd="report-html" data-tip="Generate the optional standalone interactive HTML delivery report.">report-html</button>
378
+ </div>
379
+ </section>
380
+
381
+ <section class="card full" style="animation-delay:.26s">
382
+ <div class="card-head"><span class="label">Adapter Sync</span><span class="muted">.agents/ · .claude/ · AGENTS.md drift check</span></div>
383
+ <div class="adapters">
384
+ <div class="adapter"><div class="adapter-head"><span class="adapter-badge" style="background:var(--violet)">AG</span><span class="adapter-name">Antigravity</span></div><div class="adapter-path">.agents/skills/&lt;skill&gt;</div><div class="adapter-status"><span class="dot mint"></span>synced · 2m ago</div></div>
385
+ <div class="adapter"><div class="adapter-head"><span class="adapter-badge" style="background:var(--cyan)">CX</span><span class="adapter-name">Codex</span></div><div class="adapter-path">.agents/skills/&lt;skill&gt;</div><div class="adapter-status"><span class="dot mint"></span>synced · 2m ago</div></div>
386
+ <div class="adapter"><div class="adapter-head"><span class="adapter-badge" style="background:var(--gold)">CL</span><span class="adapter-name">Claude Code</span></div><div class="adapter-path">.claude/skills/&lt;skill&gt;</div><div class="adapter-status"><span class="dot mint"></span>synced · just now</div></div>
387
+ <div class="adapter"><div class="adapter-head"><span class="adapter-badge" style="background:var(--ink-muted)">GH</span><span class="adapter-name">GitHub Copilot</span></div><div class="adapter-path">.agents/skills/&lt;skill&gt;</div><div class="adapter-status"><span class="dot mint"></span>detected · synced</div></div>
388
+ </div>
389
+ </section>
390
+
391
+ <section class="card full" style="animation-delay:.28s">
392
+ <div class="card-head"><span class="label">Idea Inbox &amp; Backlog</span><span class="value">4 pending</span></div>
393
+ <div class="muted" style="margin-bottom:6px">From devflow/ideas.md — start with <code>/feature IDEA-xxx</code></div>
394
+ <div class="filters" id="filters">
395
+ <button class="chip on" data-f="all">All</button>
396
+ <button class="chip" data-f="high">High feasibility</button>
397
+ <button class="chip" data-f="med">Medium feasibility</button>
398
+ </div>
399
+ <ul id="idea-list">
400
+ <li class="idea" data-f="med"><div><div class="idea-id">IDEA-003</div><div class="idea-title">Interactive Terminal UI (TUI) Dashboard (Ink / Clack)</div><div class="idea-desc">แดชบอร์ดอินเตอร์แอคทีฟบน Terminal สำหรับ Living Spec, Checklists และ Next Action</div><div class="idea-feas med">⚡ <b>ปานกลาง</b> — ink / @clack/prompts</div></div><button class="cmd-chip" data-cmd="/feature IDEA-003">/feature IDEA-003</button></li>
401
+ <li class="idea" data-f="med"><div><div class="idea-id">IDEA-004</div><div class="idea-title">DevFlow MCP Server &amp; Multi-Agent API</div><div class="idea-desc">ยกระดับ CLI เป็น MCP Server เพื่อให้ AI agents เรียกใช้ DevFlow tools โดยตรง</div><div class="idea-feas med">⚡ <b>ปานกลาง</b> — @modelcontextprotocol/sdk</div></div><button class="cmd-chip" data-cmd="/feature IDEA-004">/feature IDEA-004</button></li>
402
+ <li class="idea" data-f="high"><div><div class="idea-id">IDEA-015</div><div class="idea-title">Configurable Artifact Language (th | en)</div><div class="idea-desc">สลับภาษาเริ่มต้นของเอกสารและบทสนทนาผ่าน nexus-devflow.json</div><div class="idea-feas high">⚡ <b>สูง</b> — artifactLanguage config</div></div><button class="cmd-chip" data-cmd="/feature IDEA-015">/feature IDEA-015</button></li>
403
+ <li class="idea" data-f="high"><div><div class="idea-id">IDEA-023</div><div class="idea-title">Lightweight Zero-Dependency Pure Markdown Mode</div><div class="idea-desc">Export DevFlow เป็น Pure Markdown สำหรับโปรเจกต์ที่ไม่มี Node.js</div><div class="idea-feas high">⚡ <b>สูง</b> — pure Markdown templates</div></div><button class="cmd-chip" data-cmd="/feature IDEA-023">/feature IDEA-023</button></li>
404
+ </ul>
405
+ <div class="more-note">20 shipped ideas archived in devflow/ideas.md</div>
406
+ </section>
407
+
408
+ <section class="card full" style="animation-delay:.30s">
409
+ <div class="card-head"><span class="label">Completed Work Archive</span><span class="value">35 released</span></div>
410
+ <div class="muted" style="margin-bottom:4px">Categorized: devflow/history/{features,fixes,rollbacks}/</div>
411
+ <div>
412
+ <div class="hist-item"><span class="hist-bar feature"></span><span class="hist-type">feature 039</span><span class="hist-title">Dynamic Project Overview Compiler (/overview) พร้อม Living Context Sync</span></div>
413
+ <div class="hist-item"><span class="hist-bar feature"></span><span class="hist-type">feature 038</span><span class="hist-title">Sub-Feature Automatic Splitting Engine และ Sub-Feature ID Contract</span></div>
414
+ <div class="hist-item"><span class="hist-bar feature"></span><span class="hist-type">feature 037</span><span class="hist-title">Feature Briefing &amp; Deep Scope Assessment Skill (/brief)</span></div>
415
+ <div class="hist-item"><span class="hist-bar feature"></span><span class="hist-type">feature 036</span><span class="hist-title">Cloud Deployment Readiness Skill (/release) และ 70-deliver</span></div>
416
+ <div class="hist-item"><span class="hist-bar feature"></span><span class="hist-type">feature 035</span><span class="hist-title">Guided Project Discovery Interview Skill (/discovery)</span></div>
417
+ <div class="hist-item"><span class="hist-bar feature"></span><span class="hist-type">feature 034</span><span class="hist-title">Dedicated Code &amp; Security Audit Skill (/audit)</span></div>
418
+ <div class="hist-item"><span class="hist-bar feature"></span><span class="hist-type">feature 033</span><span class="hist-title">User-Owned Planning Documents (project-plan.md &amp; build-plan.md)</span></div>
419
+ <div class="hist-item"><span class="hist-bar feature"></span><span class="hist-type">feature 032</span><span class="hist-title">CI/CD Quality Gatekeeper และ Git Hooks</span></div>
420
+ <div class="hist-item"><span class="hist-bar feature"></span><span class="hist-type">feature 031</span><span class="hist-title">CLI subcommands: idea, findings, doctor --fix และ archive</span></div>
421
+ <div class="hist-item"><span class="hist-bar feature"></span><span class="hist-type">feature 030</span><span class="hist-title">AI Blueprint Upstream v0.12.1 sync</span></div>
422
+ </div>
423
+ </section>
424
+
425
+ <footer>
426
+ <span>Read-only DevFlow 2.0 status mockup · snapshot from local CLI · <a href="https://github.com/Jakkrich/nexus-devflow" target="_blank" rel="noopener">github.com/Jakkrich/nexus-devflow</a></span>
427
+ <span>rev 2.0.25 · sheet 1 of 1 · MIT license</span>
428
+ </footer>
429
+ </main>
430
+
431
+ <script>
432
+ document.getElementById('track-tabs').addEventListener('click', e => {
433
+ const btn = e.target.closest('.tab');
434
+ if (!btn) return;
435
+ document.querySelectorAll('#track-tabs .tab').forEach(t => t.classList.remove('on'));
436
+ btn.classList.add('on');
437
+ document.querySelectorAll('.track-view').forEach(v => v.classList.remove('on'));
438
+ document.getElementById('view-' + btn.dataset.t).classList.add('on');
439
+ });
440
+
441
+ document.getElementById('filters').addEventListener('click', e => {
442
+ const btn = e.target.closest('.chip');
443
+ if (!btn) return;
444
+ document.querySelectorAll('#filters .chip').forEach(c => c.classList.remove('on'));
445
+ btn.classList.add('on');
446
+ const f = btn.dataset.f;
447
+ document.querySelectorAll('#idea-list .idea').forEach(li => {
448
+ li.style.display = (f === 'all' || li.dataset.f === f) ? '' : 'none';
449
+ });
450
+ });
451
+
452
+ function wireCopy(selector, getText) {
453
+ document.querySelectorAll(selector).forEach(btn => {
454
+ btn.addEventListener('click', () => {
455
+ const text = getText(btn);
456
+ navigator.clipboard?.writeText(text);
457
+ const orig = btn.innerHTML;
458
+ btn.textContent = 'Copied!';
459
+ setTimeout(() => btn.innerHTML = orig, 1000);
460
+ });
461
+ });
462
+ }
463
+ wireCopy('.cmd-chip', btn => btn.dataset.cmd);
464
+ wireCopy('.cmdp', btn => btn.dataset.cmd);
465
+
466
+ const copyBtn = document.getElementById('copy-btn');
467
+ copyBtn.addEventListener('click', () => {
468
+ navigator.clipboard?.writeText(document.getElementById('next-command').textContent.trim());
469
+ const t = document.getElementById('copy-text');
470
+ copyBtn.classList.add('copied');
471
+ t.textContent = 'Copied!';
472
+ setTimeout(() => { copyBtn.classList.remove('copied'); t.textContent = 'Copy command'; }, 1200);
473
+ });
474
+ </script>
475
+ </body>
476
+ </html>
@@ -0,0 +1,39 @@
1
+ # Project Overview & Source of Truth
2
+
3
+ > Living context artifact generated by `scripts/overview.ts` on {{generatedAt}}.
4
+
5
+ ## 1. Project Purpose & Target Users
6
+
7
+ {{projectPurpose}}
8
+
9
+ ## 2. Architecture & Directory Layout
10
+
11
+ {{architecture}}
12
+
13
+ ## 3. Technology Stack & Tooling
14
+
15
+ {{stackAndTooling}}
16
+
17
+ ## 4. Source-of-Truth Constraints & Scope Gaps
18
+
19
+ {{constraints}}
20
+
21
+ ## 5. Upcoming Build Queue
22
+
23
+ {{buildQueue}}
24
+
25
+ ## 6. Shipped Capabilities Snapshot
26
+
27
+ {{shippedCapabilities}}
28
+
29
+ ## 7. Ideas & Backlog Pulse
30
+
31
+ {{ideasSummary}}
32
+
33
+ ## 8. Data Sources Read by Compiler
34
+
35
+ {{dataSources}}
36
+
37
+ ## 9. Verified Developer Commands
38
+
39
+ {{verificationCommands}}