@jakkrichm/create-nexus-devflow 2.17.1 → 2.17.3

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 (67) hide show
  1. package/dist/bin/create-nexus-devflow.d.ts +1 -1
  2. package/dist/bin/create-nexus-devflow.js +3 -74
  3. package/dist/bin/create-nexus-devflow.js.map +1 -1
  4. package/dist/lib/doctor.js +1 -2
  5. package/dist/lib/doctor.js.map +1 -1
  6. package/dist/lib/project-config.js +1 -2
  7. package/dist/lib/project-config.js.map +1 -1
  8. package/dist/lib/tooling/commands/summarize-run-status.js +1 -3
  9. package/dist/lib/tooling/commands/summarize-run-status.js.map +1 -1
  10. package/dist/lib/tooling/registry.js +0 -2
  11. package/dist/lib/tooling/registry.js.map +1 -1
  12. package/dist/lib/update.d.ts +3 -13
  13. package/dist/lib/update.js +1 -66
  14. package/dist/lib/update.js.map +1 -1
  15. package/dist/scripts/prepare-template.js +15 -75
  16. package/dist/scripts/prepare-template.js.map +1 -1
  17. package/package.json +1 -1
  18. package/template/AGENTS.md +9 -10
  19. package/template/devflow/build-plan.md +45 -0
  20. package/template/devflow/config.json +0 -1
  21. package/template/devflow/project-plan.md +52 -0
  22. package/template/devflow/runs/.gitkeep +1 -0
  23. package/dist/lib/tooling/commands/migrate-structure.d.ts +0 -8
  24. package/dist/lib/tooling/commands/migrate-structure.js +0 -200
  25. package/dist/lib/tooling/commands/migrate-structure.js.map +0 -1
  26. package/dist/lib/workspace-paths.d.ts +0 -16
  27. package/dist/lib/workspace-paths.js +0 -85
  28. package/dist/lib/workspace-paths.js.map +0 -1
  29. package/template/devflow/30-planning/build-plan.md +0 -302
  30. package/template/devflow/30-planning/project-plan.md +0 -79
  31. package/template/devflow/40-tasks/.gitkeep +0 -0
  32. package/template/devflow/40-tasks/README.md +0 -11
  33. package/template/devflow/60-docs/migration-guide-decade-numbered.md +0 -93
  34. /package/template/devflow/{00-context → context}/ai-interaction.md +0 -0
  35. /package/template/devflow/{00-context → context}/coding-standards.md +0 -0
  36. /package/template/devflow/{00-context → context}/glossary.md +0 -0
  37. /package/template/devflow/{00-context → context}/project-overview.md +0 -0
  38. /package/template/devflow/{20-discovery/decisions → decisions}/.gitkeep +0 -0
  39. /package/template/devflow/{20-discovery/decisions → decisions}/README.md +0 -0
  40. /package/template/devflow/{20-discovery/discoveries → discoveries}/.gitkeep +0 -0
  41. /package/template/devflow/{60-docs → docs}/USAGE.md +0 -0
  42. /package/template/devflow/{60-docs → docs}/diagrams/nexus-devflow-architecture.html +0 -0
  43. /package/template/devflow/{60-docs → docs}/diagrams/nexus-devflow-architecture.json +0 -0
  44. /package/template/devflow/{60-docs → docs}/diagrams/nexus-devflow-lifecycle.html +0 -0
  45. /package/template/devflow/{60-docs → docs}/diagrams/nexus-devflow-lifecycle.json +0 -0
  46. /package/template/devflow/{60-docs → docs}/examples/living-spec/adr.example.md +0 -0
  47. /package/template/devflow/{60-docs → docs}/examples/living-spec/current-feature.example.md +0 -0
  48. /package/template/devflow/{60-docs → docs}/examples/living-spec/discovery.example.md +0 -0
  49. /package/template/devflow/{60-docs → docs}/examples/living-spec/ideas.example.md +0 -0
  50. /package/template/devflow/{60-docs → docs}/governance-rules.md +0 -0
  51. /package/template/devflow/{60-docs → docs}/manual-review-workflow-spec.md +0 -0
  52. /package/template/devflow/{60-docs → docs}/markdown-metadata-contract.md +0 -0
  53. /package/template/devflow/{60-docs → docs}/quickstart.md +0 -0
  54. /package/template/devflow/{60-docs → docs}/release-process.md +0 -0
  55. /package/template/devflow/{60-docs → docs}/skill-selection-policy.md +0 -0
  56. /package/template/devflow/{60-docs → docs}/workflow-surface-map.md +0 -0
  57. /package/template/devflow/{50-history → history}/HISTORY.md +0 -0
  58. /package/template/devflow/{50-history → history}/features/README.md +0 -0
  59. /package/template/devflow/{50-history → history}/fixes/README.md +0 -0
  60. /package/template/devflow/{50-history → history}/rollbacks/README.md +0 -0
  61. /package/template/devflow/{10-ideation/ideas.md → ideas.md} +0 -0
  62. /package/template/devflow/{10-ideation/reference → reference}/build-plan-template.md +0 -0
  63. /package/template/devflow/{10-ideation/reference → reference}/feature-spec-template.md +0 -0
  64. /package/template/devflow/{10-ideation/reference → reference}/mockup.html +0 -0
  65. /package/template/devflow/{10-ideation/reference → reference}/project-overview-template.md +0 -0
  66. /package/template/devflow/{10-ideation/reference → reference}/project-plan-template.md +0 -0
  67. /package/template/devflow/{10-ideation/reference → reference}/running-id-contract.md +0 -0
@@ -1,200 +0,0 @@
1
- import fs from "node:fs/promises";
2
- import path from "node:path";
3
- async function pathExists(p) {
4
- try {
5
- await fs.stat(p);
6
- return true;
7
- }
8
- catch {
9
- return false;
10
- }
11
- }
12
- async function movePath(src, dest, moved, warnings) {
13
- if (!(await pathExists(src)))
14
- return;
15
- if (path.resolve(src) === path.resolve(dest))
16
- return;
17
- await fs.mkdir(path.dirname(dest), { recursive: true });
18
- try {
19
- await fs.rename(src, dest);
20
- moved.push(`${src} -> ${dest}`);
21
- }
22
- catch (err) {
23
- try {
24
- const stat = await fs.stat(src);
25
- if (stat.isDirectory()) {
26
- await fs.cp(src, dest, { recursive: true });
27
- await fs.rm(src, { recursive: true, force: true });
28
- }
29
- else {
30
- await fs.copyFile(src, dest);
31
- await fs.unlink(src);
32
- }
33
- moved.push(`${src} -> ${dest}`);
34
- }
35
- catch (fallbackErr) {
36
- warnings.push(`Failed to move ${src} -> ${dest}: ${fallbackErr.message}`);
37
- }
38
- }
39
- }
40
- export async function migrateDevflowStructure(projectRoot) {
41
- const moved = [];
42
- const warnings = [];
43
- const devflowDir = path.join(projectRoot, "devflow");
44
- if (!(await pathExists(devflowDir))) {
45
- return {
46
- success: false,
47
- moved: [],
48
- warnings: ["Directory devflow does not exist"]
49
- };
50
- }
51
- // Ensure target decade directories exist
52
- const targetDirs = [
53
- "00-context",
54
- "10-ideation",
55
- "20-discovery",
56
- "30-planning",
57
- "40-tasks",
58
- "50-history",
59
- "60-docs"
60
- ];
61
- for (const d of targetDirs) {
62
- await fs.mkdir(path.join(devflowDir, d), { recursive: true });
63
- }
64
- // 1. Handle devflow/context/
65
- const oldContextDir = path.join(devflowDir, "context");
66
- if (await pathExists(oldContextDir)) {
67
- const entries = await fs.readdir(oldContextDir, { withFileTypes: true });
68
- for (const entry of entries) {
69
- const src = path.join(oldContextDir, entry.name);
70
- if (entry.isDirectory()) {
71
- // Active task folder -> devflow/40-tasks/{task-slug}
72
- const dest = path.join(devflowDir, "40-tasks", entry.name);
73
- await movePath(src, dest, moved, warnings);
74
- }
75
- else {
76
- // Context file -> devflow/00-context/{file}
77
- const dest = path.join(devflowDir, "00-context", entry.name);
78
- await movePath(src, dest, moved, warnings);
79
- }
80
- }
81
- // Remove empty old context dir
82
- try {
83
- await fs.rm(oldContextDir, { recursive: true, force: true });
84
- }
85
- catch {
86
- // ignore
87
- }
88
- }
89
- // 2. Handle 10-ideation (ideas.md, inbox/, reference/)
90
- await movePath(path.join(devflowDir, "ideas.md"), path.join(devflowDir, "10-ideation", "ideas.md"), moved, warnings);
91
- await movePath(path.join(devflowDir, "inbox"), path.join(devflowDir, "10-ideation", "inbox"), moved, warnings);
92
- await movePath(path.join(devflowDir, "reference"), path.join(devflowDir, "10-ideation", "reference"), moved, warnings);
93
- // 3. Handle 20-discovery (analysis/, discoveries/, decisions/, research/)
94
- await movePath(path.join(devflowDir, "analysis"), path.join(devflowDir, "20-discovery", "analysis"), moved, warnings);
95
- await movePath(path.join(devflowDir, "discoveries"), path.join(devflowDir, "20-discovery", "discoveries"), moved, warnings);
96
- await movePath(path.join(devflowDir, "decisions"), path.join(devflowDir, "20-discovery", "decisions"), moved, warnings);
97
- await movePath(path.join(devflowDir, "research"), path.join(devflowDir, "20-discovery", "research"), moved, warnings);
98
- // 4. Handle 30-planning (project-plan.md, build-plan.md)
99
- await movePath(path.join(devflowDir, "project-plan.md"), path.join(devflowDir, "30-planning", "project-plan.md"), moved, warnings);
100
- await movePath(path.join(devflowDir, "build-plan.md"), path.join(devflowDir, "30-planning", "build-plan.md"), moved, warnings);
101
- // 5. Handle 50-history (history/)
102
- const oldHistoryDir = path.join(devflowDir, "history");
103
- if (await pathExists(oldHistoryDir)) {
104
- const historyEntries = await fs.readdir(oldHistoryDir, { withFileTypes: true });
105
- for (const entry of historyEntries) {
106
- const src = path.join(oldHistoryDir, entry.name);
107
- const dest = path.join(devflowDir, "50-history", entry.name);
108
- await movePath(src, dest, moved, warnings);
109
- }
110
- try {
111
- await fs.rm(oldHistoryDir, { recursive: true, force: true });
112
- }
113
- catch {
114
- // ignore
115
- }
116
- }
117
- // 6. Handle 60-docs (docs/)
118
- const oldDocsDir = path.join(devflowDir, "docs");
119
- if (await pathExists(oldDocsDir)) {
120
- const docsEntries = await fs.readdir(oldDocsDir, { withFileTypes: true });
121
- for (const entry of docsEntries) {
122
- const src = path.join(oldDocsDir, entry.name);
123
- const dest = path.join(devflowDir, "60-docs", entry.name);
124
- await movePath(src, dest, moved, warnings);
125
- }
126
- try {
127
- await fs.rm(oldDocsDir, { recursive: true, force: true });
128
- }
129
- catch {
130
- // ignore
131
- }
132
- }
133
- // 7. Clean up legacy runs folder
134
- const oldRunsDir = path.join(devflowDir, "runs");
135
- if (await pathExists(oldRunsDir)) {
136
- try {
137
- await fs.rm(oldRunsDir, { recursive: true, force: true });
138
- moved.push(`${oldRunsDir} (removed legacy runs folder)`);
139
- }
140
- catch {
141
- // ignore
142
- }
143
- }
144
- // 8. Update manifest if present
145
- const manifestPath = path.join(projectRoot, ".nexus", "nexus-devflow.json");
146
- if (await pathExists(manifestPath)) {
147
- try {
148
- const manifestContent = await fs.readFile(manifestPath, "utf8");
149
- const manifest = JSON.parse(manifestContent);
150
- const isAlreadyDecade = manifest.workspace?.contextDir === "devflow/00-context";
151
- if (!isAlreadyDecade) {
152
- manifest.workspace = {
153
- ...manifest.workspace,
154
- contextDir: "devflow/00-context",
155
- ideationDir: "devflow/10-ideation",
156
- discoveryDir: "devflow/20-discovery",
157
- planningDir: "devflow/30-planning",
158
- tasksDir: "devflow/40-tasks",
159
- historyDir: "devflow/50-history",
160
- docsDir: "devflow/60-docs",
161
- referenceDir: "devflow/10-ideation/reference",
162
- discoveriesDir: "devflow/20-discovery/discoveries",
163
- decisionsDir: "devflow/20-discovery/decisions"
164
- };
165
- delete manifest.workspace.runsDir;
166
- await fs.writeFile(manifestPath, JSON.stringify(manifest, null, 2), "utf8");
167
- moved.push(`${manifestPath} (updated workspace paths)`);
168
- }
169
- }
170
- catch (err) {
171
- warnings.push(`Could not update manifest: ${err.message}`);
172
- }
173
- }
174
- return {
175
- success: true,
176
- moved,
177
- warnings
178
- };
179
- }
180
- export const migrateStructureCommand = {
181
- name: "migrate-structure",
182
- description: "Migrate legacy devflow folder structure to Decade-Numbered layout (00-context, 10-ideation, etc.)",
183
- async run(args, options) {
184
- const projectRoot = options?.projectRoot || options?.cwd || process.cwd();
185
- const result = await migrateDevflowStructure(projectRoot);
186
- if (!result.success) {
187
- return {
188
- ok: false,
189
- message: result.warnings.join("\n") || "Migration failed",
190
- data: result
191
- };
192
- }
193
- return {
194
- ok: true,
195
- message: `Successfully migrated devflow structure (${result.moved.length} items processed)`,
196
- data: result
197
- };
198
- }
199
- };
200
- //# sourceMappingURL=migrate-structure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate-structure.js","sourceRoot":"","sources":["../../../../lib/tooling/commands/migrate-structure.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- export interface WorkspacePaths {
2
- contextDir: string;
3
- ideationDir: string;
4
- discoveryDir: string;
5
- planningDir: string;
6
- tasksDir: string;
7
- historyDir: string;
8
- docsDir: string;
9
- referenceDir: string;
10
- isDecadeNumbered: boolean;
11
- }
12
- export declare const LEGACY_WORKSPACE_PATHS: WorkspacePaths;
13
- export declare const DECADE_NUMBERED_WORKSPACE_PATHS: WorkspacePaths;
14
- export declare function isDecadeNumberedLayout(projectRoot: string): Promise<boolean>;
15
- export declare function hasLegacyDevflowStructure(projectRoot: string): Promise<boolean>;
16
- export declare function resolveWorkspacePaths(projectRoot: string): Promise<WorkspacePaths>;
@@ -1,85 +0,0 @@
1
- import fs from "node:fs/promises";
2
- import path from "node:path";
3
- export const LEGACY_WORKSPACE_PATHS = {
4
- contextDir: "devflow/context",
5
- ideationDir: "devflow",
6
- discoveryDir: "devflow/discoveries",
7
- planningDir: "devflow",
8
- tasksDir: "devflow/context",
9
- historyDir: "devflow/history",
10
- docsDir: "devflow/docs",
11
- referenceDir: "devflow/reference",
12
- isDecadeNumbered: false
13
- };
14
- export const DECADE_NUMBERED_WORKSPACE_PATHS = {
15
- contextDir: "devflow/00-context",
16
- ideationDir: "devflow/10-ideation",
17
- discoveryDir: "devflow/20-discovery",
18
- planningDir: "devflow/30-planning",
19
- tasksDir: "devflow/40-tasks",
20
- historyDir: "devflow/50-history",
21
- docsDir: "devflow/60-docs",
22
- referenceDir: "devflow/10-ideation/reference",
23
- isDecadeNumbered: true
24
- };
25
- export async function isDecadeNumberedLayout(projectRoot) {
26
- try {
27
- const stat = await fs.stat(path.join(projectRoot, "devflow", "00-context"));
28
- return stat.isDirectory();
29
- }
30
- catch {
31
- return false;
32
- }
33
- }
34
- export async function hasLegacyDevflowStructure(projectRoot) {
35
- const devflowDir = path.join(projectRoot, "devflow");
36
- const legacyPaths = [
37
- path.join(devflowDir, "context"),
38
- path.join(devflowDir, "discoveries"),
39
- path.join(devflowDir, "history"),
40
- path.join(devflowDir, "docs"),
41
- path.join(devflowDir, "reference"),
42
- path.join(devflowDir, "runs"),
43
- path.join(devflowDir, "ideas.md"),
44
- path.join(devflowDir, "project-plan.md"),
45
- path.join(devflowDir, "build-plan.md")
46
- ];
47
- for (const p of legacyPaths) {
48
- try {
49
- await fs.stat(p);
50
- return true;
51
- }
52
- catch {
53
- // continue
54
- }
55
- }
56
- return false;
57
- }
58
- export async function resolveWorkspacePaths(projectRoot) {
59
- // 1. Check manifest for custom workspace configuration
60
- try {
61
- const manifestPath = path.join(projectRoot, ".nexus", "nexus-devflow.json");
62
- const content = await fs.readFile(manifestPath, "utf8");
63
- const manifest = JSON.parse(content.replace(/^\uFEFF/, ""));
64
- if (manifest && typeof manifest === "object" && manifest.workspace) {
65
- const isDecade = Boolean(manifest.workspace.contextDir?.includes("00-context") ||
66
- (await isDecadeNumberedLayout(projectRoot)));
67
- const base = isDecade ? DECADE_NUMBERED_WORKSPACE_PATHS : LEGACY_WORKSPACE_PATHS;
68
- return {
69
- ...base,
70
- ...manifest.workspace,
71
- isDecadeNumbered: isDecade
72
- };
73
- }
74
- }
75
- catch {
76
- // Fall through to auto-detection
77
- }
78
- // 2. Physical directory inspection
79
- if (await isDecadeNumberedLayout(projectRoot)) {
80
- return { ...DECADE_NUMBERED_WORKSPACE_PATHS };
81
- }
82
- // 3. Fallback to legacy flat layout
83
- return { ...LEGACY_WORKSPACE_PATHS };
84
- }
85
- //# sourceMappingURL=workspace-paths.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-paths.js","sourceRoot":"","sources":["../../lib/workspace-paths.ts"],"names":[],"mappings":"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"}
@@ -1,302 +0,0 @@
1
- # 📋 Build Plan (User-Owned Feature Queue)
2
-
3
- > **Document Type**: Build Plan (User-Owned)
4
- > **Purpose**: รายการคิวฟีเจอร์การพัฒนาปรับปรุงระบบตามลำดับ พร้อมการประเมินขนาด (Sizing) และความสัมพันธ์ (Dependencies) สำหรับ `/brief` และ `/feature`
5
-
6
- ---
7
-
8
- ## 🚀 Phase 1: Hard Quality Gates & Pre-commit Enforcement
9
-
10
- - [x] **1. Automated Quality Gatekeeper & Pre-commit Hook Integration** `[Size: S]`
11
- - *Dependencies*: None
12
- - *Scope*: ผสาน `nexus-devflow check-gate` เข้าสู่ Git Pre-commit Hooks และ CI เพื่อบล็อกการ Commit/Merge เมื่อมี Unchecked Tasks, Test ล้มเหลว หรือมี P0/P1 Finding ค้างอยู่
13
-
14
- ---
15
-
16
- ## ⚡ Phase 2: DevFlow Model Context Protocol (MCP) Server Hub
17
-
18
- - [x] **2. DevFlow MCP Server Hub & Type-Safe Schema Engine (`IDEA-004`)** `[Size: M]`
19
- - *Dependencies*: Feature 1
20
- - *Scope*: สร้าง Subcommand `nexus-devflow mcp` เปิด JSON-RPC Server พร้อมเครื่องมือ Typed Tools (`update_task`, `record_finding`, `get_stage_context`) ด้วย Zod Schema Validation
21
-
22
- ---
23
-
24
- ## 🌿 Phase 3: Branch-Scoped Context Isolation
25
-
26
- - [x] **3. Branch-Scoped Context Isolation & Dynamic Router** `[Size: M]`
27
- - *Dependencies*: Feature 2
28
- - *Scope*: แยกจัดเก็บ State ตาม Git Branch ใน `.nexus/branches/<branch-name>/`, ระบบ Canonical Dynamic Router สำหรับ AI Agent และระบบ Auto-Cleanup หลัง `/complete`
29
-
30
- ---
31
-
32
- ## ✂️ Phase 4: JIT Context Slicing & Token Optimizer
33
-
34
- - [x] **4. Just-In-Time (JIT) Dynamic Context Slicing Engine** `[Size: M]`
35
- - *Dependencies*: Feature 3
36
- - *Scope*: สร้างตัวตัดตอนบริบท (Context Slicer) สำหรับสคิล `/implement`, `/check`, `/discovery` เพื่อส่งเฉพาะข้อมูลที่จำเป็นและควบคุม Token Budget ลดการใช้ Token 60–70%
37
-
38
- ---
39
-
40
- ## 🔄 Phase 5: State Drift Detection & Self-Healing
41
-
42
- - [x] **5. Git Diff Drift Reconciler & Self-Healing State Engine** `[Size: M]`
43
- - *Dependencies*: Feature 4
44
- - *Scope*: ตรวจจับความไม่สอดคล้องระหว่าง `git diff` กับรายการไฟล์ใน Living Spec พร้อมระบบแจ้งเตือนและ Auto-Reconcile ซิงค์สถานะอัตโนมัติ
45
-
46
- ---
47
-
48
- ## 🖥️ Phase 6: IDE Native Extension & Visual Studio
49
-
50
- - [x] **6. IDE Native Extension & Interactive Webview Studio** `[Size: L]`
51
- - *Dependencies*: Feature 5
52
- - *Scope*: พัฒนา Extension สำหรับ VS Code / Antigravity Webview เพื่อแสดง Live Kanban Board, ปุ่มกดรันคำสั่ง DevFlow และ Diff Inspector ในตัว IDE
53
-
54
-
55
- ---
56
-
57
- ## 🤖 Phase 7: Multi-Agent Swarm Orchestration & Code Graph RAG
58
-
59
- - [x] **7. Multi-Agent Swarm Orchestrator & Semantic Code Graph RAG** `[Size: L]`
60
- - *Dependencies*: Feature 6
61
- - *Scope*: พัฒนาระบบกระจายงานแบบคู่ขนานให้ Subagents (Coder, QA Verifier, Security Auditor) และระบบ Indexing Local Codebase Graph เพื่อดึงบริบทที่แม่นยำสูงสุด
62
-
63
- ---
64
-
65
- ## 🔄 Phase 8: Upstream Synchronization & Multi-Adapter Expansion
66
-
67
- - [x] **8. Sync Upstream v0.13.0 (Adopt Visibility, OpenCode & Multi-Adapter Selection)** `[Size: M]`
68
- - *Dependencies*: None
69
- - *Scope*: ผสานความสามารถ Adopt Workflow Visibility (Commit vs Local-only), การรองรับ OpenCode และ Multi-Adapter Checkbox Prompt ใน CLI พร้อมอัปเดต Doctor checks และซิงก์ Baseline SHA เป็น v0.13.0 (`0b65166`)
70
-
71
- ---
72
-
73
- ## 🧪 Phase 9: Strict TDD Sub-Tasks & Two-Stage Review Guardrails
74
-
75
- - [x] **9. Strict TDD Sub-Tasks & Two-Stage Review Guardrails** `[Size: M]`
76
- - *Dependencies*: None
77
- - *Scope*: นำ Strict TDD (Red-Green-Refactor) Sub-Tasks และ Two-Stage Review Pattern (Stage 1: Spec Fidelity, Stage 2: Quality & Security Gate) ผสานเข้าสู่ Prompt Rules, Coding Standards, AI Interaction และ Stage Skills (`30-plan`, `40-execute`, `50-verify`, `feature`, `implement`, `check`, `debug`) พร้อมอัปเดต Template และ Unit Tests
78
-
79
- ---
80
-
81
- ## ⚡ Phase 10: Nexus-DevFlow 2.5.0 (Unified Living Spec Model)
82
-
83
- - [x] **10. Unify Deep-Track and Fast-Track into Single Living Spec Model** `[Size: L]`
84
- - *Dependencies*: ADR-001
85
- - *Scope*: รวมความสามารถเชิงสถาปัตยกรรมระดับลึกของ Deep-Track เข้าสู่ 4 ขั้นตอนหลักของ Fast-Track บนเอกสาร Single Living Spec (`current-feature.md`) จัดเก็บประวัติแบบ Single Archive (`.md`), ปลดระวาง stage skills 10-70 ที่ซ้ำซ้อน, และปรับปรุงเอกสาร & Schemas ทั้งหมด
86
-
87
- ---
88
-
89
- ## 🚀 Phase 11: Multi-Run Context Architecture & Spec Queue Engine
90
-
91
- - [x] **11. Multi-Run Context Architecture & Spec Queue Engine (`IDEA-026`, `DISC-20260826-001`)** `[Size: M]`
92
- - *Dependencies*: Feature 10, Feature 3
93
- - *Scope*: แยกจัดเก็บ Task-Specific Context เป็นโฟลเดอร์ย่อยใน `devflow/context/{xxx-slug}/`, พัฒนา Context Resolver สำหรับสลับและเรียกใช้งาน `/implement <id>`, `/check <id>`, `/complete <id>` แบบระบุ Running ID หรือ Fuzzy Match, และอัปเกรด CLI/Dashboard/Skills ให้รองรับ Spec Queue หลายรันพร้อมกัน
94
-
95
- ---
96
-
97
- ## 🧹 Phase 12: Purge Legacy Deep-Track & Numbered Stage Artifacts
98
-
99
- - [x] **12. Purge Legacy Deep-Track & Numbered Stage Artifacts (`DISC-20260826-002`)** `[Size: M]`
100
- - *Dependencies*: Feature 10, Feature 11
101
- - *Scope*: ล้างโค้ดตกค้างของ Deep-Track (สเตจ 00-70 เช่น `40-execute`, `50-verify`, `60-report`, `70-deliver`, `10-define`, `20-spec`, `30-plan`) ออกจาก package engine (`status.ts`, `current-work.ts`, `history.ts`), agent skills (`.agents/`, `.claude/`), automation scripts & tests ใน `scripts/`, และเอกสาร/mockup ให้เป็นปัจจุบันสมบูรณ์
102
-
103
- ---
104
-
105
- ## 🔄 Phase 13: Upstream AI Blueprint v0.14.0 Synchronization & Deterministic Config Engine
106
-
107
- - [x] **13. Sync Upstream v0.14.0 (Deterministic Config & Continuous Mode)** `[Size: M]`
108
- - *Dependencies*: Feature 12, DISC-20260826-003
109
- - *Scope*: นำระบบ Deterministic Project Configuration (`devflow/config.json`) และสคิล Autonomous Multi-Feature Loop (`/continuous`) เข้าสู่ Nexus-DevFlow พร้อมอัปเกรด `project-config.ts`, `doctor`, `status`, `dashboard` และอัปเดต upstream baseline tracking สู่ v0.14.0
110
-
111
- ---
112
-
113
- ## ⚡ Phase 14: Pure Multi-Run Task-Isolated Architecture
114
-
115
- - [x] **14. Pure Multi-Run Task-Isolated Architecture (`DISC-20260826-004`)** `[Size: M]`
116
- - *Dependencies*: Feature 11, Feature 12, Feature 13
117
- - *Scope*: ยกเลิกไฟล์ Single Living Spec ที่ Root (`current-feature.md`, `current-stage.md`, `findings.md`) อย่างสมบูรณ์ ปรับโครงสร้างสู่ Task-Isolated Subdirectories 100% (`devflow/context/{xxx-slug}/`), อัปเกรด Agent Directives, Core Context Resolver, Scaffolding Templates และ Workflow Skills ทั้งหมด
118
-
119
- ---
120
-
121
- ## 🔄 Phase 15: Upstream AI Blueprint v1.0.0 / v1.0.1 Synchronization
122
-
123
- - [x] **15. Sync Upstream v1.0.0 (Activity Contract, Rollback & Complete Safeguards, Local Linking)** `[Size: M]`
124
- - *Dependencies*: Feature 14, DISC-20260828-001-sync-upstream-ai-blueprint-v100
125
- - *Scope*: ผสาน Activity State Contract (`devflow/.state/run.json`) และ Live Dashboard Activity, เสริม Rollback 40-char SHA & Merge Commit Protection, Complete Fixed Finding Persistence, คำสั่ง `npm run link:local` / `unlink:local` พร้อม `findPackageRoot()`, Onboarding Markers และ Windows Smoke/Path Fixes
126
-
127
- ---
128
-
129
- ## 🖥️ Phase 16: Multi-Task Dashboard & Live Kanban Studio UI
130
-
131
- - [x] **16. Multi-Task Dashboard & Live Kanban Studio UI (`DISC-20260828-002`)** `[Size: M]`
132
- - *Dependencies*: Feature 14, Feature 15
133
- - *Scope*: ปรับปรุง Full Web Dashboard (`dashboard-page.ts`) และ Live Kanban Studio (`webview-studio.ts`) ให้อ่านและวนลูปแสดงผลรายการ Task ทั้งหมดใน `status.activeRuns` จาก `devflow/context/{xxx-slug}/` พร้อม Task Progress Bar, Branch Pill, Findings Indicator และปุ่ม Quick Actions แบบเจาะจง Target Run ID
134
-
135
- ---
136
-
137
- ## 🔌 Phase 17: Unified Third-Party Skills Installer & Updater
138
-
139
- - [x] **17. Unified Third-Party Skills Installation & Update Command (`DISC-20260831-001`, `055-unified-third-party-skills-installer`)** `[Size: S]`
140
- - *Dependencies*: None
141
- - *Scope*: เพิ่มฟังก์ชัน `installRecommendedSkills` และ `updateRecommendedSkills` ใน `skill-manager.ts`, รองรับสวิตช์ `--recommended` ในคำสั่ง `nexus-devflow skill add` และ `nexus-devflow skill update`, พร้อมอัปเดตเอกสาร `README.md`, `README.th.md` และ Automated Tests
142
-
143
- ---
144
-
145
- ## 🔄 Phase 18: Upstream AI Blueprint v1.1.0 & v1.2.0 Synchronization
146
-
147
- - [x] **18. Sync Upstream v1.1.0 & v1.2.0 (Browser Tests & Independent Review System) (`DISC-20260901-001`)** `[Size: M]`
148
- - *Dependencies*: None
149
- - *Scope*: ผสานสคิล `/browser-tests` สำหรับ Playwright/E2E testing, ระบบตรวจทานอิสระ Independent Audit Review (`audit independent current` พร้อม `review.ts` และ `review.md`), อัปเกรด Config Quality Gates (`independentReview`), อัปเดต CLI Engine/Dashboard และปรับปรุงคู่มือ Scaffolding
150
-
151
- ---
152
-
153
- ## 🛡️ Phase 19: BugHunter Master Skill & Upstream Knowledge Sync Engine
154
-
155
- - [x] **19. BugHunter Master Skill & Upstream Knowledge Sync Engine (`DISC-20260901-002`, `065-bughunter-master-skill-and-sync-engine`)** `[Size: M]`
156
- - *Dependencies*: Feature 17, Feature 18
157
- - *Scope*: พัฒนา Master Orchestrator Skill `bughunter` พร้อมระบบ Sync ดึงคลังความรู้ 83 skills และ report patterns จาก `elementalsouls/Claude-BugHunter` เก็บใน `devflow/.vendor/bughunter/`, รองรับคำสั่ง `nexus-devflow skill add/update bughunter`, อัปเดต Manifest และผสานเข้ากับ Multi-Adapter (`.agents/`, `.claude/`)
158
-
159
- ---
160
-
161
- ## 🔄 Phase 20: Upstream AI Blueprint v1.3.0 – v1.4.1 Synchronization
162
-
163
- - [x] **20. Sync Upstream v1.3.0 – v1.4.1 (Planning Baseline Commit & Context Overhead Reduction) (`DISC-20260902-002`, `067-sync-upstream-ai-blueprint-v130-v141`)** `[Size: M]`
164
- - *Dependencies*: Feature 18, DISC-20260902-002
165
- - *Scope*: ผสานสคิล Planning Baseline Commit ใน `/overview` (`chore: establish DevFlow project baseline`), กฎ Overview Compactness Budget (20KB) พร้อม Hard-stop ใน `/feature` และคำเตือนใน `/doctor`, ปรับ Workflow Defaults เป็น `stepReview: "feature"` และ `checkpointCommits: "disabled"` พร้อม Onboarding Presets (Efficient/Guided/Custom), ย่อ Skill Descriptions 31 สคิลให้ <= 400 chars, ปรับ Claude Code Startup Context ใน `CLAUDE.md`, และอัปเดต Framework Validation/Tests ผ่าน 100%
166
-
167
- ---
168
-
169
- ## 🛠️ Phase 21: Upstream Tooling Parity & Comprehensive Evals Suite
170
-
171
- - [x] **21. Upstream Tooling Parity & Comprehensive Evals Suite (E2E Agent Harness, Complete Routing Fixtures, Sandbox Automation & Upstream Drift Monitor) (`DISC-20260902-001`, `068-sync-upstream-ai-blueprint-tooling-and-evals`)** `[Size: M]`
172
- - *Dependencies*: Feature 20, DISC-20260902-001
173
- - *Scope*: ขยายชุดทดสอบ Evals Routing ให้ครอบคลุมทุกสคิล (`browser-tests.json`, `continuous.json`, `bughunter.json`, `publish-devflow.json`), นำเข้าและปรับใช้ Live-Agent E2E Test Harness (`scripts/e2e/`), สคริปต์จำลองติดตั้ง Sandbox Scaffolding (`scripts/scaffold-sandbox.ts`), สคริปต์ตรวจจับ Upstream Drift (`scripts/check-upstream-drift.ts`), และเอกสารวิเคราะห์ Token Efficiency (`benchmarks/context-efficiency.md`)
174
-
175
- ---
176
-
177
- ## 🎨 Phase 22: Visual Dashboard & Diagram Integration
178
-
179
- - [x] **22. Standalone HTML Report Diagram Integration (`DISC-20260902-003`, `069-report-html-diagram-integration`)** `[Size: S]`
180
- - *Dependencies*: Feature 17 (`055`), DISC-20260902-003
181
- - *Scope*: ปรับปรุง `md2html-report.mjs` รองรับการเรนเดอร์ native Mermaid block (`.mermaid`), เพิ่มการสแกนและ embed ไฟล์ไดอะแกรมจาก `devflow/context/{xxx-slug}/diagrams/` (`.svg` และ `.html`), อัปเดต `report-html` skill ให้ตรวจจับและ auto-install `archify` / `diagram-design` ผ่าน `nexus-devflow skill add` และเขียนชุดทดสอบครอบคลุม
182
-
183
- ---
184
-
185
- ## 🧹 Phase 23: Reference Artifacts Housekeeping
186
-
187
- - [x] **23. Prune Studio Reference Artifacts (`069-prune-studio-reference-artifacts`)** `[Size: S]`
188
- - *Dependencies*: None
189
- - *Scope*: ลบไฟล์ Static HTML Snapshot ตกค้าง `devflow/reference/studio.html` และสคริปต์ `scripts/export-studio.ts` โดยยังคงรักษา Webview Studio Engine (`webview-studio.ts`), MCP tool (`devflow_get_studio_html`), CLI Command (`nexus-devflow studio`) และชุดทดสอบทั้งหมดให้ทำงานได้สมบูรณ์ 100%
190
-
191
- ---
192
-
193
- ## 📐 Phase 24: Role-Based Profiles & SA Command Suite Engine
194
-
195
- - [x] **24. Role-Based Profiles & SA Analyze Command Engine (`DISC-20260903-001`, `070-role-based-profile-and-sa-analyze-engine`)** `[Size: M]`
196
- - *Dependencies*: None
197
- - *Scope*: เพิ่มตัวเลือก `--role [sa|dev|full]` ใน CLI Installer (`create-nexus-devflow`), ระบบจำแนกชุด Skill Profiles ใน `skill-manager.ts`, โฟลเดอร์ Template สำหรับ SA (`devflow/inbox/`, `devflow/analysis/`, `devflow/blueprints/`), พัฒนาสคิล `/analyze` สำหรับสกัดเอกสารหลายรูปแบบ (PDF, Word, Excel, รูปภาพ, ข้อความ) และวิเคราะห์ Codebase Impact พร้อมชุดทดสอบ Automated Tests
198
-
199
- ---
200
-
201
- ## 🔄 Phase 25: Upstream AI Blueprint v1.5.0 – v1.5.1 Synchronization
202
-
203
- - [x] **25. Sync Upstream v1.5.0 & v1.5.1 (Hardened Run-State Engine & On-Demand Context Loading) (`DISC-20260903-001`, `070-sync-upstream-ai-blueprint-v150-v151`)** `[Size: M]`
204
- - *Dependencies*: Feature 20, Feature 21, DISC-20260903-001
205
- - *Scope*: พอร์ตและปรับแต่ง Hardened Dashboard Activity State Helper (`.agents/skills/doctor/scripts/run-state.mjs` และ `.claude/`), บังคับใช้ Zero-Manual Writes กับ `devflow/.state/run.json`, ปรับใช้ On-Demand Context Loading Protocol พร้อมแยก Reference Templates ย่อย (`reference/`), เพิ่ม Unit Tests `run-state-helper.test.ts`, อัปเดต `scripts/validate-framework.ts`, `AGENTS.md`, `CLAUDE.md` และยืนยันการผ่าน 100%
206
-
207
- ---
208
-
209
- ## 🔄 Phase 26: Upstream AI Blueprint v1.5.2 Synchronization
210
-
211
- - [x] **26. Sync Upstream v1.5.2 (Unborn Repository Onboarding & Branch Baseline Finalization) (`REQ-20260903-001`, `071-sync-upstream-ai-blueprint-v152`)** `[Size: S]`
212
- - *Dependencies*: Feature 25, REQ-20260903-001
213
- - *Scope*: เพิ่มการตรวจจับและกู้คืน Unborn Git repository ใน `/onboard` ด้วย Scaffold Initial Commit (`chore: scaffold application`), รองรับการ Finalize DevFlow Baseline บน Dedicated Setup Branch ด้วย `git merge --ff-only` ใน `/overview`, เพิ่มชุดทดสอบ E2E Scenario `scripts/e2e/scenarios/unborn-onboarding.ts`, อัปเดต `devflow/context/ai-interaction.md` และอัปเดต Framework Static Contracts ผ่าน 100%
214
-
215
- ---
216
-
217
- ## 🔄 Phase 27: Upstream AI Blueprint v1.5.3 Synchronization
218
-
219
- - [x] **27. Sync Upstream v1.5.3 (Manifest-Aware Adapter Selection in Onboard & E2E Scenario Parity) (`REQ-20260904-001`, `072-sync-upstream-ai-blueprint-v153`)** `[Size: S]`
220
- - *Dependencies*: Feature 26, REQ-20260904-001
221
- - *Scope*: ปรับปรุง `/onboard` (ทั้ง `.agents/` และ `.claude/`) ให้อ่านและยึดถือรายการ `adapters` จาก Manifest (`.nexus/nexus-devflow.json` / `devflow/.state/manifest.json`) เป็นความจริงหลัก (Authoritative Selection) โดยไม่ถามซ้ำและไม่อนุมานผิดพลาด, เพิ่มชุดทดสอบ E2E Scenario ตัวที่ 10 `scripts/e2e/scenarios/adapter-selection.ts`, อัปเดต `agent-bundle.manifest.json` และ `scripts/validate-framework.ts` ให้ครอบคลุม Verification Contracts ใหม่ 100%
222
-
223
- ---
224
-
225
- ## 🔄 Phase 28: Upstream AI Blueprint v1.5.4 – v1.6.0 Synchronization
226
-
227
- - [x] **28. Sync Upstream v1.5.4 & v1.6.0 (Automatic Independent Review, Post-Implementation Walkthroughs & Hardened Dashboard Engine) (`DISC-20260907-001`, `073-sync-upstream-ai-blueprint-v154-v160`)** `[Size: M]`
228
- - *Dependencies*: Feature 27, DISC-20260907-001
229
- - *Scope*: นำเข้าระบบตรวจทานอิสระแบบอัตโนมัติ (`review.independentExecution: "automatic"` พร้อม Isolated Subagent Spawning, Receipts Metadata Schema), ปรับค่าเริ่มต้น Quality Gates เป็น `when-sensitive`, เพิ่ม Post-Implementation Code Walkthrough ใน `implement` / `autopilot`, ปรับปรุงความทนทานของสถานะโครงการและ Dashboard (Sortable Findings, Roadmap Focus, Strict Heading Contracts), อัปเดต Framework Validation และ Unit Tests ผ่าน 100%
230
-
231
- ---
232
-
233
- ## 🖥️ Phase 30: Modernize Web Dashboard with Dynamic Archify Visualizer & Recommended Skills
234
-
235
- - [x] **30. Modernize Web Dashboard with Dynamic Archify Visualizer & Recommended Skills (`DISC-20260907-003`, `080-dashboard-workflow-visualizer`)** `[Size: M]`
236
- - *Dependencies*: Feature 28, DISC-20260907-003
237
- - *Scope*: เพิ่ม Dynamic Archify SVG Workflow Visualizer (Macro Lifecycle Pulse Map พร้อม CSS Trace Motion และ Micro Tracer-Bullet Tickets DAG), เพิ่มการ์ด Recommended Skills & Vendors (`matt-pocock`, `bughunter`, `archify`, `diagram-design`, `9arm-skills`) พร้อมตรวจจับสถานะติดตั้งจริงและแสดงป้ายติ๊กถูก ✔, ปรับลดความรกบนแดชบอร์ด (ลบ Swarm Tab, ยุบ Doctor สรุปคลีน), เพิ่มข้อมูลใน `DashboardSnapshot` และชุดทดสอบความถูกต้องผ่าน 100%
238
- ---
239
-
240
- ## 🧹 Phase 31: Vendor Purge, Unified Debug & Headless Ticket Ingestion
241
-
242
- - [x] **31. Purge Matt Pocock Vendor, Unify Debug Skill & Headless Ticket Ingestion (`081-purge-vendor-and-unify-debug`)** `[Size: S]`
243
- - *Dependencies*: None
244
- - *Scope*: ตัดโฟลเดอร์ vendor `devflow/.vendor/matt-pocock/`, ลบ skill wrapper ของ `matt-pocock` และ `debug-mantra`, รวมสาระสำคัญของ mantra 4 ข้อเข้าสู่ `/debug` (ทั้ง `.agents` และ `.claude`), ลบโฟลเดอร์ตกค้าง `.scratch/` และ `docs/agents/`, อัปเดต `AGENTS.md` และเอกสารเพื่อรองรับการนำเข้า external spec และ tickets จาก `devflow/context/{slug}/issues/` หรือ `tickets/` ได้ทันที
245
-
246
- ---
247
-
248
- ## 🧹 Phase 32: Consolidate 9arm Skills into DevFlow Core & Purge Extension
249
-
250
- - [x] **32. Consolidate 9arm Skills into DevFlow Core & Purge Extension (`DISC-20260908-001`, `082-consolidate-9arm-skills-and-purge`)** `[Size: S]`
251
- - *Dependencies*: None
252
- - *Scope*: รวมสาระสำคัญของ `scrutinize` (Outsider Stance, Call-path tracing, Challenge intent) เข้าสู่ `/audit`, ผสาน `post-mortem` เข้าสู่ `/debug` (Phase 4 Handoff) และ `/complete` (Fix Archive Template), เพิ่ม Executive / Stakeholder Summary ใน `/status` และ `/complete`, ลบโฟลเดอร์ extension `post-mortem`, `scrutinize`, `management-talk` ทั้งใน `.agents/` และ `.claude/`, ลบ entries 9arm-skills ออกจาก `.nexus/nexus-devflow.json`, อัปเดตเอกสารและยืนยัน static contracts ผ่าน 100%
253
-
254
- ---
255
-
256
- ## 🪓 Phase 33: Ponytail Hybrid Compound-Vendor Integration
257
-
258
- - [x] **33. Ponytail Hybrid Compound-Vendor Integration (`DISC-20260909-001`)** `[Size: S]`
259
- - *Dependencies*: Feature 17 (`055`), Feature 19 (`065`), DISC-20260909-001
260
- - *Scope*: นำเข้า `DietrichGebert/ponytail` ในรูปแบบ Hybrid Compound-Vendor (`type: "compound-knowledge"`) โดยโคลน upstream ลง `devflow/.vendor/ponytail/`, สร้าง Master Wrapper Skill (`.agents/skills/ponytail/` และ `.claude/`) พร้อม 5W1H Playbook และ Auto-Bypass สำหรับงาน Frontend/UI, อัปเดต `skill-registry-engine.ts`, บันทึก `thirdPartySkills` ใน `.nexus/nexus-devflow.json` และเขียน Automated Tests ครอบคลุม
261
-
262
- ---
263
-
264
- ## 📦 Phase 34: Unscoped CLI Packages & Shorthand Shims (`npx nexus-devflow` & `npm create nexus-devflow`)
265
-
266
- - [x] **34. Unscoped CLI Packages & Shorthand Shims (`nexus-devflow` & `create-nexus-devflow`) (`084-unscoped-nexus-devflow-cli-package`)** `[Size: S]`
267
- - *Dependencies*: Feature 1 (`check-gate`), Feature 17 (`055`)
268
- - *Scope*: สร้างและกำหนดค่า Wrapper Shims สำหรับ Unscoped NPM Packages: `nexus-devflow` (เพื่อรองรับ `npx nexus-devflow`) และ `create-nexus-devflow` (เพื่อรองรับ `npm create nexus-devflow`), อัปเดต Pipeline การ Publish ใน `.github/workflows/publish.yml` และ `publish-devflow` ให้ซิงก์เวอร์ชันและเผยแพร่คู่ขนานกับ `@jakkrichm/create-nexus-devflow`, อัปเดตเอกสาร `AGENTS.md`, `CLAUDE.md` และ README ให้แนะนำคำสั่งสั้นเป็นหลัก
269
-
270
-
271
-
272
- ---
273
-
274
- ## Phase 35: Superpowers Debugging & TDD Heuristics Integration
275
-
276
- - [x] **35. Superpowers Debugging Heuristics & TDD Reference Guides (`DISC-20260909-003`, `085-superpowers-debugging-heuristics-integration`)** `[Size: S]`
277
- - *Dependencies*: Feature 31 (`081`), Feature 32 (`082`)
278
- - *Scope*: เพิ่ม JIT reference guides สำหรับ root-cause tracing, defense-in-depth, condition-based waiting, TDD anti-patterns และ two-stage review พร้อม 3-Strike Rule และ Iron Law; ซิงก์ `.agents/` กับ `.claude/` และตรวจ file contracts
279
-
280
- ---
281
-
282
- ## Phase 36: Upstream AI Blueprint v1.6.1 Synchronization
283
-
284
- - [x] **36. Sync Upstream v1.6.1 (Installer Symlink Rejection, Completion Recovery Engine, Rebuild History Preservation, Local-Only Spec Review & Status Evidence Alignment) (`DISC-20260911-001`, `086-sync-upstream-ai-blueprint-v161`)** `[Size: M]`
285
- - *Dependencies*: Feature 28 (`073`), DISC-20260911-001
286
- - *Scope*: นำเข้า 5 เสาหลักความปลอดภัยและความแม่นยำจาก AI Blueprint v1.6.1: (1) ปฏิเสธ Symlink paths และตรวจ type compatibility ในตัวติดตั้ง `create-nexus-devflow`, (2) สร้างสัญญา `completion-recovery.md` พร้อม JSON comment annotation `<!-- devflow:completion ... -->` กู้คืนการส่งมอบงานที่สะดุด, (3) สร้างสัญญา `build-history.md` รองรับการตั้งชื่อ `--build-N` เมื่อ Rebuild ฟีเจอร์ที่เคยถูก Rollback, (4) ขยาย `lib/review.ts` ให้รองรับ `specSnapshot` สำหรับ Local-only spec review, (5) บูรณาการ `classifyWorkEvidence` ใน `project-status-engine.ts` และ `dashboard.ts` ป้องกัน False Ready State เมื่อ verification failed หรือพบ malformed records, (6) ซิงก์สคิลและเอกสารทั้ง `.agents/` และ `.claude/` พร้อม automated tests ผ่าน 100%
287
-
288
- ## 🔌 Phase 37: AI-Orchestrated Project-Local Vendor Skill Ingestion (`/vendor`)
289
-
290
- - [x] **37. AI-Orchestrated Project-Local Vendor Skill Ingestion (`DISC-20260911-002`, `087-ai-orchestrated-vendor-skill-ingestion`)** `[Size: M]`
291
- - *Dependencies*: Feature 33 (`083`), Feature 34 (`084`), DISC-20260911-002
292
- - *Scope*: พัฒนาคำสั่ง `/vendor` (พร้อม aliases: `skill-add`, `equip`, `ingest`) สำหรับนำเข้า Git repository ลงในระดับโปรเจกต์ `devflow/.vendor/<slug>/`, ให้ AI Agent สำรวจโค้ดและสังเคราะห์ Custom Wrapper Skill ใน `.agents/skills/<slug>/SKILL.md` และ `.claude/skills/<slug>/SKILL.md`, พัฒนากลไก Update Protection ใน `update.ts` เพื่อป้องกันไม่ให้คำสั่งอัปเดต DevFlow ลบ custom skills เหล่านี้, บันทึก metadata ลง `.nexus/nexus-devflow.json`, ปรับปรุง CLI `nexus-devflow skill update all` ให้รองรับการ pull upstream ใน `.vendor/` โดยคงรักษา custom wrapper ที่ AI เขียนไว้, พร้อมเขียน Automated Unit Tests ครอบคลุม 100%
293
-
294
- ---
295
-
296
- ## 📂 Phase 38: Decade-Numbered Folder Architecture & Multi-Version Migration Engine
297
-
298
- - [x] **38. Decade-Numbered Folder Architecture, Legacy Path Resolver & Structure Migration Engine (`REQ-20260911-001`, `088-decade-numbered-folder-architecture`)** `[Size: M]`
299
- - *Dependencies*: None
300
- - *Scope*: ปรับสถาปัตยกรรมโฟลเดอร์ของ DevFlow ให้จัดเรียงตาม Decade-Numbered Stages (`00-context`, `10-ideation`, `20-discovery`, `30-planning`, `40-tasks`, `50-history`, `60-docs`), สร้าง Dynamic Path Resolver Engine รองรับ Client เวอร์ชันเก่าแบบ Zero-Breaking Change, พัฒนา CLI Subcommand `nexus-devflow migrate-structure` ทำการย้ายโฟลเดอร์และอัปเดต Manifest/Config อัตโนมัติ, ลบโฟลเดอร์ Legacy `devflow/runs/`, อัปเดตคู่มือ `AGENTS.md`, `CLAUDE.md`, `README.md`, Playbooks และเขียน Automated Tests ครอบคลุม
301
-
302
-