specweave 0.30.18 → 0.30.19

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.
Files changed (70) hide show
  1. package/CLAUDE.md +22 -0
  2. package/dist/src/adapters/README.md +275 -0
  3. package/dist/src/adapters/adapter-base.d.ts +1 -1
  4. package/dist/src/adapters/adapter-base.js +3 -3
  5. package/dist/src/adapters/adapter-base.js.map +1 -1
  6. package/dist/src/adapters/adapter-loader.d.ts +11 -10
  7. package/dist/src/adapters/adapter-loader.d.ts.map +1 -1
  8. package/dist/src/adapters/adapter-loader.js +31 -21
  9. package/dist/src/adapters/adapter-loader.js.map +1 -1
  10. package/dist/src/adapters/claude/README.md +233 -0
  11. package/dist/src/adapters/codex/README.md +105 -0
  12. package/dist/src/adapters/cursor/.cursor/context/docs-context.md +62 -0
  13. package/dist/src/adapters/cursor/.cursor/context/increments-context.md +71 -0
  14. package/dist/src/adapters/cursor/.cursor/context/strategy-context.md +73 -0
  15. package/dist/src/adapters/cursor/.cursor/context/tests-context.md +89 -0
  16. package/dist/src/adapters/cursor/README.md +283 -0
  17. package/dist/src/adapters/cursor/adapter.d.ts +5 -1
  18. package/dist/src/adapters/cursor/adapter.d.ts.map +1 -1
  19. package/dist/src/adapters/cursor/adapter.js +18 -115
  20. package/dist/src/adapters/cursor/adapter.js.map +1 -1
  21. package/dist/src/adapters/gemini/README.md +97 -0
  22. package/dist/src/adapters/generic/README.md +277 -0
  23. package/dist/src/adapters/registry.yaml +197 -0
  24. package/dist/src/cli/helpers/init/living-docs-preflight.js +12 -12
  25. package/dist/src/cli/helpers/init/living-docs-preflight.js.map +1 -1
  26. package/dist/src/config/types.d.ts +1208 -203
  27. package/dist/src/config/types.d.ts.map +1 -1
  28. package/dist/src/core/llm/providers/bedrock-provider.d.ts.map +1 -1
  29. package/dist/src/core/llm/providers/bedrock-provider.js +2 -3
  30. package/dist/src/core/llm/providers/bedrock-provider.js.map +1 -1
  31. package/dist/src/importers/ado-importer.d.ts.map +1 -1
  32. package/dist/src/importers/ado-importer.js +2 -1
  33. package/dist/src/importers/ado-importer.js.map +1 -1
  34. package/dist/src/importers/github-importer.d.ts.map +1 -1
  35. package/dist/src/importers/github-importer.js +2 -1
  36. package/dist/src/importers/github-importer.js.map +1 -1
  37. package/dist/src/importers/jira-importer.d.ts.map +1 -1
  38. package/dist/src/importers/jira-importer.js +2 -1
  39. package/dist/src/importers/jira-importer.js.map +1 -1
  40. package/dist/src/init/architecture/types.d.ts +140 -33
  41. package/dist/src/init/architecture/types.d.ts.map +1 -1
  42. package/dist/src/init/compliance/types.d.ts +27 -30
  43. package/dist/src/init/compliance/types.d.ts.map +1 -1
  44. package/dist/src/init/repo/types.d.ts +34 -11
  45. package/dist/src/init/repo/types.d.ts.map +1 -1
  46. package/dist/src/init/research/src/config/types.d.ts +82 -15
  47. package/dist/src/init/research/src/config/types.d.ts.map +1 -1
  48. package/dist/src/init/research/types.d.ts +93 -38
  49. package/dist/src/init/research/types.d.ts.map +1 -1
  50. package/dist/src/init/team/types.d.ts +42 -4
  51. package/dist/src/init/team/types.d.ts.map +1 -1
  52. package/dist/src/utils/fs-native.d.ts +2 -1
  53. package/dist/src/utils/fs-native.d.ts.map +1 -1
  54. package/dist/src/utils/fs-native.js +6 -1
  55. package/dist/src/utils/fs-native.js.map +1 -1
  56. package/dist/src/utils/html-to-mdx.d.ts +37 -0
  57. package/dist/src/utils/html-to-mdx.d.ts.map +1 -0
  58. package/dist/src/utils/html-to-mdx.js +98 -0
  59. package/dist/src/utils/html-to-mdx.js.map +1 -0
  60. package/package.json +6 -2
  61. package/plugins/specweave/commands/specweave-judge.md +11 -0
  62. package/plugins/specweave/hooks/lib/update-status-line.sh +16 -4
  63. package/plugins/specweave/lib/vendor/utils/fs-native.d.ts +2 -1
  64. package/plugins/specweave/lib/vendor/utils/fs-native.js +6 -1
  65. package/plugins/specweave/lib/vendor/utils/fs-native.js.map +1 -1
  66. package/plugins/specweave-docs/commands/build.md +47 -73
  67. package/plugins/specweave-docs/commands/preview.md +181 -87
  68. package/plugins/specweave-docs/skills/preview/SKILL.md +45 -56
  69. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +330 -0
  70. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +495 -0
@@ -174,12 +174,24 @@ fi
174
174
  TASKS_FILE="$INCREMENTS_DIR/$CURRENT_INCREMENT/tasks.md"
175
175
  SPEC_FILE="$INCREMENTS_DIR/$CURRENT_INCREMENT/spec.md"
176
176
 
177
- # Count tasks with single awk call
177
+ # Count tasks with single awk call (per-task completion tracking!)
178
+ # Bug fix: Each task counts as 0 or 1 completed, regardless of marker count
178
179
  read -r TOTAL_TASKS COMPLETED_TASKS < <(
179
180
  awk '
180
- /^###? T-/ { total++ }
181
- /\*\*Completed\*\*:|\*\*Status\*\*:[ \t]*\[x\]/ { completed++ }
182
- END { print total+0, completed+0 }
181
+ BEGIN { total=0; completed=0; in_task=0; task_complete=0 }
182
+ /^###? T-/ {
183
+ if (in_task && task_complete) completed++
184
+ total++
185
+ in_task=1
186
+ task_complete=0
187
+ }
188
+ /\*\*Completed\*\*:|\*\*Status\*\*:[ \t]*\[x\]|^\[x\]/ {
189
+ if (in_task) task_complete=1
190
+ }
191
+ END {
192
+ if (in_task && task_complete) completed++
193
+ print total, completed
194
+ }
183
195
  ' "$TASKS_FILE" 2>/dev/null || echo "0 0"
184
196
  )
185
197
 
@@ -131,7 +131,7 @@ export declare function move(src: string, dest: string, options?: {
131
131
  export declare function moveSync(src: string, dest: string, options?: {
132
132
  overwrite?: boolean;
133
133
  }): void;
134
- export declare const readFile: typeof fsPromises.readFile, writeFile: typeof fsPromises.writeFile, appendFile: typeof fsPromises.appendFile, stat: typeof fsPromises.stat, readdir: typeof fsPromises.readdir, access: typeof fsPromises.access, unlink: typeof fsPromises.unlink, rmdir: typeof fsPromises.rmdir, rename: typeof fsPromises.rename, chmod: typeof fsPromises.chmod, copyFile: typeof fsPromises.copyFile, mkdtemp: typeof fsPromises.mkdtemp;
134
+ export declare const readFile: typeof fsPromises.readFile, writeFile: typeof fsPromises.writeFile, appendFile: typeof fsPromises.appendFile, stat: typeof fsPromises.stat, lstat: typeof fsPromises.lstat, readdir: typeof fsPromises.readdir, access: typeof fsPromises.access, unlink: typeof fsPromises.unlink, rmdir: typeof fsPromises.rmdir, rename: typeof fsPromises.rename, chmod: typeof fsPromises.chmod, copyFile: typeof fsPromises.copyFile, mkdtemp: typeof fsPromises.mkdtemp, mkdir: typeof fsPromises.mkdir, symlink: typeof fsPromises.symlink, readlink: typeof fsPromises.readlink;
135
135
  export declare const renameSync: typeof fsRenameSync;
136
136
  export declare const mkdtempSync: typeof fsMkdtempSync;
137
137
  export { readFileSync, writeFileSync, statSync, readdirSync, unlinkSync, mkdirSync, rmSync, copyFileSync, };
@@ -156,6 +156,7 @@ declare const _default: {
156
156
  rename: typeof fsPromises.rename;
157
157
  copyFile: typeof fsPromises.copyFile;
158
158
  mkdtemp: typeof fsPromises.mkdtemp;
159
+ mkdir: typeof fsPromises.mkdir;
159
160
  ensureDirSync: typeof ensureDirSync;
160
161
  mkdirpSync: typeof mkdirpSync;
161
162
  existsSync: typeof existsSync;
@@ -267,7 +267,11 @@ export function moveSync(src, dest, options) {
267
267
  }
268
268
  }
269
269
  // Re-export common fs/promises methods for convenience
270
- export const { readFile, writeFile, appendFile, stat, readdir, access, unlink, rmdir, rename, chmod, copyFile, mkdtemp, } = fsPromises;
270
+ export const { readFile, writeFile, appendFile, stat, lstat, // Added for symlink detection
271
+ readdir, access, unlink, rmdir, rename, chmod, copyFile, mkdtemp, mkdir, // Added for test compatibility
272
+ symlink, // Added for creating symlinks
273
+ readlink, // Added for reading symlink targets
274
+ } = fsPromises;
271
275
  // Create renameSync alias for fs-extra compatibility
272
276
  export const renameSync = fsRenameSync;
273
277
  // Create mkdtempSync alias
@@ -297,6 +301,7 @@ export default {
297
301
  rename,
298
302
  copyFile,
299
303
  mkdtemp,
304
+ mkdir,
300
305
  // Sync methods
301
306
  ensureDirSync,
302
307
  mkdirpSync,
@@ -1 +1 @@
1
- {"version":3,"file":"fs-native.js","sourceRoot":"","sources":["../../../src/utils/fs-native.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs-native.js","sourceRoot":"","sources":["../../../src/utils/fs-native.ts"],"names":[],"mappings":"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"}
@@ -1,60 +1,55 @@
1
1
  ---
2
2
  name: specweave-docs:build
3
- description: Build static documentation site for deployment. Supports both public and internal docs. Outputs production-ready HTML/CSS/JS.
3
+ description: Build static documentation site for deployment. Auto-setup on first run. Outputs production-ready HTML/CSS/JS.
4
4
  ---
5
5
 
6
6
  # Documentation Build Command
7
7
 
8
8
  Build production-ready static documentation site for deployment to any static host.
9
9
 
10
- ## Usage
10
+ ## Your Task
11
11
 
12
- ```bash
13
- # Build INTERNAL docs (SpecWeave living documentation) - DEFAULT
14
- /specweave-docs:build
12
+ **IMPORTANT**: This command must work in ANY SpecWeave user project, not just the SpecWeave repo itself.
13
+
14
+ ### Step 1: Ensure Docusaurus is Set Up
15
15
 
16
- # Build PUBLIC docs (end-user documentation)
17
- /specweave-docs:build --public
16
+ First, ensure the cached Docusaurus installation exists:
17
+
18
+ ```bash
19
+ # Check if Docusaurus is set up
20
+ if [ ! -d ".specweave/cache/docs-site/node_modules" ]; then
21
+ echo "Setting up Docusaurus first..."
22
+ # Run the same setup as preview command (see preview.md for full setup)
23
+ # After setup, continue to build
24
+ fi
18
25
  ```
19
26
 
20
- ## Two Build Targets
27
+ If not set up, follow the same setup steps as `/specweave-docs:preview` (Step 3 in preview.md).
21
28
 
22
- | Site | Output Directory | NPM Script |
23
- |------|------------------|------------|
24
- | **Internal** | `docs-site/build-internal/` | `docs:internal:build` |
25
- | **Public** | `docs-site/build/` | `docs:build` |
29
+ ### Step 2: Run Build
26
30
 
27
- ## Your Task
31
+ ```bash
32
+ cd .specweave/cache/docs-site && npm run build
33
+ ```
28
34
 
29
- Execute the appropriate npm script based on user flags:
35
+ ### Step 3: Report Output
30
36
 
31
37
  ```bash
32
- # Check if user wants public docs
33
- PUBLIC_FLAG="${1:-}"
34
-
35
- cd /path/to/project
36
-
37
- if [ "$PUBLIC_FLAG" = "--public" ]; then
38
- echo "Building PUBLIC documentation..."
39
- echo "Output: docs-site/build/"
40
- echo ""
41
- npm run docs:build
42
- echo ""
43
- echo "Build complete! Output: docs-site/build/"
44
- else
45
- echo "Building INTERNAL documentation..."
46
- echo "Output: docs-site/build-internal/"
47
- echo ""
48
- npm run docs:internal:build
49
- echo ""
50
- echo "Build complete! Output: docs-site/build-internal/"
51
- fi
38
+ echo ""
39
+ echo "📦 Build Complete!"
40
+ echo ""
41
+ echo " Output: .specweave/cache/docs-site/build/"
42
+ echo ""
43
+ echo " Deploy with:"
44
+ echo " npx serve .specweave/cache/docs-site/build/"
45
+ echo " Copy to your static host"
46
+ echo ""
52
47
  ```
53
48
 
54
49
  ## Output Structure
55
50
 
56
51
  ```
57
- docs-site/build-internal/
52
+ .specweave/cache/docs-site/build/
58
53
  ├── index.html <- Landing page
59
54
  ├── strategy/
60
55
  ├── specs/
@@ -74,41 +69,23 @@ docs-site/build-internal/
74
69
  ### 1. Preview Locally
75
70
 
76
71
  ```bash
77
- # Internal docs
78
- cd docs-site && npm run serve:internal
79
-
80
- # Public docs
81
- cd docs-site && npm run serve
82
- ```
83
-
84
- ### 2. Netlify
85
-
86
- ```bash
87
- cd docs-site
88
- npx netlify deploy --dir=build-internal --prod
89
- ```
90
-
91
- ### 3. Vercel
92
-
93
- ```bash
94
- cd docs-site
95
- npx vercel --prod
72
+ npx serve .specweave/cache/docs-site/build/
96
73
  ```
97
74
 
98
- ### 4. GitHub Pages
75
+ ### 2. Copy to Custom Location
99
76
 
100
77
  ```bash
101
- # Copy build to docs folder (GitHub Pages expects /docs)
102
- cp -r docs-site/build-internal/* docs/
78
+ # Copy build to docs folder for GitHub Pages
79
+ cp -r .specweave/cache/docs-site/build/* docs/
103
80
  git add docs/
104
81
  git commit -m "docs: update documentation site"
105
- git push
106
82
  ```
107
83
 
108
- ### 5. Static Server
84
+ ### 3. Netlify/Vercel
109
85
 
110
86
  ```bash
111
- npx serve docs-site/build-internal/
87
+ # Point your deployment to:
88
+ .specweave/cache/docs-site/build/
112
89
  ```
113
90
 
114
91
  ## Build vs Preview
@@ -122,33 +99,30 @@ npx serve docs-site/build-internal/
122
99
  | **Optimization** | No | Yes (minified) |
123
100
  | **Use Case** | Writing docs | Deployment |
124
101
 
125
- ## First-Time Setup
126
-
127
- If dependencies not installed:
128
-
129
- ```bash
130
- npm run docs:install
131
- ```
132
-
133
102
  ## Troubleshooting
134
103
 
135
104
  ### Build fails with broken links
136
105
  ```bash
137
106
  # Preview first to find errors
138
- npm run docs:internal
107
+ /specweave-docs:preview
139
108
  # Fix broken links, then build
140
- npm run docs:internal:build
109
+ /specweave-docs:build
141
110
  ```
142
111
 
143
112
  ### Out of memory
144
113
  ```bash
145
- # Increase Node memory
146
- NODE_OPTIONS="--max-old-space-size=4096" npm run docs:internal:build
114
+ NODE_OPTIONS="--max-old-space-size=4096" npm run build
147
115
  ```
148
116
 
149
117
  ### Cache issues
150
118
  ```bash
151
- cd docs-site && npm run clear && npm run build:internal
119
+ cd .specweave/cache/docs-site && npm run clear && npm run build
120
+ ```
121
+
122
+ ### Reinstall from scratch
123
+ ```bash
124
+ rm -rf .specweave/cache/docs-site
125
+ /specweave-docs:build
152
126
  ```
153
127
 
154
128
  ## See Also
@@ -1,135 +1,229 @@
1
1
  ---
2
2
  name: specweave-docs:preview
3
- description: Launch Docusaurus documentation server. Supports both public (port 3016) and internal (port 3015) documentation sites.
3
+ description: Launch Docusaurus documentation server for internal living docs. Auto-setup on first run. Port 3015.
4
4
  ---
5
5
 
6
6
  # Documentation Preview Command
7
7
 
8
8
  Launch Docusaurus development server with hot reload, Mermaid diagrams, and auto-generated sidebar.
9
9
 
10
- ## Usage
11
-
12
- ```bash
13
- # Preview INTERNAL docs (SpecWeave living documentation) - DEFAULT
14
- /specweave-docs:preview
10
+ ## Your Task
15
11
 
16
- # Preview PUBLIC docs (end-user documentation)
17
- /specweave-docs:preview --public
18
- ```
12
+ **IMPORTANT**: This command must work in ANY SpecWeave user project, not just the SpecWeave repo itself.
19
13
 
20
- ## Two Documentation Sites
14
+ ### Step 1: Check Prerequisites
21
15
 
22
- | Site | Port | Content | NPM Script |
23
- |------|------|---------|------------|
24
- | **Internal** | 3015 | `.specweave/docs/internal/` | `docs:internal` |
25
- | **Public** | 3016 | `docs-site/docs/` | `docs:dev` |
16
+ ```bash
17
+ # Verify internal docs exist
18
+ ls -la .specweave/docs/internal/
26
19
 
27
- ## Your Task
20
+ # If missing, inform user:
21
+ # "No internal documentation found at .specweave/docs/internal/.
22
+ # Run 'specweave init' first or create the folder structure."
23
+ ```
28
24
 
29
- Execute the appropriate npm script based on user flags:
25
+ ### Step 2: Check for Cached Installation
30
26
 
31
27
  ```bash
32
- # Check if user wants public docs
33
- PUBLIC_FLAG="${1:-}"
34
-
35
- cd /path/to/project
36
-
37
- if [ "$PUBLIC_FLAG" = "--public" ]; then
38
- echo "Launching PUBLIC documentation on port 3016..."
39
- echo "Content: docs-site/docs/"
40
- echo ""
41
- npm run docs:dev
28
+ # Check if Docusaurus is already set up in cache
29
+ if [ -d ".specweave/cache/docs-site/node_modules" ]; then
30
+ echo "✓ Docusaurus installation found in cache"
31
+ NEEDS_INSTALL=false
42
32
  else
43
- echo "Launching INTERNAL documentation on port 3015..."
44
- echo "Content: .specweave/docs/internal/"
45
- echo ""
46
- npm run docs:internal
33
+ echo " First-time setup: Installing Docusaurus (~30 seconds)..."
34
+ NEEDS_INSTALL=true
47
35
  fi
48
36
  ```
49
37
 
50
- ### Alternative: Run directly with npx
38
+ ### Step 3: First-Time Setup (if needed)
51
39
 
52
- If in a fresh project without the docs-site setup:
40
+ If `NEEDS_INSTALL=true`, create the cached Docusaurus installation:
53
41
 
54
42
  ```bash
55
- # For internal docs
56
- cd docs-site && npm run start:internal
57
-
58
- # For public docs
59
- cd docs-site && npm run start
43
+ # Create cache directory
44
+ mkdir -p .specweave/cache/docs-site
45
+
46
+ # Create package.json
47
+ cat > .specweave/cache/docs-site/package.json << 'EOF'
48
+ {
49
+ "name": "specweave-docs-preview",
50
+ "version": "1.0.0",
51
+ "private": true,
52
+ "scripts": {
53
+ "start": "docusaurus start --port 3015",
54
+ "build": "docusaurus build",
55
+ "clear": "docusaurus clear"
56
+ },
57
+ "dependencies": {
58
+ "@docusaurus/core": "^3.9.2",
59
+ "@docusaurus/preset-classic": "^3.9.2",
60
+ "@docusaurus/theme-mermaid": "^3.9.2",
61
+ "@mdx-js/react": "^3.0.0",
62
+ "clsx": "^2.0.0",
63
+ "prism-react-renderer": "^2.3.0",
64
+ "react": "^19.0.0",
65
+ "react-dom": "^19.0.0"
66
+ },
67
+ "engines": {
68
+ "node": ">=20.0"
69
+ }
70
+ }
71
+ EOF
72
+
73
+ # Create Docusaurus config pointing to internal docs
74
+ cat > .specweave/cache/docs-site/docusaurus.config.ts << 'EOF'
75
+ import {themes as prismThemes} from 'prism-react-renderer';
76
+ import type {Config} from '@docusaurus/types';
77
+ import type * as Preset from '@docusaurus/preset-classic';
78
+
79
+ const config: Config = {
80
+ title: 'Internal Documentation',
81
+ tagline: 'SpecWeave Living Documentation',
82
+ favicon: 'img/favicon.ico',
83
+ future: { v4: true },
84
+ url: 'http://localhost:3015',
85
+ baseUrl: '/',
86
+ onBrokenLinks: 'warn',
87
+ onBrokenMarkdownLinks: 'warn',
88
+ i18n: { defaultLocale: 'en', locales: ['en'] },
89
+ markdown: { mermaid: true, format: 'md' },
90
+ themes: ['@docusaurus/theme-mermaid'],
91
+ presets: [
92
+ [
93
+ 'classic',
94
+ {
95
+ docs: {
96
+ // Path relative to this config file → ../../docs/internal/
97
+ path: '../../docs/internal',
98
+ routeBasePath: '/',
99
+ sidebarPath: './sidebars.ts',
100
+ showLastUpdateTime: true,
101
+ sidebarCollapsible: true,
102
+ sidebarCollapsed: true,
103
+ },
104
+ blog: false,
105
+ theme: { customCss: './src/css/custom.css' },
106
+ } satisfies Preset.Options,
107
+ ],
108
+ ],
109
+ themeConfig: {
110
+ colorMode: {
111
+ defaultMode: 'dark',
112
+ disableSwitch: false,
113
+ respectPrefersColorScheme: true,
114
+ },
115
+ navbar: {
116
+ title: 'Internal Docs',
117
+ items: [
118
+ {to: '/', label: 'Home', position: 'left'},
119
+ {type: 'search', position: 'right'},
120
+ ],
121
+ },
122
+ footer: {
123
+ style: 'dark',
124
+ copyright: `SpecWeave Living Documentation`,
125
+ },
126
+ prism: {
127
+ theme: prismThemes.github,
128
+ darkTheme: prismThemes.dracula,
129
+ additionalLanguages: ['bash', 'typescript', 'yaml', 'json'],
130
+ },
131
+ mermaid: { theme: {light: 'neutral', dark: 'dark'} },
132
+ } satisfies Preset.ThemeConfig,
133
+ };
134
+
135
+ export default config;
136
+ EOF
137
+
138
+ # Create auto-generated sidebar
139
+ cat > .specweave/cache/docs-site/sidebars.ts << 'EOF'
140
+ import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
141
+
142
+ const sidebars: SidebarsConfig = {
143
+ docs: [
144
+ {
145
+ type: 'autogenerated',
146
+ dirName: '.',
147
+ },
148
+ ],
149
+ };
150
+
151
+ export default sidebars;
152
+ EOF
153
+
154
+ # Create minimal CSS
155
+ mkdir -p .specweave/cache/docs-site/src/css
156
+ cat > .specweave/cache/docs-site/src/css/custom.css << 'EOF'
157
+ :root {
158
+ --ifm-color-primary: #2563eb;
159
+ --ifm-code-font-size: 95%;
160
+ }
161
+ [data-theme='dark'] {
162
+ --ifm-color-primary: #60a5fa;
163
+ }
164
+ EOF
165
+
166
+ # Create static folder with placeholder favicon
167
+ mkdir -p .specweave/cache/docs-site/static/img
168
+ echo '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text y=".9em" font-size="90">📚</text></svg>' > .specweave/cache/docs-site/static/img/favicon.ico
169
+
170
+ # Install dependencies using PUBLIC npm registry (avoids Azure DevOps/private registry issues)
171
+ cd .specweave/cache/docs-site && npm install --registry=https://registry.npmjs.org --legacy-peer-deps
60
172
  ```
61
173
 
62
- ## What You Get
63
-
64
- - **Hot reload** - Edit markdown, see changes instantly
65
- - **Auto sidebar** - Generated from folder structure
66
- - **Mermaid diagrams** - Architecture diagrams render beautifully
67
- - **Dark/light mode** - Toggle in navbar
68
- - **Local search** - Instant search across all docs
69
- - **Mobile responsive** - Works on any device
70
-
71
- ## First-Time Setup
72
-
73
- If `docs-site/node_modules` doesn't exist:
174
+ ### Step 4: Start the Server
74
175
 
75
176
  ```bash
76
- npm run docs:install
177
+ cd .specweave/cache/docs-site && npm start
77
178
  ```
78
179
 
79
- This installs Docusaurus dependencies (~200MB, ~30 seconds).
80
-
81
- ## Ports
180
+ This will:
181
+ - Start Docusaurus on **http://localhost:3015**
182
+ - Enable hot reload (edit markdown, see changes instantly)
183
+ - Render Mermaid diagrams
184
+ - Auto-generate sidebar from folder structure
82
185
 
83
- | Script | Port | URL |
84
- |--------|------|-----|
85
- | `docs:dev` | 3016 | http://localhost:3016 |
86
- | `docs:internal` | 3015 | http://localhost:3015 |
186
+ ### Output to User
87
187
 
88
- ## Internal Docs Structure
188
+ After starting, display:
89
189
 
90
190
  ```
91
- .specweave/docs/internal/
92
- ├── strategy/ → Product strategy
93
- ├── specs/ → Feature specifications (708 files!)
94
- └── specweave/
95
- │ ├── FS-001/ → Feature folders
96
- │ ├── FS-002/
97
- │ └── ...
98
- ├── architecture/ → ADRs, HLDs, diagrams
99
- ├── delivery/ → Release plans, guides
100
- ├── operations/ Runbooks, NFRs
101
- └── governance/ → Standards, conventions
191
+ 📚 Documentation Preview Server Started!
192
+
193
+ URL: http://localhost:3015
194
+ Content: .specweave/docs/internal/
195
+
196
+ Features:
197
+ Hot reload - edit markdown, see changes instantly
198
+ Mermaid diagrams - architecture diagrams render beautifully
199
+ Auto sidebar - generated from folder structure
200
+ Dark/light mode - toggle in navbar
201
+
202
+ Press Ctrl+C to stop the server.
102
203
  ```
103
204
 
104
- ## Configuration Files
205
+ ## What You Get
105
206
 
106
- | File | Purpose |
107
- |------|---------|
108
- | `docusaurus.config.ts` | Public docs config |
109
- | `docusaurus.config.internal.ts` | Internal docs config |
110
- | `sidebars.ts` | Public docs sidebar |
111
- | `sidebars.internal.ts` | Internal docs sidebar |
207
+ - **Hot reload** - Edit markdown, see changes instantly
208
+ - **Auto sidebar** - Generated from folder structure
209
+ - **Mermaid diagrams** - Architecture diagrams render beautifully
210
+ - **Dark/light mode** - Toggle in navbar
211
+ - **Local search** - Instant search across all docs
112
212
 
113
213
  ## Troubleshooting
114
214
 
115
215
  ### Port already in use
116
216
  ```bash
117
- # Find process using port
118
- lsof -i :3015
119
-
120
- # Kill it
121
- kill -9 <PID>
217
+ lsof -i :3015 && kill -9 $(lsof -t -i :3015)
122
218
  ```
123
219
 
124
- ### Missing dependencies
220
+ ### Reinstall from scratch
125
221
  ```bash
126
- npm run docs:install
222
+ rm -rf .specweave/cache/docs-site && /specweave-docs:preview
127
223
  ```
128
224
 
129
- ### Build errors
130
- ```bash
131
- cd docs-site && npm run clear && npm run start:internal
132
- ```
225
+ ### npm registry issues
226
+ The setup uses `--registry=https://registry.npmjs.org` to bypass private registry configurations.
133
227
 
134
228
  ## See Also
135
229