specweave 0.23.4 → 0.23.7

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`
@@ -1030,6 +1129,131 @@ bash scripts/validate-plugin-directories.sh --fix
1030
1129
  - Skills index: `plugins/specweave/skills/SKILLS-INDEX.md`
1031
1130
  - Claude Code Skills docs: `~/CLAUDE.md` (Personal skills reference)
1032
1131
 
1132
+ ### 16. YAML Frontmatter Validation (CRITICAL!)
1133
+
1134
+ **Rule**: ALL spec.md files MUST have valid YAML frontmatter with required fields.
1135
+
1136
+ **Required Format**:
1137
+ ```yaml
1138
+ ---
1139
+ increment: 0001-feature-name # REQUIRED: 4-digit number + kebab-case
1140
+ title: Feature Title # OPTIONAL: Human-readable title
1141
+ feature_id: FS-001 # OPTIONAL: Living docs feature ID
1142
+ ---
1143
+ ```
1144
+
1145
+ **Common Mistakes**:
1146
+
1147
+ ```yaml
1148
+ # ❌ WRONG: Unclosed bracket
1149
+ ---
1150
+ increment: 0001-test
1151
+ data: [unclosed
1152
+ ---
1153
+
1154
+ # ❌ WRONG: Unclosed quote
1155
+ ---
1156
+ increment: 0001-test
1157
+ title: "unclosed string
1158
+ ---
1159
+
1160
+ # ❌ WRONG: Invalid YAML object
1161
+ ---
1162
+ increment: 0001-test
1163
+ config: {key: value, broken
1164
+ ---
1165
+
1166
+ # ❌ WRONG: Invalid increment ID format
1167
+ ---
1168
+ increment: 1-test # Missing leading zeros
1169
+ ---
1170
+
1171
+ # ❌ WRONG: Invalid increment ID format (uppercase)
1172
+ ---
1173
+ increment: 0001-Test-Feature # Uppercase letters not allowed
1174
+ ---
1175
+
1176
+ # ❌ WRONG: Missing required field
1177
+ ---
1178
+ title: Feature Title # Missing increment field!
1179
+ ---
1180
+
1181
+ # ✅ CORRECT: Minimal valid frontmatter
1182
+ ---
1183
+ increment: 0001-feature-name
1184
+ ---
1185
+
1186
+ # ✅ CORRECT: Full frontmatter
1187
+ ---
1188
+ increment: 0042-bug-fix
1189
+ title: Critical Bug Fix
1190
+ feature_id: FS-013
1191
+ ---
1192
+ ```
1193
+
1194
+ **Prevention Layers**:
1195
+
1196
+ 1. **Pre-commit hook** - Validates YAML before commits (blocks malformed frontmatter)
1197
+ ```bash
1198
+ # Runs automatically on git commit
1199
+ scripts/pre-commit-yaml-validation.sh
1200
+ ```
1201
+
1202
+ 2. **Spec parser** - Uses `js-yaml` library (detects errors at runtime)
1203
+ - Provides descriptive error messages
1204
+ - Shows line numbers for YAML errors
1205
+ - Suggests common fixes
1206
+
1207
+ 3. **Command validation** - `/specweave:validate` checks YAML syntax
1208
+ ```bash
1209
+ /specweave:validate 0001
1210
+ ```
1211
+
1212
+ **Manual YAML Testing**:
1213
+
1214
+ ```bash
1215
+ # Validate YAML in spec.md (manual check)
1216
+ node -e "
1217
+ const yaml = require('js-yaml');
1218
+ const fs = require('fs');
1219
+ const content = fs.readFileSync('.specweave/increments/0001-test/spec.md', 'utf-8');
1220
+ const frontmatter = content.match(/^---\n([\s\S]*?)\n---/);
1221
+ if (!frontmatter) throw new Error('No frontmatter found');
1222
+ const parsed = yaml.load(frontmatter[1]);
1223
+ console.log('✅ Valid YAML:', JSON.stringify(parsed, null, 2));
1224
+ "
1225
+ ```
1226
+
1227
+ **Error Messages**:
1228
+
1229
+ When YAML validation fails, you'll see descriptive errors:
1230
+
1231
+ ```
1232
+ ERROR: Malformed YAML syntax in frontmatter
1233
+ DETAILS: Unexpected end of stream
1234
+ LOCATION: Lines 2-5
1235
+ HINT: Common mistakes:
1236
+ - Unclosed brackets: [unclosed
1237
+ - Unclosed quotes: "unclosed
1238
+ - Invalid YAML object: {key: value, broken
1239
+ ```
1240
+
1241
+ **Why This Matters**:
1242
+ - **Silent failures**: Malformed YAML can cause missing/incorrect metadata
1243
+ - **Sync issues**: Invalid increment IDs break living docs sync
1244
+ - **GitHub sync**: Broken frontmatter prevents issue creation
1245
+ - **Validation failures**: Tasks/ACs can't be parsed without valid metadata
1246
+
1247
+ **Incident History**:
1248
+ - **Test case**: `tests/integration/commands/plan-command.integration.test.ts:626` tests malformed YAML handling
1249
+ - **Root cause**: Regex-based parsing was tolerant but unreliable
1250
+ - **Solution**: Multi-layered YAML validation with `js-yaml` library
1251
+
1252
+ **See Also**:
1253
+ - Pre-commit hook: `scripts/pre-commit-yaml-validation.sh`
1254
+ - Spec parser: `src/generators/spec/spec-parser.ts` (uses js-yaml)
1255
+ - Test suite: `tests/integration/commands/plan-command.integration.test.ts`
1256
+
1033
1257
  ---
1034
1258
 
1035
1259
  ## Project Structure
package/bin/specweave.js CHANGED
@@ -37,6 +37,7 @@ program
37
37
  .option('--tech-stack <language>', 'Technology stack (nodejs, python, etc.)', undefined)
38
38
  .option('-l, --language <lang>', 'Language for generated content (en, ru, es, zh, de, fr, ja, ko, pt)', 'en')
39
39
  .option('-f, --force', 'Force fresh start (non-interactive, removes existing .specweave)', false)
40
+ .option('--force-refresh', 'Force marketplace refresh (skip cache, always pull latest)', false)
40
41
  .action(async (projectName, options) => {
41
42
  const { initCommand } = await import('../dist/src/cli/commands/init.js');
42
43
  await initCommand(projectName, options);
@@ -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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"}
@@ -5,6 +5,7 @@ interface InitOptions {
5
5
  techStack?: string;
6
6
  language?: string;
7
7
  force?: boolean;
8
+ forceRefresh?: boolean;
8
9
  logger?: Logger;
9
10
  }
10
11
  export declare function initCommand(projectName?: string, options?: InitOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAgB9D,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA8ID,wBAAsB,WAAW,CAC/B,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAwyCf"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAgB9D,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA8ID,wBAAsB,WAAW,CAC/B,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAoxCf"}
@@ -914,81 +914,66 @@ export async function initCommand(projectName, options = {}) {
914
914
  else {
915
915
  // Claude CLI available → install ALL plugins from marketplace
916
916
  try {
917
- // Step 1: Remove existing marketplace to force update (REQUIRED for updates!)
918
- // This ensures users get the latest plugins when new ones are added
919
- spinner.start('Refreshing SpecWeave marketplace...');
920
- const listResult = execFileNoThrowSync('claude', [
921
- 'plugin',
922
- 'marketplace',
923
- 'list'
924
- ]);
925
- const marketplaceExists = listResult.success &&
926
- (listResult.stdout || '').toLowerCase().includes('specweave');
927
- if (marketplaceExists) {
928
- execFileNoThrowSync('claude', [
929
- 'plugin',
930
- 'marketplace',
931
- 'remove',
932
- 'specweave'
933
- ]);
934
- console.log(chalk.blue(' 🔄 Removed existing marketplace for update'));
935
- }
936
- // Step 2: Add marketplace from GitHub (always fresh)
937
- const addResult = execFileNoThrowSync('claude', [
938
- 'plugin',
939
- 'marketplace',
940
- 'add',
941
- 'anton-abyzov/specweave'
942
- ]);
943
- if (!addResult.success) {
944
- throw new Error('Failed to add marketplace from GitHub');
945
- }
946
- console.log(chalk.green(' ✔ Marketplace registered from GitHub'));
947
- // CRITICAL: Wait for marketplace cache to be FULLY ready
948
- // Problem: Fixed delays (2s, 5s) are unreliable - cache initialization time varies
949
- // Solution: Poll until marketplace.json exists and is readable in cache
950
- spinner.text = 'Waiting for marketplace cache to initialize...';
951
917
  const marketplaceCachePath = path.join(os.homedir(), '.claude/plugins/marketplaces/specweave/.claude-plugin/marketplace.json');
952
- const maxWaitTime = 30000; // 30 seconds max
953
- const pollInterval = 500; // Check every 500ms
954
- const startTime = Date.now();
955
- let cacheReady = false;
956
- while (!cacheReady && (Date.now() - startTime) < maxWaitTime) {
957
- try {
958
- // Check if marketplace.json exists and is readable
959
- if (fs.existsSync(marketplaceCachePath)) {
918
+ // ULTRAFAST: Check if cache is fresh (< 5 min old) and valid
919
+ let needsRefresh = true;
920
+ let cacheAlreadyValid = false;
921
+ // Skip cache if forceRefresh flag is set
922
+ if (!options.forceRefresh && fs.existsSync(marketplaceCachePath)) {
923
+ const cacheStats = fs.statSync(marketplaceCachePath);
924
+ const cacheAge = Date.now() - cacheStats.mtimeMs;
925
+ const fiveMinutes = 5 * 60 * 1000;
926
+ if (cacheAge < fiveMinutes) {
927
+ try {
960
928
  const cacheData = JSON.parse(fs.readFileSync(marketplaceCachePath, 'utf-8'));
961
- // CRITICAL: Verify plugins array is FULLY populated with metadata
962
- // Not just present, but each plugin has required fields (name, version, etc.)
963
- if (cacheData.plugins && cacheData.plugins.length >= 25) {
964
- // Additional validation: check if plugins have required metadata
965
- const hasMetadata = cacheData.plugins.every((p) => p.name && p.version && p.description);
966
- if (hasMetadata) {
967
- cacheReady = true;
968
- const waitedMs = Date.now() - startTime;
969
- console.log(chalk.gray(` ⏱ Cache ready in ${Math.round(waitedMs / 1000)}s`));
970
- break;
971
- }
972
- else {
973
- // Plugins exist but metadata incomplete - keep waiting
974
- spinner.text = `Waiting for plugin metadata... (${Math.round((Date.now() - startTime) / 1000)}s)`;
975
- }
929
+ const hasValidPlugins = cacheData.plugins &&
930
+ cacheData.plugins.length >= 25 &&
931
+ cacheData.plugins.every((p) => p.name && p.version && p.description);
932
+ if (hasValidPlugins) {
933
+ needsRefresh = false;
934
+ cacheAlreadyValid = true;
935
+ console.log(chalk.green(' ⚡ Using cached marketplace (fresh)'));
976
936
  }
977
937
  }
938
+ catch {
939
+ // Cache exists but invalid, needs refresh
940
+ }
978
941
  }
979
- catch (e) {
980
- // File exists but not readable yet (still being written)
981
- }
982
- // Wait before next poll
983
- await new Promise(resolve => setTimeout(resolve, pollInterval));
984
- // Update spinner to show we're still waiting
985
- const elapsed = Math.round((Date.now() - startTime) / 1000);
986
- spinner.text = `Waiting for marketplace cache... (${elapsed}s)`;
987
942
  }
988
- if (!cacheReady) {
989
- console.log(chalk.yellow(' ⚠ Cache initialization timeout, proceeding anyway...'));
943
+ if (needsRefresh) {
944
+ // Step 1: Remove existing marketplace to force update
945
+ spinner.start('Refreshing SpecWeave marketplace...');
946
+ const listResult = execFileNoThrowSync('claude', [
947
+ 'plugin',
948
+ 'marketplace',
949
+ 'list'
950
+ ]);
951
+ const marketplaceExists = listResult.success &&
952
+ (listResult.stdout || '').toLowerCase().includes('specweave');
953
+ if (marketplaceExists) {
954
+ execFileNoThrowSync('claude', [
955
+ 'plugin',
956
+ 'marketplace',
957
+ 'remove',
958
+ 'specweave'
959
+ ]);
960
+ console.log(chalk.blue(' 🔄 Removed existing marketplace for update'));
961
+ }
962
+ // Step 2: Add marketplace from GitHub (always fresh)
963
+ const addResult = execFileNoThrowSync('claude', [
964
+ 'plugin',
965
+ 'marketplace',
966
+ 'add',
967
+ 'anton-abyzov/specweave'
968
+ ]);
969
+ if (!addResult.success) {
970
+ throw new Error('Failed to add marketplace from GitHub');
971
+ }
972
+ console.log(chalk.green(' ✔ Marketplace registered from GitHub'));
973
+ // NO WAIT NEEDED: We load from source (npm package), not cache
974
+ // The cache is populated asynchronously by Claude Code and isn't used during init
975
+ spinner.succeed('SpecWeave marketplace ready');
990
976
  }
991
- spinner.succeed('SpecWeave marketplace ready');
992
977
  // Step 2: Load marketplace.json to get ALL available plugins
993
978
  spinner.start('Loading available plugins...');
994
979
  const marketplaceJsonPath = findSourceDir('.claude-plugin/marketplace.json');