@jakkrichm/create-nexus-devflow 2.6.2 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/lib/antigravity-artifacts.d.ts +52 -0
- package/dist/lib/antigravity-artifacts.js +170 -0
- package/dist/lib/antigravity-artifacts.js.map +1 -0
- package/dist/lib/antigravity-hooks.d.ts +31 -0
- package/dist/lib/antigravity-hooks.js +85 -0
- package/dist/lib/antigravity-hooks.js.map +1 -0
- package/dist/lib/antigravity-plugin.d.ts +51 -0
- package/dist/lib/antigravity-plugin.js +179 -0
- package/dist/lib/antigravity-plugin.js.map +1 -0
- package/dist/lib/antigravity-scheduler.d.ts +39 -0
- package/dist/lib/antigravity-scheduler.js +95 -0
- package/dist/lib/antigravity-scheduler.js.map +1 -0
- package/dist/lib/branch-context.d.ts +1 -0
- package/dist/lib/branch-context.js +14 -9
- package/dist/lib/branch-context.js.map +1 -1
- package/dist/lib/current-work.js +10 -22
- package/dist/lib/current-work.js.map +1 -1
- package/dist/lib/doctor.js +34 -6
- package/dist/lib/doctor.js.map +1 -1
- package/dist/lib/findings.js +14 -10
- package/dist/lib/findings.js.map +1 -1
- package/dist/lib/mcp.js +3 -3
- package/dist/lib/mcp.js.map +1 -1
- package/dist/lib/openai-tools.d.ts +34 -0
- package/dist/lib/openai-tools.js +57 -0
- package/dist/lib/openai-tools.js.map +1 -0
- package/dist/lib/project-config.d.ts +55 -0
- package/dist/lib/project-config.js +228 -0
- package/dist/lib/project-config.js.map +1 -0
- package/dist/lib/status.d.ts +7 -0
- package/dist/lib/status.js +23 -1
- package/dist/lib/status.js.map +1 -1
- package/dist/lib/swarm-orchestrator.js +14 -8
- package/dist/lib/swarm-orchestrator.js.map +1 -1
- package/dist/lib/visual-subagent.d.ts +32 -0
- package/dist/lib/visual-subagent.js +98 -0
- package/dist/lib/visual-subagent.js.map +1 -0
- package/dist/lib/workflow-state.js +3 -1
- package/dist/lib/workflow-state.js.map +1 -1
- package/dist/scripts/prepare-template.js +0 -19
- package/dist/scripts/prepare-template.js.map +1 -1
- package/package.json +1 -1
- package/template/.agents/skills/audit/SKILL.md +7 -7
- package/template/.agents/skills/autopilot/SKILL.md +34 -58
- package/template/.agents/skills/brief/SKILL.md +1 -1
- package/template/.agents/skills/check/SKILL.md +4 -4
- package/template/.agents/skills/complete/SKILL.md +13 -46
- package/template/.agents/skills/continuous/SKILL.md +117 -0
- package/template/.agents/skills/convert-any-to-md/scripts/__pycache__/convert_any_to_md.cpython-314.pyc +0 -0
- package/template/.agents/skills/devflow/SKILL.md +12 -12
- package/template/.agents/skills/discovery/SKILL.md +2 -2
- package/template/.agents/skills/doctor/SKILL.md +15 -11
- package/template/.agents/skills/feature/SKILL.md +5 -6
- package/template/.agents/skills/fix/SKILL.md +2 -2
- package/template/.agents/skills/implement/SKILL.md +11 -12
- package/template/.agents/skills/release/SKILL.md +1 -1
- package/template/.agents/skills/report-html/SKILL.md +3 -3
- package/template/.agents/skills/rollback/SKILL.md +4 -6
- package/template/.agents/skills/status/SKILL.md +20 -27
- package/template/.agents/skills/try/SKILL.md +5 -6
- package/template/.claude/skills/audit/SKILL.md +7 -7
- package/template/.claude/skills/autopilot/SKILL.md +34 -58
- package/template/.claude/skills/brief/SKILL.md +1 -1
- package/template/.claude/skills/check/SKILL.md +4 -4
- package/template/.claude/skills/complete/SKILL.md +13 -46
- package/template/.claude/skills/continuous/SKILL.md +117 -0
- package/template/.claude/skills/convert-any-to-md/scripts/__pycache__/convert_any_to_md.cpython-314.pyc +0 -0
- package/template/.claude/skills/devflow/SKILL.md +12 -12
- package/template/.claude/skills/discovery/SKILL.md +2 -2
- package/template/.claude/skills/doctor/SKILL.md +15 -11
- package/template/.claude/skills/feature/SKILL.md +5 -6
- package/template/.claude/skills/fix/SKILL.md +2 -2
- package/template/.claude/skills/implement/SKILL.md +11 -12
- package/template/.claude/skills/release/SKILL.md +1 -1
- package/template/.claude/skills/report-html/SKILL.md +3 -3
- package/template/.claude/skills/rollback/SKILL.md +4 -6
- package/template/.claude/skills/status/SKILL.md +20 -27
- package/template/.claude/skills/try/SKILL.md +5 -6
- package/template/AGENTS.md +29 -23
- package/template/LICENSE +21 -21
- package/template/devflow/build-plan.md +18 -0
- package/template/devflow/config.json +33 -0
- package/template/devflow/context/ai-interaction.md +30 -16
- package/template/devflow/reference/feature-spec-template.md +2 -2
- package/template/devflow/reference/running-id-contract.md +0 -3
- package/template/devflow/context/current-feature.md +0 -3
- package/template/devflow/context/current-stage.md +0 -11
- package/template/devflow/context/findings.md +0 -10
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import fsSync from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
3
4
|
import { resolveActiveContextPaths } from "./branch-context.js";
|
|
4
5
|
export const SWARM_ROSTER = [
|
|
5
6
|
{
|
|
@@ -36,17 +37,22 @@ export const SWARM_ROSTER = [
|
|
|
36
37
|
*/
|
|
37
38
|
export async function generateSwarmPlan(projectRoot, options = {}) {
|
|
38
39
|
const contextPaths = await resolveActiveContextPaths(projectRoot, options.branch);
|
|
39
|
-
let runId = "ACTIVE";
|
|
40
|
+
let runId = contextPaths.runId || "ACTIVE";
|
|
40
41
|
let title = "Active Feature";
|
|
41
42
|
let track = "fast";
|
|
42
43
|
const tasks = [];
|
|
44
|
+
const relSpecPath = contextPaths.featureSpecPath
|
|
45
|
+
? path.relative(projectRoot, contextPaths.featureSpecPath).replace(/\\/g, "/")
|
|
46
|
+
: "devflow/context/spec.md";
|
|
43
47
|
if (fsSync.existsSync(contextPaths.featureSpecPath)) {
|
|
44
48
|
const specContent = await fs.readFile(contextPaths.featureSpecPath, "utf8");
|
|
45
49
|
// Extract title & ID
|
|
46
|
-
const titleMatch = specContent.match(/^#\s
|
|
50
|
+
const titleMatch = specContent.match(/^#\s+(?:📐\s+)?(?:\[([^\]]+)\]\s+)?(.*)/m);
|
|
47
51
|
if (titleMatch) {
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
if (titleMatch[1])
|
|
53
|
+
runId = titleMatch[1];
|
|
54
|
+
if (titleMatch[2])
|
|
55
|
+
title = titleMatch[2].trim();
|
|
50
56
|
}
|
|
51
57
|
// Parse checklist tasks
|
|
52
58
|
const lines = specContent.split("\n");
|
|
@@ -76,7 +82,7 @@ export async function generateSwarmPlan(projectRoot, options = {}) {
|
|
|
76
82
|
role,
|
|
77
83
|
title: taskTitle,
|
|
78
84
|
description: `Execute ${taskTitle} with role-specialized focus and rigorous verification.`,
|
|
79
|
-
requiredContext: [
|
|
85
|
+
requiredContext: [relSpecPath, "devflow/context/coding-standards.md"],
|
|
80
86
|
verificationCriterion: `Pass multi-lane quality gate and done-when assertions for ${taskTitle}.`,
|
|
81
87
|
parallelGroup: role === "qa" || role === "security" ? 2 : 1
|
|
82
88
|
});
|
|
@@ -91,7 +97,7 @@ export async function generateSwarmPlan(projectRoot, options = {}) {
|
|
|
91
97
|
role: "architect",
|
|
92
98
|
title: "Specification & Alignment Verification",
|
|
93
99
|
description: "Align living spec with project architectural invariants.",
|
|
94
|
-
requiredContext: [
|
|
100
|
+
requiredContext: [relSpecPath],
|
|
95
101
|
verificationCriterion: "Spec adheres to 3-Pillars contract.",
|
|
96
102
|
parallelGroup: 1
|
|
97
103
|
}, {
|
|
@@ -99,7 +105,7 @@ export async function generateSwarmPlan(projectRoot, options = {}) {
|
|
|
99
105
|
role: "coder",
|
|
100
106
|
title: "Core Logic Implementation",
|
|
101
107
|
description: "Develop required functions and modules.",
|
|
102
|
-
requiredContext: [
|
|
108
|
+
requiredContext: [relSpecPath, "devflow/context/coding-standards.md"],
|
|
103
109
|
verificationCriterion: "Code builds and passes typecheck.",
|
|
104
110
|
parallelGroup: 2
|
|
105
111
|
}, {
|
|
@@ -107,7 +113,7 @@ export async function generateSwarmPlan(projectRoot, options = {}) {
|
|
|
107
113
|
role: "qa",
|
|
108
114
|
title: "Automated Test & Edge Case Coverage",
|
|
109
115
|
description: "Author comprehensive unit tests and run verification.",
|
|
110
|
-
requiredContext: [
|
|
116
|
+
requiredContext: [relSpecPath],
|
|
111
117
|
verificationCriterion: "100% test pass rate with zero regressions.",
|
|
112
118
|
parallelGroup: 2
|
|
113
119
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swarm-orchestrator.js","sourceRoot":"","sources":["../../lib/swarm-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAoChE,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,6BAA6B;QACnC,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,uFAAuF;QACvG,oBAAoB,EAAE,WAAW;KAClC;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,gCAAgC;QACtC,MAAM,EAAE,OAAO;QACf,cAAc,EAAE,uFAAuF;QACvG,oBAAoB,EAAE,UAAU;KACjC;IACD;QACE,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,qCAAqC;QAC3C,MAAM,EAAE,KAAK;QACb,cAAc,EAAE,gFAAgF;QAChG,oBAAoB,EAAE,WAAW;KAClC;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,8BAA8B;QACpC,MAAM,EAAE,KAAK;QACb,cAAc,EAAE,2FAA2F;QAC3G,oBAAoB,EAAE,MAAM;KAC7B;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,UAA4B,EAAE;IAE9B,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAElF,IAAI,KAAK,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"swarm-orchestrator.js","sourceRoot":"","sources":["../../lib/swarm-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAoChE,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,6BAA6B;QACnC,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,uFAAuF;QACvG,oBAAoB,EAAE,WAAW;KAClC;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,gCAAgC;QACtC,MAAM,EAAE,OAAO;QACf,cAAc,EAAE,uFAAuF;QACvG,oBAAoB,EAAE,UAAU;KACjC;IACD;QACE,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,qCAAqC;QAC3C,MAAM,EAAE,KAAK;QACb,cAAc,EAAE,gFAAgF;QAChG,oBAAoB,EAAE,WAAW;KAClC;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,8BAA8B;QACpC,MAAM,EAAE,KAAK;QACb,cAAc,EAAE,2FAA2F;QAC3G,oBAAoB,EAAE,MAAM;KAC7B;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,UAA4B,EAAE;IAE9B,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAElF,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,IAAI,QAAQ,CAAC;IAC3C,IAAI,KAAK,GAAG,gBAAgB,CAAC;IAC7B,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,MAAM,KAAK,GAAmB,EAAE,CAAC;IAEjC,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe;QAC9C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;QAC9E,CAAC,CAAC,yBAAyB,CAAC;IAE9B,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC;QACpD,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAE5E,qBAAqB;QACrB,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACjF,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,CAAC,CAAC;gBAAE,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,UAAU,CAAC,CAAC,CAAC;gBAAE,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC;QAED,wBAAwB;QACxB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxD,WAAW,GAAG,IAAI,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpE,WAAW,GAAG,KAAK,CAAC;gBACpB,SAAS;YACX,CAAC;YAED,IAAI,WAAW,IAAI,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,SAAS,EAAE,CAAC;gBAEzD,IAAI,IAAI,GAAc,OAAO,CAAC;gBAC9B,IAAI,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC;oBAAE,IAAI,GAAG,IAAI,CAAC;qBACpD,IAAI,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC;oBAAE,IAAI,GAAG,UAAU,CAAC;qBACvE,IAAI,iCAAiC,CAAC,IAAI,CAAC,SAAS,CAAC;oBAAE,IAAI,GAAG,WAAW,CAAC;gBAE/E,KAAK,CAAC,IAAI,CAAC;oBACT,EAAE,EAAE,QAAQ,SAAS,EAAE;oBACvB,IAAI;oBACJ,KAAK,EAAE,SAAS;oBAChB,WAAW,EAAE,WAAW,SAAS,yDAAyD;oBAC1F,eAAe,EAAE,CAAC,WAAW,EAAE,qCAAqC,CAAC;oBACrE,qBAAqB,EAAE,6DAA6D,SAAS,GAAG;oBAChG,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC5D,CAAC,CAAC;gBACH,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CACR;YACE,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,wCAAwC;YAC/C,WAAW,EAAE,0DAA0D;YACvE,eAAe,EAAE,CAAC,WAAW,CAAC;YAC9B,qBAAqB,EAAE,qCAAqC;YAC5D,aAAa,EAAE,CAAC;SACjB,EACD;YACE,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,2BAA2B;YAClC,WAAW,EAAE,yCAAyC;YACtD,eAAe,EAAE,CAAC,WAAW,EAAE,qCAAqC,CAAC;YACrE,qBAAqB,EAAE,mCAAmC;YAC1D,aAAa,EAAE,CAAC;SACjB,EACD;YACE,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,qCAAqC;YAC5C,WAAW,EAAE,uDAAuD;YACpE,eAAe,EAAE,CAAC,WAAW,CAAC;YAC9B,qBAAqB,EAAE,4CAA4C;YACnE,aAAa,EAAE,CAAC;SACjB,EACD;YACE,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,iCAAiC;YACxC,WAAW,EAAE,gDAAgD;YAC7D,eAAe,EAAE,CAAC,6BAA6B,CAAC;YAChD,qBAAqB,EAAE,0BAA0B;YACjD,aAAa,EAAE,CAAC;SACjB,CACF,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GACrB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;IAEnE,OAAO;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,UAAU,EAAE,KAAK,CAAC,MAAM;QACxB,iBAAiB;QACjB,WAAW,EAAE,YAAY;QACzB,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface VisualQaOptions {
|
|
2
|
+
targetUrl: string;
|
|
3
|
+
runId?: string;
|
|
4
|
+
criteria?: string[];
|
|
5
|
+
taskName?: string;
|
|
6
|
+
recordingName?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface BrowserSubagentTaskPayload {
|
|
9
|
+
taskName: string;
|
|
10
|
+
recordingName: string;
|
|
11
|
+
taskSummary: string;
|
|
12
|
+
prompt: string;
|
|
13
|
+
}
|
|
14
|
+
export interface VisualEvidenceItem {
|
|
15
|
+
type: "screenshot" | "video" | "console";
|
|
16
|
+
pathOrText: string;
|
|
17
|
+
caption: string;
|
|
18
|
+
criterionIndex?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface VisualEvidenceSummary {
|
|
21
|
+
runId: string;
|
|
22
|
+
targetUrl: string;
|
|
23
|
+
timestamp: string;
|
|
24
|
+
items: VisualEvidenceItem[];
|
|
25
|
+
notes?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function generateBrowserSubagentTask(options: VisualQaOptions): BrowserSubagentTaskPayload;
|
|
28
|
+
export declare function formatVisualEvidenceMarkdown(summary: VisualEvidenceSummary): string;
|
|
29
|
+
export declare function recordVisualEvidenceToSpec(projectRoot: string, summary: VisualEvidenceSummary): Promise<{
|
|
30
|
+
updated: boolean;
|
|
31
|
+
filePath: string;
|
|
32
|
+
}>;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { resolveActiveContextPaths } from "./branch-context.js";
|
|
4
|
+
export function generateBrowserSubagentTask(options) {
|
|
5
|
+
const runId = options.runId || "active-run";
|
|
6
|
+
const taskName = options.taskName || `Visual QA Verification for ${runId}`;
|
|
7
|
+
const cleanRecordingName = (options.recordingName || `${runId.slice(0, 3)}_visual_qa`)
|
|
8
|
+
.toLowerCase()
|
|
9
|
+
.replace(/[^a-z0-9_]/g, "_")
|
|
10
|
+
.slice(0, 20);
|
|
11
|
+
const criteriaText = options.criteria && options.criteria.length > 0
|
|
12
|
+
? options.criteria.map((c, i) => ` ${i + 1}. ${c}`).join("\n")
|
|
13
|
+
: " 1. Verify application loads with zero console/network errors\n 2. Assert key UI elements and interactive flows respond as specified";
|
|
14
|
+
const taskSummary = `Perform autonomous browser visual QA testing on ${options.targetUrl} and record session proof.`;
|
|
15
|
+
const prompt = `You are a Visual QA Verifier Agent for Nexus-DevFlow run "${runId}".
|
|
16
|
+
Your mission is to autonomously navigate to "${options.targetUrl}", verify acceptance criteria, and capture visual proof.
|
|
17
|
+
|
|
18
|
+
Acceptance Criteria to verify:
|
|
19
|
+
${criteriaText}
|
|
20
|
+
|
|
21
|
+
Instructions:
|
|
22
|
+
1. Open the URL: "${options.targetUrl}" using browser navigation tools.
|
|
23
|
+
2. Verify visual aesthetics, layout integrity, and responsive design.
|
|
24
|
+
3. Check browser console logs and network activity for unexpected errors.
|
|
25
|
+
4. Interact with primary buttons/forms/inputs to prove dynamic functionality.
|
|
26
|
+
5. Capture a screenshot of the final verified state.
|
|
27
|
+
6. Return a comprehensive report containing:
|
|
28
|
+
- Status: PASSED or FAILED for each criterion
|
|
29
|
+
- List of captured screenshot paths
|
|
30
|
+
- Any console warnings or errors observed.`;
|
|
31
|
+
return {
|
|
32
|
+
taskName,
|
|
33
|
+
recordingName: cleanRecordingName,
|
|
34
|
+
taskSummary,
|
|
35
|
+
prompt
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export function formatVisualEvidenceMarkdown(summary) {
|
|
39
|
+
const lines = [];
|
|
40
|
+
lines.push(`### 📸 Visual Browser QA Evidence (${summary.runId})`);
|
|
41
|
+
lines.push(`- **Target URL**: \`${summary.targetUrl}\``);
|
|
42
|
+
lines.push(`- **Timestamp**: ${summary.timestamp}`);
|
|
43
|
+
if (summary.notes) {
|
|
44
|
+
lines.push(`- **Notes**: ${summary.notes}`);
|
|
45
|
+
}
|
|
46
|
+
lines.push("");
|
|
47
|
+
const screenshots = summary.items.filter((i) => i.type === "screenshot");
|
|
48
|
+
const videos = summary.items.filter((i) => i.type === "video");
|
|
49
|
+
const consoleLogs = summary.items.filter((i) => i.type === "console");
|
|
50
|
+
if (screenshots.length > 1) {
|
|
51
|
+
lines.push("````carousel");
|
|
52
|
+
screenshots.forEach((s, idx) => {
|
|
53
|
+
if (idx > 0)
|
|
54
|
+
lines.push("<!-- slide -->");
|
|
55
|
+
lines.push(``);
|
|
56
|
+
lines.push(`*${s.caption}*`);
|
|
57
|
+
});
|
|
58
|
+
lines.push("````\n");
|
|
59
|
+
}
|
|
60
|
+
else if (screenshots.length === 1) {
|
|
61
|
+
const s = screenshots[0];
|
|
62
|
+
lines.push(`\n`);
|
|
63
|
+
}
|
|
64
|
+
if (videos.length > 0) {
|
|
65
|
+
for (const v of videos) {
|
|
66
|
+
lines.push(`> [!NOTE]\n> **Session Recording**: [${v.caption}](${v.pathOrText})\n`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (consoleLogs.length > 0) {
|
|
70
|
+
lines.push("```text");
|
|
71
|
+
for (const c of consoleLogs) {
|
|
72
|
+
lines.push(`[Console Evidence] ${c.caption}: ${c.pathOrText}`);
|
|
73
|
+
}
|
|
74
|
+
lines.push("```\n");
|
|
75
|
+
}
|
|
76
|
+
return lines.join("\n");
|
|
77
|
+
}
|
|
78
|
+
export async function recordVisualEvidenceToSpec(projectRoot, summary) {
|
|
79
|
+
const contextPaths = await resolveActiveContextPaths(projectRoot);
|
|
80
|
+
const specPath = contextPaths.featureSpecPath || path.join(projectRoot, "devflow", "context", "current-feature.md");
|
|
81
|
+
try {
|
|
82
|
+
const current = await fs.readFile(specPath, "utf8");
|
|
83
|
+
const evidenceMarkdown = formatVisualEvidenceMarkdown(summary);
|
|
84
|
+
let updatedContent = current;
|
|
85
|
+
if (current.includes("## 4. Verification Evidence & Quality Gates")) {
|
|
86
|
+
updatedContent = current.replace("## 4. Verification Evidence & Quality Gates", `## 4. Verification Evidence & Quality Gates\n\n${evidenceMarkdown}`);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
updatedContent = current + `\n\n${evidenceMarkdown}\n`;
|
|
90
|
+
}
|
|
91
|
+
await fs.writeFile(specPath, updatedContent, "utf8");
|
|
92
|
+
return { updated: true, filePath: specPath };
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return { updated: false, filePath: specPath };
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=visual-subagent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visual-subagent.js","sourceRoot":"","sources":["../../lib/visual-subagent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { resolveActiveRunContext } from "./branch-context.js";
|
|
3
4
|
const FAST_STAGES = ["feature-fix", "implement", "check", "complete"];
|
|
4
5
|
const PREFLIGHT_STAGES = ["idea", "grill", "brainstorm", "discovery"];
|
|
5
6
|
async function readWorkflowState(projectRoot, currentWork) {
|
|
6
|
-
const
|
|
7
|
+
const runContext = await resolveActiveRunContext(projectRoot);
|
|
8
|
+
const stagePath = runContext.stagePath || path.join(projectRoot, "devflow", "context", "current-stage.md");
|
|
7
9
|
let markdown = "";
|
|
8
10
|
try {
|
|
9
11
|
markdown = await fs.readFile(stagePath, "utf8");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../../lib/workflow-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../../lib/workflow-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -173,25 +173,6 @@ This master ledger tracks all released delivery runs, milestones, and rollbacks
|
|
|
173
173
|
- Upcoming priorities, refactoring targets, or known technical considerations.
|
|
174
174
|
`;
|
|
175
175
|
await fs.writeFile(path.join(templateRoot, "devflow", "context", "project-overview.md"), starterOverview, "utf8");
|
|
176
|
-
const starterStage = `# Current Stage
|
|
177
|
-
|
|
178
|
-
- Active Discovery ID: \`None\`
|
|
179
|
-
- Active Running ID: \`None\`
|
|
180
|
-
- Track: \`idle\`
|
|
181
|
-
- Current Stage: \`idle\`
|
|
182
|
-
- Active Branch: \`main\`
|
|
183
|
-
- Living Spec: \`devflow/context/current-feature.md\`
|
|
184
|
-
- Next Action: \`Run /feature, /fix, or /discovery to start new work.\`
|
|
185
|
-
- Last Completed Run: \`None\`
|
|
186
|
-
- Last Updated: \`None\`
|
|
187
|
-
`;
|
|
188
|
-
await fs.writeFile(path.join(templateRoot, "devflow", "context", "current-stage.md"), starterStage, "utf8");
|
|
189
|
-
// 6. Clean Starter current-feature.md
|
|
190
|
-
const starterFeature = `# Current Feature
|
|
191
|
-
|
|
192
|
-
_Nothing in progress. Run /feature, /fix, or /rollback to start._
|
|
193
|
-
`;
|
|
194
|
-
await fs.writeFile(path.join(templateRoot, "devflow", "context", "current-feature.md"), starterFeature, "utf8");
|
|
195
176
|
}
|
|
196
177
|
async function main() {
|
|
197
178
|
const inventory = await loadCoreSkillInventory(path.join(repoRoot, "agent-bundle.manifest.json"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-template.js","sourceRoot":"","sources":["../../scripts/prepare-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAEL,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,gCAAgC,CAAC;AAExC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAExD,MAAM,OAAO,GAAG;IACd,WAAW;IACX,WAAW;IACX,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACV,CAAC;AAEF,KAAK,UAAU,SAAS,CAAC,KAAa,EAAE,SAA6B;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE;YAC1B,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;gBACd,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACpE,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;oBACtD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IACE,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC;oBACtC,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAChC,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EACjC,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IACE,UAAU,CAAC,UAAU,CAAC,2BAA2B,CAAC;oBAClD,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EACjC,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IACE,UAAU,CAAC,UAAU,CAAC,wBAAwB,CAAC;oBAC/C,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EACjC,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IACE,UAAU,CAAC,UAAU,CAAC,4BAA4B,CAAC;oBACnD,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EACjC,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IACE,UAAU,CAAC,UAAU,CAAC,sBAAsB,CAAC;oBAC7C,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAChC,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EACjC,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IACE,UAAU,CAAC,UAAU,CAAC,oBAAoB,CAAC;oBAC3C,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAChC,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EACjC,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IAAI,UAAU,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBAC/C,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAE3E,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,oBAAoB;IACjC,wBAAwB;IACxB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACxD,IAAI,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,uBAAuB,GAAG,oCAAoC,CAAC;QACrE,MAAM,eAAe,GAAG;;;;;;CAM3B,CAAC;QACE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;QAChF,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;IACtE,CAAC;IAED,8BAA8B;IAC9B,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;CAmBxB,CAAC;IACA,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAExG,4BAA4B;IAC5B,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;CAmBtB,CAAC;IACA,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAEzF,uCAAuC;IACvC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BzB,CAAC;IACA,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,qBAAqB,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"prepare-template.js","sourceRoot":"","sources":["../../scripts/prepare-template.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: audit
|
|
3
|
-
description: "[devflow] Read-only code audit for a Blueprint project, except for the findings ledger it maintains at devflow/context/findings.md. Reviews the active feature, changed files, a selected path, or the full project through all concerns or a focused quality, security, performance, or tests lens. Use when the user runs /audit, invokes $audit, asks for a code or quality audit, security review, performance review, test quality review, dead-code or duplication check, vibe-coded project cleanup, or standards review."
|
|
3
|
+
description: "[devflow] Read-only code audit for a Blueprint project, except for the findings ledger it maintains at devflow/context/{xxx-slug}/findings.md. Reviews the active feature, changed files, a selected path, or the full project through all concerns or a focused quality, security, performance, or tests lens. Use when the user runs /audit, invokes $audit, asks for a code or quality audit, security review, performance review, test quality review, dead-code or duplication check, vibe-coded project cleanup, or standards review."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# audit - review code quality against the project standards
|
|
@@ -17,7 +17,7 @@ or one focused lens: quality, security, performance, or tests.
|
|
|
17
17
|
|
|
18
18
|
It reviews code without changing it: it never edits source files, installs
|
|
19
19
|
dependencies, commits, merges, pushes, or starts product work. Its one write is
|
|
20
|
-
the findings ledger at `devflow/context/findings.md` (Step 4), the durable
|
|
20
|
+
the findings ledger at `devflow/context/{xxx-slug}/findings.md` (Step 4), the durable
|
|
21
21
|
record of findings and their status.
|
|
22
22
|
|
|
23
23
|
## Input
|
|
@@ -29,7 +29,7 @@ Optional scope:
|
|
|
29
29
|
|
|
30
30
|
- no scope argument: use `current` when an active feature exists, otherwise use
|
|
31
31
|
`changed` when local changes exist, otherwise use `full`
|
|
32
|
-
- `current`: audit the active `
|
|
32
|
+
- `current`: audit the active `devflow/context/{xxx-slug}/spec.md`, every committed feature-branch
|
|
33
33
|
change from its merge base through `HEAD`, staged and unstaged changes,
|
|
34
34
|
untracked source files, and nearby code affected by the feature
|
|
35
35
|
- `changed`: audit staged, unstaged, and untracked source files plus nearby code
|
|
@@ -65,8 +65,8 @@ Read:
|
|
|
65
65
|
- `AGENTS.md`
|
|
66
66
|
- `devflow/context/project-overview.md`
|
|
67
67
|
- `devflow/context/coding-standards.md`
|
|
68
|
-
- `devflow/context/
|
|
69
|
-
- `devflow/context/findings.md
|
|
68
|
+
- `devflow/context/{xxx-slug}/spec.md` (when a task is active)
|
|
69
|
+
- `devflow/context/{xxx-slug}/findings.md` (or existing ledger), for existing IDs and statuses
|
|
70
70
|
- `devflow/context/ai-interaction.md`
|
|
71
71
|
- `devflow/build-plan.md`, when feature order matters
|
|
72
72
|
- git branch and working tree status
|
|
@@ -145,9 +145,9 @@ audit evidence before responding.
|
|
|
145
145
|
|
|
146
146
|
## Step 4 - update the findings ledger
|
|
147
147
|
|
|
148
|
-
`devflow/context/findings.md` is the durable record of findings. Chat reports
|
|
148
|
+
`devflow/context/{xxx-slug}/findings.md` is the durable record of findings for the active task. Chat reports
|
|
149
149
|
do not survive a context clear; the ledger does. It is the only file this skill
|
|
150
|
-
writes. If it is missing
|
|
150
|
+
writes. If it is missing, create it with a `# Findings`
|
|
151
151
|
heading first.
|
|
152
152
|
|
|
153
153
|
**The ledger never scopes the review.** Review the code fresh in Step 3, then
|
|
@@ -38,11 +38,11 @@ Common forms:
|
|
|
38
38
|
- `resume`: continue the current feature on its existing branch.
|
|
39
39
|
|
|
40
40
|
If the requested target conflicts with a feature already in progress, stop and
|
|
41
|
-
ask which one should win. Do not overwrite
|
|
41
|
+
ask which one should win. Do not overwrite task workspaces
|
|
42
42
|
silently.
|
|
43
43
|
|
|
44
44
|
Rollback is intentionally excluded from Autopilot. If the request is a rollback
|
|
45
|
-
or
|
|
45
|
+
or active spec is marked `Type: Rollback`, stop and direct the user to
|
|
46
46
|
the reviewed `/implement` path. Reversing completed work requires the explicit
|
|
47
47
|
dependency and conflict gates in `/rollback` and `/implement`.
|
|
48
48
|
|
|
@@ -54,8 +54,8 @@ Read the same state `/status` reads:
|
|
|
54
54
|
- `devflow/project-plan.md`
|
|
55
55
|
- `devflow/build-plan.md`
|
|
56
56
|
- `devflow/context/project-overview.md`
|
|
57
|
-
- `devflow/context/
|
|
58
|
-
- `devflow/context/findings.md`
|
|
57
|
+
- `devflow/context/{xxx-slug}/spec.md` (when present)
|
|
58
|
+
- `devflow/context/{xxx-slug}/findings.md` (when present)
|
|
59
59
|
- `devflow/context/coding-standards.md`
|
|
60
60
|
- `devflow/context/ai-interaction.md`
|
|
61
61
|
- git branch, status, and recent log
|
|
@@ -67,7 +67,7 @@ Stop before changing files when:
|
|
|
67
67
|
- The repo is not a git repo.
|
|
68
68
|
- The working tree is dirty and there is no current feature tying those changes
|
|
69
69
|
to this run.
|
|
70
|
-
-
|
|
70
|
+
- Active task spec has real work and the user requested a different target.
|
|
71
71
|
- `project-overview.md` is missing or stale and the planning docs are not clear
|
|
72
72
|
enough to regenerate it.
|
|
73
73
|
- The next feature is visual or replication-heavy and no design reference exists.
|
|
@@ -80,14 +80,14 @@ final packet.
|
|
|
80
80
|
|
|
81
81
|
## Step 2 - choose or write the spec
|
|
82
82
|
|
|
83
|
-
If `devflow/context/
|
|
83
|
+
If `devflow/context/{xxx-slug}/spec.md` already contains an active spec,
|
|
84
84
|
resume it. Read checked steps and continue from the first unchecked step.
|
|
85
85
|
|
|
86
86
|
If there is no active spec:
|
|
87
87
|
|
|
88
88
|
1. Use the `/feature` behavior for a planned feature, or `/fix` behavior for a
|
|
89
89
|
requested fix.
|
|
90
|
-
2.
|
|
90
|
+
2. Create workspace and write `devflow/context/{xxx-slug}/spec.md`.
|
|
91
91
|
3. Red-team the spec before building:
|
|
92
92
|
- missing unhappy paths
|
|
93
93
|
- oversized steps
|
|
@@ -101,32 +101,22 @@ If there is no active spec:
|
|
|
101
101
|
Autopilot may continue past this spec gate because the user explicitly invoked
|
|
102
102
|
Autopilot. Still report what the critique changed in the final packet.
|
|
103
103
|
|
|
104
|
-
## Step 3 -
|
|
104
|
+
## Step 3 - branch
|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
Create or check out the branch for the work:
|
|
107
107
|
|
|
108
|
-
-
|
|
109
|
-
-
|
|
108
|
+
- `feature/{xxx-slug}` for a planned feature
|
|
109
|
+
- `fix/{xxx-slug}` for an ad-hoc fix
|
|
110
110
|
|
|
111
|
-
If the branch already exists,
|
|
112
|
-
If switching branches would strand unrelated dirty work, stop and report the
|
|
113
|
-
problem.
|
|
111
|
+
If the branch already exists, check it out and verify it matches the spec.
|
|
114
112
|
|
|
115
|
-
## Step 4 -
|
|
113
|
+
## Step 4 - build in small steps with review gates
|
|
116
114
|
|
|
117
|
-
Work through the spec's
|
|
118
|
-
Unlike `/implement`, do not pause for user approval after each passing step. The
|
|
119
|
-
review happens at the final packet unless a hard stop is hit.
|
|
115
|
+
Work through the spec's steps in order:
|
|
120
116
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
2. Run the relevant verification:
|
|
125
|
-
- the exact `Verify` command from `AGENTS.md`, when declared
|
|
126
|
-
- otherwise the build, relevant test, lint, and typecheck commands already
|
|
127
|
-
documented by the project
|
|
128
|
-
- browser, CLI, API, or app-level evidence for behavioral done-whens
|
|
129
|
-
3. If UI is involved, inspect the running app when possible. Prefer Playwright if
|
|
117
|
+
1. Keep each change small and focused on the current step.
|
|
118
|
+
2. Run the declared `test` command when logic changed.
|
|
119
|
+
3. If the step has visual or browser-visible behavior, drive the browser when
|
|
130
120
|
it is already installed or declared. Capture screenshots when they add useful
|
|
131
121
|
evidence. Check for console errors and failed requests.
|
|
132
122
|
4. Self-review the diff for the step:
|
|
@@ -136,15 +126,15 @@ For every step:
|
|
|
136
126
|
- did it follow `coding-standards.md`?
|
|
137
127
|
- are tests present for new in-scope logic when the test gate is on?
|
|
138
128
|
5. Fix obvious issues and rerun the failed checks.
|
|
139
|
-
6. Mark the step checked in `
|
|
129
|
+
6. Mark the step checked in `devflow/context/{xxx-slug}/spec.md` only after the step passes.
|
|
140
130
|
7. Create a checkpoint commit on the feature or fix branch for the passing step.
|
|
141
|
-
Include the code, tests, and the updated `
|
|
131
|
+
Include the code, tests, and the updated `spec.md` checkbox. Use a
|
|
142
132
|
conventional message such as `feat: checkpoint mock snapshot route` or
|
|
143
133
|
`fix: checkpoint stale service filter`. Keep the message about the step, not
|
|
144
134
|
about Autopilot.
|
|
145
135
|
|
|
146
136
|
Do not batch the whole feature into one large diff. If a step gets too large,
|
|
147
|
-
split the step in `
|
|
137
|
+
split the step in `devflow/context/{xxx-slug}/spec.md` and continue with the first smaller step.
|
|
148
138
|
|
|
149
139
|
## Step 5 - acceptance check
|
|
150
140
|
|
|
@@ -159,7 +149,7 @@ may be enough. Be explicit about the evidence used.
|
|
|
159
149
|
After the acceptance check, apply the `/audit current` behavior to the active
|
|
160
150
|
feature, its diff, and the nearby code affected by the change. This is a targeted
|
|
161
151
|
feature audit, not a repository-wide cleanup pass. Findings are recorded in
|
|
162
|
-
`devflow/context/findings.md` with durable IDs and statuses, as `/audit`
|
|
152
|
+
`devflow/context/{xxx-slug}/findings.md` with durable IDs and statuses, as `/audit`
|
|
163
153
|
defines; the ledger reports status and never scopes what the audit examines.
|
|
164
154
|
|
|
165
155
|
For every finding:
|
|
@@ -173,35 +163,21 @@ For every finding:
|
|
|
173
163
|
3. Report P2 and P3 findings in the final packet. Fix them only when the change
|
|
174
164
|
is small, directly caused by the current feature, and clearly required by the
|
|
175
165
|
project standards.
|
|
176
|
-
4. If a
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
1. Rerun the documented `Verify` command when present; otherwise rerun the
|
|
182
|
-
affected build, lint, typecheck, and test commands.
|
|
183
|
-
2. Rerun the acceptance evidence affected by the repair.
|
|
184
|
-
3. Recheck the repaired area using the same targeted audit criteria. When that
|
|
185
|
-
recheck confirms the original defect is gone and the repair introduced no
|
|
186
|
-
new one, move the `fixed` finding to `closed` under the `/audit` close
|
|
187
|
-
conditions and name it in the packet. An unrelated new finding gets its own
|
|
188
|
-
ledger entry and does not keep the repaired one open.
|
|
189
|
-
4. Create a checkpoint commit only after the repair and its checks pass.
|
|
166
|
+
4. If a finding cannot be resolved safely in-scope, leave it `open` and describe
|
|
167
|
+
it in the final packet. A finding that is wrong goes back to `/audit` to
|
|
168
|
+
invalidate with recorded evidence; Autopilot never marks findings `invalid`
|
|
169
|
+
or `accepted`.
|
|
190
170
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
step into a full-project hardening pass. A broader cleanup remains a separate
|
|
194
|
-
`/audit` followed by planned `/fix` work.
|
|
171
|
+
Re-run the build, tests, and any affected checks after repairs. If a repair fails
|
|
172
|
+
twice, stop and report the blocker.
|
|
195
173
|
|
|
196
|
-
## Step 7 -
|
|
174
|
+
## Step 7 - compile the review packet
|
|
197
175
|
|
|
198
|
-
Stop
|
|
199
|
-
a full audit report:
|
|
176
|
+
Stop and produce a concise review packet:
|
|
200
177
|
|
|
201
|
-
- branch name
|
|
202
178
|
- target feature or fix
|
|
203
|
-
-
|
|
204
|
-
- what
|
|
179
|
+
- branch name
|
|
180
|
+
- what was built
|
|
205
181
|
- changed files and why each changed
|
|
206
182
|
- build/test/check commands run, with pass or fail
|
|
207
183
|
- screenshots or output paths, when relevant
|
|
@@ -210,7 +186,7 @@ a full audit report:
|
|
|
210
186
|
- self-review findings
|
|
211
187
|
- targeted audit scope and findings
|
|
212
188
|
- audit repairs made and checks rerun
|
|
213
|
-
- P0/P1 findings still `open` or `fixed` in `devflow/context/findings.md`,
|
|
189
|
+
- P0/P1 findings still `open` or `fixed` in `devflow/context/{xxx-slug}/findings.md`,
|
|
214
190
|
which block `/complete`
|
|
215
191
|
- unresolved risks or skipped checks
|
|
216
192
|
- exact next action
|
|
@@ -240,11 +216,11 @@ Stop immediately and report instead of continuing when Autopilot would need to:
|
|
|
240
216
|
- Autopilot creates checkpoint commits on the feature or fix branch after passing
|
|
241
217
|
steps.
|
|
242
218
|
- Autopilot audits the active feature and affected code, not the entire project.
|
|
243
|
-
- A P0 or P1 finding left `open` or `fixed` in `devflow/context/findings.md`
|
|
219
|
+
- A P0 or P1 finding left `open` or `fixed` in `devflow/context/{xxx-slug}/findings.md`
|
|
244
220
|
blocks readiness for `/complete`. The ledger is what makes this enforceable.
|
|
245
221
|
- Autopilot stops before `/complete`. It never merges.
|
|
246
222
|
- The Blueprint files remain the state machine. Keep
|
|
247
|
-
`
|
|
223
|
+
`devflow/context/{xxx-slug}/spec.md` accurate as steps complete.
|
|
248
224
|
- Follow `coding-standards.md`, `ai-interaction.md`, and `AGENTS.md`.
|
|
249
225
|
- Prefer fewer, higher-quality changes over broad coverage.
|
|
250
226
|
- Report uncertainty plainly. A blocked run is useful if it tells the truth.
|
|
@@ -82,7 +82,7 @@ plans aren't ready, `/prototype` if it's UI-facing and the look isn't locked, or
|
|
|
82
82
|
## Rules
|
|
83
83
|
|
|
84
84
|
- **Read-only, always.** Never write a file, never edit `build-plan.md` or
|
|
85
|
-
`
|
|
85
|
+
specs in `devflow/context/`, never branch, commit, install, or build. To act on the
|
|
86
86
|
briefing, the user runs `/feature` next.
|
|
87
87
|
- **Explain, don't spec.** Size, dependencies, and a likely sub-split are the
|
|
88
88
|
value here; the actual build steps are `/feature`'s job. Don't write step lists.
|
|
@@ -28,7 +28,7 @@ It changes no source and commits nothing — it executes, inspects, and reports
|
|
|
28
28
|
|
|
29
29
|
## Step 1 - Build the Dual-Axis Review Matrix
|
|
30
30
|
|
|
31
|
-
Read the target spec from `devflow/context/{xxx-slug}/spec.md`
|
|
31
|
+
Read the target spec from `devflow/context/{xxx-slug}/spec.md` and `devflow/context/coding-standards.md`. Prepare the inspection criteria across two independent axes:
|
|
32
32
|
|
|
33
33
|
1. **Axis 1 (Standards & Architecture Criteria)**:
|
|
34
34
|
- Coding conventions in `coding-standards.md`
|
|
@@ -36,7 +36,7 @@ Read the target spec from `devflow/context/{xxx-slug}/spec.md` (or `devflow/cont
|
|
|
36
36
|
- Baseline 12 Fowler Code Smells (Primitive obsession, Feature envy, Shotgun surgery, Speculative generality, etc.)
|
|
37
37
|
- Multi-lane technical gates (Typecheck, test suites, zero secrets, zero P0/P1 findings)
|
|
38
38
|
2. **Axis 2 (Spec Fidelity & Behavioral Observables)**:
|
|
39
|
-
- Line-by-line Acceptance Criteria (ACs) and "Done When" observables from `
|
|
39
|
+
- Line-by-line Acceptance Criteria (ACs) and "Done When" observables from `devflow/context/{xxx-slug}/spec.md`
|
|
40
40
|
- Scope Creep detection (Unrequested behavior in the diff)
|
|
41
41
|
- Missing Requirements detection (Unimplemented edge cases)
|
|
42
42
|
|
|
@@ -69,7 +69,7 @@ Format the report into two distinct, un-merged review axes:
|
|
|
69
69
|
- [pass] Type Safety: `tsc --noEmit` (0 errors)
|
|
70
70
|
- [pass] Automated Tests: `npm test` (All tests green)
|
|
71
71
|
- [pass] Security & Hygiene: Zero secrets, sanitized inputs
|
|
72
|
-
- [pass] Findings Ledger: 0 blocking P0/P1 in `devflow/context/findings.md`
|
|
72
|
+
- [pass] Findings Ledger: 0 blocking P0/P1 in `devflow/context/{xxx-slug}/findings.md`
|
|
73
73
|
- **Deep Modules & Architecture**:
|
|
74
74
|
- [pass] Seam Integrity: Public interfaces remain small, implementation details hidden.
|
|
75
75
|
- [pass] The Deletion Test: Complexity is concentrated inside the module, not scattered across callers.
|
|
@@ -78,7 +78,7 @@ Format the report into two distinct, un-merged review axes:
|
|
|
78
78
|
|
|
79
79
|
## 🎯 Axis 2: Spec Fidelity & Behavioral Acceptance Gate
|
|
80
80
|
|
|
81
|
-
Line-by-line verification against `
|
|
81
|
+
Line-by-line verification against `devflow/context/{xxx-slug}/spec.md`:
|
|
82
82
|
- [pass] **AC-1 (<title>)**: <Observed empirical evidence / screenshot path>
|
|
83
83
|
- [pass] **AC-2 (<title>)**: <Observed empirical evidence / terminal output>
|
|
84
84
|
- [fail] **AC-3 (<title>)**: <Exact observed failure with reproduction command>
|