specweave 1.0.119 → 1.0.121
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 +21 -0
- package/dist/src/cli/commands/refresh-marketplace.d.ts.map +1 -1
- package/dist/src/cli/commands/refresh-marketplace.js +66 -31
- package/dist/src/cli/commands/refresh-marketplace.js.map +1 -1
- package/dist/src/core/lazy-loading/keyword-detector.d.ts +91 -0
- package/dist/src/core/lazy-loading/keyword-detector.d.ts.map +1 -0
- package/dist/src/core/lazy-loading/keyword-detector.js +270 -0
- package/dist/src/core/lazy-loading/keyword-detector.js.map +1 -0
- package/package.json +1 -1
- package/plugins/specweave/commands/auto.md +3 -4
- package/plugins/specweave/hooks/stop-auto-legacy.sh +2 -1
- package/plugins/specweave-router/.claude-plugin/plugin.json +23 -0
- package/plugins/specweave-router/skills/router/SKILL.md +74 -0
- package/plugins/specweave-ui/commands/image.md +124 -0
- package/src/templates/CLAUDE.md.template +132 -0
package/README.md
CHANGED
|
@@ -290,6 +290,27 @@ Three gates before any increment closes:
|
|
|
290
290
|
|
|
291
291
|
**No configuration needed** - enabled by default. [Learn more about Tool Search](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool).
|
|
292
292
|
|
|
293
|
+
### Coming Soon: Native Lazy Plugin Loading (v1.1)
|
|
294
|
+
|
|
295
|
+
**99% token savings** for non-SpecWeave work with our upcoming router-based architecture:
|
|
296
|
+
|
|
297
|
+
| Scenario | Current | After v1.1 | Savings |
|
|
298
|
+
|----------|---------|------------|---------|
|
|
299
|
+
| Non-SpecWeave work | ~60k tokens | ~500 tokens | **99%** |
|
|
300
|
+
| SpecWeave work | ~60k tokens | ~60k (on-demand) | 0% |
|
|
301
|
+
| Mixed session | ~60k tokens | ~30k avg | **50%** |
|
|
302
|
+
|
|
303
|
+
**How it will work:**
|
|
304
|
+
- **Router skill** (~500 tokens) installed by default - detects SpecWeave intent from keywords
|
|
305
|
+
- **On-demand loading** - Full plugins hot-reload when you mention "increment", "spec.md", "living docs", etc.
|
|
306
|
+
- **Context forking** - Heavy skills (PM, Architect) run in isolated sub-agents via `context: fork`
|
|
307
|
+
- **Skills cache** at `~/.specweave/skills-cache/` - instant activation without network latency
|
|
308
|
+
- **Migration path** - `specweave migrate-lazy` for existing installations
|
|
309
|
+
|
|
310
|
+
**Keywords that trigger full loading:** `increment`, `specweave`, `/sw:`, `spec.md`, `tasks.md`, `living docs`, `feature planning`, `sprint`, `jira sync`, `github sync`
|
|
311
|
+
|
|
312
|
+
[View full specification →](https://github.com/anton-abyzov/specweave/tree/develop/.specweave/increments/0171-lazy-plugin-loading)
|
|
313
|
+
|
|
293
314
|
### Claude Code 2.1.x Optimizations
|
|
294
315
|
|
|
295
316
|
SpecWeave leverages the latest Claude Code features for maximum performance:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-marketplace.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/refresh-marketplace.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAiBH,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"refresh-marketplace.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/refresh-marketplace.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAiBH,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA8WD,wBAAsB,yBAAyB,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkQ3F"}
|
|
@@ -203,30 +203,58 @@ function installPlugin(pluginName, force = false) {
|
|
|
203
203
|
function fixHookPermissions(marketplacePath) {
|
|
204
204
|
const errors = [];
|
|
205
205
|
let fixed = 0;
|
|
206
|
+
let skipped = 0;
|
|
207
|
+
// Skip on Windows - chmod has no effect on NTFS
|
|
208
|
+
if (process.platform === 'win32') {
|
|
209
|
+
return { fixed: 0, skipped: 0, errors: [] };
|
|
210
|
+
}
|
|
206
211
|
const pluginsDir = path.join(marketplacePath, 'plugins');
|
|
207
212
|
if (!fs.existsSync(pluginsDir)) {
|
|
208
|
-
return { fixed, errors: ['Plugins directory not found'] };
|
|
213
|
+
return { fixed, skipped, errors: ['Plugins directory not found'] };
|
|
209
214
|
}
|
|
210
215
|
// Find all plugin directories
|
|
211
216
|
const pluginDirs = fs.readdirSync(pluginsDir).filter(name => {
|
|
212
217
|
const pluginPath = path.join(pluginsDir, name);
|
|
213
218
|
return fs.statSync(pluginPath).isDirectory();
|
|
214
219
|
});
|
|
220
|
+
/**
|
|
221
|
+
* Check if file already has execute permission for owner
|
|
222
|
+
*/
|
|
223
|
+
const isExecutable = (filePath) => {
|
|
224
|
+
try {
|
|
225
|
+
const stats = fs.statSync(filePath);
|
|
226
|
+
// Check owner execute bit (0o100)
|
|
227
|
+
return (stats.mode & 0o100) !== 0;
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
/**
|
|
234
|
+
* Fix permission on a single file if needed
|
|
235
|
+
*/
|
|
236
|
+
const fixFilePermission = (filePath, displayName) => {
|
|
237
|
+
try {
|
|
238
|
+
if (isExecutable(filePath)) {
|
|
239
|
+
skipped++;
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
// Make executable (0o755 = rwxr-xr-x)
|
|
243
|
+
fs.chmodSync(filePath, 0o755);
|
|
244
|
+
fixed++;
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
errors.push(`${displayName}: ${error}`);
|
|
248
|
+
}
|
|
249
|
+
};
|
|
215
250
|
for (const pluginName of pluginDirs) {
|
|
216
251
|
const hooksDir = path.join(pluginsDir, pluginName, 'hooks');
|
|
217
|
-
if (
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
try {
|
|
224
|
-
// Make executable (0o755 = rwxr-xr-x)
|
|
225
|
-
fs.chmodSync(hookPath, 0o755);
|
|
226
|
-
fixed++;
|
|
227
|
-
}
|
|
228
|
-
catch (error) {
|
|
229
|
-
errors.push(`${pluginName}/${hookFile}: ${error}`);
|
|
252
|
+
if (fs.existsSync(hooksDir)) {
|
|
253
|
+
// Find all .sh files in hooks directory
|
|
254
|
+
const hookFiles = fs.readdirSync(hooksDir).filter(f => f.endsWith('.sh'));
|
|
255
|
+
for (const hookFile of hookFiles) {
|
|
256
|
+
const hookPath = path.join(hooksDir, hookFile);
|
|
257
|
+
fixFilePermission(hookPath, `${pluginName}/${hookFile}`);
|
|
230
258
|
}
|
|
231
259
|
}
|
|
232
260
|
// Also check scripts directory
|
|
@@ -235,17 +263,11 @@ function fixHookPermissions(marketplacePath) {
|
|
|
235
263
|
const scriptFiles = fs.readdirSync(scriptsDir).filter(f => f.endsWith('.sh'));
|
|
236
264
|
for (const scriptFile of scriptFiles) {
|
|
237
265
|
const scriptPath = path.join(scriptsDir, scriptFile);
|
|
238
|
-
|
|
239
|
-
fs.chmodSync(scriptPath, 0o755);
|
|
240
|
-
fixed++;
|
|
241
|
-
}
|
|
242
|
-
catch (error) {
|
|
243
|
-
errors.push(`${pluginName}/scripts/${scriptFile}: ${error}`);
|
|
244
|
-
}
|
|
266
|
+
fixFilePermission(scriptPath, `${pluginName}/scripts/${scriptFile}`);
|
|
245
267
|
}
|
|
246
268
|
}
|
|
247
269
|
}
|
|
248
|
-
return { fixed, errors };
|
|
270
|
+
return { fixed, skipped, errors };
|
|
249
271
|
}
|
|
250
272
|
/**
|
|
251
273
|
* Check plugin cache health before refresh and auto-invalidate critical issues
|
|
@@ -467,15 +489,28 @@ export async function refreshMarketplaceCommand(options = {}) {
|
|
|
467
489
|
console.log(chalk.green.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
468
490
|
}
|
|
469
491
|
console.log('');
|
|
470
|
-
// Step 3.5: Fix hook permissions (chmod +x)
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
console.log(chalk.
|
|
492
|
+
// Step 3.5: Fix hook permissions (chmod +x) - Unix only
|
|
493
|
+
if (process.platform !== 'win32') {
|
|
494
|
+
console.log(chalk.yellow('🔧 Step 3.5: Fixing hook permissions...'));
|
|
495
|
+
const permResult = fixHookPermissions(marketplacePath);
|
|
496
|
+
if (permResult.fixed > 0) {
|
|
497
|
+
console.log(chalk.green(`✓ Fixed permissions on ${permResult.fixed} hook/script files`));
|
|
498
|
+
}
|
|
499
|
+
if (permResult.skipped > 0 && options.verbose) {
|
|
500
|
+
console.log(chalk.dim(` (${permResult.skipped} files already executable)`));
|
|
501
|
+
}
|
|
502
|
+
if (permResult.fixed === 0 && permResult.skipped > 0) {
|
|
503
|
+
console.log(chalk.green(`✓ All ${permResult.skipped} hook/script files already executable`));
|
|
504
|
+
}
|
|
505
|
+
if (permResult.errors.length > 0 && options.verbose) {
|
|
506
|
+
for (const err of permResult.errors) {
|
|
507
|
+
console.log(chalk.yellow(` ⚠ ${err}`));
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
else {
|
|
512
|
+
if (options.verbose) {
|
|
513
|
+
console.log(chalk.dim('🔧 Step 3.5: Skipped (Windows - permissions not applicable)'));
|
|
479
514
|
}
|
|
480
515
|
}
|
|
481
516
|
console.log('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-marketplace.js","sourceRoot":"","sources":["../../../../src/cli/commands/refresh-marketplace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"refresh-marketplace.js","sourceRoot":"","sources":["../../../../src/cli/commands/refresh-marketplace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyword Detector for Lazy Plugin Loading
|
|
3
|
+
*
|
|
4
|
+
* Detects SpecWeave intent from user prompts to trigger on-demand plugin loading.
|
|
5
|
+
* Implements confidence-based detection with negative patterns to avoid false positives.
|
|
6
|
+
*
|
|
7
|
+
* @module core/lazy-loading/keyword-detector
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Result of keyword detection analysis
|
|
11
|
+
*/
|
|
12
|
+
export interface DetectionResult {
|
|
13
|
+
/** Whether SpecWeave intent was detected */
|
|
14
|
+
detected: boolean;
|
|
15
|
+
/** Keywords that matched in the prompt */
|
|
16
|
+
matchedKeywords: string[];
|
|
17
|
+
/** Confidence level (0-1) */
|
|
18
|
+
confidence: number;
|
|
19
|
+
/** Plugins suggested based on matched keywords */
|
|
20
|
+
suggestedPlugins: string[];
|
|
21
|
+
/** Detection latency in milliseconds */
|
|
22
|
+
latencyMs?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Keyword categories for SpecWeave intent detection
|
|
26
|
+
*/
|
|
27
|
+
export declare const SPECWEAVE_KEYWORDS: {
|
|
28
|
+
/**
|
|
29
|
+
* High confidence keywords - definitely SpecWeave (confidence >= 0.9)
|
|
30
|
+
*/
|
|
31
|
+
readonly high: readonly ["/sw:", "specweave", "increment", "spec.md", "tasks.md", "plan.md", "metadata.json", "living docs", "living documentation", "acceptance criteria", "user story"];
|
|
32
|
+
/**
|
|
33
|
+
* Medium confidence keywords - likely SpecWeave (confidence >= 0.6)
|
|
34
|
+
*/
|
|
35
|
+
readonly medium: readonly ["feature planning", "sprint planning", "jira sync", "github sync", "ado sync", "azure devops sync", "auto mode", "tdd mode", "parallel auto", "sw:increment", "sw:do", "sw:done", "sw:progress", "sw:validate"];
|
|
36
|
+
/**
|
|
37
|
+
* Low confidence keywords - might be SpecWeave (confidence >= 0.3)
|
|
38
|
+
* Only triggers if no higher confidence matches
|
|
39
|
+
*/
|
|
40
|
+
readonly low: readonly ["backlog", "kanban", "scrum", "spec", "task", "plan", "milestone", "epic", "feature"];
|
|
41
|
+
/**
|
|
42
|
+
* Negative patterns - definitely NOT SpecWeave intent
|
|
43
|
+
* If matched, detection returns false regardless of other matches
|
|
44
|
+
*/
|
|
45
|
+
readonly negative: readonly ["openapi spec", "api spec", "test spec", "spec file", "specification file", "task runner", "gulp task", "npm task", "gradle task", "rake task", "cron task", "scheduled task", "build plan", "terraform plan", "query plan", "execution plan", "test plan", "project plan"];
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Plugin group definitions for suggestion
|
|
49
|
+
*/
|
|
50
|
+
export declare const PLUGIN_GROUPS: Record<string, string[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Detects SpecWeave intent from a user prompt
|
|
53
|
+
*
|
|
54
|
+
* @param prompt - User's input prompt
|
|
55
|
+
* @returns Detection result with confidence and suggested plugins
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* const result = detectSpecWeaveIntent("Let's create an increment for auth");
|
|
60
|
+
* // { detected: true, confidence: 0.9, matchedKeywords: ['increment'], ... }
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function detectSpecWeaveIntent(prompt: string): DetectionResult;
|
|
64
|
+
/**
|
|
65
|
+
* Determines which plugins to suggest based on matched keywords
|
|
66
|
+
*
|
|
67
|
+
* @param keywords - Keywords matched in the prompt
|
|
68
|
+
* @param normalizedPrompt - Lowercase prompt for additional checks
|
|
69
|
+
* @returns Array of plugin names to suggest
|
|
70
|
+
*/
|
|
71
|
+
export declare function determinePlugins(keywords: string[], normalizedPrompt: string): string[];
|
|
72
|
+
/**
|
|
73
|
+
* Gets all available plugin groups
|
|
74
|
+
*
|
|
75
|
+
* @returns Record of group names to plugin arrays (deep copy)
|
|
76
|
+
*/
|
|
77
|
+
export declare function getPluginGroups(): Record<string, string[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Gets plugins for a specific group
|
|
80
|
+
*
|
|
81
|
+
* @param group - Group name (core, github, jira, etc.)
|
|
82
|
+
* @returns Array of plugin names or empty array if group not found
|
|
83
|
+
*/
|
|
84
|
+
export declare function getPluginsForGroup(group: string): string[];
|
|
85
|
+
/**
|
|
86
|
+
* Gets all available plugins across all groups
|
|
87
|
+
*
|
|
88
|
+
* @returns Array of all unique plugin names
|
|
89
|
+
*/
|
|
90
|
+
export declare function getAllPlugins(): string[];
|
|
91
|
+
//# sourceMappingURL=keyword-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyword-detector.d.ts","sourceRoot":"","sources":["../../../../src/core/lazy-loading/keyword-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,QAAQ,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB;IAC7B;;OAEG;;IAkBH;;OAEG;;IAkBH;;;OAGG;;IAGH;;;OAGG;;CAqBK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAgBlD,CAAC;AAsCF;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CA+DrE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBvF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAM1D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAMxC"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyword Detector for Lazy Plugin Loading
|
|
3
|
+
*
|
|
4
|
+
* Detects SpecWeave intent from user prompts to trigger on-demand plugin loading.
|
|
5
|
+
* Implements confidence-based detection with negative patterns to avoid false positives.
|
|
6
|
+
*
|
|
7
|
+
* @module core/lazy-loading/keyword-detector
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Keyword categories for SpecWeave intent detection
|
|
11
|
+
*/
|
|
12
|
+
export const SPECWEAVE_KEYWORDS = {
|
|
13
|
+
/**
|
|
14
|
+
* High confidence keywords - definitely SpecWeave (confidence >= 0.9)
|
|
15
|
+
*/
|
|
16
|
+
high: [
|
|
17
|
+
// Commands
|
|
18
|
+
'/sw:',
|
|
19
|
+
'specweave',
|
|
20
|
+
'increment',
|
|
21
|
+
// Files
|
|
22
|
+
'spec.md',
|
|
23
|
+
'tasks.md',
|
|
24
|
+
'plan.md',
|
|
25
|
+
'metadata.json',
|
|
26
|
+
// Concepts
|
|
27
|
+
'living docs',
|
|
28
|
+
'living documentation',
|
|
29
|
+
'acceptance criteria',
|
|
30
|
+
'user story',
|
|
31
|
+
],
|
|
32
|
+
/**
|
|
33
|
+
* Medium confidence keywords - likely SpecWeave (confidence >= 0.6)
|
|
34
|
+
*/
|
|
35
|
+
medium: [
|
|
36
|
+
'feature planning',
|
|
37
|
+
'sprint planning',
|
|
38
|
+
'jira sync',
|
|
39
|
+
'github sync',
|
|
40
|
+
'ado sync',
|
|
41
|
+
'azure devops sync',
|
|
42
|
+
'auto mode',
|
|
43
|
+
'tdd mode',
|
|
44
|
+
'parallel auto',
|
|
45
|
+
'sw:increment',
|
|
46
|
+
'sw:do',
|
|
47
|
+
'sw:done',
|
|
48
|
+
'sw:progress',
|
|
49
|
+
'sw:validate',
|
|
50
|
+
],
|
|
51
|
+
/**
|
|
52
|
+
* Low confidence keywords - might be SpecWeave (confidence >= 0.3)
|
|
53
|
+
* Only triggers if no higher confidence matches
|
|
54
|
+
*/
|
|
55
|
+
low: ['backlog', 'kanban', 'scrum', 'spec', 'task', 'plan', 'milestone', 'epic', 'feature'],
|
|
56
|
+
/**
|
|
57
|
+
* Negative patterns - definitely NOT SpecWeave intent
|
|
58
|
+
* If matched, detection returns false regardless of other matches
|
|
59
|
+
*/
|
|
60
|
+
negative: [
|
|
61
|
+
'openapi spec',
|
|
62
|
+
'api spec',
|
|
63
|
+
'test spec',
|
|
64
|
+
'spec file',
|
|
65
|
+
'specification file',
|
|
66
|
+
'task runner',
|
|
67
|
+
'gulp task',
|
|
68
|
+
'npm task',
|
|
69
|
+
'gradle task',
|
|
70
|
+
'rake task',
|
|
71
|
+
'cron task',
|
|
72
|
+
'scheduled task',
|
|
73
|
+
'build plan',
|
|
74
|
+
'terraform plan',
|
|
75
|
+
'query plan',
|
|
76
|
+
'execution plan',
|
|
77
|
+
'test plan',
|
|
78
|
+
'project plan',
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Plugin group definitions for suggestion
|
|
83
|
+
*/
|
|
84
|
+
export const PLUGIN_GROUPS = {
|
|
85
|
+
core: ['specweave'],
|
|
86
|
+
github: ['specweave-github'],
|
|
87
|
+
jira: ['specweave-jira'],
|
|
88
|
+
ado: ['specweave-ado'],
|
|
89
|
+
frontend: ['specweave-frontend'],
|
|
90
|
+
backend: ['specweave-backend'],
|
|
91
|
+
infra: ['specweave-infrastructure', 'specweave-k8s'],
|
|
92
|
+
ml: ['specweave-ml'],
|
|
93
|
+
kafka: ['specweave-kafka'],
|
|
94
|
+
confluent: ['specweave-confluent'],
|
|
95
|
+
mobile: ['specweave-mobile'],
|
|
96
|
+
payments: ['specweave-payments'],
|
|
97
|
+
release: ['specweave-release'],
|
|
98
|
+
testing: ['specweave-testing'],
|
|
99
|
+
diagrams: ['specweave-diagrams'],
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Keyword to plugin mapping for intelligent suggestions
|
|
103
|
+
*/
|
|
104
|
+
const KEYWORD_PLUGIN_MAP = {
|
|
105
|
+
jira: ['specweave-jira'],
|
|
106
|
+
github: ['specweave-github'],
|
|
107
|
+
ado: ['specweave-ado'],
|
|
108
|
+
'azure devops': ['specweave-ado'],
|
|
109
|
+
frontend: ['specweave-frontend'],
|
|
110
|
+
react: ['specweave-frontend'],
|
|
111
|
+
vue: ['specweave-frontend'],
|
|
112
|
+
backend: ['specweave-backend'],
|
|
113
|
+
api: ['specweave-backend'],
|
|
114
|
+
database: ['specweave-backend'],
|
|
115
|
+
k8s: ['specweave-k8s'],
|
|
116
|
+
kubernetes: ['specweave-k8s'],
|
|
117
|
+
docker: ['specweave-infrastructure'],
|
|
118
|
+
terraform: ['specweave-infrastructure'],
|
|
119
|
+
kafka: ['specweave-kafka'],
|
|
120
|
+
ml: ['specweave-ml'],
|
|
121
|
+
'machine learning': ['specweave-ml'],
|
|
122
|
+
mobile: ['specweave-mobile'],
|
|
123
|
+
'react native': ['specweave-mobile'],
|
|
124
|
+
ios: ['specweave-mobile'],
|
|
125
|
+
android: ['specweave-mobile'],
|
|
126
|
+
payment: ['specweave-payments'],
|
|
127
|
+
stripe: ['specweave-payments'],
|
|
128
|
+
release: ['specweave-release'],
|
|
129
|
+
changelog: ['specweave-release'],
|
|
130
|
+
test: ['specweave-testing'],
|
|
131
|
+
e2e: ['specweave-testing'],
|
|
132
|
+
playwright: ['specweave-testing'],
|
|
133
|
+
diagram: ['specweave-diagrams'],
|
|
134
|
+
mermaid: ['specweave-diagrams'],
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Detects SpecWeave intent from a user prompt
|
|
138
|
+
*
|
|
139
|
+
* @param prompt - User's input prompt
|
|
140
|
+
* @returns Detection result with confidence and suggested plugins
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```ts
|
|
144
|
+
* const result = detectSpecWeaveIntent("Let's create an increment for auth");
|
|
145
|
+
* // { detected: true, confidence: 0.9, matchedKeywords: ['increment'], ... }
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export function detectSpecWeaveIntent(prompt) {
|
|
149
|
+
const startTime = performance.now();
|
|
150
|
+
const normalized = prompt.toLowerCase();
|
|
151
|
+
const matchedKeywords = [];
|
|
152
|
+
let confidence = 0;
|
|
153
|
+
// Check negative patterns first - immediate rejection
|
|
154
|
+
for (const negativePattern of SPECWEAVE_KEYWORDS.negative) {
|
|
155
|
+
if (normalized.includes(negativePattern.toLowerCase())) {
|
|
156
|
+
return {
|
|
157
|
+
detected: false,
|
|
158
|
+
matchedKeywords: [],
|
|
159
|
+
confidence: 0,
|
|
160
|
+
suggestedPlugins: [],
|
|
161
|
+
latencyMs: performance.now() - startTime,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Check high confidence keywords
|
|
166
|
+
for (const keyword of SPECWEAVE_KEYWORDS.high) {
|
|
167
|
+
if (normalized.includes(keyword.toLowerCase())) {
|
|
168
|
+
matchedKeywords.push(keyword);
|
|
169
|
+
confidence = Math.max(confidence, 0.9);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Check medium confidence keywords
|
|
173
|
+
for (const keyword of SPECWEAVE_KEYWORDS.medium) {
|
|
174
|
+
if (normalized.includes(keyword.toLowerCase())) {
|
|
175
|
+
matchedKeywords.push(keyword);
|
|
176
|
+
confidence = Math.max(confidence, 0.6);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// Check low confidence keywords only if no higher matches
|
|
180
|
+
if (matchedKeywords.length === 0) {
|
|
181
|
+
for (const keyword of SPECWEAVE_KEYWORDS.low) {
|
|
182
|
+
// For single-word low confidence keywords, ensure word boundaries
|
|
183
|
+
const pattern = new RegExp(`\\b${escapeRegex(keyword)}\\b`, 'i');
|
|
184
|
+
if (pattern.test(prompt)) {
|
|
185
|
+
matchedKeywords.push(keyword);
|
|
186
|
+
confidence = Math.max(confidence, 0.3);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// Boost confidence if multiple keywords matched
|
|
191
|
+
if (matchedKeywords.length >= 3) {
|
|
192
|
+
confidence = Math.min(confidence + 0.1, 1.0);
|
|
193
|
+
}
|
|
194
|
+
// Determine suggested plugins (only if detected)
|
|
195
|
+
const detected = confidence >= 0.3;
|
|
196
|
+
const suggestedPlugins = detected ? determinePlugins(matchedKeywords, normalized) : [];
|
|
197
|
+
return {
|
|
198
|
+
detected,
|
|
199
|
+
matchedKeywords,
|
|
200
|
+
confidence,
|
|
201
|
+
suggestedPlugins,
|
|
202
|
+
latencyMs: performance.now() - startTime,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Determines which plugins to suggest based on matched keywords
|
|
207
|
+
*
|
|
208
|
+
* @param keywords - Keywords matched in the prompt
|
|
209
|
+
* @param normalizedPrompt - Lowercase prompt for additional checks
|
|
210
|
+
* @returns Array of plugin names to suggest
|
|
211
|
+
*/
|
|
212
|
+
export function determinePlugins(keywords, normalizedPrompt) {
|
|
213
|
+
const plugins = new Set(['specweave']); // Always include core
|
|
214
|
+
// Map keywords to plugins
|
|
215
|
+
for (const keyword of keywords) {
|
|
216
|
+
const lowerKeyword = keyword.toLowerCase();
|
|
217
|
+
for (const [pattern, pluginList] of Object.entries(KEYWORD_PLUGIN_MAP)) {
|
|
218
|
+
if (lowerKeyword.includes(pattern)) {
|
|
219
|
+
pluginList.forEach((p) => plugins.add(p));
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// Additional context-based suggestions from prompt
|
|
224
|
+
for (const [pattern, pluginList] of Object.entries(KEYWORD_PLUGIN_MAP)) {
|
|
225
|
+
if (normalizedPrompt.includes(pattern)) {
|
|
226
|
+
pluginList.forEach((p) => plugins.add(p));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return Array.from(plugins);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Gets all available plugin groups
|
|
233
|
+
*
|
|
234
|
+
* @returns Record of group names to plugin arrays (deep copy)
|
|
235
|
+
*/
|
|
236
|
+
export function getPluginGroups() {
|
|
237
|
+
const result = {};
|
|
238
|
+
for (const [key, value] of Object.entries(PLUGIN_GROUPS)) {
|
|
239
|
+
result[key] = [...value];
|
|
240
|
+
}
|
|
241
|
+
return result;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Gets plugins for a specific group
|
|
245
|
+
*
|
|
246
|
+
* @param group - Group name (core, github, jira, etc.)
|
|
247
|
+
* @returns Array of plugin names or empty array if group not found
|
|
248
|
+
*/
|
|
249
|
+
export function getPluginsForGroup(group) {
|
|
250
|
+
return PLUGIN_GROUPS[group.toLowerCase()] || [];
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Gets all available plugins across all groups
|
|
254
|
+
*
|
|
255
|
+
* @returns Array of all unique plugin names
|
|
256
|
+
*/
|
|
257
|
+
export function getAllPlugins() {
|
|
258
|
+
const allPlugins = new Set();
|
|
259
|
+
for (const plugins of Object.values(PLUGIN_GROUPS)) {
|
|
260
|
+
plugins.forEach((p) => allPlugins.add(p));
|
|
261
|
+
}
|
|
262
|
+
return Array.from(allPlugins);
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Escapes special regex characters in a string
|
|
266
|
+
*/
|
|
267
|
+
function escapeRegex(str) {
|
|
268
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=keyword-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyword-detector.js","sourceRoot":"","sources":["../../../../src/core/lazy-loading/keyword-detector.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.121",
|
|
4
4
|
"description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -562,7 +562,7 @@ In `.specweave/config.json`:
|
|
|
562
562
|
The session ends when ANY of these occur:
|
|
563
563
|
|
|
564
564
|
1. **All tasks complete + tests passed** - tasks.md has all `[x]` AND tests were executed
|
|
565
|
-
2. **Completion promise** - Output contains
|
|
565
|
+
2. **Completion promise** - Output contains `<!-- auto-complete:DONE -->`
|
|
566
566
|
3. **Max iterations** - Reached configured limit (default: 500)
|
|
567
567
|
4. **Max hours** - Time limit exceeded (default: 120 hours / 5 days)
|
|
568
568
|
5. **User cancellation** - `/sw:cancel-auto`
|
|
@@ -939,7 +939,7 @@ All stop reasons logged to `.specweave/logs/auto-stop-reasons.log`:
|
|
|
939
939
|
| Category | Success | Example |
|
|
940
940
|
|----------|---------|---------|
|
|
941
941
|
| `all_tasks_complete` | ✅ | All tests pass, all tasks done |
|
|
942
|
-
| `completion_promise` | ✅ |
|
|
942
|
+
| `completion_promise` | ✅ | `<!-- auto-complete:DONE -->` detected |
|
|
943
943
|
| `max_iterations_reached` | ❌ | Safety limit hit (not ideal) |
|
|
944
944
|
| `max_hours_exceeded` | ❌ | Time limit hit |
|
|
945
945
|
| `test_failures_exhausted` | ❌ | 3 retry attempts failed |
|
|
@@ -1606,9 +1606,8 @@ E2E Tests:
|
|
|
1606
1606
|
|
|
1607
1607
|
2. **On completion**:
|
|
1608
1608
|
```
|
|
1609
|
-
<auto-complete>DONE</auto-complete>
|
|
1610
|
-
|
|
1611
1609
|
✅ Auto Session Complete!
|
|
1610
|
+
<!-- auto-complete:DONE -->
|
|
1612
1611
|
|
|
1613
1612
|
Session: auto-2025-12-29-abc123
|
|
1614
1613
|
Duration: 2h 34m
|
|
@@ -1859,7 +1859,8 @@ if [ -n "$TRANSCRIPT_PATH" ] && [ -f "$TRANSCRIPT_PATH" ]; then
|
|
|
1859
1859
|
# 1. Promise is in the LAST 100 lines of transcript (fresh, not legacy)
|
|
1860
1860
|
# 2. All tasks are marked complete
|
|
1861
1861
|
# 3. Tests pass OR no tests exist
|
|
1862
|
-
|
|
1862
|
+
# Support both old format (<auto-complete>DONE</auto-complete>) and new format (<!-- auto-complete:DONE -->)
|
|
1863
|
+
if tail -100 "$TRANSCRIPT_PATH" 2>/dev/null | grep -qE "<auto-complete>DONE</auto-complete>|<!-- auto-complete:DONE -->"; then
|
|
1863
1864
|
# Verify tasks are actually complete before accepting promise
|
|
1864
1865
|
TASKS_FILE=""
|
|
1865
1866
|
if [ -n "$CURRENT_INCREMENT" ] && [ "$CURRENT_INCREMENT" != "null" ]; then
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sw-router",
|
|
3
|
+
"description": "Lightweight SpecWeave router for lazy plugin loading. Detects spec-driven development intent and loads full plugins on-demand, reducing context usage by 99% when not using SpecWeave features.",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "SpecWeave Team",
|
|
7
|
+
"url": "https://spec-weave.com"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://spec-weave.com",
|
|
10
|
+
"repository": "https://github.com/anton-abyzov/specweave",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"router",
|
|
14
|
+
"lazy-loading",
|
|
15
|
+
"context-optimization",
|
|
16
|
+
"specweave"
|
|
17
|
+
],
|
|
18
|
+
"lazyLoading": {
|
|
19
|
+
"isRouter": true,
|
|
20
|
+
"tokenEstimate": 400,
|
|
21
|
+
"triggersFullLoad": true
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specweave-router
|
|
3
|
+
description: |
|
|
4
|
+
Lightweight SpecWeave router that detects spec-driven development intent
|
|
5
|
+
and loads full plugins on-demand. Activates for: increment, specweave,
|
|
6
|
+
/sw:, spec.md, tasks.md, plan.md, living docs, living documentation,
|
|
7
|
+
acceptance criteria, user story, feature planning, sprint planning,
|
|
8
|
+
jira sync, github sync, ado sync, auto mode, tdd mode, parallel auto.
|
|
9
|
+
visibility: public
|
|
10
|
+
user-invocable: false
|
|
11
|
+
allowed-tools:
|
|
12
|
+
- Bash
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# SpecWeave Router
|
|
16
|
+
|
|
17
|
+
Minimal router for lazy-loading SpecWeave plugins. Detects intent and loads full functionality on-demand.
|
|
18
|
+
|
|
19
|
+
## When I Activate
|
|
20
|
+
|
|
21
|
+
I detect SpecWeave intent when you mention:
|
|
22
|
+
- **Commands**: `/sw:*`, `specweave`
|
|
23
|
+
- **Files**: `spec.md`, `tasks.md`, `plan.md`
|
|
24
|
+
- **Concepts**: increment, living docs, acceptance criteria, user story
|
|
25
|
+
- **Integrations**: jira sync, github sync, ado sync
|
|
26
|
+
- **Modes**: auto mode, tdd mode, parallel auto
|
|
27
|
+
|
|
28
|
+
## On Activation
|
|
29
|
+
|
|
30
|
+
When SpecWeave intent detected:
|
|
31
|
+
|
|
32
|
+
1. Check if full plugins already loaded:
|
|
33
|
+
```bash
|
|
34
|
+
ls ~/.specweave/state/plugins-loaded.json 2>/dev/null && cat ~/.specweave/state/plugins-loaded.json | grep -q '"lazyMode": true'
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
2. If not loaded, install from cache:
|
|
38
|
+
```bash
|
|
39
|
+
bash ~/.specweave/scripts/install-plugins.sh
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
3. Plugins hot-reload automatically - no restart needed.
|
|
43
|
+
|
|
44
|
+
## Loading Message
|
|
45
|
+
|
|
46
|
+
When loading plugins, output:
|
|
47
|
+
```
|
|
48
|
+
Loading SpecWeave plugins...
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
After loading completes:
|
|
52
|
+
```
|
|
53
|
+
SpecWeave ready. Use /sw:* commands or ask about increments.
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Token Savings
|
|
57
|
+
|
|
58
|
+
- This router: ~400 tokens
|
|
59
|
+
- Full plugins: ~60,000 tokens
|
|
60
|
+
- Savings: 99% when not using SpecWeave
|
|
61
|
+
|
|
62
|
+
## Manual Loading
|
|
63
|
+
|
|
64
|
+
Users can manually load plugins:
|
|
65
|
+
```bash
|
|
66
|
+
specweave load-plugins all # Load all plugins
|
|
67
|
+
specweave load-plugins core # Load core only
|
|
68
|
+
specweave load-plugins github # Load GitHub integration
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Related
|
|
72
|
+
|
|
73
|
+
- Full documentation: https://spec-weave.com
|
|
74
|
+
- Commands reference: `/sw:sw`
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sw-ui:image
|
|
3
|
+
description: Generate images using Pollinations.ai - FREE AI image generation. Usage - /sw-ui:image "your prompt here". Creates hero images, icons, logos, mockups, illustrations. No API key required.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AI Image Generation Command
|
|
7
|
+
|
|
8
|
+
Generate professional-quality images using Pollinations.ai - a FREE, open-source AI platform.
|
|
9
|
+
|
|
10
|
+
## Quick Usage
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
/sw-ui:image "modern tech startup office, glass walls, natural lighting"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## What This Command Does
|
|
17
|
+
|
|
18
|
+
1. Takes your prompt and enhances it with quality modifiers
|
|
19
|
+
2. Generates the image URL using Pollinations.ai
|
|
20
|
+
3. Optionally downloads and saves the image to your project
|
|
21
|
+
|
|
22
|
+
## Parameters
|
|
23
|
+
|
|
24
|
+
The user provides a prompt in quotes. Parse it and determine:
|
|
25
|
+
- **Prompt**: The description of the image to generate
|
|
26
|
+
- **Dimensions**: Infer from context (hero=1920x1080, icon=512x512, etc.)
|
|
27
|
+
- **Model**: flux (default), flux-realism, flux-anime, flux-3d, turbo
|
|
28
|
+
- **Output**: Save to file or just provide URL
|
|
29
|
+
|
|
30
|
+
## Implementation
|
|
31
|
+
|
|
32
|
+
### Step 1: Parse the Request
|
|
33
|
+
|
|
34
|
+
Extract the prompt from the user's command. Look for dimensions or model hints:
|
|
35
|
+
- "hero image" → 1920x1080
|
|
36
|
+
- "icon" or "app icon" → 512x512
|
|
37
|
+
- "avatar" → 400x400
|
|
38
|
+
- "og image" → 1200x630
|
|
39
|
+
- "realistic" → model=flux-realism
|
|
40
|
+
- "anime" → model=flux-anime
|
|
41
|
+
|
|
42
|
+
### Step 2: Build the URL
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
https://image.pollinations.ai/prompt/{encoded_prompt}?width={w}&height={h}&model={model}&nologo=true
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Quality modifiers to append to prompt:
|
|
49
|
+
- Professional: ", professional photography, 8k uhd, high resolution, sharp focus"
|
|
50
|
+
- Icons: ", minimal, flat design, clean lines, centered"
|
|
51
|
+
- Illustrations: ", digital illustration, vibrant colors, detailed"
|
|
52
|
+
|
|
53
|
+
### Step 3: Generate or Save
|
|
54
|
+
|
|
55
|
+
**Option A - URL Only** (default for quick preview):
|
|
56
|
+
```markdown
|
|
57
|
+
Here's your generated image:
|
|
58
|
+
|
|
59
|
+

|
|
60
|
+
|
|
61
|
+
Direct URL: {url}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Option B - Save to File** (if user specifies path):
|
|
65
|
+
```typescript
|
|
66
|
+
// Use WebFetch to download, then Write to save
|
|
67
|
+
const response = await fetch(url);
|
|
68
|
+
const buffer = await response.arrayBuffer();
|
|
69
|
+
// Save as PNG/JPG
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Examples
|
|
73
|
+
|
|
74
|
+
### Hero Image
|
|
75
|
+
```
|
|
76
|
+
/sw-ui:image "futuristic city skyline at sunset, cyberpunk, neon lights, cinematic"
|
|
77
|
+
```
|
|
78
|
+
→ 1920x1080, flux model
|
|
79
|
+
|
|
80
|
+
### App Icon
|
|
81
|
+
```
|
|
82
|
+
/sw-ui:image "minimalist app icon, letter A, gradient blue purple, iOS style"
|
|
83
|
+
```
|
|
84
|
+
→ 512x512, flux model
|
|
85
|
+
|
|
86
|
+
### Product Mockup
|
|
87
|
+
```
|
|
88
|
+
/sw-ui:image "iPhone mockup on wooden desk, coffee cup, lifestyle photography"
|
|
89
|
+
```
|
|
90
|
+
→ 1200x800, flux-3d model
|
|
91
|
+
|
|
92
|
+
### Avatar
|
|
93
|
+
```
|
|
94
|
+
/sw-ui:image "friendly robot avatar, geometric, blue and white, minimal"
|
|
95
|
+
```
|
|
96
|
+
→ 400x400, flux model
|
|
97
|
+
|
|
98
|
+
## Aspect Ratios Reference
|
|
99
|
+
|
|
100
|
+
| Use Case | Width | Height |
|
|
101
|
+
|----------|-------|--------|
|
|
102
|
+
| Hero Banner | 1920 | 1080 |
|
|
103
|
+
| Social Post | 1200 | 1200 |
|
|
104
|
+
| App Icon | 512 | 512 |
|
|
105
|
+
| OG Image | 1200 | 630 |
|
|
106
|
+
| Thumbnail | 400 | 300 |
|
|
107
|
+
| Portrait | 800 | 1200 |
|
|
108
|
+
|
|
109
|
+
## Models Reference
|
|
110
|
+
|
|
111
|
+
| Model | Best For |
|
|
112
|
+
|-------|----------|
|
|
113
|
+
| flux | General purpose (default) |
|
|
114
|
+
| flux-realism | Photorealistic images |
|
|
115
|
+
| flux-anime | Anime/illustration |
|
|
116
|
+
| flux-3d | 3D renders, mockups |
|
|
117
|
+
| turbo | Fast drafts |
|
|
118
|
+
|
|
119
|
+
## Notes
|
|
120
|
+
|
|
121
|
+
- Images are generated on-demand (may take a few seconds)
|
|
122
|
+
- Use `seed` parameter for reproducible results
|
|
123
|
+
- Cache generated images for production use
|
|
124
|
+
- No API key required - completely free!
|
|
@@ -478,3 +478,135 @@ wrangler whoami 2>/dev/null && gh auth status 2>/dev/null
|
|
|
478
478
|
|
|
479
479
|
[spec-weave.com](https://spec-weave.com) | `.specweave/docs/internal/`
|
|
480
480
|
<!-- /SECTION -->
|
|
481
|
+
|
|
482
|
+
<!-- SECTION:non-claude -->
|
|
483
|
+
## Non-Claude AI Tools
|
|
484
|
+
|
|
485
|
+
**SpecWeave works with ANY AI coding assistant.** The framework uses file-based tracking that's AI-tool agnostic.
|
|
486
|
+
|
|
487
|
+
### Quick Setup for Other Tools
|
|
488
|
+
|
|
489
|
+
```bash
|
|
490
|
+
# Install SpecWeave CLI globally
|
|
491
|
+
npm install -g specweave
|
|
492
|
+
|
|
493
|
+
# Initialize project (creates .specweave/ folder)
|
|
494
|
+
specweave init .
|
|
495
|
+
|
|
496
|
+
# Install plugins for your AI tool
|
|
497
|
+
bash ~/.specweave/scripts/install-plugins.sh --target generic
|
|
498
|
+
# Or on Windows PowerShell:
|
|
499
|
+
~\.specweave\scripts\install-plugins.ps1 -Target generic
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
### Manual Context Loading (Cursor, Windsurf, Aider, etc.)
|
|
503
|
+
|
|
504
|
+
If your AI tool doesn't have a plugin system, manually include these files in context:
|
|
505
|
+
|
|
506
|
+
**Essential files to include in EVERY session:**
|
|
507
|
+
1. `CLAUDE.md` (this file) - Framework rules and workflow
|
|
508
|
+
2. `.specweave/increments/####-*/tasks.md` - Current work items
|
|
509
|
+
3. `.specweave/increments/####-*/spec.md` - Requirements and ACs
|
|
510
|
+
|
|
511
|
+
**Copy-paste starter prompt:**
|
|
512
|
+
```
|
|
513
|
+
I'm using SpecWeave for spec-driven development. Here are my current files:
|
|
514
|
+
|
|
515
|
+
[PASTE CLAUDE.md CONTENT]
|
|
516
|
+
|
|
517
|
+
[PASTE CURRENT tasks.md CONTENT]
|
|
518
|
+
|
|
519
|
+
[PASTE CURRENT spec.md CONTENT]
|
|
520
|
+
|
|
521
|
+
Follow SpecWeave workflow: update tasks.md checkboxes when done, update spec.md ACs.
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
### Tool-Specific Setup
|
|
525
|
+
|
|
526
|
+
**Cursor IDE:**
|
|
527
|
+
- Add `.specweave/` to workspace folders
|
|
528
|
+
- Include `CLAUDE.md` in `.cursorrules`
|
|
529
|
+
- Use `@file` to reference spec.md and tasks.md
|
|
530
|
+
|
|
531
|
+
**Windsurf:**
|
|
532
|
+
- Add this file content to cascade rules
|
|
533
|
+
- Reference increment files with `/file` command
|
|
534
|
+
|
|
535
|
+
**Aider:**
|
|
536
|
+
- Add CLAUDE.md to `.aider.conf.yml`:
|
|
537
|
+
```yaml
|
|
538
|
+
read:
|
|
539
|
+
- CLAUDE.md
|
|
540
|
+
- .specweave/increments/*/spec.md
|
|
541
|
+
- .specweave/increments/*/tasks.md
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
**Continue.dev:**
|
|
545
|
+
- Add to `.continue/config.json`:
|
|
546
|
+
```json
|
|
547
|
+
{
|
|
548
|
+
"contextProviders": [{
|
|
549
|
+
"name": "file",
|
|
550
|
+
"params": { "path": "CLAUDE.md" }
|
|
551
|
+
}]
|
|
552
|
+
}
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
**GitHub Copilot:**
|
|
556
|
+
- Add to `.github/copilot-instructions.md`:
|
|
557
|
+
```
|
|
558
|
+
Follow SpecWeave workflow from CLAUDE.md.
|
|
559
|
+
Check .specweave/increments/ for current tasks.
|
|
560
|
+
Update tasks.md when completing work.
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
### Replicating SpecWeave Behaviors
|
|
564
|
+
|
|
565
|
+
**Without plugins, implement these manually:**
|
|
566
|
+
|
|
567
|
+
| SpecWeave Feature | Manual Equivalent |
|
|
568
|
+
|-------------------|-------------------|
|
|
569
|
+
| `/sw:increment` | Create `spec.md` with User Stories, create `tasks.md` with Tasks |
|
|
570
|
+
| `/sw:do` | Read tasks.md, work on pending tasks, update checkboxes |
|
|
571
|
+
| `/sw:done` | Mark all tasks complete, review ACs in spec.md |
|
|
572
|
+
| Hooks (validation) | Run `npm test && npm run build` before marking complete |
|
|
573
|
+
| Auto mode | Use agentic loop: read tasks.md → work → update → repeat |
|
|
574
|
+
|
|
575
|
+
**Task format for any AI:**
|
|
576
|
+
```markdown
|
|
577
|
+
### T-001: Task Title
|
|
578
|
+
**Status**: [ ] pending
|
|
579
|
+
**Acceptance**: Given X, When Y, Then Z
|
|
580
|
+
|
|
581
|
+
Implementation notes here.
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
**Mark complete by changing:** `[ ] pending` → `[x] completed`
|
|
585
|
+
|
|
586
|
+
### Autonomous Mode Without Claude Code
|
|
587
|
+
|
|
588
|
+
For non-Claude AI tools, implement the "Ralph Loop" pattern:
|
|
589
|
+
|
|
590
|
+
```bash
|
|
591
|
+
# Pseudo-code for any AI tool with API access
|
|
592
|
+
while tasks_pending():
|
|
593
|
+
tasks = read_file("tasks.md")
|
|
594
|
+
current_task = get_first_pending(tasks)
|
|
595
|
+
|
|
596
|
+
# Have AI work on task
|
|
597
|
+
result = ai.complete(f"Complete this task: {current_task}")
|
|
598
|
+
|
|
599
|
+
# Update files
|
|
600
|
+
update_task_status(current_task, "completed")
|
|
601
|
+
|
|
602
|
+
# Run tests
|
|
603
|
+
if not run_tests():
|
|
604
|
+
ai.complete("Fix failing tests")
|
|
605
|
+
|
|
606
|
+
# Max iterations safety
|
|
607
|
+
if iterations > 100:
|
|
608
|
+
break
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
**Key principle:** The AI reads tasks.md, works, updates the file, and loops until all `[x]` complete.
|
|
612
|
+
<!-- /SECTION -->
|