specweave 2.2.3 → 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.
- package/.claude-plugin/marketplace.json +2 -2
- package/README.md +22 -5
- package/bin/check-build.js +43 -0
- package/bin/check-node.js +136 -0
- package/bin/help.js +68 -0
- package/bin/project.js +28 -0
- package/bin/specweave.js +26 -305
- package/bin/startup-check.js +44 -0
- package/dist/dashboard/assets/index-DS3yH-sX.css +1 -0
- package/dist/dashboard/assets/index-DjfDqgzX.js +13 -0
- package/dist/dashboard/assets/web-0-CXU3YvQl.woff2 +0 -0
- package/dist/dashboard/assets/web-1-CnEgTPdE.woff2 +0 -0
- package/dist/dashboard/assets/web-10-ppjp2k5c.woff2 +0 -0
- package/dist/dashboard/assets/web-11-T5L87s1n.woff2 +0 -0
- package/dist/dashboard/assets/web-2-Cuw1d432.woff2 +0 -0
- package/dist/dashboard/assets/web-3-tuJ4lY6O.woff2 +0 -0
- package/dist/dashboard/assets/web-4-KUPCjGsn.woff2 +0 -0
- package/dist/dashboard/assets/web-5-BD64o3ke.woff2 +0 -0
- package/dist/dashboard/assets/web-6-CuVUMDWO.woff2 +0 -0
- package/dist/dashboard/assets/web-7-B2O-dwcv.woff2 +0 -0
- package/dist/dashboard/assets/web-8-b0I-AwbV.woff2 +0 -0
- package/dist/dashboard/assets/web-9-CjmLAiqB.woff2 +0 -0
- package/dist/dashboard/index.html +3 -3
- package/dist/src/adapters/codex/README.md +5 -101
- package/dist/src/adapters/codex/adapter.d.ts +5 -6
- package/dist/src/adapters/codex/adapter.d.ts.map +1 -1
- package/dist/src/adapters/codex/adapter.js +40 -226
- package/dist/src/adapters/codex/adapter.js.map +1 -1
- package/dist/src/adapters/registry.yaml +1 -1
- package/dist/src/cli/commands/dashboard.js +6 -6
- package/dist/src/cli/commands/dashboard.js.map +1 -1
- package/dist/src/cli/commands/gc.d.ts.map +1 -1
- package/dist/src/cli/commands/gc.js +18 -2
- package/dist/src/cli/commands/gc.js.map +1 -1
- package/dist/src/cli/commands/living-docs.d.ts.map +1 -1
- package/dist/src/cli/commands/living-docs.js +12 -6
- package/dist/src/cli/commands/living-docs.js.map +1 -1
- package/dist/src/cli/commands/lsp.d.ts.map +1 -1
- package/dist/src/cli/commands/lsp.js +38 -9
- package/dist/src/cli/commands/lsp.js.map +1 -1
- package/dist/src/cli/commands/project.d.ts +25 -0
- package/dist/src/cli/commands/project.d.ts.map +1 -0
- package/dist/src/cli/commands/project.js +123 -0
- package/dist/src/cli/commands/project.js.map +1 -0
- package/dist/src/cli/commands/refresh-plugins.d.ts +1 -0
- package/dist/src/cli/commands/refresh-plugins.d.ts.map +1 -1
- package/dist/src/cli/commands/refresh-plugins.js +15 -3
- package/dist/src/cli/commands/refresh-plugins.js.map +1 -1
- package/dist/src/cli/commands/save.d.ts +10 -2
- package/dist/src/cli/commands/save.d.ts.map +1 -1
- package/dist/src/cli/commands/save.js +35 -4
- package/dist/src/cli/commands/save.js.map +1 -1
- package/dist/src/cli/commands/update.d.ts.map +1 -1
- package/dist/src/cli/commands/update.js +7 -4
- package/dist/src/cli/commands/update.js.map +1 -1
- package/dist/src/cli/helpers/init/greenfield-detection.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/greenfield-detection.js +12 -13
- package/dist/src/cli/helpers/init/greenfield-detection.js.map +1 -1
- package/dist/src/config/types.d.ts +4 -4
- package/dist/src/core/doctor/checkers/installation-health-checker.d.ts.map +1 -1
- package/dist/src/core/doctor/checkers/installation-health-checker.js +10 -0
- package/dist/src/core/doctor/checkers/installation-health-checker.js.map +1 -1
- package/dist/src/core/living-docs/discovery.d.ts +6 -0
- package/dist/src/core/living-docs/discovery.d.ts.map +1 -1
- package/dist/src/core/living-docs/discovery.js +18 -6
- package/dist/src/core/living-docs/discovery.js.map +1 -1
- package/dist/src/core/lsp/lsp-client.d.ts.map +1 -1
- package/dist/src/core/lsp/lsp-client.js +13 -8
- package/dist/src/core/lsp/lsp-client.js.map +1 -1
- package/dist/src/core/project-hub/brief.d.ts +11 -0
- package/dist/src/core/project-hub/brief.d.ts.map +1 -0
- package/dist/src/core/project-hub/brief.js +39 -0
- package/dist/src/core/project-hub/brief.js.map +1 -0
- package/dist/src/core/project-hub/store.d.ts +25 -0
- package/dist/src/core/project-hub/store.d.ts.map +1 -0
- package/dist/src/core/project-hub/store.js +174 -0
- package/dist/src/core/project-hub/store.js.map +1 -0
- package/dist/src/core/project-hub/types.d.ts +51 -0
- package/dist/src/core/project-hub/types.d.ts.map +1 -0
- package/dist/src/core/project-hub/types.js +16 -0
- package/dist/src/core/project-hub/types.js.map +1 -0
- package/dist/src/dashboard/server/dashboard-server.d.ts.map +1 -1
- package/dist/src/dashboard/server/dashboard-server.js +2 -0
- package/dist/src/dashboard/server/dashboard-server.js.map +1 -1
- package/dist/src/dashboard/server/data/intent-store.d.ts +5 -0
- package/dist/src/dashboard/server/data/intent-store.d.ts.map +1 -1
- package/dist/src/dashboard/server/data/intent-store.js +31 -0
- package/dist/src/dashboard/server/data/intent-store.js.map +1 -1
- package/dist/src/dashboard/server/routes/project-hub-routes.d.ts +5 -0
- package/dist/src/dashboard/server/routes/project-hub-routes.d.ts.map +1 -0
- package/dist/src/dashboard/server/routes/project-hub-routes.js +75 -0
- package/dist/src/dashboard/server/routes/project-hub-routes.js.map +1 -0
- package/dist/src/init/compliance/types.d.ts +1 -1
- package/dist/src/init/research/types.d.ts +1 -1
- package/dist/src/utils/cleanup-stale-plugins.d.ts +9 -0
- package/dist/src/utils/cleanup-stale-plugins.d.ts.map +1 -1
- package/dist/src/utils/cleanup-stale-plugins.js +40 -23
- package/dist/src/utils/cleanup-stale-plugins.js.map +1 -1
- package/dist/src/utils/find-project-root.d.ts +23 -0
- package/dist/src/utils/find-project-root.d.ts.map +1 -1
- package/dist/src/utils/find-project-root.js +26 -4
- package/dist/src/utils/find-project-root.js.map +1 -1
- package/dist/src/utils/native-skill-installer.d.ts +10 -0
- package/dist/src/utils/native-skill-installer.d.ts.map +1 -0
- package/dist/src/utils/native-skill-installer.js +79 -0
- package/dist/src/utils/native-skill-installer.js.map +1 -0
- package/dist/src/utils/plugin-copier.d.ts +9 -0
- package/dist/src/utils/plugin-copier.d.ts.map +1 -1
- package/dist/src/utils/plugin-copier.js +20 -1
- package/dist/src/utils/plugin-copier.js.map +1 -1
- package/package.json +4 -3
- package/plugins/specweave/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave/marketplace.json +6 -0
- package/plugins/specweave/skills/project/SKILL.md +45 -0
- package/src/styles/fonts/ibmplexsans-OFL.txt +93 -0
- package/src/styles/fonts/newsreader-OFL.txt +93 -0
- package/src/templates/AGENTS.md.template +4 -0
- package/dist/dashboard/assets/index-BeKUULf0.css +0 -1
- package/dist/dashboard/assets/index-Bf5TF0_l.js +0 -13
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "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.
|
|
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
|
|
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-
|
|
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
|
|
64
|
+
## The twelve skills
|
|
49
65
|
|
|
50
|
-
The CLI is the product and it runs in any AI tool or in CI. These
|
|
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
|
-
**
|
|
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
|
+
}
|