@jakkrichm/create-nexus-devflow 2.9.5 → 2.10.1

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 (51) hide show
  1. package/README.md +3 -3
  2. package/dist/lib/dashboard-page.d.ts +1 -1
  3. package/dist/lib/dashboard-page.js +5 -1
  4. package/dist/lib/dashboard-page.js.map +1 -1
  5. package/dist/lib/project-config.d.ts +2 -0
  6. package/dist/lib/project-config.js +5 -2
  7. package/dist/lib/project-config.js.map +1 -1
  8. package/dist/lib/review.d.ts +38 -0
  9. package/dist/lib/review.js +429 -0
  10. package/dist/lib/review.js.map +1 -0
  11. package/dist/lib/skill-manager.d.ts +10 -1
  12. package/dist/lib/skill-manager.js +241 -19
  13. package/dist/lib/skill-manager.js.map +1 -1
  14. package/dist/lib/status.d.ts +19 -2
  15. package/dist/lib/status.js +83 -15
  16. package/dist/lib/status.js.map +1 -1
  17. package/dist/scripts/prepare-template.js +7 -0
  18. package/dist/scripts/prepare-template.js.map +1 -1
  19. package/package.json +1 -1
  20. package/template/.agents/skills/audit/SKILL.md +119 -144
  21. package/template/.agents/skills/audit/reference/independent-review.md +128 -0
  22. package/template/.agents/skills/autopilot/SKILL.md +22 -1
  23. package/template/.agents/skills/browser-tests/SKILL.md +163 -0
  24. package/template/.agents/skills/check/SKILL.md +32 -23
  25. package/template/.agents/skills/complete/SKILL.md +28 -39
  26. package/template/.agents/skills/continuous/SKILL.md +12 -0
  27. package/template/.agents/skills/doctor/SKILL.md +8 -4
  28. package/template/.agents/skills/feature/SKILL.md +22 -1
  29. package/template/.agents/skills/implement/SKILL.md +21 -1
  30. package/template/.agents/skills/onboard/SKILL.md +17 -1
  31. package/template/.agents/skills/{tests → setup-tests}/SKILL.md +8 -8
  32. package/template/.agents/skills/status/SKILL.md +12 -1
  33. package/template/.agents/skills/try/SKILL.md +9 -24
  34. package/template/.claude/skills/audit/SKILL.md +119 -144
  35. package/template/.claude/skills/audit/reference/independent-review.md +128 -0
  36. package/template/.claude/skills/autopilot/SKILL.md +22 -1
  37. package/template/.claude/skills/browser-tests/SKILL.md +163 -0
  38. package/template/.claude/skills/check/SKILL.md +32 -23
  39. package/template/.claude/skills/complete/SKILL.md +28 -39
  40. package/template/.claude/skills/continuous/SKILL.md +12 -0
  41. package/template/.claude/skills/doctor/SKILL.md +9 -4
  42. package/template/.claude/skills/feature/SKILL.md +22 -1
  43. package/template/.claude/skills/implement/SKILL.md +21 -1
  44. package/template/.claude/skills/onboard/SKILL.md +17 -1
  45. package/template/.claude/skills/{tests → setup-tests}/SKILL.md +8 -8
  46. package/template/.claude/skills/status/SKILL.md +12 -1
  47. package/template/.claude/skills/try/SKILL.md +9 -24
  48. package/template/AGENTS.md +8 -4
  49. package/template/devflow/build-plan.md +14 -0
  50. package/template/devflow/config.json +2 -0
  51. package/template/devflow/context/coding-standards.md +8 -1
@@ -0,0 +1,429 @@
1
+ import { execFile } from "node:child_process";
2
+ import { createHash } from "node:crypto";
3
+ import fs from "node:fs/promises";
4
+ import path from "node:path";
5
+ import { promisify } from "node:util";
6
+ const DEFAULT_REVIEW_PATH = path.join("devflow", "context", "review.md");
7
+ const RESET_MARKER = "_No independent review requested.";
8
+ const FULL_SHA_PATTERN = /^[0-9a-f]{40}$/;
9
+ const HASH_PATTERN = /^[0-9a-f]{64}$/;
10
+ const BASE_REF_PATTERN = /^(?!.*(?:\.\.|\/\/|@\{))[A-Za-z0-9](?:[A-Za-z0-9._/-]*[A-Za-z0-9])?$/;
11
+ const FIELD_PATTERN = /^\*\*([^*]+):\*\*\s*(.*?)\s*$/;
12
+ const RUNTIME_DEFAULT_MODEL = "runtime default (exact model not known until reviewer starts)";
13
+ const execFileAsync = promisify(execFile);
14
+ async function resolveReviewPaths(projectRoot, taskSlug) {
15
+ if (taskSlug) {
16
+ const taskDir = path.join(projectRoot, "devflow", "context", taskSlug);
17
+ return {
18
+ reviewPath: path.join(taskDir, "review.md"),
19
+ specPath: path.join(taskDir, "spec.md"),
20
+ findingsPath: path.join(taskDir, "findings.md")
21
+ };
22
+ }
23
+ // Check if there are active task directories in devflow/context/{xxx-slug}/
24
+ const contextDir = path.join(projectRoot, "devflow", "context");
25
+ try {
26
+ const entries = await fs.readdir(contextDir, { withFileTypes: true });
27
+ const taskDirs = entries.filter((e) => e.isDirectory() && !e.name.startsWith("."));
28
+ if (taskDirs.length === 1 && taskDirs[0]) {
29
+ const taskDir = path.join(contextDir, taskDirs[0].name);
30
+ return {
31
+ reviewPath: path.join(taskDir, "review.md"),
32
+ specPath: path.join(taskDir, "spec.md"),
33
+ findingsPath: path.join(taskDir, "findings.md")
34
+ };
35
+ }
36
+ }
37
+ catch {
38
+ // Ignore and fallback
39
+ }
40
+ return {
41
+ reviewPath: path.join(projectRoot, DEFAULT_REVIEW_PATH),
42
+ specPath: path.join(projectRoot, "devflow", "context", "current-feature.md"),
43
+ findingsPath: path.join(projectRoot, "devflow", "context", "findings.md")
44
+ };
45
+ }
46
+ async function readIndependentReview(projectRoot, taskSlug) {
47
+ const { reviewPath, specPath, findingsPath } = await resolveReviewPaths(projectRoot, taskSlug);
48
+ try {
49
+ const stats = await fs.lstat(reviewPath);
50
+ if (stats.isSymbolicLink()) {
51
+ return malformedSummary({
52
+ code: "unsafe_review_path",
53
+ message: "Independent review file is a symbolic link and was not read."
54
+ });
55
+ }
56
+ if (!stats.isFile()) {
57
+ return malformedSummary({
58
+ code: "invalid_review_path",
59
+ message: "Independent review path is not a regular file."
60
+ });
61
+ }
62
+ const parsed = parseIndependentReview(await fs.readFile(reviewPath, "utf8"));
63
+ if (parsed.state === "none" || parsed.state === "malformed") {
64
+ return parsed;
65
+ }
66
+ return {
67
+ ...parsed,
68
+ freshness: await determineFreshness(projectRoot, parsed, specPath, reviewPath, findingsPath)
69
+ };
70
+ }
71
+ catch (error) {
72
+ if (getErrorCode(error) === "ENOENT") {
73
+ return emptySummary();
74
+ }
75
+ throw error;
76
+ }
77
+ }
78
+ function parseIndependentReview(markdown) {
79
+ if (markdown.includes(RESET_MARKER) && !/^\*\*Status:\*\*/m.test(markdown)) {
80
+ return emptySummary();
81
+ }
82
+ const fields = new Map();
83
+ for (const line of markdown.split(/\r?\n/)) {
84
+ const match = line.match(FIELD_PATTERN);
85
+ if (match?.[1]) {
86
+ fields.set(normalizeLabel(match[1]), (match[2] || "").trim());
87
+ }
88
+ }
89
+ const state = normalizeState(fields.get("status"));
90
+ const targetCommit = normalizeHash(fields.get("target commit"), FULL_SHA_PATTERN);
91
+ const baseCommit = normalizeHash(fields.get("base commit"), FULL_SHA_PATTERN);
92
+ const baseRef = normalizeBaseRef(fields.get("base ref"));
93
+ const specHash = normalizeHash(fields.get("spec hash"), HASH_PATTERN);
94
+ const preparedBy = normalizeAdapter(fields.get("prepared by"));
95
+ const builderModel = normalizeText(fields.get("builder model"));
96
+ const requestedReviewer = normalizeAdapter(fields.get("requested reviewer"));
97
+ const requestedModel = normalizeText(fields.get("requested model"));
98
+ const requestedAt = normalizeTimestamp(fields.get("requested at"));
99
+ const workflow = normalizeWorkflow(fields.get("workflow"));
100
+ const checkRequired = normalizeBoolean(fields.get("check required"));
101
+ const reviewerAdapter = normalizeAdapter(fields.get("reviewer adapter"));
102
+ const reviewerModel = normalizeReviewerModel(fields.get("reviewer model"));
103
+ const reviewerContext = normalizeText(fields.get("reviewer context"));
104
+ const reviewedAt = normalizeText(fields.get("reviewed at"));
105
+ const scope = normalizeText(fields.get("scope"));
106
+ const lenses = normalizeLenses(fields.get("lenses"));
107
+ const verdict = normalizeVerdict(fields.get("verdict"));
108
+ const checkResult = normalizeCheckResult(fields.get("check result"));
109
+ const completedSectionsValid = [
110
+ "commands",
111
+ "evidence",
112
+ "findings",
113
+ "remaining risk"
114
+ ].every((heading) => readSection(markdown, heading) !== null);
115
+ const commonFieldsValid = state !== null &&
116
+ targetCommit !== null &&
117
+ baseCommit !== null &&
118
+ baseRef !== null &&
119
+ specHash !== null &&
120
+ preparedBy !== null &&
121
+ builderModel !== null &&
122
+ requestedReviewer !== null &&
123
+ requestedModel !== null &&
124
+ requestedAt !== null &&
125
+ workflow !== null &&
126
+ checkRequired !== null;
127
+ const completedFieldsValid = reviewerAdapter !== null &&
128
+ reviewerModel !== null &&
129
+ reviewerContext?.toLowerCase() === "fresh session" &&
130
+ normalizeTimestamp(reviewedAt || undefined) !== null &&
131
+ (scope?.toLowerCase() === "current" || scope?.toLowerCase() === "current-feature") &&
132
+ ["quality", "security", "performance", "tests"].every((lens) => lenses.includes(lens)) &&
133
+ verdict === state &&
134
+ checkResult !== null &&
135
+ completedSectionsValid &&
136
+ (state !== "passed" || !checkRequired || checkResult === "passed") &&
137
+ (state !== "passed" || checkRequired || checkResult === "not-required" || checkResult === "passed");
138
+ if (!commonFieldsValid ||
139
+ ((state === "passed" || state === "changes-requested") && !completedFieldsValid)) {
140
+ return malformedSummary({
141
+ code: "malformed_review",
142
+ message: "Independent review record is missing or has invalid required fields."
143
+ });
144
+ }
145
+ return {
146
+ state,
147
+ freshness: "unknown",
148
+ targetCommit,
149
+ baseCommit,
150
+ baseRef,
151
+ specHash,
152
+ preparedBy,
153
+ builderModel,
154
+ requestedReviewer,
155
+ requestedModel,
156
+ requestedAt,
157
+ workflow,
158
+ checkRequired,
159
+ reviewerAdapter,
160
+ reviewerModel,
161
+ reviewerContext,
162
+ reviewedAt,
163
+ scope,
164
+ lenses,
165
+ verdict,
166
+ checkResult,
167
+ warnings: []
168
+ };
169
+ }
170
+ async function determineFreshness(projectRoot, review, specPath, reviewPath, findingsPath) {
171
+ if (!review.targetCommit || !review.baseCommit || !review.baseRef || !review.specHash) {
172
+ return "unknown";
173
+ }
174
+ if (review.reviewerAdapter &&
175
+ review.requestedReviewer &&
176
+ review.reviewerAdapter !== review.requestedReviewer) {
177
+ return "stale";
178
+ }
179
+ if (review.reviewerModel &&
180
+ review.requestedModel &&
181
+ review.requestedModel !== RUNTIME_DEFAULT_MODEL &&
182
+ review.reviewerModel !== review.requestedModel) {
183
+ return "stale";
184
+ }
185
+ const [head, currentWork, mergeBase, permittedBaseRefs] = await Promise.all([
186
+ runOptionalGit(projectRoot, ["rev-parse", "HEAD"]),
187
+ readOptionalRegularFile(specPath),
188
+ runOptionalGit(projectRoot, [
189
+ "merge-base",
190
+ review.baseRef,
191
+ review.targetCommit
192
+ ]),
193
+ readPermittedBaseRefs(projectRoot)
194
+ ]);
195
+ if (!head || currentWork === null) {
196
+ return "unknown";
197
+ }
198
+ if (review.baseCommit === review.targetCommit ||
199
+ !permittedBaseRefs.has(review.baseRef) ||
200
+ mergeBase !== review.baseCommit) {
201
+ return "stale";
202
+ }
203
+ const currentSpecHash = createHash("sha256").update(currentWork).digest("hex");
204
+ if (head !== review.targetCommit || currentSpecHash !== review.specHash) {
205
+ return "stale";
206
+ }
207
+ const relReviewPath = path.relative(projectRoot, reviewPath).replace(/\\/g, "/");
208
+ const relFindingsPath = path.relative(projectRoot, findingsPath).replace(/\\/g, "/");
209
+ const relevantDiff = await hasRelevantDiff(projectRoot, review.targetCommit, relReviewPath, relFindingsPath);
210
+ return relevantDiff === null ? "unknown" : relevantDiff ? "stale" : "current";
211
+ }
212
+ async function hasRelevantDiff(projectRoot, targetCommit, relReviewPath, relFindingsPath) {
213
+ try {
214
+ await execFileAsync("git", [
215
+ "-C",
216
+ projectRoot,
217
+ "diff",
218
+ "--quiet",
219
+ targetCommit,
220
+ "--",
221
+ ".",
222
+ `:(exclude)${relReviewPath}`,
223
+ `:(exclude)${relFindingsPath}`
224
+ ], { encoding: "utf8", maxBuffer: 1024 * 1024 });
225
+ }
226
+ catch (error) {
227
+ if (getErrorCode(error) === "1") {
228
+ return true;
229
+ }
230
+ return null;
231
+ }
232
+ const untracked = await runOptionalGit(projectRoot, [
233
+ "ls-files",
234
+ "--others",
235
+ "--exclude-standard",
236
+ "-z"
237
+ ]);
238
+ if (untracked === null) {
239
+ return null;
240
+ }
241
+ return untracked
242
+ .split("\0")
243
+ .filter(Boolean)
244
+ .some((file) => file !== relReviewPath && file !== relFindingsPath);
245
+ }
246
+ async function readOptionalRegularFile(filePath) {
247
+ try {
248
+ const stats = await fs.lstat(filePath);
249
+ if (stats.isSymbolicLink() || !stats.isFile()) {
250
+ return null;
251
+ }
252
+ return await fs.readFile(filePath, "utf8");
253
+ }
254
+ catch (error) {
255
+ if (getErrorCode(error) === "ENOENT") {
256
+ return null;
257
+ }
258
+ throw error;
259
+ }
260
+ }
261
+ async function runOptionalGit(projectRoot, args) {
262
+ try {
263
+ const result = await execFileAsync("git", ["-C", projectRoot, ...args], {
264
+ encoding: "utf8",
265
+ maxBuffer: 1024 * 1024
266
+ });
267
+ return result.stdout.trim();
268
+ }
269
+ catch {
270
+ return null;
271
+ }
272
+ }
273
+ async function readPermittedBaseRefs(projectRoot) {
274
+ const refs = new Set();
275
+ const remotes = await runOptionalGit(projectRoot, ["remote"]);
276
+ for (const remote of remotes?.split(/\r?\n/).filter(Boolean) || []) {
277
+ const remoteDefault = await runOptionalGit(projectRoot, [
278
+ "symbolic-ref",
279
+ "--quiet",
280
+ "--short",
281
+ `refs/remotes/${remote}/HEAD`
282
+ ]);
283
+ if (remoteDefault) {
284
+ refs.add(remoteDefault);
285
+ }
286
+ }
287
+ for (const localDefault of ["main", "master"]) {
288
+ if (await runOptionalGit(projectRoot, [
289
+ "rev-parse",
290
+ "--verify",
291
+ `${localDefault}^{commit}`
292
+ ])) {
293
+ refs.add(localDefault);
294
+ }
295
+ }
296
+ return refs;
297
+ }
298
+ function normalizeLabel(value) {
299
+ return value.trim().toLowerCase();
300
+ }
301
+ function normalizeState(value) {
302
+ const normalized = value?.trim().toLowerCase();
303
+ return normalized === "pending" ||
304
+ normalized === "passed" ||
305
+ normalized === "changes-requested"
306
+ ? normalized
307
+ : null;
308
+ }
309
+ function normalizeAdapter(value) {
310
+ const normalized = value?.trim().toLowerCase();
311
+ return normalized === "antigravity" ||
312
+ normalized === "claude" ||
313
+ normalized === "codex" ||
314
+ normalized === "copilot" ||
315
+ normalized === "opencode"
316
+ ? normalized
317
+ : null;
318
+ }
319
+ function normalizeHash(value, pattern) {
320
+ const normalized = value?.trim().toLowerCase() || "";
321
+ return pattern.test(normalized) ? normalized : null;
322
+ }
323
+ function normalizeBaseRef(value) {
324
+ const normalized = value?.trim() || "";
325
+ return BASE_REF_PATTERN.test(normalized) ? normalized : null;
326
+ }
327
+ function normalizeText(value) {
328
+ const normalized = value?.trim();
329
+ return normalized ? normalized : null;
330
+ }
331
+ function normalizeReviewerModel(value) {
332
+ const normalized = normalizeText(value);
333
+ return normalized === RUNTIME_DEFAULT_MODEL ? null : normalized;
334
+ }
335
+ function normalizeTimestamp(value) {
336
+ const normalized = normalizeText(value);
337
+ return normalized && !Number.isNaN(Date.parse(normalized)) ? normalized : null;
338
+ }
339
+ function normalizeWorkflow(value) {
340
+ const normalized = value?.trim().toLowerCase();
341
+ return normalized === "continuous" || normalized === "regular"
342
+ ? normalized
343
+ : null;
344
+ }
345
+ function normalizeBoolean(value) {
346
+ const normalized = value?.trim().toLowerCase();
347
+ return normalized === "yes" ? true : normalized === "no" ? false : null;
348
+ }
349
+ function normalizeLenses(value) {
350
+ return value
351
+ ? value.split(",").map((lens) => lens.trim().toLowerCase()).filter(Boolean)
352
+ : [];
353
+ }
354
+ function normalizeVerdict(value) {
355
+ const normalized = value?.trim().toLowerCase();
356
+ return normalized === "changes-requested" || normalized === "passed"
357
+ ? normalized
358
+ : null;
359
+ }
360
+ function normalizeCheckResult(value) {
361
+ const normalized = value?.trim().toLowerCase();
362
+ return normalized === "failed" ||
363
+ normalized === "not-required" ||
364
+ normalized === "passed" ||
365
+ normalized === "unavailable"
366
+ ? normalized
367
+ : null;
368
+ }
369
+ function readSection(markdown, heading) {
370
+ const lines = markdown.split(/\r?\n/);
371
+ const start = lines.findIndex((line) => line.trim().toLowerCase() === `## ${heading}`);
372
+ if (start === -1) {
373
+ return null;
374
+ }
375
+ const content = [];
376
+ for (let index = start + 1; index < lines.length; index += 1) {
377
+ const line = lines[index] || "";
378
+ if (/^##\s+/.test(line)) {
379
+ break;
380
+ }
381
+ content.push(line);
382
+ }
383
+ const normalized = content.join("\n").trim();
384
+ return normalized ? normalized : null;
385
+ }
386
+ function emptySummary() {
387
+ return {
388
+ state: "none",
389
+ freshness: "not-applicable",
390
+ targetCommit: null,
391
+ baseCommit: null,
392
+ baseRef: null,
393
+ specHash: null,
394
+ preparedBy: null,
395
+ builderModel: null,
396
+ requestedReviewer: null,
397
+ requestedModel: null,
398
+ requestedAt: null,
399
+ workflow: null,
400
+ checkRequired: null,
401
+ reviewerAdapter: null,
402
+ reviewerModel: null,
403
+ reviewerContext: null,
404
+ reviewedAt: null,
405
+ scope: null,
406
+ lenses: [],
407
+ verdict: null,
408
+ checkResult: null,
409
+ warnings: []
410
+ };
411
+ }
412
+ function malformedSummary(warning) {
413
+ return {
414
+ ...emptySummary(),
415
+ state: "malformed",
416
+ freshness: "unknown",
417
+ warnings: [warning]
418
+ };
419
+ }
420
+ function getErrorCode(error) {
421
+ return typeof error === "object" &&
422
+ error !== null &&
423
+ "code" in error &&
424
+ (typeof error.code === "string" || typeof error.code === "number")
425
+ ? String(error.code)
426
+ : undefined;
427
+ }
428
+ export { DEFAULT_REVIEW_PATH, parseIndependentReview, readIndependentReview };
429
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../lib/review.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@ export interface InstalledSkillRecord {
4
4
  version?: string;
5
5
  description?: string;
6
6
  installedAt: string;
7
- type?: "git" | "local" | "npm";
7
+ type?: "git" | "local" | "npm" | "compound-knowledge";
8
+ referencePath?: string;
8
9
  }
9
10
  export interface SkillDetail {
10
11
  name: string;
@@ -33,6 +34,14 @@ export interface RecommendedSkillPreset {
33
34
  all?: boolean;
34
35
  description?: string;
35
36
  }
37
+ export declare const KNOWN_SKILL_ALIASES: Record<string, {
38
+ source: string;
39
+ name?: string;
40
+ all?: boolean;
41
+ type?: "git" | "local" | "compound-knowledge";
42
+ referencePath?: string;
43
+ description?: string;
44
+ }>;
36
45
  export declare const RECOMMENDED_THIRD_PARTY_SKILLS: readonly RecommendedSkillPreset[];
37
46
  export interface InstallRecommendedOptions {
38
47
  presets?: readonly RecommendedSkillPreset[];