specsmd 0.1.64 → 0.1.65
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/flows/fire/agents/builder/agent.md +6 -0
- package/flows/fire/agents/builder/skills/run-execute/SKILL.md +75 -21
- package/flows/fire/agents/builder/skills/run-execute/scripts/complete-run.cjs +37 -4
- package/flows/fire/agents/builder/skills/run-plan/SKILL.md +12 -0
- package/flows/fire/agents/builder/skills/walkthrough-generate/SKILL.md +108 -22
- package/flows/fire/agents/builder/skills/walkthrough-generate/templates/walkthrough.md.hbs +68 -0
- package/flows/ideation/README.md +35 -0
- package/flows/ideation/agents/orchestrator/agent.md +103 -0
- package/flows/ideation/agents/orchestrator/skills/flame/SKILL.md +132 -0
- package/flows/ideation/agents/orchestrator/skills/flame/references/evaluation-criteria.md +81 -0
- package/flows/ideation/agents/orchestrator/skills/flame/references/six-hats-method.md +87 -0
- package/flows/ideation/agents/orchestrator/skills/flame/templates/flame-report.md.hbs +81 -0
- package/flows/ideation/agents/orchestrator/skills/forge/SKILL.md +153 -0
- package/flows/ideation/agents/orchestrator/skills/forge/references/disney-method.md +94 -0
- package/flows/ideation/agents/orchestrator/skills/forge/references/pitch-framework.md +87 -0
- package/flows/ideation/agents/orchestrator/skills/forge/templates/concept-brief.md.hbs +83 -0
- package/flows/ideation/agents/orchestrator/skills/spark/SKILL.md +152 -0
- package/flows/ideation/agents/orchestrator/skills/spark/references/anti-bias.md +43 -0
- package/flows/ideation/agents/orchestrator/skills/spark/references/techniques/analogy.md +60 -0
- package/flows/ideation/agents/orchestrator/skills/spark/references/techniques/first-principles.md +56 -0
- package/flows/ideation/agents/orchestrator/skills/spark/references/techniques/index.yaml +76 -0
- package/flows/ideation/agents/orchestrator/skills/spark/references/techniques/inversion.md +52 -0
- package/flows/ideation/agents/orchestrator/skills/spark/references/techniques/questorming.md +57 -0
- package/flows/ideation/agents/orchestrator/skills/spark/references/techniques/random-word.md +35 -0
- package/flows/ideation/agents/orchestrator/skills/spark/references/techniques/scamper.md +67 -0
- package/flows/ideation/agents/orchestrator/skills/spark/references/techniques/what-if.md +55 -0
- package/flows/ideation/agents/orchestrator/skills/spark/templates/spark-bank.md.hbs +72 -0
- package/flows/ideation/commands/flame.md +43 -0
- package/flows/ideation/commands/forge.md +43 -0
- package/flows/ideation/commands/ideation.md +51 -0
- package/flows/ideation/commands/spark.md +43 -0
- package/flows/ideation/memory-bank.yaml +177 -0
- package/flows/ideation/quick-start.md +84 -0
- package/flows/ideation/shared/protocols/anti-bias.md +79 -0
- package/flows/ideation/shared/protocols/deep-thinking.md +92 -0
- package/flows/ideation/shared/protocols/diverge-converge.md +72 -0
- package/flows/ideation/shared/protocols/interaction-adaptation.md +88 -0
- package/lib/constants.js +5 -0
- package/package.json +1 -1
|
@@ -44,6 +44,12 @@ You are the **Builder Agent** for FIRE (Fast Intent-Run Engineering).
|
|
|
44
44
|
|
|
45
45
|
<step n="4" title="Route by State">
|
|
46
46
|
<check if="active run exists">
|
|
47
|
+
<action>Read runs.active[0] from state.yaml</action>
|
|
48
|
+
<action>Read scope (single/batch/wide) and work_items array</action>
|
|
49
|
+
<action>Count items by status: completed, in_progress, pending</action>
|
|
50
|
+
<output>Active run {id} ({scope}) — {completed_count} done, {remaining_count} remaining</output>
|
|
51
|
+
<mandate>DO NOT treat completed items as needing re-execution</mandate>
|
|
52
|
+
<mandate>ONLY work on the current_item from state.yaml</mandate>
|
|
47
53
|
<action>Resume execution — invoke run-execute skill</action>
|
|
48
54
|
</check>
|
|
49
55
|
<check if="pending work items exist">
|
|
@@ -9,6 +9,24 @@ Execute work items based on their assigned mode (autopilot, confirm, validate).
|
|
|
9
9
|
Supports both single-item and multi-item (batch/wide) runs.
|
|
10
10
|
</objective>
|
|
11
11
|
|
|
12
|
+
<progress_display>
|
|
13
|
+
Show current position in workflow:
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
### Run Progress
|
|
17
|
+
- [ ] Run initialized (init-run.cjs)
|
|
18
|
+
- [ ] Context loaded
|
|
19
|
+
- [ ] Plan generated ← {current_step}
|
|
20
|
+
- [ ] Implementation
|
|
21
|
+
- [ ] Tests passing
|
|
22
|
+
- [ ] Code review
|
|
23
|
+
- [ ] Run completed (complete-run.cjs)
|
|
24
|
+
- [ ] Walkthrough generated
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Update markers as you progress: [x] = done, ← current = active step
|
|
28
|
+
</progress_display>
|
|
29
|
+
|
|
12
30
|
<prerequisites>
|
|
13
31
|
Before executing scripts, ensure required dependencies are installed:
|
|
14
32
|
|
|
@@ -43,28 +61,48 @@ Supports both single-item and multi-item (batch/wide) runs.
|
|
|
43
61
|
</check>
|
|
44
62
|
|
|
45
63
|
<check if="runs.active has entries">
|
|
46
|
-
<action>Load run
|
|
47
|
-
<action>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
<action>Load active run from state.yaml runs.active[0]</action>
|
|
65
|
+
<action>Read scope (single/batch/wide) and work_items array</action>
|
|
66
|
+
|
|
67
|
+
<substep n="0a" title="Enumerate Work Item Status">
|
|
68
|
+
<action>For EACH work item in runs.active[0].work_items, classify by status:</action>
|
|
69
|
+
<action>Build status summary from state.yaml (NOT from artifact files):</action>
|
|
70
|
+
<format>
|
|
71
|
+
[DONE] {item-id} — completed
|
|
72
|
+
[WORKING] {item-id} (phase: {current_phase}) — in_progress
|
|
73
|
+
[PENDING] {item-id} — pending
|
|
74
|
+
</format>
|
|
75
|
+
<action>Count: completed={X}, in_progress={Y}, pending={Z}</action>
|
|
76
|
+
</substep>
|
|
77
|
+
|
|
78
|
+
<substep n="0b" title="Determine Resume Point for Current Item">
|
|
79
|
+
<action>Get current_item from state.yaml</action>
|
|
80
|
+
<action>Read current_phase from the current item's entry in work_items</action>
|
|
81
|
+
|
|
82
|
+
<determine_resume_point>
|
|
83
|
+
Use current_phase from state.yaml to determine resume point:
|
|
84
|
+
|
|
85
|
+
| current_phase | Resume At |
|
|
86
|
+
|---------------|-----------|
|
|
87
|
+
| plan (or unset) | Step 3 (Generate Plan) |
|
|
88
|
+
| execute | Step 5 (Implementation) |
|
|
89
|
+
| test | Step 6 (Run Tests) |
|
|
90
|
+
| review | Step 6b (Code Review) |
|
|
91
|
+
</determine_resume_point>
|
|
92
|
+
</substep>
|
|
93
|
+
|
|
94
|
+
<llm critical="true">
|
|
95
|
+
<mandate>NEVER call --complete-item for items with status "completed" — they are already done</mandate>
|
|
96
|
+
<mandate>NEVER re-execute steps (plan, implement, test) for completed items</mandate>
|
|
97
|
+
<mandate>ONLY work on the current_item identified in state.yaml</mandate>
|
|
98
|
+
<mandate>Use current_phase from state.yaml — do NOT infer phase from artifact file existence</mandate>
|
|
99
|
+
</llm>
|
|
63
100
|
|
|
64
101
|
<output>
|
|
65
|
-
Resuming run {run-id} for work item {current_item}.
|
|
102
|
+
Resuming run {run-id} ({scope}) for work item {current_item}.
|
|
66
103
|
Mode: {mode}
|
|
67
|
-
|
|
104
|
+
Phase: {current_phase}
|
|
105
|
+
Status: {completed_count} done, {in_progress_count} working, {pending_count} pending
|
|
68
106
|
Resuming at: Step {step_number}
|
|
69
107
|
</output>
|
|
70
108
|
</check>
|
|
@@ -105,8 +143,14 @@ Supports both single-item and multi-item (batch/wide) runs.
|
|
|
105
143
|
|
|
106
144
|
<flow>
|
|
107
145
|
<step n="1" title="Initialize Run">
|
|
108
|
-
<
|
|
109
|
-
|
|
146
|
+
<hard_gate>
|
|
147
|
+
⛔ HARD GATE - SCRIPT EXECUTION REQUIRED
|
|
148
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
149
|
+
You MUST call init-run.cjs script.
|
|
150
|
+
DO NOT use mkdir or create files directly.
|
|
151
|
+
The script creates BOTH the folder AND run.md file.
|
|
152
|
+
If you skip this, state.yaml will be inconsistent.
|
|
153
|
+
</hard_gate>
|
|
110
154
|
|
|
111
155
|
<action>Prepare work items JSON array:</action>
|
|
112
156
|
<code>
|
|
@@ -458,6 +502,16 @@ Supports both single-item and multi-item (batch/wide) runs.
|
|
|
458
502
|
</step>
|
|
459
503
|
|
|
460
504
|
<step n="7" title="Complete Current Work Item">
|
|
505
|
+
<hard_gate>
|
|
506
|
+
⛔ HARD GATE - SCRIPT EXECUTION REQUIRED
|
|
507
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
508
|
+
You MUST call complete-run.cjs script.
|
|
509
|
+
DO NOT manually update state.yaml or run.md.
|
|
510
|
+
Use --complete-item for batch runs with remaining items.
|
|
511
|
+
Use --complete-run only when ALL items are done.
|
|
512
|
+
If you skip this, state becomes inconsistent.
|
|
513
|
+
</hard_gate>
|
|
514
|
+
|
|
461
515
|
<llm critical="true">
|
|
462
516
|
<mandate>BATCH RUNS: You MUST loop until ALL items are done</mandate>
|
|
463
517
|
<mandate>NEVER call --complete-run until ALL items have artifacts</mandate>
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
* --decisions=JSON - JSON array of {decision, choice, rationale}
|
|
22
22
|
* --tests=N - Number of tests added
|
|
23
23
|
* --coverage=N - Coverage percentage
|
|
24
|
+
* --force - Override phase guard (skip review phase check)
|
|
24
25
|
*/
|
|
25
26
|
|
|
26
27
|
const fs = require('fs');
|
|
@@ -394,7 +395,7 @@ function updateRunLog(runLogPath, activeRun, params, completedTime, isFullComple
|
|
|
394
395
|
// Complete Current Item (for batch runs)
|
|
395
396
|
// =============================================================================
|
|
396
397
|
|
|
397
|
-
function completeCurrentItem(rootPath, runId, params = {}) {
|
|
398
|
+
function completeCurrentItem(rootPath, runId, params = {}, options = {}) {
|
|
398
399
|
const completionParams = {
|
|
399
400
|
filesCreated: params.filesCreated || [],
|
|
400
401
|
filesModified: params.filesModified || [],
|
|
@@ -402,6 +403,7 @@ function completeCurrentItem(rootPath, runId, params = {}) {
|
|
|
402
403
|
testsAdded: params.testsAdded || 0,
|
|
403
404
|
coverage: params.coverage || 0,
|
|
404
405
|
};
|
|
406
|
+
const force = options.force || false;
|
|
405
407
|
|
|
406
408
|
validateInputs(rootPath, runId);
|
|
407
409
|
const { statePath, runLogPath } = validateFireProject(rootPath, runId);
|
|
@@ -449,6 +451,16 @@ function completeCurrentItem(rootPath, runId, params = {}) {
|
|
|
449
451
|
);
|
|
450
452
|
}
|
|
451
453
|
|
|
454
|
+
// Phase guard: item must be at 'review' phase before completion
|
|
455
|
+
const currentPhase = workItems[currentItemIndex].current_phase;
|
|
456
|
+
if (!force && currentPhase !== 'review') {
|
|
457
|
+
throw fireError(
|
|
458
|
+
`Cannot complete item "${currentItemId}" — current phase is "${currentPhase || 'unknown'}", not "review".`,
|
|
459
|
+
'COMPLETE_051',
|
|
460
|
+
'The item must reach the review phase before completion. Use --force to override.'
|
|
461
|
+
);
|
|
462
|
+
}
|
|
463
|
+
|
|
452
464
|
// Find next pending item
|
|
453
465
|
let nextItem = null;
|
|
454
466
|
for (let i = currentItemIndex + 1; i < workItems.length; i++) {
|
|
@@ -510,7 +522,7 @@ function completeCurrentItem(rootPath, runId, params = {}) {
|
|
|
510
522
|
// Complete Entire Run
|
|
511
523
|
// =============================================================================
|
|
512
524
|
|
|
513
|
-
function completeRun(rootPath, runId, params = {}) {
|
|
525
|
+
function completeRun(rootPath, runId, params = {}, options = {}) {
|
|
514
526
|
const completionParams = {
|
|
515
527
|
filesCreated: params.filesCreated || [],
|
|
516
528
|
filesModified: params.filesModified || [],
|
|
@@ -518,6 +530,7 @@ function completeRun(rootPath, runId, params = {}) {
|
|
|
518
530
|
testsAdded: params.testsAdded || 0,
|
|
519
531
|
coverage: params.coverage || 0,
|
|
520
532
|
};
|
|
533
|
+
const force = options.force || false;
|
|
521
534
|
|
|
522
535
|
validateInputs(rootPath, runId);
|
|
523
536
|
const { statePath, runLogPath } = validateFireProject(rootPath, runId);
|
|
@@ -550,6 +563,21 @@ function completeRun(rootPath, runId, params = {}) {
|
|
|
550
563
|
const workItems = activeRun.work_items || [];
|
|
551
564
|
const scope = activeRun.scope || 'single';
|
|
552
565
|
|
|
566
|
+
// Phase guard: all non-completed items must be at 'review' phase
|
|
567
|
+
if (!force) {
|
|
568
|
+
const notReady = workItems.filter(
|
|
569
|
+
item => item.status !== 'completed' && item.current_phase !== 'review'
|
|
570
|
+
);
|
|
571
|
+
if (notReady.length > 0) {
|
|
572
|
+
const list = notReady.map(i => `${i.id} (phase: ${i.current_phase || 'unknown'})`).join(', ');
|
|
573
|
+
throw fireError(
|
|
574
|
+
`Cannot complete run — ${notReady.length} item(s) have not reached review phase: ${list}.`,
|
|
575
|
+
'COMPLETE_060',
|
|
576
|
+
'All items must reach the review phase before run completion. Use --force to override.'
|
|
577
|
+
);
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
|
|
553
581
|
// Mark all items as completed
|
|
554
582
|
for (const item of workItems) {
|
|
555
583
|
if (item.status !== 'completed') {
|
|
@@ -655,6 +683,7 @@ function parseArgs(args) {
|
|
|
655
683
|
runId: args[1],
|
|
656
684
|
completeItem: false,
|
|
657
685
|
completeRunFlag: false,
|
|
686
|
+
force: false,
|
|
658
687
|
filesCreated: [],
|
|
659
688
|
filesModified: [],
|
|
660
689
|
decisions: [],
|
|
@@ -668,6 +697,8 @@ function parseArgs(args) {
|
|
|
668
697
|
result.completeItem = true;
|
|
669
698
|
} else if (arg === '--complete-run') {
|
|
670
699
|
result.completeRunFlag = true;
|
|
700
|
+
} else if (arg === '--force') {
|
|
701
|
+
result.force = true;
|
|
671
702
|
} else if (arg.startsWith('--files-created=')) {
|
|
672
703
|
try {
|
|
673
704
|
result.filesCreated = JSON.parse(arg.substring('--files-created='.length));
|
|
@@ -709,6 +740,7 @@ function printUsage() {
|
|
|
709
740
|
console.error('Flags:');
|
|
710
741
|
console.error(' --complete-item - Complete only the current work item (batch/wide runs)');
|
|
711
742
|
console.error(' --complete-run - Complete the entire run');
|
|
743
|
+
console.error(' --force - Override phase guard (skip review phase check)');
|
|
712
744
|
console.error('');
|
|
713
745
|
console.error('Options:');
|
|
714
746
|
console.error(' --files-created=JSON - JSON array of {path, purpose}');
|
|
@@ -737,6 +769,7 @@ if (require.main === module) {
|
|
|
737
769
|
const params = parseArgs(args);
|
|
738
770
|
|
|
739
771
|
try {
|
|
772
|
+
const cliOptions = { force: params.force };
|
|
740
773
|
let result;
|
|
741
774
|
if (params.completeItem) {
|
|
742
775
|
result = completeCurrentItem(params.rootPath, params.runId, {
|
|
@@ -745,7 +778,7 @@ if (require.main === module) {
|
|
|
745
778
|
decisions: params.decisions,
|
|
746
779
|
testsAdded: params.testsAdded,
|
|
747
780
|
coverage: params.coverage,
|
|
748
|
-
});
|
|
781
|
+
}, cliOptions);
|
|
749
782
|
} else {
|
|
750
783
|
// Default: complete entire run
|
|
751
784
|
result = completeRun(params.rootPath, params.runId, {
|
|
@@ -754,7 +787,7 @@ if (require.main === module) {
|
|
|
754
787
|
decisions: params.decisions,
|
|
755
788
|
testsAdded: params.testsAdded,
|
|
756
789
|
coverage: params.coverage,
|
|
757
|
-
});
|
|
790
|
+
}, cliOptions);
|
|
758
791
|
}
|
|
759
792
|
console.log(JSON.stringify(result, null, 2));
|
|
760
793
|
process.exit(0);
|
|
@@ -113,6 +113,18 @@ Plan the scope of a run by discovering available work items and suggesting group
|
|
|
113
113
|
</action>
|
|
114
114
|
</check>
|
|
115
115
|
|
|
116
|
+
<check if="state says completed but item is in runs.active[].work_items with current_phase != review">
|
|
117
|
+
<output>
|
|
118
|
+
**Suspect completion**: {work-item-id}
|
|
119
|
+
- state.yaml status: completed
|
|
120
|
+
- But current_phase: {current_phase} (not "review")
|
|
121
|
+
- Item is still in active run {run-id}
|
|
122
|
+
Resetting to in_progress — item was likely marked complete prematurely.
|
|
123
|
+
</output>
|
|
124
|
+
<action>Reset work item status to in_progress in state.yaml</action>
|
|
125
|
+
<action>Update frontmatter to match</action>
|
|
126
|
+
</check>
|
|
127
|
+
|
|
116
128
|
<check if="in state.yaml but file missing">
|
|
117
129
|
<output>Warning: {item} in state but file not found on disk</output>
|
|
118
130
|
</check>
|
|
@@ -49,14 +49,28 @@ Generate implementation walkthrough for human review after run completion.
|
|
|
49
49
|
<substep>How the pieces fit together architecturally</substep>
|
|
50
50
|
<substep>Data flow or component relationships</substep>
|
|
51
51
|
<substep>Keep high-level, NO CODE</substep>
|
|
52
|
+
<action>Identify architecture pattern (if multi-component):</action>
|
|
53
|
+
<substep>Pattern used (Repository, Service Layer, MVC, Clean Architecture, etc.)</substep>
|
|
54
|
+
<substep>Layer structure diagram (ASCII) if applicable</substep>
|
|
55
|
+
<action>Document domain model (if entities/models created):</action>
|
|
56
|
+
<substep>Entities with properties and business rules</substep>
|
|
57
|
+
<substep>Value objects with constraints</substep>
|
|
52
58
|
</step>
|
|
53
59
|
|
|
54
60
|
<step n="3" title="Document Key Details">
|
|
55
61
|
<action>Extract implementation highlights:</action>
|
|
56
62
|
<substep>Main flow/algorithm implemented</substep>
|
|
57
|
-
<substep>Security considerations (if applicable)</substep>
|
|
58
|
-
<substep>Performance considerations (if applicable)</substep>
|
|
59
63
|
<substep>Integration points with existing code</substep>
|
|
64
|
+
<action>Document security considerations (if applicable):</action>
|
|
65
|
+
<substep>Authentication/authorization approach</substep>
|
|
66
|
+
<substep>Input validation strategy</substep>
|
|
67
|
+
<substep>Data protection measures</substep>
|
|
68
|
+
<substep>Format as table: Concern | Approach</substep>
|
|
69
|
+
<action>Document performance considerations (if applicable):</action>
|
|
70
|
+
<substep>Optimization strategies used</substep>
|
|
71
|
+
<substep>Caching, indexing, or query optimization</substep>
|
|
72
|
+
<substep>Scalability approach</substep>
|
|
73
|
+
<substep>Format as table: Requirement | Implementation</substep>
|
|
60
74
|
<action>Document deviations from plan:</action>
|
|
61
75
|
<substep>Compare implementation to original work item plan</substep>
|
|
62
76
|
<substep>Note any changes and explain WHY they were made</substep>
|
|
@@ -74,8 +88,23 @@ Generate implementation walkthrough for human review after run completion.
|
|
|
74
88
|
<substep>Manual test scenarios</substep>
|
|
75
89
|
</step>
|
|
76
90
|
|
|
77
|
-
<step n="5" title="
|
|
91
|
+
<step n="5" title="Assess Ready for Review">
|
|
92
|
+
<action>Evaluate implementation completeness:</action>
|
|
93
|
+
<substep>All acceptance criteria met?</substep>
|
|
94
|
+
<substep>Tests passing?</substep>
|
|
95
|
+
<substep>No critical issues remaining?</substep>
|
|
96
|
+
<substep>Documentation updated (if applicable)?</substep>
|
|
97
|
+
<substep>Developer notes captured?</substep>
|
|
98
|
+
<action>Generate checklist with [x] for met, [ ] for unmet</action>
|
|
99
|
+
</step>
|
|
100
|
+
|
|
101
|
+
<step n="6" title="Generate Walkthrough">
|
|
78
102
|
<action>Generate walkthrough using template: templates/walkthrough.md.hbs</action>
|
|
103
|
+
<action>Include all sections (conditional sections only if data exists):</action>
|
|
104
|
+
<substep>Architecture — only if multi-component with clear pattern</substep>
|
|
105
|
+
<substep>Domain Model — only if entities/value objects created</substep>
|
|
106
|
+
<substep>Security Considerations — only if security-relevant changes</substep>
|
|
107
|
+
<substep>Performance Considerations — only if performance-relevant changes</substep>
|
|
79
108
|
<action>Save to: .specs-fire/runs/{run-id}/walkthrough.md</action>
|
|
80
109
|
<output>
|
|
81
110
|
Walkthrough generated: .specs-fire/runs/{run-id}/walkthrough.md
|
|
@@ -86,7 +115,7 @@ Generate implementation walkthrough for human review after run completion.
|
|
|
86
115
|
<output_template>
|
|
87
116
|
**Walkthrough** (`.specs-fire/runs/{run-id}/walkthrough.md`):
|
|
88
117
|
|
|
89
|
-
|
|
118
|
+
````markdown
|
|
90
119
|
---
|
|
91
120
|
run: {run-id}
|
|
92
121
|
work_item: {work-item-id}
|
|
@@ -105,77 +134,134 @@ Generate implementation walkthrough for human review after run completion.
|
|
|
105
134
|
|
|
106
135
|
{High-level description of how pieces fit together - NO CODE}
|
|
107
136
|
|
|
108
|
-
##
|
|
137
|
+
## Architecture (if multi-component)
|
|
138
|
+
|
|
139
|
+
### Pattern Used
|
|
140
|
+
{Pattern and rationale - e.g., Repository pattern for data access abstraction}
|
|
141
|
+
|
|
142
|
+
### Layer Structure
|
|
143
|
+
```text
|
|
144
|
+
┌─────────────────────────────┐
|
|
145
|
+
│ Presentation │
|
|
146
|
+
├─────────────────────────────┤
|
|
147
|
+
│ Application │
|
|
148
|
+
├─────────────────────────────┤
|
|
149
|
+
│ Domain │
|
|
150
|
+
├─────────────────────────────┤
|
|
151
|
+
│ Infrastructure │
|
|
152
|
+
└─────────────────────────────┘
|
|
153
|
+
```
|
|
109
154
|
|
|
110
|
-
|
|
155
|
+
## Files Changed
|
|
156
|
+
|
|
157
|
+
### Created
|
|
111
158
|
|
|
112
159
|
| File | Purpose |
|
|
113
160
|
|------|---------|
|
|
114
161
|
| `{path}` | {purpose} |
|
|
115
162
|
|
|
116
|
-
|
|
163
|
+
### Modified
|
|
117
164
|
|
|
118
165
|
| File | Changes |
|
|
119
166
|
|------|---------|
|
|
120
167
|
| `{path}` | {changes} |
|
|
121
168
|
|
|
122
|
-
|
|
169
|
+
## Domain Model (if entities created)
|
|
170
|
+
|
|
171
|
+
### Entities
|
|
172
|
+
|
|
173
|
+
| Entity | Properties | Business Rules |
|
|
174
|
+
|--------|------------|----------------|
|
|
175
|
+
| {name} | {props} | {rules} |
|
|
176
|
+
|
|
177
|
+
### Value Objects
|
|
178
|
+
|
|
179
|
+
| Value Object | Properties | Constraints |
|
|
180
|
+
|--------------|------------|-------------|
|
|
181
|
+
| {name} | {props} | {constraints} |
|
|
182
|
+
|
|
183
|
+
## Key Implementation Details
|
|
123
184
|
|
|
124
|
-
|
|
185
|
+
### 1. {Detail Title}
|
|
125
186
|
|
|
126
187
|
{description of implementation approach}
|
|
127
188
|
|
|
128
|
-
|
|
189
|
+
## Security Considerations (if applicable)
|
|
190
|
+
|
|
191
|
+
| Concern | Approach |
|
|
192
|
+
|---------|----------|
|
|
193
|
+
| {concern} | {approach} |
|
|
194
|
+
|
|
195
|
+
## Performance Considerations (if applicable)
|
|
196
|
+
|
|
197
|
+
| Requirement | Implementation |
|
|
198
|
+
|-------------|----------------|
|
|
199
|
+
| {requirement} | {implementation} |
|
|
200
|
+
|
|
201
|
+
## Decisions Made
|
|
129
202
|
|
|
130
203
|
| Decision | Choice | Rationale |
|
|
131
204
|
|----------|--------|-----------|
|
|
132
205
|
| {decision} | {choice} | {rationale} |
|
|
133
206
|
|
|
134
|
-
|
|
207
|
+
## Deviations from Plan
|
|
135
208
|
|
|
136
209
|
{Changes from work item plan and why, or "None"}
|
|
137
210
|
|
|
138
|
-
|
|
211
|
+
## Dependencies Added
|
|
139
212
|
|
|
140
213
|
| Package | Why Needed |
|
|
141
214
|
|---------|------------|
|
|
142
215
|
| `{package}` | {reason} |
|
|
143
216
|
|
|
144
|
-
|
|
217
|
+
## How to Verify
|
|
145
218
|
|
|
146
219
|
1. **{Step Title}**
|
|
220
|
+
|
|
147
221
|
```bash
|
|
148
222
|
{command}
|
|
149
223
|
```
|
|
224
|
+
|
|
150
225
|
Expected: {expected output}
|
|
151
226
|
|
|
152
|
-
|
|
153
|
-
|
|
227
|
+
## Test Coverage
|
|
228
|
+
|
|
229
|
+
- Tests added: {count}
|
|
230
|
+
- Coverage: {percentage}%
|
|
231
|
+
- Status: {passing/failing}
|
|
154
232
|
|
|
155
|
-
|
|
233
|
+
## Ready for Review
|
|
156
234
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
235
|
+
- [x] All acceptance criteria met
|
|
236
|
+
- [x] Tests passing
|
|
237
|
+
- [x] No critical issues
|
|
238
|
+
- [ ] Documentation updated (if applicable)
|
|
239
|
+
- [x] Developer notes captured
|
|
160
240
|
|
|
161
|
-
|
|
241
|
+
## Developer Notes
|
|
162
242
|
|
|
163
243
|
{Gotchas, tips, or context for future work - keep brief}
|
|
164
244
|
|
|
165
245
|
---
|
|
166
246
|
*Generated by specs.md - fabriqa.ai FIRE Flow Run {run-id}*
|
|
167
|
-
|
|
247
|
+
|
|
248
|
+
````
|
|
168
249
|
|
|
169
250
|
</output_template>
|
|
170
251
|
|
|
171
252
|
<success_criteria>
|
|
172
|
-
<criterion>Walkthrough generated with all sections</criterion>
|
|
253
|
+
<criterion>Walkthrough generated with all applicable sections</criterion>
|
|
173
254
|
<criterion>Structure overview explains architecture (NO CODE)</criterion>
|
|
255
|
+
<criterion>Architecture pattern documented (if multi-component)</criterion>
|
|
256
|
+
<criterion>Domain model documented (if entities created)</criterion>
|
|
174
257
|
<criterion>Files changed documented with purposes</criterion>
|
|
258
|
+
<criterion>Security considerations documented (if security-relevant)</criterion>
|
|
259
|
+
<criterion>Performance considerations documented (if performance-relevant)</criterion>
|
|
175
260
|
<criterion>Decisions recorded with rationale</criterion>
|
|
176
261
|
<criterion>Deviations from plan documented (or "None")</criterion>
|
|
177
262
|
<criterion>Dependencies added listed with reasons</criterion>
|
|
178
263
|
<criterion>Verification steps included</criterion>
|
|
264
|
+
<criterion>Ready for Review checklist completed</criterion>
|
|
179
265
|
<criterion>Developer notes capture gotchas and tips</criterion>
|
|
180
266
|
<criterion>Saved to run folder</criterion>
|
|
181
267
|
</success_criteria>
|
|
@@ -16,6 +16,22 @@ mode: {{mode}}
|
|
|
16
16
|
|
|
17
17
|
{{structure_overview}}
|
|
18
18
|
|
|
19
|
+
{{#if architecture}}
|
|
20
|
+
## Architecture
|
|
21
|
+
|
|
22
|
+
### Pattern Used
|
|
23
|
+
|
|
24
|
+
{{architecture.pattern}}
|
|
25
|
+
|
|
26
|
+
{{#if architecture.layer_diagram}}
|
|
27
|
+
### Layer Structure
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
{{architecture.layer_diagram}}
|
|
31
|
+
```
|
|
32
|
+
{{/if}}
|
|
33
|
+
{{/if}}
|
|
34
|
+
|
|
19
35
|
## Files Changed
|
|
20
36
|
|
|
21
37
|
### Created
|
|
@@ -40,6 +56,30 @@ mode: {{mode}}
|
|
|
40
56
|
| (none) | |
|
|
41
57
|
{{/unless}}
|
|
42
58
|
|
|
59
|
+
{{#if domain_model}}
|
|
60
|
+
## Domain Model
|
|
61
|
+
|
|
62
|
+
{{#if domain_model.entities}}
|
|
63
|
+
### Entities
|
|
64
|
+
|
|
65
|
+
| Entity | Properties | Business Rules |
|
|
66
|
+
|--------|------------|----------------|
|
|
67
|
+
{{#each domain_model.entities}}
|
|
68
|
+
| {{this.name}} | {{this.properties}} | {{this.rules}} |
|
|
69
|
+
{{/each}}
|
|
70
|
+
{{/if}}
|
|
71
|
+
|
|
72
|
+
{{#if domain_model.value_objects}}
|
|
73
|
+
### Value Objects
|
|
74
|
+
|
|
75
|
+
| Value Object | Properties | Constraints |
|
|
76
|
+
|--------------|------------|-------------|
|
|
77
|
+
{{#each domain_model.value_objects}}
|
|
78
|
+
| {{this.name}} | {{this.properties}} | {{this.constraints}} |
|
|
79
|
+
{{/each}}
|
|
80
|
+
{{/if}}
|
|
81
|
+
{{/if}}
|
|
82
|
+
|
|
43
83
|
## Key Implementation Details
|
|
44
84
|
|
|
45
85
|
{{#each implementation_details}}
|
|
@@ -49,6 +89,26 @@ mode: {{mode}}
|
|
|
49
89
|
|
|
50
90
|
{{/each}}
|
|
51
91
|
|
|
92
|
+
{{#if security_considerations}}
|
|
93
|
+
## Security Considerations
|
|
94
|
+
|
|
95
|
+
| Concern | Approach |
|
|
96
|
+
|---------|----------|
|
|
97
|
+
{{#each security_considerations}}
|
|
98
|
+
| {{this.concern}} | {{this.approach}} |
|
|
99
|
+
{{/each}}
|
|
100
|
+
{{/if}}
|
|
101
|
+
|
|
102
|
+
{{#if performance_considerations}}
|
|
103
|
+
## Performance Considerations
|
|
104
|
+
|
|
105
|
+
| Requirement | Implementation |
|
|
106
|
+
|-------------|----------------|
|
|
107
|
+
{{#each performance_considerations}}
|
|
108
|
+
| {{this.requirement}} | {{this.implementation}} |
|
|
109
|
+
{{/each}}
|
|
110
|
+
{{/if}}
|
|
111
|
+
|
|
52
112
|
## Decisions Made
|
|
53
113
|
|
|
54
114
|
| Decision | Choice | Rationale |
|
|
@@ -96,6 +156,14 @@ None
|
|
|
96
156
|
- Coverage: {{coverage}}%
|
|
97
157
|
- Status: {{test_status}}
|
|
98
158
|
|
|
159
|
+
## Ready for Review
|
|
160
|
+
|
|
161
|
+
- [{{#if ready.acceptance_met}}x{{else}} {{/if}}] All acceptance criteria met
|
|
162
|
+
- [{{#if ready.tests_passing}}x{{else}} {{/if}}] Tests passing
|
|
163
|
+
- [{{#if ready.no_critical_issues}}x{{else}} {{/if}}] No critical issues
|
|
164
|
+
- [{{#if ready.docs_updated}}x{{else}} {{/if}}] Documentation updated (if applicable)
|
|
165
|
+
- [{{#if ready.notes_captured}}x{{else}} {{/if}}] Developer notes captured
|
|
166
|
+
|
|
99
167
|
## Developer Notes
|
|
100
168
|
|
|
101
169
|
{{#if developer_notes}}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Ideation Flow
|
|
2
|
+
|
|
3
|
+
**Spark → Flame → Forge** — Creative ideation for AI-native thinkers.
|
|
4
|
+
|
|
5
|
+
For getting started, see [quick-start.md](./quick-start.md).
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
- **Hierarchy**: Topic → Session (Spark Bank → Flame Report → Concept Brief)
|
|
10
|
+
- **Skills**: Spark (generate), Flame (evaluate), Forge (shape)
|
|
11
|
+
- **Agent**: Single orchestrator with 3 skills
|
|
12
|
+
|
|
13
|
+
## Commands
|
|
14
|
+
|
|
15
|
+
| Command | Purpose |
|
|
16
|
+
|---------|---------|
|
|
17
|
+
| `/specsmd-ideation` | Main entry point (orchestrator) |
|
|
18
|
+
| `/specsmd-spark` | Direct idea generation |
|
|
19
|
+
| `/specsmd-flame` | Direct idea evaluation |
|
|
20
|
+
| `/specsmd-forge` | Direct concept shaping |
|
|
21
|
+
|
|
22
|
+
## Research Foundation
|
|
23
|
+
|
|
24
|
+
This flow synthesizes insights from established creativity research. Source materials are in `/resources/brainstorming/`:
|
|
25
|
+
|
|
26
|
+
| Source | Key Contribution |
|
|
27
|
+
|--------|-----------------|
|
|
28
|
+
| **Applied Imagination** — Alex Osborn (1953) | Deferred judgment, quantity-first, Osborn-Parnes CPS, idea prompter checklists (became SCAMPER) |
|
|
29
|
+
| **Six Thinking Hats** — Edward de Bono (1985) | Parallel thinking, ego protection via hat roles, hat sequencing methodology |
|
|
30
|
+
| **Enhancing Your Creative Spirit** — Dr. John Kapeleris (2009) | Creativity decline data, Wallas creative process, stimulation methods |
|
|
31
|
+
| **Creative & Group Thinking Techniques** — Skillfluence | 25 practical techniques with phase-based organization |
|
|
32
|
+
| **Brainstorming (Wikipedia)** | 9 variations, 6 research-backed challenges, improvement methods |
|
|
33
|
+
| **Anthropic XML Guide** | State machine execution, semantic tags, skill architecture |
|
|
34
|
+
|
|
35
|
+
See `/resources/brainstorming/analysis.md` for the full cross-resource synthesis.
|