specweave 2.2.2 → 2.3.0

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 (132) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/README.md +22 -5
  3. package/bin/check-build.js +43 -0
  4. package/bin/check-node.js +136 -0
  5. package/bin/help.js +68 -0
  6. package/bin/project.js +28 -0
  7. package/bin/specweave.js +26 -305
  8. package/bin/startup-check.js +44 -0
  9. package/dist/dashboard/assets/index-DS3yH-sX.css +1 -0
  10. package/dist/dashboard/assets/index-DjfDqgzX.js +13 -0
  11. package/dist/dashboard/assets/web-0-CXU3YvQl.woff2 +0 -0
  12. package/dist/dashboard/assets/web-1-CnEgTPdE.woff2 +0 -0
  13. package/dist/dashboard/assets/web-10-ppjp2k5c.woff2 +0 -0
  14. package/dist/dashboard/assets/web-11-T5L87s1n.woff2 +0 -0
  15. package/dist/dashboard/assets/web-2-Cuw1d432.woff2 +0 -0
  16. package/dist/dashboard/assets/web-3-tuJ4lY6O.woff2 +0 -0
  17. package/dist/dashboard/assets/web-4-KUPCjGsn.woff2 +0 -0
  18. package/dist/dashboard/assets/web-5-BD64o3ke.woff2 +0 -0
  19. package/dist/dashboard/assets/web-6-CuVUMDWO.woff2 +0 -0
  20. package/dist/dashboard/assets/web-7-B2O-dwcv.woff2 +0 -0
  21. package/dist/dashboard/assets/web-8-b0I-AwbV.woff2 +0 -0
  22. package/dist/dashboard/assets/web-9-CjmLAiqB.woff2 +0 -0
  23. package/dist/dashboard/index.html +3 -3
  24. package/dist/src/adapters/codex/README.md +5 -101
  25. package/dist/src/adapters/codex/adapter.d.ts +5 -6
  26. package/dist/src/adapters/codex/adapter.d.ts.map +1 -1
  27. package/dist/src/adapters/codex/adapter.js +40 -226
  28. package/dist/src/adapters/codex/adapter.js.map +1 -1
  29. package/dist/src/adapters/registry.yaml +1 -1
  30. package/dist/src/cli/commands/dashboard.js +6 -6
  31. package/dist/src/cli/commands/dashboard.js.map +1 -1
  32. package/dist/src/cli/commands/gc.d.ts.map +1 -1
  33. package/dist/src/cli/commands/gc.js +18 -2
  34. package/dist/src/cli/commands/gc.js.map +1 -1
  35. package/dist/src/cli/commands/living-docs.d.ts.map +1 -1
  36. package/dist/src/cli/commands/living-docs.js +12 -6
  37. package/dist/src/cli/commands/living-docs.js.map +1 -1
  38. package/dist/src/cli/commands/lsp.d.ts.map +1 -1
  39. package/dist/src/cli/commands/lsp.js +38 -9
  40. package/dist/src/cli/commands/lsp.js.map +1 -1
  41. package/dist/src/cli/commands/project.d.ts +25 -0
  42. package/dist/src/cli/commands/project.d.ts.map +1 -0
  43. package/dist/src/cli/commands/project.js +123 -0
  44. package/dist/src/cli/commands/project.js.map +1 -0
  45. package/dist/src/cli/commands/refresh-plugins.d.ts +1 -0
  46. package/dist/src/cli/commands/refresh-plugins.d.ts.map +1 -1
  47. package/dist/src/cli/commands/refresh-plugins.js +15 -3
  48. package/dist/src/cli/commands/refresh-plugins.js.map +1 -1
  49. package/dist/src/cli/commands/save.d.ts +10 -2
  50. package/dist/src/cli/commands/save.d.ts.map +1 -1
  51. package/dist/src/cli/commands/save.js +35 -4
  52. package/dist/src/cli/commands/save.js.map +1 -1
  53. package/dist/src/cli/commands/update.d.ts.map +1 -1
  54. package/dist/src/cli/commands/update.js +7 -4
  55. package/dist/src/cli/commands/update.js.map +1 -1
  56. package/dist/src/cli/helpers/init/greenfield-detection.d.ts.map +1 -1
  57. package/dist/src/cli/helpers/init/greenfield-detection.js +12 -13
  58. package/dist/src/cli/helpers/init/greenfield-detection.js.map +1 -1
  59. package/dist/src/config/types.d.ts +4 -4
  60. package/dist/src/core/doctor/checkers/installation-health-checker.d.ts.map +1 -1
  61. package/dist/src/core/doctor/checkers/installation-health-checker.js +10 -0
  62. package/dist/src/core/doctor/checkers/installation-health-checker.js.map +1 -1
  63. package/dist/src/core/jev/browse.d.ts +2 -2
  64. package/dist/src/core/jev/browse.d.ts.map +1 -1
  65. package/dist/src/core/jev/browse.js +57 -11
  66. package/dist/src/core/jev/browse.js.map +1 -1
  67. package/dist/src/core/jev/client.d.ts.map +1 -1
  68. package/dist/src/core/jev/client.js +49 -20
  69. package/dist/src/core/jev/client.js.map +1 -1
  70. package/dist/src/core/jev/decide.d.ts.map +1 -1
  71. package/dist/src/core/jev/decide.js +12 -7
  72. package/dist/src/core/jev/decide.js.map +1 -1
  73. package/dist/src/core/living-docs/discovery.d.ts +6 -0
  74. package/dist/src/core/living-docs/discovery.d.ts.map +1 -1
  75. package/dist/src/core/living-docs/discovery.js +18 -6
  76. package/dist/src/core/living-docs/discovery.js.map +1 -1
  77. package/dist/src/core/lsp/lsp-client.d.ts.map +1 -1
  78. package/dist/src/core/lsp/lsp-client.js +13 -8
  79. package/dist/src/core/lsp/lsp-client.js.map +1 -1
  80. package/dist/src/core/project-hub/brief.d.ts +11 -0
  81. package/dist/src/core/project-hub/brief.d.ts.map +1 -0
  82. package/dist/src/core/project-hub/brief.js +39 -0
  83. package/dist/src/core/project-hub/brief.js.map +1 -0
  84. package/dist/src/core/project-hub/store.d.ts +25 -0
  85. package/dist/src/core/project-hub/store.d.ts.map +1 -0
  86. package/dist/src/core/project-hub/store.js +174 -0
  87. package/dist/src/core/project-hub/store.js.map +1 -0
  88. package/dist/src/core/project-hub/types.d.ts +51 -0
  89. package/dist/src/core/project-hub/types.d.ts.map +1 -0
  90. package/dist/src/core/project-hub/types.js +16 -0
  91. package/dist/src/core/project-hub/types.js.map +1 -0
  92. package/dist/src/core/session/handoff-secret-scrub.d.ts.map +1 -1
  93. package/dist/src/core/session/handoff-secret-scrub.js +2 -1
  94. package/dist/src/core/session/handoff-secret-scrub.js.map +1 -1
  95. package/dist/src/dashboard/server/dashboard-server.d.ts.map +1 -1
  96. package/dist/src/dashboard/server/dashboard-server.js +2 -0
  97. package/dist/src/dashboard/server/dashboard-server.js.map +1 -1
  98. package/dist/src/dashboard/server/data/intent-store.d.ts +5 -0
  99. package/dist/src/dashboard/server/data/intent-store.d.ts.map +1 -1
  100. package/dist/src/dashboard/server/data/intent-store.js +31 -0
  101. package/dist/src/dashboard/server/data/intent-store.js.map +1 -1
  102. package/dist/src/dashboard/server/routes/project-hub-routes.d.ts +5 -0
  103. package/dist/src/dashboard/server/routes/project-hub-routes.d.ts.map +1 -0
  104. package/dist/src/dashboard/server/routes/project-hub-routes.js +75 -0
  105. package/dist/src/dashboard/server/routes/project-hub-routes.js.map +1 -0
  106. package/dist/src/init/compliance/types.d.ts +1 -1
  107. package/dist/src/init/research/types.d.ts +1 -1
  108. package/dist/src/utils/cleanup-stale-plugins.d.ts +9 -0
  109. package/dist/src/utils/cleanup-stale-plugins.d.ts.map +1 -1
  110. package/dist/src/utils/cleanup-stale-plugins.js +40 -23
  111. package/dist/src/utils/cleanup-stale-plugins.js.map +1 -1
  112. package/dist/src/utils/find-project-root.d.ts +23 -0
  113. package/dist/src/utils/find-project-root.d.ts.map +1 -1
  114. package/dist/src/utils/find-project-root.js +26 -4
  115. package/dist/src/utils/find-project-root.js.map +1 -1
  116. package/dist/src/utils/native-skill-installer.d.ts +10 -0
  117. package/dist/src/utils/native-skill-installer.d.ts.map +1 -0
  118. package/dist/src/utils/native-skill-installer.js +79 -0
  119. package/dist/src/utils/native-skill-installer.js.map +1 -0
  120. package/dist/src/utils/plugin-copier.d.ts +9 -0
  121. package/dist/src/utils/plugin-copier.d.ts.map +1 -1
  122. package/dist/src/utils/plugin-copier.js +20 -1
  123. package/dist/src/utils/plugin-copier.js.map +1 -1
  124. package/package.json +4 -3
  125. package/plugins/specweave/.claude-plugin/plugin.json +1 -1
  126. package/plugins/specweave/marketplace.json +6 -0
  127. package/plugins/specweave/skills/project/SKILL.md +45 -0
  128. package/src/styles/fonts/ibmplexsans-OFL.txt +93 -0
  129. package/src/styles/fonts/newsreader-OFL.txt +93 -0
  130. package/src/templates/AGENTS.md.template +4 -0
  131. package/dist/dashboard/assets/index-BeKUULf0.css +0 -1
  132. package/dist/dashboard/assets/index-Bf5TF0_l.js +0 -13
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "2.2.2",
3
+ "version": "2.3.0",
4
4
  "description": "Portable intent, specifications, task evidence, and handoffs across AI coding tools.",
5
5
  "owner": {
6
6
  "name": "Anton Abyzov",
@@ -12,7 +12,7 @@
12
12
  "description": "SpecWeave unified plugin — increment lifecycle (plan, work the ledger, verify, review, complete), cross-tool handoff, GitHub/Jira/ADO sync",
13
13
  "source": "./plugins/specweave",
14
14
  "category": "development",
15
- "version": "2.2.2",
15
+ "version": "2.3.0",
16
16
  "author": {
17
17
  "name": "Anton Abyzov",
18
18
  "email": "anton.abyzov@gmail.com"
package/README.md CHANGED
@@ -2,12 +2,12 @@
2
2
 
3
3
  <p align="center">
4
4
  <strong>Change agents. Keep the thread.</strong><br/>
5
- Portable intent, linked specifications, and verified progress across coding agents.
5
+ Portable projects, shared context, and verified progress across AI tools.
6
6
  </p>
7
7
 
8
8
  <p align="center">
9
9
  <a href="https://www.npmjs.com/package/specweave"><img src="https://img.shields.io/npm/v/specweave?color=brightgreen" alt="npm" /></a>
10
- <img src="https://img.shields.io/badge/skills-11-8B5CF6" alt="11 skills" />
10
+ <img src="https://img.shields.io/badge/skills-12-8B5CF6" alt="12 skills" />
11
11
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT" /></a>
12
12
  <a href="https://discord.gg/UYg4BGJ65V"><img src="https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white" alt="Discord" /></a>
13
13
  </p>
@@ -32,6 +32,22 @@ Start with a short intent, see what is in progress, and open the linked specific
32
32
 
33
33
  [Explore the product](https://spec-weave.com/product) · [Optional integrations](https://spec-weave.com/integrations)
34
34
 
35
+ ## Any project, any agent
36
+
37
+ Code, research, content and operations can share the same portable project hub. Git is optional.
38
+
39
+ ```bash
40
+ mkdir research-project && cd research-project
41
+ specweave project init --name "Research" --goal "Produce a sourced decision brief"
42
+ specweave project work-add --title "Compare options" --summary "Use primary sources"
43
+ specweave project brief --harness codex
44
+ specweave dashboard
45
+ ```
46
+
47
+ The hub keeps goals, shared context, artifact references and reusable routines in `.specweave/project/hub.json`; assignments reuse the intent board. Fresh worker briefs carry current context into Codex, Claude Code or another tool. The host launches agents and schedules routines when authorized. Saving a routine does not start a schedule.
48
+
49
+ Codex native skills install under `.agents/skills/sw-*`. Existing legacy skills remain in place, and changed native installations are backed up. See [portable projects](https://spec-weave.com/docs/guides/portable-projects) for migration, CLI examples and boundaries.
50
+
35
51
  ## The loop
36
52
 
37
53
  | # | Command | Claude Code skill | What it does |
@@ -45,12 +61,13 @@ Start with a short intent, see what is in progress, and open the linked specific
45
61
 
46
62
  Everything lives in `.specweave/increments/NNNN-slug/`: `spec.md`, `tasks.md` (+ the rendered `SW:BOARD`), `ledger.jsonl`, `handoff.md`, `reports/`.
47
63
 
48
- ## The eleven skills
64
+ ## The twelve skills
49
65
 
50
- The CLI is the product and it runs in any AI tool or in CI. These eleven focused skills expose the workflow to compatible coding tools. Install domain expertise separately when it helps.
66
+ The CLI is the product and it runs in any AI tool or in CI. These twelve focused skills expose the workflow to compatible coding tools. Install domain expertise separately when it helps.
51
67
 
52
68
  | Skill | Use it for |
53
69
  |-------|------------|
70
+ | `sw:project` | Shared project context, artifacts, routines and worker briefs. |
54
71
  | `sw:brainstorm` | Framed alternatives, ending in a pick. |
55
72
  | `sw:increment` | Plan the work: `spec.md` with ACs, plus `tasks.md`. |
56
73
  | `sw:do` | Claim a task, implement it, close it with evidence. |
@@ -141,7 +158,7 @@ Cursor tells AI "use Tailwind." SpecWeave tells AI "build a checkout flow agains
141
158
 
142
159
  **LSP Code Intelligence** — 198x faster than grep, 0 false positives. Semantic references, definitions, and types.
143
160
 
144
- **11 skills, not 51** — see [The eleven skills](#the-eleven-skills) above. Plus six standalone skills for non-Claude tools.
161
+ **12 focused skills** — see [The twelve skills](#the-twelve-skills) above. Plus six standalone skills for non-Claude tools.
145
162
 
146
163
  **External Sync** — `specweave sync push|pull|status|setup`. GitHub is first-class; Jira and Azure DevOps are opt-in.
147
164
 
@@ -0,0 +1,43 @@
1
+ import { fileURLToPath } from 'url';
2
+ import { dirname } from 'path';
3
+
4
+ // ESM equivalents for __dirname and __filename
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = dirname(__filename);
7
+
8
+ // ============================================================================
9
+ // DEVELOPMENT GUARD: Check if dist/ is built (prevents silent hangs)
10
+ // ============================================================================
11
+ // This only matters for developers running from source. NPM users always get
12
+ // a pre-built package via prepublishOnly hook.
13
+ // ============================================================================
14
+ import { existsSync } from 'fs';
15
+ import { join } from 'path';
16
+
17
+ const distCliPath = join(__dirname, '..', 'dist', 'src', 'cli', 'commands', 'init.js');
18
+ const isDevEnvironment = existsSync(join(__dirname, '..', 'tsconfig.json'));
19
+
20
+ if (isDevEnvironment && !existsSync(distCliPath)) {
21
+ const RED = '\x1b[31m';
22
+ const YELLOW = '\x1b[33m';
23
+ const CYAN = '\x1b[36m';
24
+ const BOLD = '\x1b[1m';
25
+ const RESET = '\x1b[0m';
26
+ const DIM = '\x1b[2m';
27
+
28
+ console.error('');
29
+ console.error(`${RED}${BOLD}╔══════════════════════════════════════════════════════════════════╗${RESET}`);
30
+ console.error(`${RED}${BOLD}║ SpecWeave is not built! Run: npm run rebuild ║${RESET}`);
31
+ console.error(`${RED}${BOLD}╚══════════════════════════════════════════════════════════════════╝${RESET}`);
32
+ console.error('');
33
+ console.error(`${YELLOW} Missing:${RESET} ${DIM}dist/src/cli/commands/init.js${RESET}`);
34
+ console.error('');
35
+ console.error(`${BOLD}Quick fix:${RESET}`);
36
+ console.error(` ${CYAN}npm run rebuild${RESET}`);
37
+ console.error('');
38
+ console.error(`${DIM} This happens when 'npm run clean' runs without 'npm run build'.${RESET}`);
39
+ console.error(`${DIM} NPM users never see this - packages are pre-built before publish.${RESET}`);
40
+ console.error('');
41
+ process.exit(1);
42
+ }
43
+
@@ -0,0 +1,136 @@
1
+ // ============================================================================
2
+ // CRITICAL: Node.js Version Check (MUST run before ANY ESM imports)
3
+ // ============================================================================
4
+ // This check runs synchronously before any imports that use modern syntax
5
+ // (like `import ... with { type: 'json' }`) which would crash on older Node.js
6
+ // ============================================================================
7
+
8
+ const MIN_NODE_VERSION = '20.12.0';
9
+ const CURRENT_NODE_VERSION = process.versions.node;
10
+
11
+ /**
12
+ * Compare semver versions
13
+ * @param {string} current - Current version (e.g., "18.17.0")
14
+ * @param {string} required - Required version (e.g., "20.12.0")
15
+ * @returns {boolean} true if current >= required
16
+ */
17
+ function isVersionSatisfied(current, required) {
18
+ const currentParts = current.split('.').map(Number);
19
+ const requiredParts = required.split('.').map(Number);
20
+
21
+ for (let i = 0; i < 3; i++) {
22
+ const curr = currentParts[i] || 0;
23
+ const req = requiredParts[i] || 0;
24
+ if (curr > req) return true;
25
+ if (curr < req) return false;
26
+ }
27
+ return true; // Equal versions
28
+ }
29
+
30
+ /**
31
+ * Get platform-specific Node.js upgrade instructions
32
+ */
33
+ function getUpgradeInstructions() {
34
+ const platform = process.platform;
35
+ const isNvm = process.env.NVM_DIR || process.env.NVM_BIN;
36
+ const isFnm = process.env.FNM_DIR || process.env.FNM_MULTISHELL_PATH;
37
+ const isVolta = process.env.VOLTA_HOME;
38
+ const isAsdf = process.env.ASDF_DIR;
39
+
40
+ let instructions = [];
41
+
42
+ // Version manager detection (cross-platform)
43
+ if (isNvm) {
44
+ instructions.push(' Using nvm (detected):');
45
+ instructions.push(' nvm install 22');
46
+ instructions.push(' nvm use 22');
47
+ instructions.push(' nvm alias default 22');
48
+ } else if (isFnm) {
49
+ instructions.push(' Using fnm (detected):');
50
+ instructions.push(' fnm install 22');
51
+ instructions.push(' fnm use 22');
52
+ instructions.push(' fnm default 22');
53
+ } else if (isVolta) {
54
+ instructions.push(' Using Volta (detected):');
55
+ instructions.push(' volta install node@22');
56
+ } else if (isAsdf) {
57
+ instructions.push(' Using asdf (detected):');
58
+ instructions.push(' asdf install nodejs 22.0.0');
59
+ instructions.push(' asdf global nodejs 22.0.0');
60
+ } else {
61
+ // Platform-specific fallback
62
+ switch (platform) {
63
+ case 'darwin':
64
+ instructions.push(' macOS options:');
65
+ instructions.push(' # Using Homebrew:');
66
+ instructions.push(' brew install node@22');
67
+ instructions.push('');
68
+ instructions.push(' # Using nvm (recommended):');
69
+ instructions.push(' curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash');
70
+ instructions.push(' nvm install 22 && nvm use 22');
71
+ break;
72
+ case 'linux':
73
+ instructions.push(' Linux options:');
74
+ instructions.push(' # Using nvm (recommended):');
75
+ instructions.push(' curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash');
76
+ instructions.push(' nvm install 22 && nvm use 22');
77
+ instructions.push('');
78
+ instructions.push(' # Using NodeSource (Debian/Ubuntu):');
79
+ instructions.push(' curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -');
80
+ instructions.push(' sudo apt-get install -y nodejs');
81
+ break;
82
+ case 'win32':
83
+ instructions.push(' Windows options:');
84
+ instructions.push(' # Using nvm-windows:');
85
+ instructions.push(' nvm install 22');
86
+ instructions.push(' nvm use 22');
87
+ instructions.push('');
88
+ instructions.push(' # Direct download:');
89
+ instructions.push(' https://nodejs.org/en/download/');
90
+ break;
91
+ default:
92
+ instructions.push(' Download Node.js 22+ from:');
93
+ instructions.push(' https://nodejs.org/en/download/');
94
+ }
95
+ }
96
+
97
+ return instructions.join('\n');
98
+ }
99
+
100
+ // Perform the version check
101
+ if (!isVersionSatisfied(CURRENT_NODE_VERSION, MIN_NODE_VERSION)) {
102
+ // Use basic console methods (no chalk yet - it may fail to import)
103
+ const RED = '\x1b[31m';
104
+ const YELLOW = '\x1b[33m';
105
+ const CYAN = '\x1b[36m';
106
+ const BOLD = '\x1b[1m';
107
+ const RESET = '\x1b[0m';
108
+ const DIM = '\x1b[2m';
109
+ const UNDERLINE = '\x1b[4m';
110
+
111
+ console.error('');
112
+ console.error(`${RED}${BOLD}╔══════════════════════════════════════════════════════════════════╗${RESET}`);
113
+ console.error(`${RED}${BOLD}║ SpecWeave requires Node.js ${MIN_NODE_VERSION} or higher ║${RESET}`);
114
+ console.error(`${RED}${BOLD}╚══════════════════════════════════════════════════════════════════╝${RESET}`);
115
+ console.error('');
116
+ console.error(`${YELLOW} Your version:${RESET} ${RED}${CURRENT_NODE_VERSION}${RESET}`);
117
+ console.error(`${YELLOW} Required:${RESET} ${CYAN}≥${MIN_NODE_VERSION}${RESET} (Node.js 22 LTS recommended)`);
118
+ console.error('');
119
+ console.error(`${DIM} Why? SpecWeave uses modern JavaScript features (ES2022+) including${RESET}`);
120
+ console.error(`${DIM} import assertions which require Node.js 20.12.0+${RESET}`);
121
+ console.error('');
122
+ console.error(`${BOLD}Quick upgrade:${RESET}`);
123
+ console.error(getUpgradeInstructions());
124
+ console.error('');
125
+ console.error(`${BOLD}Full guide:${RESET}`);
126
+ console.error(` ${CYAN}${UNDERLINE}https://spec-weave.com/docs/guides/troubleshooting/common-errors#node-version-error${RESET}`);
127
+ console.error('');
128
+ console.error(`${DIM}After upgrading, verify with: node --version${RESET}`);
129
+ console.error('');
130
+ process.exit(1);
131
+ }
132
+
133
+ // ============================================================================
134
+ // Node.js version is OK - proceed with normal imports
135
+ // ============================================================================
136
+
package/bin/help.js ADDED
@@ -0,0 +1,68 @@
1
+ export function registerHelp(program) {
2
+ // Help text
3
+ program.on('--help', () => {
4
+ console.log('');
5
+ console.log('Examples:');
6
+ console.log(' $ specweave init my-saas # Create new project (auto-detect tool)');
7
+ console.log(' $ specweave init my-saas --adapter cursor # Create project for Cursor');
8
+ console.log(' $ specweave init my-saas --language ru # Create project with Russian language');
9
+ console.log(' $ specweave install pm --local # Install PM agent locally');
10
+ console.log(' $ specweave install --global # Install all (interactive)');
11
+ console.log(' $ specweave list # List all available components');
12
+ console.log(' $ specweave list --installed # Show installed components');
13
+ console.log(' $ specweave status # Show all increments status');
14
+ console.log(' $ specweave status --verbose # Show detailed increment info');
15
+ console.log(' $ specweave status-line # Display current increment progress');
16
+ console.log(' $ specweave status-line --json # Output progress as JSON');
17
+ console.log(' $ specweave pause 0007 --reason "blocked" # Pause increment 0007');
18
+ console.log(' $ specweave resume 0007 # Resume increment 0007');
19
+ console.log(' $ specweave abandon 0007 --reason "obsolete" # Abandon increment 0007');
20
+ console.log(' $ specweave qa 0008 # Quick quality check');
21
+ console.log(' $ specweave qa 0008 --pre # Pre-implementation check');
22
+ console.log(' $ specweave qa 0008 --gate --export # Quality gate + export to tasks');
23
+ console.log(' $ specweave sync status # Token/account, provider health, sync gaps');
24
+ console.log(' $ specweave jobs # Show active background jobs');
25
+ console.log(' $ specweave jobs --follow <jobId> # Follow job progress live');
26
+ console.log(' $ specweave jobs --logs <jobId> # View worker logs');
27
+ console.log(' $ specweave jobs --resume <jobId> # Resume paused job');
28
+ console.log(' $ specweave living-docs # Launch Living Docs (interactive)');
29
+ console.log(' $ specweave living-docs --depth deep-native # AI-powered analysis (FREE w/ MAX)');
30
+ console.log(' $ specweave living-docs --full-scan # Full deep scan (all phases)');
31
+ console.log(' $ specweave living-docs --resume <jobId> # Resume orphaned job');
32
+ console.log(' $ specweave sync push 0008 # Push increment progress to GitHub/Jira/ADO');
33
+ console.log(' $ specweave sync pull --since 3 # Show external changes from the last 3 days');
34
+ console.log(' $ specweave cache # Show cache status');
35
+ console.log(' $ specweave cache --rebuild # Rebuild dashboard cache');
36
+ console.log(' $ specweave cache --debug # Show cache debug info');
37
+ console.log(' $ specweave sync setup --validate # Validate tracker configuration + credentials');
38
+ console.log(' $ specweave docs # Preview internal docs (port 3015)');
39
+ console.log(' $ specweave docs public # Preview public docs (port 3016)');
40
+ console.log(' $ specweave docs build # Build internal site');
41
+ console.log(' $ specweave docs build --scope public # Build public site');
42
+ console.log(' $ specweave docs validate # Check for docs errors');
43
+ console.log(' $ specweave docs status # Show docs status');
44
+ console.log(' $ specweave docs kill # Stop all docs servers');
45
+ console.log(' $ specweave doctor --fix-status # Fix metadata/spec status desyncs');
46
+ console.log(' $ specweave refresh-plugins # Refresh core SpecWeave plugin');
47
+ console.log(' $ specweave refresh-plugins --all # Refresh every installed plugin');
48
+ console.log(' $ specweave refresh-plugins --force # Force reinstall (skip hash check)');
49
+ console.log(' $ specweave update # Update CLI + instructions + config');
50
+ console.log(' $ specweave update --plugins # Also refresh marketplace plugins');
51
+ console.log(' $ specweave update --no-self # Skip CLI update, only project files');
52
+ console.log(' $ specweave update --check # Dry run - preview changes');
53
+ console.log('');
54
+ console.log('Plugin Management (use Claude CLI commands):');
55
+ console.log(' $ claude plugin install sw@specweave # Install core SpecWeave');
56
+ console.log(' $ claude plugin list # Show installed plugins');
57
+ console.log(' $ vskill install anton-abyzov/vskill --plugin mobile # Install domain plugin');
58
+ console.log('');
59
+ console.log('Supported AI Tools:');
60
+ console.log(' - Claude Code (full automation) - Native skills, agents, hooks');
61
+ console.log(' - Cursor (semi-automation) - .cursorrules, @ shortcuts');
62
+ console.log(' - GitHub Copilot (basic) - Workspace instructions');
63
+ console.log(' - Generic (manual) - Works with ANY AI (ChatGPT, Gemini, etc.)');
64
+ console.log('');
65
+ console.log('For more information, visit: https://spec-weave.com');
66
+ });
67
+
68
+ }
package/bin/project.js ADDED
@@ -0,0 +1,28 @@
1
+ export function registerProjectCommand(program) {
2
+ program.command('project <action>')
3
+ .description('Portable project hub: init, show, set, brief, work-add, work-update, work-record, artifact-add, artifact-remove, routine-add, routine-remove')
4
+ .option('--root <path>', 'Explicit project folder; otherwise resolve the enclosing umbrella')
5
+ .option('--name <name>', 'Project name')
6
+ .option('--goal <goal>', 'Project goal')
7
+ .option('--context-file <file>', 'Read shared context from a UTF-8 file')
8
+ .option('--revision <number>', 'Expected current hub or work revision', Number)
9
+ .option('--title <title>', 'Work, artifact or routine title')
10
+ .option('--summary <summary>', 'Work description')
11
+ .option('--state <state>', 'backlog, active, blocked, review or done (planning state)')
12
+ .option('--increment <id>', 'Link an existing increment')
13
+ .option('--intent <id>', 'Existing work item ID')
14
+ .option('--location <path-or-url>', 'Project-relative file or HTTPS URL; artifact ID for artifact-remove')
15
+ .option('--cadence <cadence>', 'Human-readable requested cadence; does not schedule execution')
16
+ .option('--instructions-file <file>', 'Read reusable routine instructions from a UTF-8 file')
17
+ .option('--routine <id>', 'Routine ID for brief or routine-remove')
18
+ .option('--harness <name>', 'Target codex, claude or generic; actual harness for work-record')
19
+ .option('--model <model>', 'Actual model identity, if known')
20
+ .option('--session <id>', 'Native session ID, if known')
21
+ .option('--effort <effort>', 'Actual reasoning effort, if known')
22
+ .option('--note <note>', 'Execution evidence or handoff note')
23
+ .option('--json', 'JSON output, including errors')
24
+ .action(async (action, options) => {
25
+ const { projectCommand } = await import('../dist/src/cli/commands/project.js');
26
+ await projectCommand(action, options);
27
+ });
28
+ }