maestro-flow 0.3.44 → 0.3.45
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/.claude/commands/learn-decompose.md +1 -1
- package/.claude/commands/learn-follow.md +1 -1
- package/.claude/commands/learn-investigate.md +1 -1
- package/.claude/commands/learn-retro.md +1 -1
- package/.claude/commands/learn-second-opinion.md +1 -1
- package/.claude/commands/maestro-analyze.md +1 -1
- package/.claude/commands/maestro-brainstorm.md +1 -1
- package/.claude/commands/maestro-execute.md +1 -1
- package/.claude/commands/maestro-plan.md +1 -1
- package/.claude/commands/maestro-tools-execute.md +14 -14
- package/.claude/commands/maestro-tools-register.md +25 -26
- package/.claude/commands/quality-debug.md +1 -1
- package/.claude/commands/quality-review.md +1 -1
- package/.claude/commands/spec-add.md +7 -12
- package/.claude/commands/spec-load.md +15 -16
- package/.claude/skills/codify-to-knowhow/SKILL.md +1 -1
- package/.claude/skills/codify-to-knowhow/phases/04-index-verify.md +1 -1
- package/.codex/skills/codify-to-knowhow/SKILL.md +2 -2
- package/.codex/skills/maestro-analyze/SKILL.md +1 -1
- package/.codex/skills/maestro-collab/SKILL.md +1 -1
- package/.codex/skills/maestro-milestone-complete/SKILL.md +1 -1
- package/.codex/skills/maestro-plan/SKILL.md +1 -1
- package/.codex/skills/maestro-tools-execute/SKILL.md +12 -12
- package/.codex/skills/maestro-tools-register/SKILL.md +149 -144
- package/.codex/skills/maestro-ui-codify/SKILL.md +1 -1
- package/.codex/skills/maestro-verify/SKILL.md +1 -1
- package/.codex/skills/manage-issue-discover/SKILL.md +1 -1
- package/.codex/skills/quality-auto-test/SKILL.md +2 -2
- package/.codex/skills/quality-refactor/SKILL.md +1 -1
- package/.codex/skills/spec-add/SKILL.md +104 -114
- package/.codex/skills/spec-load/SKILL.md +73 -73
- package/.codex/skills/team-quality-assurance/roles/executor/role.md +1 -1
- package/.codex/skills/team-review/roles/reviewer/role.md +1 -1
- package/.codex/skills/team-tech-debt/roles/scanner/role.md +1 -1
- package/.codex/skills/team-testing/roles/executor/role.md +1 -1
- package/.codex/skills/team-testing/roles/generator/role.md +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +0 -2
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.d.ts +0 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js +6 -23
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +0 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js +0 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -36
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +0 -5
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +0 -2
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +2 -3
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
- package/dashboard/dist-server/src/agents/cli-agent-runner.js +5 -5
- package/dashboard/dist-server/src/agents/cli-agent-runner.js.map +1 -1
- package/dashboard/dist-server/src/tools/spec-entry-parser.d.ts +3 -9
- package/dashboard/dist-server/src/tools/spec-entry-parser.js +9 -31
- package/dashboard/dist-server/src/tools/spec-entry-parser.js.map +1 -1
- package/dashboard/dist-server/src/tools/spec-loader.d.ts +5 -9
- package/dashboard/dist-server/src/tools/spec-loader.js +99 -52
- package/dashboard/dist-server/src/tools/spec-loader.js.map +1 -1
- package/dist/src/agents/cli-agent-runner.js +5 -5
- package/dist/src/agents/cli-agent-runner.js.map +1 -1
- package/dist/src/commands/knowhow.js +4 -4
- package/dist/src/commands/knowhow.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +7 -14
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/commands/wiki.d.ts.map +1 -1
- package/dist/src/commands/wiki.js +11 -20
- package/dist/src/commands/wiki.js.map +1 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.js +10 -10
- package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
- package/dist/src/hooks/spec-injector.d.ts +0 -7
- package/dist/src/hooks/spec-injector.d.ts.map +1 -1
- package/dist/src/hooks/spec-injector.js +41 -81
- package/dist/src/hooks/spec-injector.js.map +1 -1
- package/dist/src/hooks/wiki-role-loader.d.ts +5 -5
- package/dist/src/hooks/wiki-role-loader.d.ts.map +1 -1
- package/dist/src/hooks/wiki-role-loader.js +6 -6
- package/dist/src/hooks/wiki-role-loader.js.map +1 -1
- package/dist/src/tools/spec-entry-parser.d.ts +3 -9
- package/dist/src/tools/spec-entry-parser.d.ts.map +1 -1
- package/dist/src/tools/spec-entry-parser.js +9 -31
- package/dist/src/tools/spec-entry-parser.js.map +1 -1
- package/dist/src/tools/spec-init.d.ts.map +1 -1
- package/dist/src/tools/spec-init.js +54 -73
- package/dist/src/tools/spec-init.js.map +1 -1
- package/dist/src/tools/spec-loader.d.ts +5 -9
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +99 -52
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/spec-writer.d.ts +1 -1
- package/dist/src/tools/spec-writer.d.ts.map +1 -1
- package/dist/src/tools/spec-writer.js +2 -2
- package/dist/src/tools/spec-writer.js.map +1 -1
- package/package.json +1 -1
- package/workflows/analyze.md +2 -2
- package/workflows/auto-test.md +2 -2
- package/workflows/brainstorm.md +1 -1
- package/workflows/codebase-rebuild.md +1 -1
- package/workflows/codebase-refresh.md +1 -1
- package/workflows/debug.md +1 -1
- package/workflows/execute.md +3 -3
- package/workflows/integration-test.md +2 -2
- package/workflows/issue-discover.md +1 -1
- package/workflows/knowhow.md +2 -2
- package/workflows/learn.md +1 -1
- package/workflows/map.md +1 -1
- package/workflows/milestone-complete.md +2 -2
- package/workflows/plan.md +1 -1
- package/workflows/quick.md +1 -1
- package/workflows/refactor.md +1 -1
- package/workflows/retrospective.md +3 -3
- package/workflows/review.md +1 -1
- package/workflows/roadmap-common.md +1 -1
- package/workflows/specs-add.md +2 -11
- package/workflows/specs-load.md +13 -14
- package/workflows/test-gen.md +1 -1
- package/workflows/tools-spec.md +17 -50
- package/workflows/ui-codify-knowhow.md +1 -1
- package/workflows/ui-codify.md +1 -1
- package/workflows/verify.md +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Spec Loader
|
|
2
|
+
* Spec Loader
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Category-based loading with keyword cross-matching and knowhow tool discovery.
|
|
5
5
|
* Reads .workflow/specs/*.md, filters by category via static mapping,
|
|
6
|
-
* returns concatenated content.
|
|
6
|
+
* discovers knowhow tools with matching category, returns concatenated content.
|
|
7
7
|
*/
|
|
8
|
-
export type SpecCategory = 'coding' | 'arch' | '
|
|
8
|
+
export type SpecCategory = 'coding' | 'arch' | 'debug' | 'test' | 'review' | 'learning';
|
|
9
9
|
export type SpecScope = 'project' | 'global' | 'team' | 'personal';
|
|
10
10
|
export interface SpecLoadResult {
|
|
11
11
|
content: string;
|
|
@@ -13,8 +13,6 @@ export interface SpecLoadResult {
|
|
|
13
13
|
totalLoaded: number;
|
|
14
14
|
}
|
|
15
15
|
export declare const CATEGORY_MAP: Record<string, SpecCategory>;
|
|
16
|
-
/** File → primary role mapping. Used by --role loading to identify main docs. */
|
|
17
|
-
export declare const FILE_ROLE_MAP: Record<string, string>;
|
|
18
16
|
export declare const TEAM_SPECS_DIR = ".workflow/collab/specs";
|
|
19
17
|
/**
|
|
20
18
|
* Resolve the directory for a given spec scope.
|
|
@@ -50,7 +48,5 @@ export interface LoadSpecsOptions {
|
|
|
50
48
|
/** Override global specs directory (for testing). Defaults to ~/.maestro/specs/ */
|
|
51
49
|
globalDir?: string;
|
|
52
50
|
}
|
|
53
|
-
export declare function loadSpecs(projectPath: string, category?: SpecCategory, uid?: string, keyword?: string, scope?: SpecScope, options?: LoadSpecsOptions
|
|
54
|
-
role?: string;
|
|
55
|
-
}): SpecLoadResult;
|
|
51
|
+
export declare function loadSpecs(projectPath: string, category?: SpecCategory, uid?: string, keyword?: string, scope?: SpecScope, options?: LoadSpecsOptions): SpecLoadResult;
|
|
56
52
|
//# sourceMappingURL=spec-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-loader.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"spec-loader.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAExF,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAOrD,CAAC;AAGF,eAAO,MAAM,cAAc,2BAA2B,CAAC;AAcvD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAW1F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CAqDrK"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Spec Loader
|
|
2
|
+
* Spec Loader
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Category-based loading with keyword cross-matching and knowhow tool discovery.
|
|
5
5
|
* Reads .workflow/specs/*.md, filters by category via static mapping,
|
|
6
|
-
* returns concatenated content.
|
|
6
|
+
* discovers knowhow tools with matching category, returns concatenated content.
|
|
7
7
|
*/
|
|
8
8
|
import { readFileSync, existsSync, readdirSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
9
9
|
import { join } from 'node:path';
|
|
@@ -15,23 +15,10 @@ import { paths } from '../config/paths.js';
|
|
|
15
15
|
export const CATEGORY_MAP = {
|
|
16
16
|
'coding-conventions.md': 'coding',
|
|
17
17
|
'architecture-constraints.md': 'arch',
|
|
18
|
-
'quality-rules.md': 'quality',
|
|
19
18
|
'debug-notes.md': 'debug',
|
|
20
19
|
'test-conventions.md': 'test',
|
|
21
20
|
'review-standards.md': 'review',
|
|
22
21
|
'learnings.md': 'learning',
|
|
23
|
-
'tools.md': 'tools',
|
|
24
|
-
};
|
|
25
|
-
/** File → primary role mapping. Used by --role loading to identify main docs. */
|
|
26
|
-
export const FILE_ROLE_MAP = {
|
|
27
|
-
'coding-conventions.md': 'implement',
|
|
28
|
-
'architecture-constraints.md': 'plan',
|
|
29
|
-
'test-conventions.md': 'test',
|
|
30
|
-
'review-standards.md': 'review',
|
|
31
|
-
'debug-notes.md': 'analyze',
|
|
32
|
-
'quality-rules.md': 'review',
|
|
33
|
-
'learnings.md': 'implement',
|
|
34
|
-
'tools.md': '', // no primary role — per-entry roles
|
|
35
22
|
};
|
|
36
23
|
const SPECS_DIR = '.workflow/specs';
|
|
37
24
|
export const TEAM_SPECS_DIR = '.workflow/collab/specs';
|
|
@@ -76,11 +63,10 @@ export function loadSpecs(projectPath, category, uid, keyword, scope, options) {
|
|
|
76
63
|
// Team/personal are per-user — auto-creating them for arbitrary uids is wrong.
|
|
77
64
|
autoInitSeeds(join(projectPath, SPECS_DIR));
|
|
78
65
|
autoInitSeeds(globalDir);
|
|
79
|
-
const role = options?.role;
|
|
80
66
|
// First pass: collect results per layer (skip empty)
|
|
81
67
|
const layerResults = [];
|
|
82
68
|
for (const { dir, label } of layers) {
|
|
83
|
-
const { sections, matched } = loadFromDir(dir, category, keyword
|
|
69
|
+
const { sections, matched } = loadFromDir(dir, category, keyword);
|
|
84
70
|
if (sections.length > 0) {
|
|
85
71
|
layerResults.push({ label, sections, matched });
|
|
86
72
|
}
|
|
@@ -100,6 +86,14 @@ export function loadSpecs(projectPath, category, uid, keyword, scope, options) {
|
|
|
100
86
|
allMatched.push(...matched);
|
|
101
87
|
totalCount += matched.length;
|
|
102
88
|
}
|
|
89
|
+
// Tool discovery: scan knowhow/ for documents matching category + tool: true
|
|
90
|
+
if (category) {
|
|
91
|
+
const toolSection = discoverKnowhowTools(join(projectPath, '.workflow'), category);
|
|
92
|
+
if (toolSection) {
|
|
93
|
+
allSections.push(toolSection.content);
|
|
94
|
+
totalCount += toolSection.count;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
103
97
|
return {
|
|
104
98
|
content: allSections.length > 0
|
|
105
99
|
? `# Project Specs (${totalCount} loaded)\n\n${allSections.join('\n\n---\n\n')}`
|
|
@@ -131,11 +125,11 @@ function buildLayers(projectPath, uid, scope, globalDir) {
|
|
|
131
125
|
* Load spec files from a single directory. Returns empty arrays if the
|
|
132
126
|
* directory does not exist or is unreadable.
|
|
133
127
|
*
|
|
134
|
-
* When `
|
|
135
|
-
* - Primary
|
|
136
|
-
* - Other files: only entries with matching
|
|
128
|
+
* When `category` is provided:
|
|
129
|
+
* - Primary category doc is loaded in full
|
|
130
|
+
* - Other files: only entries with matching keywords are included (cross-category)
|
|
137
131
|
*/
|
|
138
|
-
function loadFromDir(specsDir, category, keyword
|
|
132
|
+
function loadFromDir(specsDir, category, keyword) {
|
|
139
133
|
if (!existsSync(specsDir))
|
|
140
134
|
return { sections: [], matched: [] };
|
|
141
135
|
let files;
|
|
@@ -148,7 +142,7 @@ function loadFromDir(specsDir, category, keyword, role) {
|
|
|
148
142
|
const sections = [];
|
|
149
143
|
const matched = [];
|
|
150
144
|
for (const file of files) {
|
|
151
|
-
if (!shouldInclude(file, category
|
|
145
|
+
if (!shouldInclude(file, category))
|
|
152
146
|
continue;
|
|
153
147
|
const filePath = join(specsDir, file);
|
|
154
148
|
let raw;
|
|
@@ -161,11 +155,11 @@ function loadFromDir(specsDir, category, keyword, role) {
|
|
|
161
155
|
const body = stripFrontmatter(raw).trim();
|
|
162
156
|
if (!body)
|
|
163
157
|
continue;
|
|
164
|
-
//
|
|
165
|
-
const
|
|
166
|
-
const
|
|
158
|
+
// Primary category doc → full load; other files → keyword-filtered only
|
|
159
|
+
const fileCategory = CATEGORY_MAP[file];
|
|
160
|
+
const isPrimaryDoc = category && fileCategory === category;
|
|
167
161
|
const workflowRoot = join(specsDir, '..');
|
|
168
|
-
const formatted = formatFileContent(body, keyword,
|
|
162
|
+
const formatted = formatFileContent(body, keyword, isPrimaryDoc ? undefined : category, workflowRoot);
|
|
169
163
|
if (formatted) {
|
|
170
164
|
sections.push(formatted);
|
|
171
165
|
matched.push(file);
|
|
@@ -176,49 +170,50 @@ function loadFromDir(specsDir, category, keyword, role) {
|
|
|
176
170
|
// ============================================================================
|
|
177
171
|
// Internal
|
|
178
172
|
// ============================================================================
|
|
179
|
-
function shouldInclude(filename, category
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
// Primary doc for this role → always include (full load)
|
|
189
|
-
if (fileRole === role)
|
|
190
|
-
return true;
|
|
191
|
-
// Files with no role mapping or different primary role → include for entry-level filtering
|
|
173
|
+
function shouldInclude(filename, category) {
|
|
174
|
+
if (!category)
|
|
175
|
+
return true; // No filter → load all
|
|
176
|
+
// Category filter: include primary doc + all other files (for keyword cross-matching)
|
|
177
|
+
const cat = CATEGORY_MAP[filename];
|
|
178
|
+
if (!cat)
|
|
179
|
+
return false; // Unknown file
|
|
180
|
+
// Primary category doc → always include (full load)
|
|
181
|
+
if (cat === category)
|
|
192
182
|
return true;
|
|
193
|
-
|
|
194
|
-
// No filter → load all
|
|
183
|
+
// Other category files → include for keyword-based cross-category matching
|
|
195
184
|
return true;
|
|
196
185
|
}
|
|
197
186
|
/**
|
|
198
187
|
* Parse file body, strip <spec-entry> tags, format clean output with metadata.
|
|
199
188
|
* When keyword is provided, only return matching entries.
|
|
200
|
-
* When
|
|
189
|
+
* When crossCategory is provided, only return entries whose keywords overlap
|
|
190
|
+
* (cross-category matching for non-primary docs).
|
|
201
191
|
* Falls back to raw body for files with no structured entries.
|
|
202
192
|
*/
|
|
203
|
-
function formatFileContent(body, keyword,
|
|
193
|
+
function formatFileContent(body, keyword, crossCategory, workflowRoot) {
|
|
204
194
|
const { entries, legacy } = parseSpecEntries(body);
|
|
205
195
|
// No structured entries → pass through raw body (or keyword-grep it)
|
|
206
196
|
if (entries.length === 0 && legacy.length === 0) {
|
|
207
|
-
//
|
|
208
|
-
if (
|
|
197
|
+
// Cross-category mode: non-primary docs with no structured entries are skipped
|
|
198
|
+
if (crossCategory)
|
|
209
199
|
return null;
|
|
210
200
|
if (keyword) {
|
|
211
201
|
return body.toLowerCase().includes(keyword.toLowerCase()) ? body : null;
|
|
212
202
|
}
|
|
213
203
|
return body;
|
|
214
204
|
}
|
|
215
|
-
//
|
|
205
|
+
// In cross-category mode: only show entries that have keyword overlap
|
|
216
206
|
let filteredEntries = entries;
|
|
217
|
-
if (
|
|
218
|
-
|
|
207
|
+
if (crossCategory && keyword) {
|
|
208
|
+
const kw = keyword.toLowerCase();
|
|
209
|
+
filteredEntries = entries.filter(e => e.keywords.includes(kw));
|
|
219
210
|
if (filteredEntries.length === 0)
|
|
220
211
|
return null;
|
|
221
212
|
}
|
|
213
|
+
else if (crossCategory) {
|
|
214
|
+
// Cross-category without keyword → skip (no way to match)
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
222
217
|
const parts = [];
|
|
223
218
|
// Separate ref entries (lightweight display) from regular entries
|
|
224
219
|
const refEntries = filteredEntries.filter(e => e.ref);
|
|
@@ -231,7 +226,7 @@ function formatFileContent(body, keyword, role, workflowRoot) {
|
|
|
231
226
|
parts.push(formatSpecEntries(matchedRegular));
|
|
232
227
|
if (matchedRef.length > 0)
|
|
233
228
|
parts.push(matchedRef.map(e => formatRefEntry(e, workflowRoot)).join('\n\n---\n\n'));
|
|
234
|
-
if (!
|
|
229
|
+
if (!crossCategory) {
|
|
235
230
|
for (const leg of legacy) {
|
|
236
231
|
if (leg.content.toLowerCase().includes(kw))
|
|
237
232
|
parts.push(leg.content);
|
|
@@ -243,7 +238,7 @@ function formatFileContent(body, keyword, role, workflowRoot) {
|
|
|
243
238
|
parts.push(formatSpecEntries(regularEntries));
|
|
244
239
|
if (refEntries.length > 0)
|
|
245
240
|
parts.push(refEntries.map(e => formatRefEntry(e, workflowRoot)).join('\n\n---\n\n'));
|
|
246
|
-
if (!
|
|
241
|
+
if (!crossCategory) {
|
|
247
242
|
for (const leg of legacy)
|
|
248
243
|
parts.push(leg.content);
|
|
249
244
|
}
|
|
@@ -294,6 +289,59 @@ function resolveRefSummary(ref, workflowRoot) {
|
|
|
294
289
|
return null;
|
|
295
290
|
}
|
|
296
291
|
}
|
|
292
|
+
/**
|
|
293
|
+
* Scan knowhow/ for documents matching category + tool: true in YAML frontmatter.
|
|
294
|
+
* Returns a formatted section with tool summaries and load commands.
|
|
295
|
+
*/
|
|
296
|
+
function discoverKnowhowTools(workflowRoot, category) {
|
|
297
|
+
const knowhowDir = join(workflowRoot, 'knowhow');
|
|
298
|
+
if (!existsSync(knowhowDir))
|
|
299
|
+
return null;
|
|
300
|
+
let files;
|
|
301
|
+
try {
|
|
302
|
+
files = readdirSync(knowhowDir).filter(f => f.endsWith('.md'));
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
return null;
|
|
306
|
+
}
|
|
307
|
+
const tools = [];
|
|
308
|
+
for (const file of files) {
|
|
309
|
+
try {
|
|
310
|
+
const raw = readFileSync(join(knowhowDir, file), 'utf-8');
|
|
311
|
+
const fmMatch = raw.match(/^---\s*\n([\s\S]*?)\n---/);
|
|
312
|
+
if (!fmMatch)
|
|
313
|
+
continue;
|
|
314
|
+
const fm = fmMatch[1];
|
|
315
|
+
// Check tool: true
|
|
316
|
+
if (!/^tool:\s*true\s*$/m.test(fm))
|
|
317
|
+
continue;
|
|
318
|
+
// Check category match
|
|
319
|
+
const catMatch = fm.match(/^category:\s*(.+)$/m);
|
|
320
|
+
if (!catMatch || catMatch[1].trim() !== category)
|
|
321
|
+
continue;
|
|
322
|
+
const titleMatch = fm.match(/^title:\s*(.+)$/m);
|
|
323
|
+
const summaryMatch = fm.match(/^summary:\s*"?(.+?)"?\s*$/m);
|
|
324
|
+
const title = titleMatch ? titleMatch[1].trim() : file;
|
|
325
|
+
// Summary: YAML summary field, or first paragraph after frontmatter
|
|
326
|
+
let summary = summaryMatch ? summaryMatch[1].trim() : '';
|
|
327
|
+
if (!summary) {
|
|
328
|
+
const body = raw.slice(fmMatch[0].length + 1).trim();
|
|
329
|
+
summary = body.split('\n\n')[0].slice(0, 200).replace(/\s+/g, ' ');
|
|
330
|
+
}
|
|
331
|
+
const stem = file.replace(/\.md$/, '');
|
|
332
|
+
const slug = stem.replace(/^(KNW|TIP|TPL|RCP|REF|DCS|AST|BLP|DOC)-/i, '').toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
|
|
333
|
+
tools.push({ title, summary, id: `knowhow-${slug}` });
|
|
334
|
+
}
|
|
335
|
+
catch {
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
if (tools.length === 0)
|
|
340
|
+
return null;
|
|
341
|
+
const content = `## Available Tools (${category})\n\n` +
|
|
342
|
+
tools.map(t => `### ${t.title} (tool)\n\n${t.summary}\n\n→ Load: maestro wiki load ${t.id}`).join('\n\n---\n\n');
|
|
343
|
+
return { content, count: tools.length };
|
|
344
|
+
}
|
|
297
345
|
function stripFrontmatter(raw) {
|
|
298
346
|
const trimmed = raw.trimStart();
|
|
299
347
|
if (!trimmed.startsWith('---'))
|
|
@@ -313,7 +361,6 @@ const AUTO_INIT_SEEDS = [
|
|
|
313
361
|
['coding-conventions.md', '# Coding Conventions\n\n## Entries\n\n'],
|
|
314
362
|
['architecture-constraints.md', '# Architecture Constraints\n\n## Entries\n\n'],
|
|
315
363
|
['learnings.md', '# Learnings\n\n## Entries\n\n'],
|
|
316
|
-
['quality-rules.md', '# Quality Rules\n\n## Entries\n\n'],
|
|
317
364
|
['debug-notes.md', '# Debug Notes\n\n## Entries\n\n'],
|
|
318
365
|
['test-conventions.md', '# Test Conventions\n\n## Entries\n\n'],
|
|
319
366
|
['review-standards.md', '# Review Standards\n\n## Entries\n\n'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-loader.js","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spec-loader.js","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ export interface SpecAddResult {
|
|
|
20
20
|
* - Skips duplicates (case-insensitive title match)
|
|
21
21
|
* - Formats entry using `formatNewEntry` and appends to file
|
|
22
22
|
*/
|
|
23
|
-
export declare function appendSpecEntry(projectPath: string, category: SpecCategory, title: string, content: string, keywords: string[], source?: string, scope?: SpecScope, uid?: string
|
|
23
|
+
export declare function appendSpecEntry(projectPath: string, category: SpecCategory, title: string, content: string, keywords: string[], source?: string, scope?: SpecScope, uid?: string): SpecAddResult;
|
|
24
24
|
/**
|
|
25
25
|
* Append a spec index entry that references a knowhow document.
|
|
26
26
|
* The entry body is a summary, with a ref attribute pointing to the knowhow file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-writer.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-writer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAgC,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMnG,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAiBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,SAAS,EACjB,GAAG,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"spec-writer.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-writer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAgC,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMnG,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAiBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,SAAS,EACjB,GAAG,CAAC,EAAE,MAAM,GACX,aAAa,CAmCf;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,SAAS,EACjB,GAAG,CAAC,EAAE,MAAM,GACX,aAAa,CA8Bf"}
|
|
@@ -29,7 +29,7 @@ function categoryToFilename(category) {
|
|
|
29
29
|
* - Skips duplicates (case-insensitive title match)
|
|
30
30
|
* - Formats entry using `formatNewEntry` and appends to file
|
|
31
31
|
*/
|
|
32
|
-
export function appendSpecEntry(projectPath, category, title, content, keywords, source, scope, uid
|
|
32
|
+
export function appendSpecEntry(projectPath, category, title, content, keywords, source, scope, uid) {
|
|
33
33
|
const specsDir = resolveSpecDir(projectPath, scope ?? 'project', uid);
|
|
34
34
|
const filename = categoryToFilename(category);
|
|
35
35
|
if (!filename) {
|
|
@@ -53,7 +53,7 @@ export function appendSpecEntry(projectPath, category, title, content, keywords,
|
|
|
53
53
|
}
|
|
54
54
|
// Generate and append entry
|
|
55
55
|
const date = new Date().toISOString().slice(0, 10);
|
|
56
|
-
const entry = formatNewEntry(category, keywords, date, title, content, source
|
|
56
|
+
const entry = formatNewEntry(category, keywords, date, title, content, source);
|
|
57
57
|
writeFileSync(filePath, existing + '\n\n' + entry, 'utf-8');
|
|
58
58
|
return { ok: true, file: filePath, category, title, duplicate: false };
|
|
59
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-writer.js","sourceRoot":"","sources":["../../../src/tools/spec-writer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAqC,MAAM,kBAAkB,CAAC;AAcnG,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAE/E,SAAS,kBAAkB,CAAC,QAAsB;IAChD,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3D,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,QAAsB,EACtB,KAAa,EACb,OAAe,EACf,QAAkB,EAClB,MAAe,EACf,KAAiB,EACjB,GAAY
|
|
1
|
+
{"version":3,"file":"spec-writer.js","sourceRoot":"","sources":["../../../src/tools/spec-writer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAqC,MAAM,kBAAkB,CAAC;AAcnG,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAE/E,SAAS,kBAAkB,CAAC,QAAsB;IAChD,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3D,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,QAAsB,EACtB,KAAa,EACb,OAAe,EACf,QAAkB,EAClB,MAAe,EACf,KAAiB,EACjB,GAAY;IAEZ,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,EAAE,KAAK,IAAI,SAAS,EAAE,GAAG,CAAC,CAAC;IAEtE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpE,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE1C,8CAA8C;IAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/G,aAAa,CAAC,QAAQ,EAAE,KAAK,WAAW,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,uBAAuB;IACvB,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEjD,uDAAuD;IACvD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACxE,CAAC;IAED,4BAA4B;IAC5B,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/E,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC;IAE5D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmB,EACnB,QAAsB,EACtB,KAAa,EACb,OAAe,EACf,QAAkB,EAClB,GAAW,EACX,MAAe,EACf,KAAiB,EACjB,GAAY;IAEZ,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,EAAE,KAAK,IAAI,SAAS,EAAE,GAAG,CAAC,CAAC;IAEtE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpE,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE1C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/G,aAAa,CAAC,QAAQ,EAAE,KAAK,WAAW,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEjD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACxE,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACpF,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC;IAE5D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACzE,CAAC"}
|
package/package.json
CHANGED
package/workflows/analyze.md
CHANGED
|
@@ -106,12 +106,12 @@ Parse $ARGUMENTS to determine mode and flags:
|
|
|
106
106
|
3. Read `.workflow/state.json` → `current_milestone`, `artifacts[]`, `accumulated_context` (key_decisions, deferred items, blockers)
|
|
107
107
|
4. Find prior analyze artifacts from `state.json.artifacts[]` where type=analyze and same milestone → load their `context.md` to skip already-decided areas
|
|
108
108
|
5. Find brainstorm artifacts from `state.json.artifacts[]` where type=brainstorm and same milestone → load `guidance-specification.md` if exists
|
|
109
|
-
6. Load project specs: `specs_content = maestro spec load --
|
|
109
|
+
6. Load project specs: `specs_content = maestro spec load --category arch`
|
|
110
110
|
|
|
111
111
|
**Load prior context** (adhoc/standalone scope):
|
|
112
112
|
1. Read `.workflow/project.md` (if exists) — project vision, Validated requirements, Active requirements, Key Decisions
|
|
113
113
|
2. Read `.workflow/state.json` (if exists) → `accumulated_context` (key_decisions, deferred, blockers)
|
|
114
|
-
3. Load project specs: `specs_content = maestro spec load --
|
|
114
|
+
3. Load project specs: `specs_content = maestro spec load --category arch`
|
|
115
115
|
|
|
116
116
|
**Quick mode routing**: If QUICK_MODE, skip to Step 8 (Decision Extraction) after loading context.
|
|
117
117
|
|
package/workflows/auto-test.md
CHANGED
|
@@ -26,8 +26,8 @@ Only Step 2 diverges (scenario source). Everything else is shared.
|
|
|
26
26
|
|
|
27
27
|
**Load specs:**
|
|
28
28
|
```
|
|
29
|
-
specs_test = maestro spec load --
|
|
30
|
-
specs_arch = maestro spec load --
|
|
29
|
+
specs_test = maestro spec load --category test
|
|
30
|
+
specs_arch = maestro spec load --category arch
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
`specs_test` for test conventions (Steps 3-5); `specs_arch` for module boundaries (Step 2).
|
package/workflows/brainstorm.md
CHANGED
|
@@ -135,7 +135,7 @@ Parse $ARGUMENTS to determine execution mode:
|
|
|
135
135
|
### Step 1.5: Load Project Specs
|
|
136
136
|
|
|
137
137
|
```
|
|
138
|
-
specs_content = maestro spec load --
|
|
138
|
+
specs_content = maestro spec load --category arch
|
|
139
139
|
```
|
|
140
140
|
|
|
141
141
|
Pass to conceptual-planning-agent in Step 4 for architecture-aware role analysis.
|
|
@@ -52,7 +52,7 @@ Build affected sets:
|
|
|
52
52
|
### Step 3.5: Load Project Specs
|
|
53
53
|
|
|
54
54
|
```
|
|
55
|
-
specs_content = maestro spec load --
|
|
55
|
+
specs_content = maestro spec load --category arch
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
Used in Step 4-5 to validate refreshed docs against architectural expectations.
|
package/workflows/debug.md
CHANGED
|
@@ -53,7 +53,7 @@ If resuming: load understanding.md + evidence.ndjson, spawn continuation agent.
|
|
|
53
53
|
### Step 1.5: Load Project Specs
|
|
54
54
|
|
|
55
55
|
```
|
|
56
|
-
specs_content = maestro spec load --
|
|
56
|
+
specs_content = maestro spec load --category debug
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
Pass to debug agents as prior knowledge (known issues, root causes, workarounds).
|
package/workflows/execute.md
CHANGED
|
@@ -175,7 +175,7 @@ Build execution_queue from plan.json.waves, including only waves with pending (n
|
|
|
175
175
|
## E1.5: Load Project Specs
|
|
176
176
|
|
|
177
177
|
```
|
|
178
|
-
specs_content = maestro spec load --
|
|
178
|
+
specs_content = maestro spec load --category coding
|
|
179
179
|
```
|
|
180
180
|
|
|
181
181
|
Pass specs_content to each executor agent in E2.
|
|
@@ -457,9 +457,9 @@ Append to state.json.artifacts (atomic write)
|
|
|
457
457
|
|
|
458
458
|
// Incremental learning extraction
|
|
459
459
|
Read all .summaries/TASK-*-summary.md; extract strategy adjustments, patterns, pitfalls
|
|
460
|
-
Deduplicate against existing learnings (maestro spec load --
|
|
460
|
+
Deduplicate against existing learnings (maestro spec load --category coding)
|
|
461
461
|
Append unique entries to .workflow/specs/learnings.md using <spec-entry> closed-tag format:
|
|
462
|
-
|
|
462
|
+
category="learning", keywords (3-5 terms), date, source="execute"
|
|
463
463
|
|
|
464
464
|
Mark artifact.harvested = true; write state.json (atomic)
|
|
465
465
|
```
|
|
@@ -30,8 +30,8 @@ If existing session at `${PHASE_DIR}/.tests/integration/state.json`: offer resum
|
|
|
30
30
|
### Step 1.3: Load Project Specs
|
|
31
31
|
|
|
32
32
|
```
|
|
33
|
-
specs_content = maestro spec load --
|
|
34
|
-
arch_content = maestro spec load --
|
|
33
|
+
specs_content = maestro spec load --category test
|
|
34
|
+
arch_content = maestro spec load --category arch
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
`specs_content` for test conventions; `arch_content` for module boundaries in Step 2-3.
|
|
@@ -86,7 +86,7 @@ Initialize discovery-state.json:
|
|
|
86
86
|
### Step 3.5: Load Project Specs
|
|
87
87
|
|
|
88
88
|
```
|
|
89
|
-
specs_content = maestro spec load --
|
|
89
|
+
specs_content = maestro spec load --category coding
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
Pass to each analysis agent so severity assessments align with project quality standards.
|
package/workflows/knowhow.md
CHANGED
|
@@ -390,7 +390,7 @@ Atomic insights captured during active work.
|
|
|
390
390
|
|
|
391
391
|
## Entries
|
|
392
392
|
|
|
393
|
-
<spec-entry
|
|
393
|
+
<spec-entry category="coding" keywords="pattern,auth,jwt" date="2026-05-10" id="INS-abc123" source="manual">
|
|
394
394
|
|
|
395
395
|
### JWT refresh tokens must rotate on every use
|
|
396
396
|
|
|
@@ -402,7 +402,7 @@ Refresh-on-use prevents replay attacks.
|
|
|
402
402
|
|
|
403
403
|
</spec-entry>
|
|
404
404
|
|
|
405
|
-
<spec-entry
|
|
405
|
+
<spec-entry category="debug" keywords="gotcha,redis,cache" date="2026-05-11" id="INS-def456" source="retrospective">
|
|
406
406
|
|
|
407
407
|
### Redis MULTI is not truly transactional
|
|
408
408
|
|
package/workflows/learn.md
CHANGED
|
@@ -118,7 +118,7 @@ First match wins. If nothing matches, category = `technique`.
|
|
|
118
118
|
|
|
119
119
|
```
|
|
120
120
|
entry = <spec-entry
|
|
121
|
-
|
|
121
|
+
category="{category}"
|
|
122
122
|
keywords="{category},{parsed --keywords values joined by comma}"
|
|
123
123
|
date="{YYYY-MM-DD}"
|
|
124
124
|
id="INS-{hex}"
|
package/workflows/map.md
CHANGED
|
@@ -30,7 +30,7 @@ Spawn 4 parallel `workflow-codebase-mapper` agents, each writing to `.workflow/r
|
|
|
30
30
|
|
|
31
31
|
If `$ARGUMENTS` provided, pass as focus filter to each agent.
|
|
32
32
|
|
|
33
|
-
Load project specs: `maestro spec load --
|
|
33
|
+
Load project specs: `maestro spec load --category arch`
|
|
34
34
|
|
|
35
35
|
Each agent spawned in parallel as `workflow-codebase-mapper` subagent with specs context.
|
|
36
36
|
|
|
@@ -41,7 +41,7 @@ Archive completed milestone, move artifacts to history, and prepare for next.
|
|
|
41
41
|
## Step 2.5: Load Existing Learnings
|
|
42
42
|
|
|
43
43
|
```
|
|
44
|
-
existing_learnings = maestro spec load --
|
|
44
|
+
existing_learnings = maestro spec load --category coding
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
Check existing entries to avoid duplicates when appending in Step 3.
|
|
@@ -57,7 +57,7 @@ Check existing entries to avoid duplicates when appending in Step 3.
|
|
|
57
57
|
|
|
58
58
|
2. Aggregate learnings and append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format. Each entry (strategy adjustment, pattern, or pitfall) follows this template:
|
|
59
59
|
```
|
|
60
|
-
<spec-entry
|
|
60
|
+
<spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
|
|
61
61
|
|
|
62
62
|
### {summary}
|
|
63
63
|
|
package/workflows/plan.md
CHANGED
|
@@ -74,7 +74,7 @@ default → Create Mode: P1 → P2 → P3 → P4 → P4.5 → P5
|
|
|
74
74
|
|
|
75
75
|
3. **Load project specs**
|
|
76
76
|
```
|
|
77
|
-
specs_content = maestro spec load --
|
|
77
|
+
specs_content = maestro spec load --category arch
|
|
78
78
|
```
|
|
79
79
|
Pass to planner agent as project constraints context.
|
|
80
80
|
|
package/workflows/quick.md
CHANGED
|
@@ -204,7 +204,7 @@ Report: "Context captured: ${QUICK_DIR}/context.md"
|
|
|
204
204
|
### Step 4.5: Load Project Specs
|
|
205
205
|
|
|
206
206
|
```
|
|
207
|
-
specs_content = maestro spec load --
|
|
207
|
+
specs_content = maestro spec load --category coding
|
|
208
208
|
```
|
|
209
209
|
|
|
210
210
|
Passed inline to planner agent in Step 5.
|
package/workflows/refactor.md
CHANGED
|
@@ -39,7 +39,7 @@ Write index.json: id, type="refactor", title, status="active", scope, plan (empt
|
|
|
39
39
|
### Step 2.5: Load Project Specs
|
|
40
40
|
|
|
41
41
|
```
|
|
42
|
-
specs_content = maestro spec load --
|
|
42
|
+
specs_content = maestro spec load --category coding
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
Used in Step 3 to detect pattern violations against project conventions.
|