@nova286/nova-workflow 2.1.1 → 2.3.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 +113 -36
- package/dist/cli/commands/init.js +3 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/index.js +6 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli-core/__tests__/adapters.test.js +25 -0
- package/dist/cli-core/__tests__/adapters.test.js.map +1 -1
- package/dist/cli-core/__tests__/context-generator.test.js +31 -0
- package/dist/cli-core/__tests__/context-generator.test.js.map +1 -1
- package/dist/cli-core/__tests__/dispatcher.test.js +22 -0
- package/dist/cli-core/__tests__/dispatcher.test.js.map +1 -1
- package/dist/cli-core/__tests__/guard.test.js +41 -1
- package/dist/cli-core/__tests__/guard.test.js.map +1 -1
- package/dist/cli-core/__tests__/init-manager.test.js +118 -21
- package/dist/cli-core/__tests__/init-manager.test.js.map +1 -1
- package/dist/cli-core/__tests__/pipeline.test.js +22 -0
- package/dist/cli-core/__tests__/pipeline.test.js.map +1 -1
- package/dist/cli-core/adapters/claude-code.d.ts +5 -3
- package/dist/cli-core/adapters/claude-code.js +130 -50
- package/dist/cli-core/adapters/claude-code.js.map +1 -1
- package/dist/cli-core/adapters/codex.js +25 -19
- package/dist/cli-core/adapters/codex.js.map +1 -1
- package/dist/cli-core/adapters/hermes-agent.js +25 -19
- package/dist/cli-core/adapters/hermes-agent.js.map +1 -1
- package/dist/cli-core/adapters/openclaw.js +25 -19
- package/dist/cli-core/adapters/openclaw.js.map +1 -1
- package/dist/cli-core/adapters/opencode.js +25 -19
- package/dist/cli-core/adapters/opencode.js.map +1 -1
- package/dist/cli-core/context-generator.js +44 -2
- package/dist/cli-core/context-generator.js.map +1 -1
- package/dist/cli-core/guard.js +4 -0
- package/dist/cli-core/guard.js.map +1 -1
- package/dist/cli-core/init-manager.d.ts +4 -0
- package/dist/cli-core/init-manager.js +72 -6
- package/dist/cli-core/init-manager.js.map +1 -1
- package/dist/cli-core/quality-check.d.ts +1 -0
- package/dist/cli-core/quality-check.js +23 -0
- package/dist/cli-core/quality-check.js.map +1 -1
- package/dist/cli-core/types.d.ts +57 -1
- package/package.json +1 -1
- package/templates/docs/design.md +4 -0
- package/templates/docs/verification-report.md +21 -0
|
@@ -58,7 +58,7 @@ describe('InitManager', () => {
|
|
|
58
58
|
});
|
|
59
59
|
test('force re-init proceeds and creates new state', async () => {
|
|
60
60
|
await fs.writeFile('.nova.yaml', 'version: 1\nproject: old\n', 'utf-8');
|
|
61
|
-
const mgr = new init_manager_1.InitManager(testDir, { force: true });
|
|
61
|
+
const mgr = new init_manager_1.InitManager(testDir, { force: true, skillsDir: 'project' });
|
|
62
62
|
await mgr.run();
|
|
63
63
|
const raw = await fs.readFile('.nova.yaml', 'utf-8');
|
|
64
64
|
const state = yaml.parse(raw);
|
|
@@ -67,9 +67,9 @@ describe('InitManager', () => {
|
|
|
67
67
|
});
|
|
68
68
|
describe('directory creation', () => {
|
|
69
69
|
test('creates all required directories', async () => {
|
|
70
|
-
const mgr = new init_manager_1.InitManager(testDir, { force: false });
|
|
70
|
+
const mgr = new init_manager_1.InitManager(testDir, { force: false, skillsDir: 'project' });
|
|
71
71
|
await mgr.run();
|
|
72
|
-
const dirs = ['docs/designs', 'docs/proposals', 'docs/reports', '.nova/contexts'];
|
|
72
|
+
const dirs = ['docs/designs', 'docs/proposals', 'docs/reports', '.nova/contexts', '.openspec/changes'];
|
|
73
73
|
for (const d of dirs) {
|
|
74
74
|
await expect(fs.access(path.join(testDir, d))).resolves.toBeUndefined();
|
|
75
75
|
}
|
|
@@ -77,7 +77,7 @@ describe('InitManager', () => {
|
|
|
77
77
|
});
|
|
78
78
|
describe('.nova.yaml generation', () => {
|
|
79
79
|
test('generates valid .nova.yaml with correct structure', async () => {
|
|
80
|
-
const mgr = new init_manager_1.InitManager(testDir, { force: false });
|
|
80
|
+
const mgr = new init_manager_1.InitManager(testDir, { force: false, skillsDir: 'project' });
|
|
81
81
|
await mgr.run();
|
|
82
82
|
const raw = await fs.readFile('.nova.yaml', 'utf-8');
|
|
83
83
|
const state = yaml.parse(raw);
|
|
@@ -89,41 +89,137 @@ describe('InitManager', () => {
|
|
|
89
89
|
expect(state.phases.implement.status).toBe('pending');
|
|
90
90
|
expect(state.phases.verify.status).toBe('pending');
|
|
91
91
|
expect(state.phases.archive.status).toBe('pending');
|
|
92
|
+
expect(state.activeChange).toBe('');
|
|
93
|
+
expect(state.integrations).toEqual({
|
|
94
|
+
openspec: { mode: 'compatible' },
|
|
95
|
+
superpowers: { mode: 'compatible' },
|
|
96
|
+
ecc: { mode: 'compatible' },
|
|
97
|
+
});
|
|
98
|
+
expect(state.artifacts).toEqual({
|
|
99
|
+
openspecChange: '',
|
|
100
|
+
proposal: '',
|
|
101
|
+
specDelta: '',
|
|
102
|
+
implementationPlan: '',
|
|
103
|
+
verificationReport: '',
|
|
104
|
+
});
|
|
92
105
|
expect(state.metadata.stateVersion).toBe(0);
|
|
93
106
|
expect(state.metadata.lastModified).toBeTruthy();
|
|
94
107
|
});
|
|
95
108
|
test('detects project type when package.json exists', async () => {
|
|
96
109
|
await fs.writeFile('package.json', JSON.stringify({ name: 'test-pkg', dependencies: { express: '^4.0.0' } }), 'utf-8');
|
|
97
|
-
const mgr = new init_manager_1.InitManager(testDir, { force: false });
|
|
110
|
+
const mgr = new init_manager_1.InitManager(testDir, { force: false, skillsDir: 'project' });
|
|
98
111
|
await mgr.run();
|
|
99
112
|
const raw = await fs.readFile('.nova.yaml', 'utf-8');
|
|
100
113
|
const state = yaml.parse(raw);
|
|
101
114
|
expect(state.projectType).toBeTruthy();
|
|
102
115
|
});
|
|
103
116
|
});
|
|
117
|
+
describe('MCP server detection', () => {
|
|
118
|
+
test('detects figma and mobile MCP from project settings', async () => {
|
|
119
|
+
const claudeDir = path.join(testDir, '.claude');
|
|
120
|
+
await fs.mkdir(claudeDir, { recursive: true });
|
|
121
|
+
await fs.writeFile(path.join(claudeDir, 'settings.json'), JSON.stringify({
|
|
122
|
+
mcpServers: {
|
|
123
|
+
'figma-mcp': { command: 'npx', args: ['figma-mcp'] },
|
|
124
|
+
'mobile-mcp': { command: 'npx', args: ['mobile-mcp'] },
|
|
125
|
+
},
|
|
126
|
+
}), 'utf-8');
|
|
127
|
+
const mgr = new init_manager_1.InitManager(testDir, { force: false, skillsDir: 'project' });
|
|
128
|
+
await mgr.run();
|
|
129
|
+
const raw = await fs.readFile('.nova.yaml', 'utf-8');
|
|
130
|
+
const state = yaml.parse(raw);
|
|
131
|
+
expect(state.mcpServers.figma).toEqual({ configured: true, serverName: 'figma-mcp' });
|
|
132
|
+
expect(state.mcpServers.mobile).toEqual({ configured: true, serverName: 'mobile-mcp' });
|
|
133
|
+
});
|
|
134
|
+
test('detects simulator-based mobile MCP', async () => {
|
|
135
|
+
const claudeDir = path.join(testDir, '.claude');
|
|
136
|
+
await fs.mkdir(claudeDir, { recursive: true });
|
|
137
|
+
await fs.writeFile(path.join(claudeDir, 'settings.json'), JSON.stringify({
|
|
138
|
+
mcpServers: {
|
|
139
|
+
'ios-simulator': { command: 'npx', args: ['sim-mcp'] },
|
|
140
|
+
},
|
|
141
|
+
}), 'utf-8');
|
|
142
|
+
const mgr = new init_manager_1.InitManager(testDir, { force: false, skillsDir: 'project' });
|
|
143
|
+
await mgr.run();
|
|
144
|
+
const raw = await fs.readFile('.nova.yaml', 'utf-8');
|
|
145
|
+
const state = yaml.parse(raw);
|
|
146
|
+
expect(state.mcpServers.mobile).toEqual({ configured: true, serverName: 'ios-simulator' });
|
|
147
|
+
});
|
|
148
|
+
test('mcpServers is empty when no settings file exists', async () => {
|
|
149
|
+
const mgr = new init_manager_1.InitManager(testDir, { force: false, skillsDir: 'project' });
|
|
150
|
+
await mgr.run();
|
|
151
|
+
const raw = await fs.readFile('.nova.yaml', 'utf-8');
|
|
152
|
+
const state = yaml.parse(raw);
|
|
153
|
+
expect(state.mcpServers).toEqual({});
|
|
154
|
+
});
|
|
155
|
+
});
|
|
104
156
|
describe('environment command generation', () => {
|
|
105
|
-
test('generates all
|
|
106
|
-
const mgr = new init_manager_1.InitManager(testDir, { force: false });
|
|
157
|
+
test('generates all Nova skill dirs with SKILL.md in project', async () => {
|
|
158
|
+
const mgr = new init_manager_1.InitManager(testDir, { force: false, skillsDir: 'project' });
|
|
159
|
+
await mgr.run();
|
|
160
|
+
const skillsDir = path.join(testDir, '.claude', 'skills');
|
|
161
|
+
const dirs = await fs.readdir(skillsDir);
|
|
162
|
+
const novaDirs = dirs.filter(d => d.startsWith('nova'));
|
|
163
|
+
expect(novaDirs).toContain('nova');
|
|
164
|
+
expect(novaDirs).toContain('nova-propose');
|
|
165
|
+
expect(novaDirs).toContain('nova-design');
|
|
166
|
+
expect(novaDirs).toContain('nova-implement');
|
|
167
|
+
expect(novaDirs).toContain('nova-verify');
|
|
168
|
+
expect(novaDirs).toContain('nova-iterate');
|
|
169
|
+
expect(novaDirs).toContain('nova-status');
|
|
170
|
+
for (const d of novaDirs) {
|
|
171
|
+
const content = await fs.readFile(path.join(skillsDir, d, 'SKILL.md'), 'utf-8');
|
|
172
|
+
expect(content).toContain('description:');
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
test('generates Nova skills in ~/.agents/skills/ with symlinks when skillsDir=user', async () => {
|
|
176
|
+
const agentsSkillsDir = path.join(os.homedir(), '.agents', 'skills');
|
|
177
|
+
const claudeSkillsDir = path.join(os.homedir(), '.claude', 'skills');
|
|
178
|
+
const existingDirs = new Set();
|
|
179
|
+
const existingLinks = new Set();
|
|
180
|
+
try {
|
|
181
|
+
for (const f of await fs.readdir(agentsSkillsDir)) {
|
|
182
|
+
if (f.startsWith('nova'))
|
|
183
|
+
existingDirs.add(f);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch { }
|
|
187
|
+
try {
|
|
188
|
+
for (const f of await fs.readdir(claudeSkillsDir)) {
|
|
189
|
+
if (f.startsWith('nova'))
|
|
190
|
+
existingLinks.add(f);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
catch { }
|
|
194
|
+
const mgr = new init_manager_1.InitManager(testDir, { force: false, skillsDir: 'user' });
|
|
107
195
|
await mgr.run();
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
expect(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
expect(files).toContain('nova-iterate.md');
|
|
115
|
-
expect(files).toContain('nova-status.md');
|
|
116
|
-
for (const f of files) {
|
|
117
|
-
const content = await fs.readFile(path.join(commandsDir, f), 'utf-8');
|
|
196
|
+
// Verify SKILL.md exists in each nova dir
|
|
197
|
+
const dirs = await fs.readdir(agentsSkillsDir);
|
|
198
|
+
const novaDirs = dirs.filter(d => d.startsWith('nova'));
|
|
199
|
+
expect(novaDirs.length).toBeGreaterThanOrEqual(7);
|
|
200
|
+
for (const d of novaDirs) {
|
|
201
|
+
const content = await fs.readFile(path.join(agentsSkillsDir, d, 'SKILL.md'), 'utf-8');
|
|
118
202
|
expect(content).toContain('description:');
|
|
119
203
|
}
|
|
204
|
+
// Cleanup: remove dirs and symlinks we created
|
|
205
|
+
for (const d of novaDirs) {
|
|
206
|
+
if (!existingDirs.has(d)) {
|
|
207
|
+
await fs.rm(path.join(agentsSkillsDir, d), { recursive: true, force: true });
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const links = (await fs.readdir(claudeSkillsDir)).filter(f => f.startsWith('nova'));
|
|
211
|
+
for (const l of links) {
|
|
212
|
+
if (!existingLinks.has(l)) {
|
|
213
|
+
await fs.unlink(path.join(claudeSkillsDir, l));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
120
216
|
});
|
|
121
217
|
});
|
|
122
218
|
describe('ECC installation', () => {
|
|
123
219
|
test('copies ECC skills when --with-ecc provided', async () => {
|
|
124
220
|
const eccDir = await fs.mkdtemp(path.join(os.tmpdir(), 'ecc-src-'));
|
|
125
221
|
await fs.writeFile(path.join(eccDir, 'test-skill.md'), '# Test', 'utf-8');
|
|
126
|
-
const mgr = new init_manager_1.InitManager(testDir, { eccPath: eccDir });
|
|
222
|
+
const mgr = new init_manager_1.InitManager(testDir, { eccPath: eccDir, skillsDir: 'project' });
|
|
127
223
|
await mgr.run();
|
|
128
224
|
const destFile = path.join(testDir, '.nova', 'ecc', 'test-skill.md');
|
|
129
225
|
const content = await fs.readFile(destFile, 'utf-8');
|
|
@@ -131,7 +227,7 @@ describe('InitManager', () => {
|
|
|
131
227
|
await fs.rm(eccDir, { recursive: true, force: true });
|
|
132
228
|
});
|
|
133
229
|
test('creates empty .nova/ecc without --with-ecc', async () => {
|
|
134
|
-
const mgr = new init_manager_1.InitManager(testDir, { force: false });
|
|
230
|
+
const mgr = new init_manager_1.InitManager(testDir, { force: false, skillsDir: 'project' });
|
|
135
231
|
await mgr.run();
|
|
136
232
|
await expect(fs.access(path.join(testDir, '.nova', 'ecc'))).resolves.toBeUndefined();
|
|
137
233
|
const files = await fs.readdir(path.join(testDir, '.nova', 'ecc'));
|
|
@@ -139,11 +235,12 @@ describe('InitManager', () => {
|
|
|
139
235
|
});
|
|
140
236
|
});
|
|
141
237
|
describe('document templates', () => {
|
|
142
|
-
test('copies proposal and
|
|
143
|
-
const mgr = new init_manager_1.InitManager(testDir, { force: false });
|
|
238
|
+
test('copies proposal, design, and verification-report templates to docs/', async () => {
|
|
239
|
+
const mgr = new init_manager_1.InitManager(testDir, { force: false, skillsDir: 'project' });
|
|
144
240
|
await mgr.run();
|
|
145
241
|
await expect(fs.access(path.join(testDir, 'docs', 'proposal.md'))).resolves.toBeUndefined();
|
|
146
242
|
await expect(fs.access(path.join(testDir, 'docs', 'design.md'))).resolves.toBeUndefined();
|
|
243
|
+
await expect(fs.access(path.join(testDir, 'docs', 'verification-report.md'))).resolves.toBeUndefined();
|
|
147
244
|
});
|
|
148
245
|
});
|
|
149
246
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-manager.test.js","sourceRoot":"","sources":["../../../src/cli-core/__tests__/init-manager.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init-manager.test.js","sourceRoot":"","sources":["../../../src/cli-core/__tests__/init-manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,28 @@ const baseContext = {
|
|
|
26
26
|
environment: { language: '', framework: '', buildTool: '', testFramework: '' },
|
|
27
27
|
},
|
|
28
28
|
output: { expectedArtifacts: [], constraints: { mustPassTests: true } },
|
|
29
|
+
change: {
|
|
30
|
+
activeChange: '',
|
|
31
|
+
artifacts: {
|
|
32
|
+
openspecChange: '',
|
|
33
|
+
proposal: '',
|
|
34
|
+
specDelta: '',
|
|
35
|
+
implementationPlan: '',
|
|
36
|
+
verificationReport: '',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
methodology: {
|
|
40
|
+
openspec: { mode: 'compatible' },
|
|
41
|
+
superpowers: { mode: 'compatible' },
|
|
42
|
+
ecc: { mode: 'compatible' },
|
|
43
|
+
},
|
|
44
|
+
implementation: {
|
|
45
|
+
method: 'implementation',
|
|
46
|
+
specRefs: [],
|
|
47
|
+
acceptanceRefs: [],
|
|
48
|
+
},
|
|
49
|
+
verification: { commands: [] },
|
|
50
|
+
evidence: { required: [] },
|
|
29
51
|
acceptanceCriteria: [],
|
|
30
52
|
guardConditions: { requireReview: true, requireTests: true, blocking: false },
|
|
31
53
|
metadata: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../../src/cli-core/__tests__/pipeline.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../../src/cli-core/__tests__/pipeline.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { EnvironmentAdapter } from '../types';
|
|
1
|
+
import { EnvironmentAdapter, AdapterSetupOptions } from '../types';
|
|
2
2
|
export declare class ClaudeCodeAdapter implements EnvironmentAdapter {
|
|
3
3
|
name: string;
|
|
4
|
-
setup(cwd: string): Promise<void>;
|
|
5
|
-
private
|
|
4
|
+
setup(cwd: string, options?: AdapterSetupOptions): Promise<void>;
|
|
5
|
+
private writeToSharedSkills;
|
|
6
|
+
private writeToProjectSkills;
|
|
7
|
+
private writeSkillFile;
|
|
6
8
|
}
|
|
@@ -36,8 +36,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.ClaudeCodeAdapter = void 0;
|
|
37
37
|
const fs = __importStar(require("fs/promises"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const crypto = __importStar(require("crypto"));
|
|
41
|
+
const FIGMA_STEP = `
|
|
42
|
+
## Step 3.5: Read Figma Design (Figma MCP detected)
|
|
43
|
+
|
|
44
|
+
1. Use Figma MCP to get file metadata and pages
|
|
45
|
+
2. For each relevant frame/component:
|
|
46
|
+
- Extract color tokens (fills, strokes → RGBA)
|
|
47
|
+
- Extract typography (font family, size, weight, line height)
|
|
48
|
+
- Extract spacing (auto-layout padding, item spacing)
|
|
49
|
+
- Extract component properties and variants
|
|
50
|
+
3. Generate \`## Design Tokens\` section in \`docs/designs/design.md\`:
|
|
51
|
+
- Color palette table
|
|
52
|
+
- Typography scale table
|
|
53
|
+
- Spacing system table
|
|
54
|
+
- Component inventory with props
|
|
55
|
+
4. Reference Figma node IDs for traceability
|
|
56
|
+
`;
|
|
57
|
+
const MOBILE_STEP = `
|
|
58
|
+
## Step 5.5: UI Verification (Mobile MCP detected)
|
|
59
|
+
|
|
60
|
+
1. Build and launch app in simulator via Mobile MCP
|
|
61
|
+
2. For each key user flow:
|
|
62
|
+
- Navigate to screen
|
|
63
|
+
- Take screenshot
|
|
64
|
+
- Query accessibility tree (element labels, states)
|
|
65
|
+
- Compare against design tokens from \`docs/designs/design.md\`
|
|
66
|
+
3. Fill \`## UI Verification\` section in \`docs/reports/verification-report.md\`:
|
|
67
|
+
- Screenshot gallery with captions
|
|
68
|
+
- Element state audit (missing labels, wrong states)
|
|
69
|
+
- Design token compliance check
|
|
70
|
+
4. Flag discrepancies as UI findings with severity
|
|
71
|
+
`;
|
|
39
72
|
const SKILL_TEMPLATES = {
|
|
40
|
-
'nova.md': `---
|
|
73
|
+
'nova.md': () => `---
|
|
41
74
|
description: Nova — unified entry point. Shows progress and suggests next action.
|
|
42
75
|
---
|
|
43
76
|
|
|
@@ -78,14 +111,15 @@ Ask: "Run the suggested action, pick another, or do something else?"
|
|
|
78
111
|
## Constraints
|
|
79
112
|
Read-only unless the user explicitly confirms an action.
|
|
80
113
|
`,
|
|
81
|
-
'nova-propose.md': `---
|
|
82
|
-
description: Nova propose phase —
|
|
114
|
+
'nova-propose.md': () => `---
|
|
115
|
+
description: Nova propose phase — specify an OpenSpec-compatible change contract
|
|
83
116
|
---
|
|
84
117
|
|
|
85
118
|
# Nova Propose Phase
|
|
86
119
|
|
|
87
120
|
You are executing the **propose phase** of a Nova workflow. Your role is to
|
|
88
|
-
orchestrate requirements exploration and produce
|
|
121
|
+
orchestrate requirements exploration and produce an OpenSpec-compatible change
|
|
122
|
+
contract. Native OpenSpec is optional; if unavailable, write compatible artifacts.
|
|
89
123
|
|
|
90
124
|
## Step 1: Verify State
|
|
91
125
|
Read \`.nova.yaml\`. Check \`phases.propose.status\`. If pending, update to
|
|
@@ -101,44 +135,47 @@ explore alternatives, identify risks, define success criteria. Summarize for the
|
|
|
101
135
|
user and ask them to confirm before proceeding.
|
|
102
136
|
|
|
103
137
|
## Step 4: Generate Proposal
|
|
104
|
-
Write
|
|
105
|
-
|
|
106
|
-
|
|
138
|
+
Write \`.openspec/changes/<change-id>/proposal.md\`, compatible spec files under
|
|
139
|
+
\`.openspec/changes/<change-id>/specs/\`, and \`docs/proposals/proposal.md\` as
|
|
140
|
+
a summary. Include requirement ids and acceptance ids for later task references.
|
|
107
141
|
|
|
108
142
|
## Step 5: Update State
|
|
109
|
-
Set \`
|
|
110
|
-
\`phases.propose.
|
|
143
|
+
Set \`activeChange\`, \`artifacts.openspecChange\`, \`artifacts.proposal\`,
|
|
144
|
+
\`artifacts.specDelta\`, \`phases.propose.status\`, and
|
|
145
|
+
\`phases.propose.proposal\`.
|
|
111
146
|
|
|
112
147
|
## Constraints
|
|
113
148
|
- Read any file for context. Write only to \`docs/proposals/\` and \`.nova.yaml\`.
|
|
114
149
|
- Do not modify source code — the implement phase handles that.
|
|
115
150
|
`,
|
|
116
|
-
'nova-design.md': `---
|
|
117
|
-
description: Nova design phase —
|
|
151
|
+
'nova-design.md': (mcp) => `---
|
|
152
|
+
description: Nova design phase — plan spec-bound work from an approved change
|
|
118
153
|
---
|
|
119
154
|
|
|
120
155
|
# Nova Design Phase
|
|
121
156
|
|
|
122
|
-
You are executing the **design phase** of a Nova workflow. Your role is to
|
|
123
|
-
|
|
124
|
-
actionable task list.
|
|
157
|
+
You are executing the **design phase** of a Nova workflow. Your role is to turn
|
|
158
|
+
the OpenSpec-compatible change into a Superpowers-compatible plan and task graph.
|
|
125
159
|
|
|
126
160
|
## Step 1: Verify State
|
|
127
161
|
Read \`.nova.yaml\`. Require \`phases.propose.status: done\` with a non-empty proposal.
|
|
128
162
|
Update \`phases.design.status\` to \`in-progress\` and set \`startedAt\`.
|
|
129
163
|
|
|
130
164
|
## Step 2: Load Context
|
|
131
|
-
Read the proposal (\`
|
|
165
|
+
Read the proposal/spec delta (\`artifacts.proposal\`, \`artifacts.openspecChange\`),
|
|
166
|
+
\`AGENTS.md\`, \`package.json\`, \`src/\`.
|
|
132
167
|
|
|
133
168
|
## Step 3: Explore Architecture Options
|
|
134
169
|
Use the **brainstorming skill** to explore at least 2 architectural approaches.
|
|
135
170
|
For each: architecture pattern, tech stack rationale, component structure, data
|
|
136
171
|
flow, key trade-offs. Present alternatives to the user for selection.
|
|
172
|
+
${mcp?.figma ? FIGMA_STEP : ''}
|
|
137
173
|
|
|
138
174
|
## Step 4: Generate Design Document
|
|
139
175
|
Based on the user-selected approach, use the **writing-plans skill** to produce
|
|
140
|
-
\`docs/designs/design.md\`
|
|
141
|
-
|
|
176
|
+
\`docs/designs/design.md\` and \`docs/superpowers/plans/<change-id>.md\`.
|
|
177
|
+
Tasks must include \`method\`, \`specRefs\`, \`acceptanceRefs\`, and
|
|
178
|
+
\`verification.commands\`.
|
|
142
179
|
|
|
143
180
|
## Step 5: Validate Tasks
|
|
144
181
|
Verify each task has all required fields (id, title, type, description, files,
|
|
@@ -151,38 +188,43 @@ Set \`phases.design.status = 'done'\`, \`designDoc\`, \`tasks\` from parsed YAML
|
|
|
151
188
|
- Design and plan only — no implementation code.
|
|
152
189
|
- Tasks must be concrete: specific file paths, verifiable acceptance criteria.
|
|
153
190
|
`,
|
|
154
|
-
'nova-implement.md': `---
|
|
155
|
-
description: Nova implement phase — execute
|
|
191
|
+
'nova-implement.md': () => `---
|
|
192
|
+
description: Nova implement phase — execute spec-bound tasks with evidence
|
|
156
193
|
---
|
|
157
194
|
|
|
158
195
|
# Nova Implement Phase
|
|
159
196
|
|
|
160
197
|
You are executing the **implement phase** of a Nova workflow. Your role is to
|
|
161
|
-
execute each task
|
|
198
|
+
execute each task as a spec-bound unit of work: resolve spec refs, apply the
|
|
199
|
+
task method, verify the result, and record evidence for review.
|
|
162
200
|
|
|
163
201
|
## Step 1: Verify State
|
|
164
202
|
Read \`.nova.yaml\`. Require \`phases.design.status: done\` with non-empty tasks.
|
|
165
203
|
Update \`phases.implement.status\` to \`in-progress\` and set \`startedAt\`.
|
|
166
204
|
|
|
167
205
|
## Step 2: Load Task List
|
|
168
|
-
Show task summary (id, title,
|
|
206
|
+
Show task summary (id, title, method, specRefs, priority). Ask user to confirm before
|
|
169
207
|
proceeding.
|
|
170
208
|
|
|
171
209
|
## Step 3: Execute Each Task
|
|
172
210
|
For each task in priority order:
|
|
173
211
|
|
|
174
|
-
### Route by
|
|
175
|
-
- **
|
|
176
|
-
- **
|
|
177
|
-
- **
|
|
212
|
+
### Route by Method
|
|
213
|
+
- **tdd** — use the **test-driven-development skill** when available
|
|
214
|
+
- **implementation** — write scoped production code with tests or no-test rationale
|
|
215
|
+
- **refactor** — preserve referenced spec behavior and run regression checks
|
|
216
|
+
- **docs** — update docs/specs and validate references
|
|
217
|
+
- **migration** — require dry-run, rollback notes, and compatibility evidence
|
|
178
218
|
|
|
179
219
|
### Verify After Each Task
|
|
180
|
-
1. Run
|
|
181
|
-
2. Run
|
|
182
|
-
3.
|
|
220
|
+
1. Run \`task.verification.commands\` if present
|
|
221
|
+
2. Run type check (\`npx tsc --noEmit\`)
|
|
222
|
+
3. Run tests (\`npm test\` or project equivalent)
|
|
223
|
+
4. Confirm specRefs and acceptanceRefs have evidence before marking complete
|
|
183
224
|
|
|
184
225
|
### Record Result
|
|
185
|
-
Update \`.nova.yaml\` with task status
|
|
226
|
+
Update \`.nova.yaml\` with task status, specRefs, acceptanceRefs, tests,
|
|
227
|
+
filesChanged, traceIds, and timestamp.
|
|
186
228
|
On failure, ask user: abort, skip, or retry.
|
|
187
229
|
|
|
188
230
|
## Step 4: Final Verification
|
|
@@ -195,45 +237,51 @@ Set \`phases.implement.status = 'done'\`.
|
|
|
195
237
|
- Follow existing project conventions. Never leave TODOs or stubs.
|
|
196
238
|
- Run checks after EACH task, not just at the end.
|
|
197
239
|
`,
|
|
198
|
-
'nova-verify.md': `---
|
|
199
|
-
description: Nova verify phase — run code
|
|
240
|
+
'nova-verify.md': (mcp) => `---
|
|
241
|
+
description: Nova verify phase — run spec conformance, code, and security review
|
|
200
242
|
---
|
|
201
243
|
|
|
202
244
|
# Nova Verify Phase
|
|
203
245
|
|
|
204
246
|
You are executing the **verify phase** of a Nova workflow. Your role is to
|
|
205
|
-
orchestrate
|
|
247
|
+
orchestrate an ECC-compatible verification pipeline.
|
|
206
248
|
|
|
207
249
|
## Step 1: Verify State
|
|
208
250
|
Read \`.nova.yaml\`. Require \`phases.implement.status: done\`.
|
|
209
251
|
Update \`phases.verify.status\` to \`in-progress\` and set \`startedAt\`.
|
|
210
252
|
|
|
211
253
|
## Step 2: Gather Context
|
|
212
|
-
Load completed tasks from \`phases.design.tasks\`. Read changed files
|
|
213
|
-
design document.
|
|
254
|
+
Load completed tasks from \`phases.design.tasks\`. Read changed files, task
|
|
255
|
+
evidence, the design document, and \`artifacts.openspecChange\`.
|
|
214
256
|
|
|
215
|
-
## Step 3: Run
|
|
257
|
+
## Step 3: Run Spec-Conformance Review
|
|
258
|
+
Compare task evidence against \`specRefs\` and \`acceptanceRefs\`. Verdict:
|
|
259
|
+
PASS / CHANGES_REQUESTED / BLOCKED.
|
|
260
|
+
|
|
261
|
+
## Step 4: Run Code Review
|
|
216
262
|
Use the **ecc:code-reviewer** skill to review each task's changed files:
|
|
217
263
|
correctness, conventions, error handling, test coverage, type safety.
|
|
218
264
|
Verdict: PASS / CHANGES_REQUESTED / COMMENT.
|
|
219
265
|
|
|
220
|
-
## Step
|
|
266
|
+
## Step 5: Run Security Review
|
|
221
267
|
Use the **ecc:security-reviewer** skill to audit each task's changed files:
|
|
222
268
|
injection risks, secret exposure, insecure dependencies, input validation.
|
|
223
269
|
Verdict: PASS / VULNERABILITY_FOUND. Include severity and remediation.
|
|
270
|
+
${mcp?.mobile ? MOBILE_STEP : ''}
|
|
224
271
|
|
|
225
|
-
## Step
|
|
226
|
-
Write \`docs/
|
|
272
|
+
## Step 6: Generate Report
|
|
273
|
+
Write \`docs/reports/verification-report.md\` with summary, spec-conformance results, per-task results,
|
|
227
274
|
overall assessment (PASS / NEEDS_FIXES / BLOCKED), and recommendations.
|
|
228
275
|
|
|
229
|
-
## Step
|
|
276
|
+
## Step 7: Update State
|
|
230
277
|
Set \`phases.verify.status = 'done'\`, \`pipelineResult\` with stage results.
|
|
278
|
+
Set \`artifacts.verificationReport = 'docs/reports/verification-report.md'\`.
|
|
231
279
|
|
|
232
280
|
## Constraints
|
|
233
281
|
- Be specific — reference file paths and line numbers.
|
|
234
282
|
- Security findings must include severity and remediation.
|
|
235
283
|
`,
|
|
236
|
-
'nova-iterate.md': `---
|
|
284
|
+
'nova-iterate.md': () => `---
|
|
237
285
|
description: Nova iterate — roll back to a previous phase for iteration
|
|
238
286
|
---
|
|
239
287
|
|
|
@@ -266,7 +314,7 @@ Summarize what changed and which command to run next.
|
|
|
266
314
|
- Never delete code files without explicit user confirmation.
|
|
267
315
|
- Always record the iteration reason.
|
|
268
316
|
`,
|
|
269
|
-
'nova-status.md': `---
|
|
317
|
+
'nova-status.md': () => `---
|
|
270
318
|
description: Nova status — display phase progress, task completion, and stuck detection
|
|
271
319
|
---
|
|
272
320
|
|
|
@@ -290,18 +338,50 @@ class ClaudeCodeAdapter {
|
|
|
290
338
|
constructor() {
|
|
291
339
|
this.name = 'claude-code';
|
|
292
340
|
}
|
|
293
|
-
async setup(cwd) {
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
341
|
+
async setup(cwd, options) {
|
|
342
|
+
if (options?.skillsDir === 'user') {
|
|
343
|
+
await this.writeToSharedSkills(options?.mcpServers);
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
await this.writeToProjectSkills(cwd, options?.mcpServers);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
async writeToSharedSkills(mcpServers) {
|
|
350
|
+
const agentsSkillsDir = path.join(os.homedir(), '.agents', 'skills');
|
|
351
|
+
const claudeSkillsDir = path.join(os.homedir(), '.claude', 'skills');
|
|
352
|
+
for (const [filename, templateFn] of Object.entries(SKILL_TEMPLATES)) {
|
|
353
|
+
const skillName = filename.replace('.md', '');
|
|
354
|
+
const skillDir = path.join(agentsSkillsDir, skillName);
|
|
355
|
+
await fs.mkdir(skillDir, { recursive: true });
|
|
356
|
+
await this.writeSkillFile(path.join(skillDir, 'SKILL.md'), templateFn(mcpServers));
|
|
357
|
+
const linkPath = path.join(claudeSkillsDir, skillName);
|
|
358
|
+
try {
|
|
359
|
+
await fs.access(linkPath);
|
|
360
|
+
continue;
|
|
361
|
+
}
|
|
362
|
+
catch { }
|
|
363
|
+
try {
|
|
364
|
+
await fs.symlink(skillDir, linkPath);
|
|
365
|
+
}
|
|
366
|
+
catch { }
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
async writeToProjectSkills(cwd, mcpServers) {
|
|
370
|
+
const skillsDir = path.join(cwd, '.claude', 'skills');
|
|
371
|
+
for (const [filename, templateFn] of Object.entries(SKILL_TEMPLATES)) {
|
|
372
|
+
const skillName = filename.replace('.md', '');
|
|
373
|
+
const skillDir = path.join(skillsDir, skillName);
|
|
374
|
+
await fs.mkdir(skillDir, { recursive: true });
|
|
375
|
+
await this.writeSkillFile(path.join(skillDir, 'SKILL.md'), templateFn(mcpServers));
|
|
298
376
|
}
|
|
299
377
|
}
|
|
300
|
-
async
|
|
301
|
-
const
|
|
378
|
+
async writeSkillFile(filePath, content) {
|
|
379
|
+
const newHash = crypto.createHash('md5').update(content).digest('hex');
|
|
302
380
|
try {
|
|
303
|
-
await fs.
|
|
304
|
-
|
|
381
|
+
const existing = await fs.readFile(filePath, 'utf-8');
|
|
382
|
+
const oldHash = crypto.createHash('md5').update(existing).digest('hex');
|
|
383
|
+
if (oldHash === newHash)
|
|
384
|
+
return;
|
|
305
385
|
}
|
|
306
386
|
catch { }
|
|
307
387
|
await fs.writeFile(filePath, content);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/cli-core/adapters/claude-code.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AAClC,2CAA6B;
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/cli-core/adapters/claude-code.ts"],"names":[],"mappings":"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"}
|