@jakkrichm/create-nexus-devflow 2.0.15 → 2.0.18

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 (82) hide show
  1. package/dist/bin/create-nexus-devflow.d.ts +15 -1
  2. package/dist/bin/create-nexus-devflow.js +125 -9
  3. package/dist/bin/create-nexus-devflow.js.map +1 -1
  4. package/dist/lib/current-work.d.ts +29 -0
  5. package/dist/lib/current-work.js +235 -0
  6. package/dist/lib/current-work.js.map +1 -0
  7. package/dist/lib/findings.d.ts +26 -0
  8. package/dist/lib/findings.js +110 -0
  9. package/dist/lib/findings.js.map +1 -0
  10. package/dist/lib/git-status.d.ts +13 -0
  11. package/dist/lib/git-status.js +98 -0
  12. package/dist/lib/git-status.js.map +1 -0
  13. package/dist/lib/project-metadata.d.ts +22 -0
  14. package/dist/lib/project-metadata.js +84 -0
  15. package/dist/lib/project-metadata.js.map +1 -0
  16. package/dist/lib/project-root.d.ts +3 -0
  17. package/dist/lib/project-root.js +76 -0
  18. package/dist/lib/project-root.js.map +1 -0
  19. package/dist/lib/status.d.ts +62 -0
  20. package/dist/lib/status.js +273 -0
  21. package/dist/lib/status.js.map +1 -0
  22. package/dist/lib/uninstall.d.ts +20 -0
  23. package/dist/lib/uninstall.js +129 -0
  24. package/dist/lib/uninstall.js.map +1 -0
  25. package/dist/scripts/prepare-template.js +120 -10
  26. package/dist/scripts/prepare-template.js.map +1 -1
  27. package/package.json +4 -3
  28. package/template/.agents/skills/00-discover/SKILL.md +2 -2
  29. package/template/.agents/skills/10-define/SKILL.md +24 -140
  30. package/template/.agents/skills/20-spec/SKILL.md +2 -2
  31. package/template/.agents/skills/30-plan/SKILL.md +2 -2
  32. package/template/.agents/skills/50-verify/SKILL.md +2 -2
  33. package/template/.agents/skills/60-report/SKILL.md +1 -1
  34. package/template/.agents/skills/70-release/SKILL.md +19 -143
  35. package/template/.agents/skills/check/SKILL.md +10 -10
  36. package/template/.agents/skills/ci/SKILL.md +1 -1
  37. package/template/.agents/skills/complete/SKILL.md +49 -28
  38. package/template/.agents/skills/deploy/SKILL.md +1 -1
  39. package/template/.agents/skills/devflow/SKILL.md +5 -5
  40. package/template/.agents/skills/feature/SKILL.md +25 -20
  41. package/template/.agents/skills/fix/SKILL.md +25 -19
  42. package/template/.agents/skills/implement/SKILL.md +10 -10
  43. package/template/.agents/skills/insight/SKILL.md +1 -1
  44. package/template/.agents/skills/overview/SKILL.md +3 -3
  45. package/template/.agents/skills/report-html/SKILL.md +3 -3
  46. package/template/.agents/skills/security-review/SKILL.md +1 -1
  47. package/template/.agents/skills/spec/SKILL.md +7 -6
  48. package/template/.agents/skills/spec-driven-development/SKILL.md +2 -2
  49. package/template/.agents/skills/test/SKILL.md +1 -1
  50. package/template/.claude/skills/00-discover/SKILL.md +2 -2
  51. package/template/.claude/skills/10-define/SKILL.md +24 -140
  52. package/template/.claude/skills/20-spec/SKILL.md +2 -2
  53. package/template/.claude/skills/30-plan/SKILL.md +2 -2
  54. package/template/.claude/skills/50-verify/SKILL.md +2 -2
  55. package/template/.claude/skills/60-report/SKILL.md +1 -1
  56. package/template/.claude/skills/70-release/SKILL.md +19 -143
  57. package/template/.claude/skills/check/SKILL.md +10 -10
  58. package/template/.claude/skills/ci/SKILL.md +1 -1
  59. package/template/.claude/skills/complete/SKILL.md +49 -28
  60. package/template/.claude/skills/deploy/SKILL.md +1 -1
  61. package/template/.claude/skills/devflow/SKILL.md +5 -5
  62. package/template/.claude/skills/feature/SKILL.md +25 -20
  63. package/template/.claude/skills/fix/SKILL.md +25 -19
  64. package/template/.claude/skills/implement/SKILL.md +10 -10
  65. package/template/.claude/skills/insight/SKILL.md +1 -1
  66. package/template/.claude/skills/overview/SKILL.md +3 -3
  67. package/template/.claude/skills/report-html/SKILL.md +3 -3
  68. package/template/.claude/skills/security-review/SKILL.md +1 -1
  69. package/template/.claude/skills/spec/SKILL.md +7 -6
  70. package/template/.claude/skills/spec-driven-development/SKILL.md +2 -2
  71. package/template/.claude/skills/test/SKILL.md +1 -1
  72. package/template/AGENTS.md +15 -59
  73. package/template/devflow/context/ai-interaction.md +110 -23
  74. package/template/devflow/context/coding-standards.md +123 -32
  75. package/template/devflow/context/current-feature.md +3 -0
  76. package/template/devflow/context/current-stage.md +6 -6
  77. package/template/devflow/context/findings.md +10 -10
  78. package/template/devflow/context/project-overview.md +18 -32
  79. package/template/devflow/history/HISTORY.md +10 -24
  80. package/template/devflow/ideas.md +9 -5
  81. package/template/devflow/reference/running-id-contract.md +39 -39
  82. package/template/devflow/runs/.gitkeep +0 -0
@@ -0,0 +1,273 @@
1
+ import { readCurrentWork } from "./current-work.js";
2
+ import { readFindings } from "./findings.js";
3
+ import { readGitStatus } from "./git-status.js";
4
+ import { readProjectMetadata } from "./project-metadata.js";
5
+ async function readProjectStatus(startPath = process.cwd()) {
6
+ const metadata = await readProjectMetadata(startPath);
7
+ const [currentWork, findings, git] = await Promise.all([
8
+ readCurrentWork(metadata.project.root),
9
+ readFindings(metadata.project.root),
10
+ readGitStatus(metadata.project.root)
11
+ ]);
12
+ const warnings = [
13
+ ...metadata.warnings,
14
+ ...currentWork.warnings,
15
+ ...findings.warnings,
16
+ ...findDrift(currentWork, git)
17
+ ];
18
+ const completion = selectCompletion(currentWork, findings, git);
19
+ const nextAction = selectNextAction(currentWork, findings);
20
+ return {
21
+ schemaVersion: metadata.schemaVersion,
22
+ health: warnings.length > 0 || findings.blockers.length > 0
23
+ ? "warning"
24
+ : "ok",
25
+ project: metadata.project,
26
+ devflow: metadata.devflow,
27
+ currentWork: formatCurrentWork(currentWork),
28
+ findings: formatFindings(findings),
29
+ git,
30
+ completion,
31
+ nextAction,
32
+ warnings
33
+ };
34
+ }
35
+ function formatHumanStatus(status, options = {}) {
36
+ const style = createTextStyle(options.color === true);
37
+ const adapters = status.devflow.adapters.length > 0
38
+ ? status.devflow.adapters.join(", ")
39
+ : "none detected";
40
+ const lines = [
41
+ `${style.bold(style.cyan("Nexus-DevFlow Status"))} ${style.bold(status.project.name)}`,
42
+ "",
43
+ formatSection("Project", style),
44
+ formatRow("Path", status.project.root, style),
45
+ formatRow("Version", status.devflow.version || "unknown", style),
46
+ formatRow("Adapters", adapters, style),
47
+ "",
48
+ formatSection("Progress", style),
49
+ formatRow("Work", formatWorkValue(status.currentWork, style), style)
50
+ ];
51
+ if (status.currentWork.state === "active") {
52
+ lines.push(formatRow("Steps", `${status.currentWork.completed}/${status.currentWork.total} complete`, style));
53
+ if (status.currentWork.nextStep) {
54
+ lines.push(formatRow("Next step", status.currentWork.nextStep.title, style));
55
+ }
56
+ }
57
+ lines.push(formatRow("Findings", formatFindingsValue(status.findings, style), style), formatRow("Completion", formatCompletionValue(status.completion, style), style), "", formatSection("Git", style));
58
+ appendGitLines(lines, status.git, style);
59
+ if (status.warnings.length > 0) {
60
+ lines.push("", formatSection("Attention", style));
61
+ for (const warning of status.warnings) {
62
+ lines.push(` ${style.yellow("!")} ${style.yellow(warning.message)}`);
63
+ }
64
+ }
65
+ lines.push("", formatSection("Next action", style));
66
+ if (status.nextAction.command) {
67
+ lines.push(` ${style.bold(style.brightCyan(status.nextAction.command))}`);
68
+ }
69
+ lines.push(` ${status.nextAction.reason}`);
70
+ return lines.join("\n");
71
+ }
72
+ function shouldUseColor(isTTY = process.stdout.isTTY, environment = process.env) {
73
+ return isTTY === true && !Object.hasOwn(environment, "NO_COLOR");
74
+ }
75
+ function formatSection(label, style) {
76
+ return style.bold(label);
77
+ }
78
+ function formatRow(label, value, style) {
79
+ return ` ${style.cyan(label.padEnd(14))}${value}`;
80
+ }
81
+ function formatWorkValue(work, style) {
82
+ if (work.state === "idle") {
83
+ return style.dim("none");
84
+ }
85
+ if (work.state === "malformed") {
86
+ return style.red("present but malformed");
87
+ }
88
+ const type = work.type || "work";
89
+ const identity = work.runId
90
+ ? `${work.runId} - ${work.title || "untitled"}`
91
+ : work.title || "untitled";
92
+ return style.brightCyan(`${type} ${identity}`);
93
+ }
94
+ function formatFindingsValue(findings, style) {
95
+ if (findings.total === 0) {
96
+ return style.green("none");
97
+ }
98
+ const activeGroups = new Map();
99
+ for (const finding of findings.active) {
100
+ const key = `${finding.status} ${finding.severity}`;
101
+ activeGroups.set(key, [...(activeGroups.get(key) || []), finding.id]);
102
+ }
103
+ const activeCounts = [...activeGroups.entries()].map(([label, ids]) => `${ids.length} ${label} (${ids.join(", ")})`);
104
+ const resolvedCounts = ["closed", "accepted", "invalid"]
105
+ .filter((status) => findings.byStatus[status] > 0)
106
+ .map((status) => `${findings.byStatus[status]} ${status}`);
107
+ const value = [...activeCounts, ...resolvedCounts].join(", ");
108
+ if (findings.blockers.length > 0) {
109
+ return style.red(value);
110
+ }
111
+ return findings.active.length > 0 ? style.yellow(value) : style.green(value);
112
+ }
113
+ function formatCompletionValue(completion, style) {
114
+ if (completion.state === "ready") {
115
+ return style.green("ready");
116
+ }
117
+ if (completion.state === "needs_verification") {
118
+ return style.yellow("needs verification");
119
+ }
120
+ return style.red(`blocked: ${completion.blockers.join("; ")}`);
121
+ }
122
+ function appendGitLines(lines, git, style) {
123
+ if (!git.available) {
124
+ lines.push(formatRow("Status", style.red("not a Git repository"), style));
125
+ return;
126
+ }
127
+ const workingTree = git.clean
128
+ ? style.green("clean")
129
+ : style.yellow(`${git.changedFiles} changed ${git.changedFiles === 1 ? "file" : "files"}`);
130
+ const remote = git.upstream
131
+ ? `${git.upstream} (${git.ahead || 0} ahead, ${git.behind || 0} behind)`
132
+ : "not configured";
133
+ const coloredRemote = git.upstream && git.ahead === 0 && git.behind === 0
134
+ ? style.green(remote)
135
+ : style.yellow(remote);
136
+ lines.push(formatRow("Branch", git.branch || "unknown", style), formatRow("Working tree", workingTree, style), formatRow("Remote", coloredRemote, style));
137
+ if (git.lastCommit) {
138
+ lines.push(` ${style.cyan("Last commit")}`, ` ${git.lastCommit}`);
139
+ }
140
+ }
141
+ function createTextStyle(enabled) {
142
+ const paint = (code, value) => enabled ? `\u001b[${code}m${value}\u001b[0m` : value;
143
+ return {
144
+ bold: (value) => paint(1, value),
145
+ brightCyan: (value) => paint(96, value),
146
+ cyan: (value) => paint(36, value),
147
+ dim: (value) => paint(2, value),
148
+ green: (value) => paint(32, value),
149
+ red: (value) => paint(31, value),
150
+ yellow: (value) => paint(33, value)
151
+ };
152
+ }
153
+ function formatCurrentWork(currentWork) {
154
+ return {
155
+ state: currentWork.state,
156
+ type: currentWork.type,
157
+ title: currentWork.title,
158
+ status: currentWork.status,
159
+ runId: currentWork.runId,
160
+ completed: currentWork.completed,
161
+ remaining: currentWork.remaining,
162
+ total: currentWork.total,
163
+ nextStep: currentWork.nextStep
164
+ ? { title: currentWork.nextStep.title }
165
+ : null
166
+ };
167
+ }
168
+ function formatFindings(findings) {
169
+ const selectFinding = (finding) => ({
170
+ id: finding.id,
171
+ severity: finding.severity,
172
+ status: finding.status,
173
+ title: finding.title
174
+ });
175
+ return {
176
+ total: findings.total,
177
+ byStatus: findings.byStatus,
178
+ active: findings.items
179
+ .filter((finding) => finding.status === "unverified" ||
180
+ finding.status === "open" ||
181
+ finding.status === "fixed")
182
+ .map(selectFinding),
183
+ blockers: findings.blockers.map(selectFinding)
184
+ };
185
+ }
186
+ function selectCompletion(currentWork, findings, git) {
187
+ const blockers = [];
188
+ if (currentWork.state !== "active") {
189
+ blockers.push("no active delivery run or living spec");
190
+ }
191
+ else if (currentWork.remaining > 0) {
192
+ blockers.push(`${currentWork.remaining} checklist steps remain`);
193
+ }
194
+ if (findings.blockers.length > 0) {
195
+ blockers.push(`blocking findings ${findings.blockers.map((finding) => finding.id).join(", ")}`);
196
+ }
197
+ if (!git.available) {
198
+ blockers.push("Git repository is unavailable");
199
+ }
200
+ if (blockers.length > 0) {
201
+ return { state: "blocked", blockers };
202
+ }
203
+ return {
204
+ state: "needs_verification",
205
+ blockers: ["verification evidence is not persisted"]
206
+ };
207
+ }
208
+ function selectNextAction(currentWork, findings) {
209
+ if (currentWork.state === "malformed") {
210
+ return {
211
+ command: "/doctor",
212
+ reason: "Repair the stage or spec contract before continuing."
213
+ };
214
+ }
215
+ if (currentWork.state === "active") {
216
+ if (currentWork.nextStep) {
217
+ return {
218
+ command: "/implement",
219
+ reason: `Resume active work with ${currentWork.nextStep.title}.`
220
+ };
221
+ }
222
+ const openBlocker = findings.blockers.find((finding) => finding.status === "open");
223
+ if (openBlocker) {
224
+ return {
225
+ command: "/implement",
226
+ reason: `Repair blocking finding ${openBlocker.id}.`
227
+ };
228
+ }
229
+ const fixedBlocker = findings.blockers.find((finding) => finding.status === "fixed");
230
+ if (fixedBlocker) {
231
+ return {
232
+ command: "/check",
233
+ reason: `Re-verify fixed finding ${fixedBlocker.id}.`
234
+ };
235
+ }
236
+ return {
237
+ command: "/check",
238
+ reason: "All checklist steps are completed; run QA verification."
239
+ };
240
+ }
241
+ const openBlocker = findings.blockers.find((finding) => finding.status === "open");
242
+ if (openBlocker) {
243
+ return {
244
+ command: `/fix ${openBlocker.id}`,
245
+ reason: "Start a tracked repair for the blocking finding."
246
+ };
247
+ }
248
+ return {
249
+ command: "/feature",
250
+ reason: "Workspace is idle. Ready to spec or discover a new feature."
251
+ };
252
+ }
253
+ function findDrift(currentWork, git) {
254
+ if (currentWork.state !== "active") {
255
+ return [];
256
+ }
257
+ const warnings = [];
258
+ if (git.available && (git.branch === "main" || git.branch === "master")) {
259
+ warnings.push({
260
+ code: "active_work_on_default_branch",
261
+ message: `Active ${currentWork.type || "work"} is running on the default branch.`
262
+ });
263
+ }
264
+ if (currentWork.total > 0 && currentWork.remaining === 0) {
265
+ warnings.push({
266
+ code: "completed_steps_not_released",
267
+ message: "All checklist steps are checked, but run has not been completed or verified."
268
+ });
269
+ }
270
+ return warnings;
271
+ }
272
+ export { formatHumanStatus, readProjectStatus, shouldUseColor };
273
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../lib/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export interface UninstallOptions {
2
+ targetDir: string;
3
+ keepHistory?: boolean;
4
+ }
5
+ export interface PreparedUninstall {
6
+ targetDir: string;
7
+ projectRoot: string | null;
8
+ itemsToDelete: string[];
9
+ totalFiles: number;
10
+ totalDirectories: number;
11
+ }
12
+ export interface ApplyUninstallResult {
13
+ deletedCount: number;
14
+ deletedItems: string[];
15
+ success: boolean;
16
+ }
17
+ export declare function prepareUninstall(options: UninstallOptions): Promise<PreparedUninstall>;
18
+ export declare function applyUninstall(prepared: PreparedUninstall, options?: {
19
+ dryRun?: boolean;
20
+ }): Promise<ApplyUninstallResult>;
@@ -0,0 +1,129 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { findProjectRoot } from "./project-root.js";
4
+ const KNOWN_DEVFLOW_ROOT_FILES = [
5
+ "AGENTS.md",
6
+ "CLAUDE.md"
7
+ ];
8
+ const KNOWN_DEVFLOW_DIRECTORIES = [
9
+ ".agents",
10
+ ".claude",
11
+ ".nexus",
12
+ "devflow",
13
+ "blueprint"
14
+ ];
15
+ export async function prepareUninstall(options) {
16
+ const targetDir = path.resolve(process.cwd(), options.targetDir || ".");
17
+ const projectRoot = await findProjectRoot(targetDir).catch(() => null);
18
+ const rootDir = projectRoot || targetDir;
19
+ const itemsToDelete = [];
20
+ let totalFiles = 0;
21
+ let totalDirectories = 0;
22
+ // 1. Check known root files
23
+ for (const file of KNOWN_DEVFLOW_ROOT_FILES) {
24
+ const fullPath = path.join(rootDir, file);
25
+ if (await fileExists(fullPath)) {
26
+ itemsToDelete.push(file);
27
+ totalFiles++;
28
+ }
29
+ }
30
+ // 2. Check known root directories
31
+ for (const dir of KNOWN_DEVFLOW_DIRECTORIES) {
32
+ const fullPath = path.join(rootDir, dir);
33
+ if (await directoryExists(fullPath)) {
34
+ if (options.keepHistory && dir === "devflow") {
35
+ // Special case: keep devflow/history/
36
+ const subItems = await fs.readdir(fullPath);
37
+ for (const sub of subItems) {
38
+ if (sub === "history")
39
+ continue;
40
+ const subFullPath = path.join(fullPath, sub);
41
+ const relPath = path.join(dir, sub);
42
+ itemsToDelete.push(relPath);
43
+ const stats = await countItemsRecursive(subFullPath);
44
+ totalFiles += stats.files;
45
+ totalDirectories += stats.directories + 1;
46
+ }
47
+ }
48
+ else {
49
+ itemsToDelete.push(dir);
50
+ const stats = await countItemsRecursive(fullPath);
51
+ totalFiles += stats.files;
52
+ totalDirectories += stats.directories + 1;
53
+ }
54
+ }
55
+ }
56
+ return {
57
+ targetDir: rootDir,
58
+ projectRoot,
59
+ itemsToDelete,
60
+ totalFiles,
61
+ totalDirectories
62
+ };
63
+ }
64
+ export async function applyUninstall(prepared, options = {}) {
65
+ const deletedItems = [];
66
+ if (options.dryRun) {
67
+ return {
68
+ deletedCount: prepared.itemsToDelete.length,
69
+ deletedItems: [...prepared.itemsToDelete],
70
+ success: true
71
+ };
72
+ }
73
+ for (const item of prepared.itemsToDelete) {
74
+ const fullPath = path.join(prepared.targetDir, item);
75
+ try {
76
+ await fs.rm(fullPath, { recursive: true, force: true });
77
+ deletedItems.push(item);
78
+ }
79
+ catch {
80
+ // Ignore if already removed or inaccessible
81
+ }
82
+ }
83
+ return {
84
+ deletedCount: deletedItems.length,
85
+ deletedItems,
86
+ success: true
87
+ };
88
+ }
89
+ async function fileExists(targetPath) {
90
+ try {
91
+ const stat = await fs.lstat(targetPath);
92
+ return stat.isFile();
93
+ }
94
+ catch {
95
+ return false;
96
+ }
97
+ }
98
+ async function directoryExists(targetPath) {
99
+ try {
100
+ const stat = await fs.lstat(targetPath);
101
+ return stat.isDirectory();
102
+ }
103
+ catch {
104
+ return false;
105
+ }
106
+ }
107
+ async function countItemsRecursive(dirPath) {
108
+ let files = 0;
109
+ let directories = 0;
110
+ try {
111
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
112
+ for (const entry of entries) {
113
+ if (entry.isDirectory()) {
114
+ directories++;
115
+ const sub = await countItemsRecursive(path.join(dirPath, entry.name));
116
+ files += sub.files;
117
+ directories += sub.directories;
118
+ }
119
+ else if (entry.isFile()) {
120
+ files++;
121
+ }
122
+ }
123
+ }
124
+ catch {
125
+ // Ignore read errors
126
+ }
127
+ return { files, directories };
128
+ }
129
+ //# sourceMappingURL=uninstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../lib/uninstall.ts"],"names":[],"mappings":"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"}
@@ -26,11 +26,26 @@ async function copyEntry(entry) {
26
26
  !normalized.endsWith("README.md")) {
27
27
  return false;
28
28
  }
29
+ if (normalized.startsWith("devflow/history/features/") &&
30
+ !normalized.endsWith("README.md")) {
31
+ return false;
32
+ }
33
+ if (normalized.startsWith("devflow/history/fixes/") &&
34
+ !normalized.endsWith("README.md")) {
35
+ return false;
36
+ }
37
+ if (normalized.startsWith("devflow/history/rollbacks/") &&
38
+ !normalized.endsWith("README.md")) {
39
+ return false;
40
+ }
29
41
  if (normalized.startsWith("devflow/discoveries/") &&
30
42
  !normalized.endsWith(".gitkeep") &&
31
43
  !normalized.endsWith("README.md")) {
32
44
  return false;
33
45
  }
46
+ if (normalized.startsWith("devflow/research/")) {
47
+ return false;
48
+ }
34
49
  if (normalized.includes(".agents/skills/sync-upstream") ||
35
50
  normalized.includes(".claude/skills/sync-upstream")) {
36
51
  return false;
@@ -46,16 +61,21 @@ async function copyEntry(entry) {
46
61
  }
47
62
  }
48
63
  async function ensureEmptyDirectories() {
49
- const runsDir = path.join(templateRoot, "devflow", "runs");
50
64
  const discDir = path.join(templateRoot, "devflow", "discoveries");
51
- await fs.mkdir(runsDir, { recursive: true });
65
+ const featDir = path.join(templateRoot, "devflow", "history", "features");
66
+ const fixDir = path.join(templateRoot, "devflow", "history", "fixes");
67
+ const rollDir = path.join(templateRoot, "devflow", "history", "rollbacks");
52
68
  await fs.mkdir(discDir, { recursive: true });
53
- await fs.writeFile(path.join(runsDir, ".gitkeep"), "", "utf8");
69
+ await fs.mkdir(featDir, { recursive: true });
70
+ await fs.mkdir(fixDir, { recursive: true });
71
+ await fs.mkdir(rollDir, { recursive: true });
54
72
  await fs.writeFile(path.join(discDir, ".gitkeep"), "", "utf8");
55
73
  }
56
- async function sanitizeAgentsEntryFile(filePath) {
74
+ async function sanitizeStarterFiles() {
75
+ // 1. Sanitize AGENTS.md
57
76
  try {
58
- let content = await fs.readFile(filePath, "utf8");
77
+ const agentsPath = path.join(templateRoot, "AGENTS.md");
78
+ let agentsContent = await fs.readFile(agentsPath, "utf8");
59
79
  const maintainerCommandsRegex = /## Verification & Commands[\s\S]*$/;
60
80
  const starterCommands = `## Commands
61
81
 
@@ -64,14 +84,104 @@ async function sanitizeAgentsEntryFile(filePath) {
64
84
  - Test: \`npm test\`
65
85
  - Verify: \`npm run check\` (Run \`/onboard\` to auto-configure)
66
86
  `;
67
- content = content.replace(maintainerCommandsRegex, starterCommands);
68
- await fs.writeFile(filePath, content, "utf8");
87
+ agentsContent = agentsContent.replace(maintainerCommandsRegex, starterCommands);
88
+ await fs.writeFile(agentsPath, agentsContent, "utf8");
69
89
  }
70
90
  catch (error) {
71
- if (error.code !== "ENOENT") {
91
+ if (error.code !== "ENOENT")
72
92
  throw error;
73
- }
74
93
  }
94
+ // 2. Clean Starter HISTORY.md
95
+ const starterHistory = `# Master Release History Ledger
96
+
97
+ 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.
98
+
99
+ ---
100
+
101
+ ## 📜 Master Release Log
102
+
103
+ | Completed Date | Run ID | Category | Title | Git Commit | Status | Archive Link |
104
+ | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
105
+ | _No shipped runs yet_ | - | - | Run \`/feature\` or \`/00-discover\` to start your first delivery run | - | - | - |
106
+
107
+ ---
108
+
109
+ ## 🗄️ History Categories (The Core 3 Model)
110
+
111
+ - **\`features/\`**: New user-facing features, enhancements, architecture migrations, refactoring, and tooling/infra.
112
+ - **\`fixes/\`**: Bug fixes, hotfixes, regressions, security patches, and performance optimizations.
113
+ - **\`rollbacks/\`**: Safe feature reversal and rollback execution records.
114
+ `;
115
+ await fs.writeFile(path.join(templateRoot, "devflow", "history", "HISTORY.md"), starterHistory, "utf8");
116
+ // 3. Clean Starter ideas.md
117
+ const starterIdeas = `# 🔮 Centralized Idea Inbox & Backlog
118
+
119
+ > Record, analyze, and prioritize feature ideas before starting active delivery.
120
+ > Use the \`/idea\` command to quickly capture and evaluate new ideas.
121
+
122
+ ---
123
+
124
+ ## 💡 Active Idea Inbox
125
+
126
+ | ID | Title | Value (1-5) | Feasibility (1-5) | Status | Notes |
127
+ | :--- | :--- | :---: | :---: | :--- | :--- |
128
+ | _No pending ideas_ | - | - | - | Use \`/idea <your idea>\` to capture | - |
129
+
130
+ ---
131
+
132
+ ## 📦 Archived / Shipped Ideas
133
+
134
+ | ID | Title | Shipped In | Completed Date |
135
+ | :--- | :--- | :--- | :--- |
136
+ `;
137
+ await fs.writeFile(path.join(templateRoot, "devflow", "ideas.md"), starterIdeas, "utf8");
138
+ // 4. Clean Starter project-overview.md
139
+ const starterOverview = `# Project Overview & Source of Truth
140
+
141
+ > Living context artifact automatically synchronized with codebase reality and DevFlow delivery history.
142
+ > Run \`/onboard\` (for new projects) or \`/adopt\` (for existing codebases) to populate this file.
143
+
144
+ ---
145
+
146
+ ## 1. Project Purpose & Target Users
147
+ - Describe what this application does, who it is for, and the problems it solves.
148
+
149
+ ## 2. Architecture & Directory Layout
150
+ - Visual directory layout and overview of core modules.
151
+
152
+ ## 3. Technology Stack & Key Tooling
153
+ - Frameworks, languages, databases, ORMs, package managers, and runtime environment.
154
+
155
+ ## 4. Concrete Data Models & Entities
156
+ - Core entities, database schemas, API interfaces, and types.
157
+
158
+ ## 5. Shipped Capabilities & Milestones
159
+ - Verified features and components currently functional in the codebase.
160
+
161
+ ## 6. Verified Commands & Developer Workflow
162
+ - Dev Server, Build, Test, Lint, and Verify commands.
163
+
164
+ ## 7. Known Architectural Focus Areas
165
+ - Upcoming priorities, refactoring targets, or known technical considerations.
166
+ `;
167
+ await fs.writeFile(path.join(templateRoot, "devflow", "context", "project-overview.md"), starterOverview, "utf8");
168
+ // 5. Clean Starter current-stage.md
169
+ const starterStage = `# Current DevFlow Run Status
170
+
171
+ - **Active Discovery ID**: \`None\`
172
+ - **Active Running ID**: \`None\`
173
+ - **Current Stage**: \`Idle (Ready for new /feature, /fix, /00-discover, or /10-define)\`
174
+ - **Living Spec**: \`None\`
175
+ - **Last Completed Run**: \`None\`
176
+ - **Last Updated**: \`None\`
177
+ `;
178
+ await fs.writeFile(path.join(templateRoot, "devflow", "context", "current-stage.md"), starterStage, "utf8");
179
+ // 6. Clean Starter current-feature.md
180
+ const starterFeature = `# Current Feature
181
+
182
+ _Nothing in progress. Run /feature, /fix, or /rollback to start._
183
+ `;
184
+ await fs.writeFile(path.join(templateRoot, "devflow", "context", "current-feature.md"), starterFeature, "utf8");
75
185
  }
76
186
  async function main() {
77
187
  await fs.rm(templateRoot, { recursive: true, force: true, maxRetries: 5, retryDelay: 200 });
@@ -80,7 +190,7 @@ async function main() {
80
190
  await copyEntry(entry);
81
191
  }
82
192
  await ensureEmptyDirectories();
83
- await sanitizeAgentsEntryFile(path.join(templateRoot, "AGENTS.md"));
193
+ await sanitizeStarterFiles();
84
194
  }
85
195
  main().catch((error) => {
86
196
  console.error(error instanceof Error ? error.message : String(error));
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-template.js","sourceRoot":"","sources":["../../scripts/prepare-template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepare-template.js","sourceRoot":"","sources":["../../scripts/prepare-template.ts"],"names":[],"mappings":"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"}