specweave 0.23.4 → 0.23.5

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.md CHANGED
@@ -10,6 +10,37 @@ For **contributors to SpecWeave itself** (not users).
10
10
 
11
11
  ## 🚨 CRITICAL SAFETY RULES
12
12
 
13
+ ### 0. Thinking-Before-Acting Discipline (META RULE!)
14
+
15
+ **ALWAYS act on your reasoning BEFORE attempting operations that will fail.**
16
+
17
+ **Anti-pattern**: Running commands you know will fail, then fixing the issue.
18
+
19
+ ```typescript
20
+ // ❌ WRONG: Attempt → Predictable failure → Fix
21
+ node -e "require('./dist/file.js')" // Fails (you saw this coming!)
22
+ npm run rebuild // Then fix
23
+
24
+ // ✅ CORRECT: Recognize dependency → Fix → Attempt
25
+ npm run rebuild // Fix first
26
+ node -e "require('./dist/file.js')" // Then succeed
27
+ ```
28
+
29
+ **Why**: Wastes time, creates confusion, makes execution harder to follow.
30
+
31
+ **How to avoid**:
32
+ 1. **Read your own thinking process** - What dependencies did you identify?
33
+ 2. **Order operations logically** - Prerequisites BEFORE dependent operations
34
+ 3. **Catch predictable failures** - If you know it will fail, don't run it yet
35
+
36
+ **Example patterns to watch for**:
37
+ - Running code before compilation (`tsc`, `npm run build`)
38
+ - Database queries before migrations/setup
39
+ - API calls before authentication
40
+ - File operations before directory creation
41
+
42
+ ---
43
+
13
44
  ### 1. Local Development Setup
14
45
 
15
46
  **SpecWeave uses Claude Code's GitHub marketplace** for plugin management. This is the **cross-platform, simple approach** that works on macOS, Linux, and Windows.
@@ -462,6 +493,74 @@ export async function myCommand(options: CommandOptions = {}) {
462
493
  - Pre-commit hook: `scripts/pre-commit-console-check.sh`
463
494
  - See: `.specweave/increments/0046-console-elimination/` for migration pattern
464
495
 
496
+ ### 8a. NEVER Use `fs-extra` (Native fs Migration)
497
+
498
+ **Rule**: ALL code MUST use native Node.js `fs` module, NEVER `fs-extra`.
499
+
500
+ **Why**: `fs-extra` causes hook failures when not installed. Native fs is faster, smaller, and always available.
501
+
502
+ **Migration completed**: 2025-11-20 - All hooks converted to native fs
503
+
504
+ **Correct usage**:
505
+ ```typescript
506
+ // ✅ CORRECT - Native fs (sync operations)
507
+ import { existsSync, readFileSync, statSync } from 'fs';
508
+
509
+ if (existsSync(configPath)) {
510
+ const content = readFileSync(configPath, 'utf-8');
511
+ const stats = statSync(configPath);
512
+ }
513
+ ```
514
+
515
+ ```typescript
516
+ // ✅ CORRECT - Native fs (async operations)
517
+ import { promises as fs } from 'fs';
518
+
519
+ const content = await fs.readFile(configPath, 'utf-8');
520
+ await fs.mkdir(dir, { recursive: true });
521
+ await fs.writeFile(filePath, content, 'utf-8');
522
+ ```
523
+
524
+ ```typescript
525
+ // ✅ CORRECT - Custom utilities (from utils/fs-native.js)
526
+ import { mkdirpSync, writeJsonSync, readJsonSync } from '../utils/fs-native.js';
527
+
528
+ mkdirpSync(dir); // Create directory recursively
529
+ writeJsonSync(path, data); // Write JSON file
530
+ const config = readJsonSync(configPath); // Read JSON file
531
+ ```
532
+
533
+ **Migration guide (fs-extra → native fs)**:
534
+ ```typescript
535
+ // ❌ WRONG (fs-extra)
536
+ import fs from 'fs-extra';
537
+
538
+ fs.existsSync(path); → existsSync(path)
539
+ fs.readFileSync(path, 'utf-8'); → readFileSync(path, 'utf-8')
540
+ fs.statSync(path); → statSync(path)
541
+ await fs.readFile(path, 'utf-8'); → await fs.readFile(path, 'utf-8')
542
+ await fs.ensureDir(dir); → await fs.mkdir(dir, { recursive: true })
543
+ OR mkdirpSync(dir) for sync
544
+ await fs.writeFile(path, content); → await fs.writeFile(path, content, 'utf-8')
545
+ fs.removeSync(path); → removeSync(path) from fs-native.js
546
+ await fs.copy(src, dest); → await fs.cp(src, dest, { recursive: true })
547
+ ```
548
+
549
+ **Prevention**:
550
+ 1. **Pre-commit hook**: `scripts/pre-commit-fs-extra-check.sh` blocks fs-extra imports
551
+ 2. **Installation**: Hook installed automatically via `bash scripts/install-git-hooks.sh`
552
+ 3. **Legacy marker**: Add `// legacy fs-extra` comment to bypass check (temporary only)
553
+
554
+ **Testing**:
555
+ ```bash
556
+ # Verify no fs-extra in hooks
557
+ grep -r "from 'fs-extra'" plugins/*/lib/hooks/*.js
558
+
559
+ # Should return nothing (empty output)
560
+ ```
561
+
562
+ **Incident Reference**: 2025-11-20 - Hook failures due to fs-extra dependency. All hooks converted to native fs. Pre-commit hook added to prevent regression.
563
+
465
564
  ### 9. Coding Standards
466
565
 
467
566
  **Full standards**: `.specweave/docs/internal/governance/coding-standards.md`
@@ -1 +1 @@
1
- {"version":3,"file":"user-story-issue-builder.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/user-story-issue-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA+BH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAGtB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAU7D;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAkCF;;OAEG;YACW,wBAAwB;IAWtC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmBjC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAqDjC;;;;;;;OAOG;YACW,YAAY;IAsC1B;;;;OAIG;YACW,kBAAkB;IAyFhC;;OAEG;IACH,OAAO,CAAC,SAAS;IA6KjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;OAEG;IACH,OAAO,CAAC,UAAU;CAGnB"}
1
+ {"version":3,"file":"user-story-issue-builder.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/user-story-issue-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA+BH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAGtB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IA4B7D;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAiDF;;OAEG;YACW,wBAAwB;IAWtC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmBjC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAqDjC;;;;;;;OAOG;YACW,YAAY;IAsC1B;;;;OAIG;YACW,kBAAkB;IAyFhC;;OAEG;IACH,OAAO,CAAC,SAAS;IA6KjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;OAEG;IACH,OAAO,CAAC,UAAU;CAGnB"}
@@ -19,6 +19,18 @@ import * as yaml from 'yaml';
19
19
  import { IssueStateManager } from './IssueStateManager.js';
20
20
  export class UserStoryIssueBuilder {
21
21
  constructor(userStoryPath, projectRoot, featureId, repoInfo) {
22
+ // ✅ VALIDATION: Ensure featureId is provided and has correct format
23
+ if (!featureId || featureId.trim() === '') {
24
+ throw new Error(`UserStoryIssueBuilder: featureId is required but was empty.\n` +
25
+ `This prevents incorrect issue titles like [undefined][US-XXX] or [SP-US-XXX].\n` +
26
+ `Provide the correct Feature ID (e.g., "FS-047") when constructing this builder.`);
27
+ }
28
+ // ✅ VALIDATION: Ensure featureId matches expected pattern (FS-XXX)
29
+ if (!/^FS-\d{3}$/.test(featureId)) {
30
+ throw new Error(`UserStoryIssueBuilder: Invalid featureId format "${featureId}".\n` +
31
+ `Expected format: FS-XXX (e.g., "FS-047", "FS-123").\n` +
32
+ `This prevents incorrect issue titles like [SP-US-XXX] or [${featureId}][US-XXX].`);
33
+ }
22
34
  this.userStoryPath = userStoryPath;
23
35
  this.projectRoot = projectRoot;
24
36
  this.featureId = featureId;
@@ -45,7 +57,19 @@ export class UserStoryIssueBuilder {
45
57
  const acceptanceCriteria = this.extractAcceptanceCriteria(bodyContent);
46
58
  const tasks = await this.extractTasks(bodyContent, frontmatter.id);
47
59
  // 3. Build issue title
60
+ // ✅ VALIDATION: Double-check title format before returning
61
+ // Expected format: [FS-XXX][US-YYY] Title
62
+ // This prevents issues like [SP-US-XXX] or [undefined][US-XXX]
48
63
  const title = `[${this.featureId}][${frontmatter.id}] ${frontmatter.title}`;
64
+ // ✅ SAFETY CHECK: Ensure title matches expected pattern
65
+ const titlePattern = /^\[FS-\d{3}\]\[US-\d{3}\] .+$/;
66
+ if (!titlePattern.test(title)) {
67
+ throw new Error(`Generated issue title has incorrect format: "${title}"\n` +
68
+ `Expected: [FS-XXX][US-YYY] Title\n` +
69
+ `This indicates a bug in UserStoryIssueBuilder or invalid frontmatter.\n` +
70
+ `Feature ID: ${this.featureId}\n` +
71
+ `User Story ID: ${frontmatter.id}`);
72
+ }
49
73
  // 4. Build issue body
50
74
  const body = this.buildBody({
51
75
  frontmatter,
@@ -1 +1 @@
1
- {"version":3,"file":"user-story-issue-builder.js","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/user-story-issue-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-story-issue-builder.js","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/user-story-issue-builder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "0.23.4",
3
+ "version": "0.23.5",
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",
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
- import fs from "fs-extra";
2
+ import { existsSync, promises as fs } from "fs";
3
3
  import path from "path";
4
4
  async function updateTasksMd(incrementId) {
5
5
  try {
6
6
  console.log(`
7
7
  \u{1F504} Updating tasks.md for increment: ${incrementId}`);
8
8
  const incrementDir = path.join(process.cwd(), ".specweave", "increments", incrementId);
9
- if (!fs.existsSync(incrementDir)) {
9
+ if (!existsSync(incrementDir)) {
10
10
  console.error(`\u274C Increment directory not found: ${incrementDir}`);
11
11
  process.exit(1);
12
12
  }
13
13
  const tasksPath = path.join(incrementDir, "tasks.md");
14
- if (!fs.existsSync(tasksPath)) {
14
+ if (!existsSync(tasksPath)) {
15
15
  console.error(`\u274C tasks.md not found: ${tasksPath}`);
16
16
  process.exit(1);
17
17
  }
@@ -23,7 +23,7 @@
23
23
  * @version 1.0.0
24
24
  */
25
25
 
26
- import fs from 'fs-extra';
26
+ import { existsSync, promises as fs } from 'fs';
27
27
  import path from 'path';
28
28
 
29
29
  interface TaskMatch {
@@ -48,13 +48,13 @@ async function updateTasksMd(incrementId: string): Promise<void> {
48
48
 
49
49
  // 1. Validate increment exists
50
50
  const incrementDir = path.join(process.cwd(), '.specweave', 'increments', incrementId);
51
- if (!fs.existsSync(incrementDir)) {
51
+ if (!existsSync(incrementDir)) {
52
52
  console.error(`❌ Increment directory not found: ${incrementDir}`);
53
53
  process.exit(1);
54
54
  }
55
55
 
56
56
  const tasksPath = path.join(incrementDir, 'tasks.md');
57
- if (!fs.existsSync(tasksPath)) {
57
+ if (!existsSync(tasksPath)) {
58
58
  console.error(`❌ tasks.md not found: ${tasksPath}`);
59
59
  process.exit(1);
60
60
  }
@@ -5,6 +5,20 @@ import * as yaml from "yaml";
5
5
  import { IssueStateManager } from "./IssueStateManager.js";
6
6
  class UserStoryIssueBuilder {
7
7
  constructor(userStoryPath, projectRoot, featureId, repoInfo) {
8
+ if (!featureId || featureId.trim() === "") {
9
+ throw new Error(
10
+ `UserStoryIssueBuilder: featureId is required but was empty.
11
+ This prevents incorrect issue titles like [undefined][US-XXX] or [SP-US-XXX].
12
+ Provide the correct Feature ID (e.g., "FS-047") when constructing this builder.`
13
+ );
14
+ }
15
+ if (!/^FS-\d{3}$/.test(featureId)) {
16
+ throw new Error(
17
+ `UserStoryIssueBuilder: Invalid featureId format "${featureId}".
18
+ Expected format: FS-XXX (e.g., "FS-047", "FS-123").
19
+ This prevents incorrect issue titles like [SP-US-XXX] or [${featureId}][US-XXX].`
20
+ );
21
+ }
8
22
  this.userStoryPath = userStoryPath;
9
23
  this.projectRoot = projectRoot;
10
24
  this.featureId = featureId;
@@ -29,6 +43,16 @@ class UserStoryIssueBuilder {
29
43
  const acceptanceCriteria = this.extractAcceptanceCriteria(bodyContent);
30
44
  const tasks = await this.extractTasks(bodyContent, frontmatter.id);
31
45
  const title = `[${this.featureId}][${frontmatter.id}] ${frontmatter.title}`;
46
+ const titlePattern = /^\[FS-\d{3}\]\[US-\d{3}\] .+$/;
47
+ if (!titlePattern.test(title)) {
48
+ throw new Error(
49
+ `Generated issue title has incorrect format: "${title}"
50
+ Expected: [FS-XXX][US-YYY] Title
51
+ This indicates a bug in UserStoryIssueBuilder or invalid frontmatter.
52
+ Feature ID: ${this.featureId}
53
+ User Story ID: ${frontmatter.id}`
54
+ );
55
+ }
32
56
  const body = this.buildBody({
33
57
  frontmatter,
34
58
  userStoryStatement,
@@ -56,6 +56,24 @@ export class UserStoryIssueBuilder {
56
56
  featureId: string,
57
57
  repoInfo?: { owner: string; repo: string; branch?: string }
58
58
  ) {
59
+ // ✅ VALIDATION: Ensure featureId is provided and has correct format
60
+ if (!featureId || featureId.trim() === '') {
61
+ throw new Error(
62
+ `UserStoryIssueBuilder: featureId is required but was empty.\n` +
63
+ `This prevents incorrect issue titles like [undefined][US-XXX] or [SP-US-XXX].\n` +
64
+ `Provide the correct Feature ID (e.g., "FS-047") when constructing this builder.`
65
+ );
66
+ }
67
+
68
+ // ✅ VALIDATION: Ensure featureId matches expected pattern (FS-XXX)
69
+ if (!/^FS-\d{3}$/.test(featureId)) {
70
+ throw new Error(
71
+ `UserStoryIssueBuilder: Invalid featureId format "${featureId}".\n` +
72
+ `Expected format: FS-XXX (e.g., "FS-047", "FS-123").\n` +
73
+ `This prevents incorrect issue titles like [SP-US-XXX] or [${featureId}][US-XXX].`
74
+ );
75
+ }
76
+
59
77
  this.userStoryPath = userStoryPath;
60
78
  this.projectRoot = projectRoot;
61
79
  this.featureId = featureId;
@@ -91,8 +109,23 @@ export class UserStoryIssueBuilder {
91
109
  const tasks = await this.extractTasks(bodyContent, frontmatter.id);
92
110
 
93
111
  // 3. Build issue title
112
+ // ✅ VALIDATION: Double-check title format before returning
113
+ // Expected format: [FS-XXX][US-YYY] Title
114
+ // This prevents issues like [SP-US-XXX] or [undefined][US-XXX]
94
115
  const title = `[${this.featureId}][${frontmatter.id}] ${frontmatter.title}`;
95
116
 
117
+ // ✅ SAFETY CHECK: Ensure title matches expected pattern
118
+ const titlePattern = /^\[FS-\d{3}\]\[US-\d{3}\] .+$/;
119
+ if (!titlePattern.test(title)) {
120
+ throw new Error(
121
+ `Generated issue title has incorrect format: "${title}"\n` +
122
+ `Expected: [FS-XXX][US-YYY] Title\n` +
123
+ `This indicates a bug in UserStoryIssueBuilder or invalid frontmatter.\n` +
124
+ `Feature ID: ${this.featureId}\n` +
125
+ `User Story ID: ${frontmatter.id}`
126
+ );
127
+ }
128
+
96
129
  // 4. Build issue body
97
130
  const body = this.buildBody({
98
131
  frontmatter,
@@ -4,6 +4,19 @@ This project uses **SpecWeave** - a specification-first AI development framework
4
4
 
5
5
  ---
6
6
 
7
+ ## 🚨 Meta-Rule: Thinking-Before-Acting (For Claude)
8
+
9
+ **If you identify a dependency in your reasoning, satisfy it BEFORE attempting the dependent operation.**
10
+
11
+ ```
12
+ ❌ Anti-pattern: node script.js → Error: file not compiled → npm run build
13
+ ✅ Correct: npm run build → node script.js → Success
14
+ ```
15
+
16
+ **Why**: Avoids predictable failures when you already know what needs to happen first.
17
+
18
+ ---
19
+
7
20
  ## 🎯 Getting Started
8
21
 
9
22
  **Initial Increment Created**: `0001-project-setup` (`.specweave/increments/0001-project-setup/`)