specweave 3.1.15 → 3.1.17
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 +2 -2
- package/bin/help.js +18 -36
- package/bin/specweave.js +20 -19
- package/dist/dashboard/assets/index-Xf8t0BTq.js +16 -0
- package/dist/dashboard/index.html +1 -1
- package/dist/src/adapters/generic/adapter.d.ts.map +1 -1
- package/dist/src/adapters/generic/adapter.js +4 -44
- package/dist/src/adapters/generic/adapter.js.map +1 -1
- package/dist/src/cli/commands/ac.d.ts +9 -0
- package/dist/src/cli/commands/ac.d.ts.map +1 -1
- package/dist/src/cli/commands/ac.js +20 -0
- package/dist/src/cli/commands/ac.js.map +1 -1
- package/dist/src/cli/commands/complete.d.ts +6 -0
- package/dist/src/cli/commands/complete.d.ts.map +1 -1
- package/dist/src/cli/commands/complete.js +18 -0
- package/dist/src/cli/commands/complete.js.map +1 -1
- package/dist/src/cli/commands/task.d.ts +19 -1
- package/dist/src/cli/commands/task.d.ts.map +1 -1
- package/dist/src/cli/commands/task.js +62 -5
- package/dist/src/cli/commands/task.js.map +1 -1
- package/dist/src/cli/helpers/init/gitignore-generator.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/gitignore-generator.js +32 -7
- package/dist/src/cli/helpers/init/gitignore-generator.js.map +1 -1
- package/dist/src/cli/helpers/init/next-steps.d.ts +3 -2
- package/dist/src/cli/helpers/init/next-steps.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/next-steps.js +18 -31
- package/dist/src/cli/helpers/init/next-steps.js.map +1 -1
- package/dist/src/cli/helpers/init/summary-banner.js +1 -1
- package/dist/src/cli/helpers/init/summary-banner.js.map +1 -1
- package/dist/src/core/increment/template-creator.js +1 -1
- package/dist/src/core/increment/template-creator.js.map +1 -1
- package/dist/src/core/session/handoff-all.d.ts +2 -0
- package/dist/src/core/session/handoff-all.d.ts.map +1 -1
- package/dist/src/core/session/handoff-all.js +12 -6
- package/dist/src/core/session/handoff-all.js.map +1 -1
- package/dist/src/core/session/handoff-doc-format.d.ts +2 -0
- package/dist/src/core/session/handoff-doc-format.d.ts.map +1 -1
- package/dist/src/core/session/handoff-doc-format.js +3 -1
- package/dist/src/core/session/handoff-doc-format.js.map +1 -1
- package/dist/src/core/session/handoff-report.d.ts.map +1 -1
- package/dist/src/core/session/handoff-report.js +8 -4
- package/dist/src/core/session/handoff-report.js.map +1 -1
- package/dist/src/core/session/pickup.d.ts.map +1 -1
- package/dist/src/core/session/pickup.js +5 -2
- package/dist/src/core/session/pickup.js.map +1 -1
- package/dist/src/core/session/work-handoff.d.ts.map +1 -1
- package/dist/src/core/session/work-handoff.js +2 -0
- package/dist/src/core/session/work-handoff.js.map +1 -1
- package/dist/src/core/tasks/accepted-skip.d.ts +15 -3
- package/dist/src/core/tasks/accepted-skip.d.ts.map +1 -1
- package/dist/src/core/tasks/accepted-skip.js +15 -6
- package/dist/src/core/tasks/accepted-skip.js.map +1 -1
- package/dist/src/core/tasks/closure-gate.d.ts.map +1 -1
- package/dist/src/core/tasks/closure-gate.js +3 -0
- package/dist/src/core/tasks/closure-gate.js.map +1 -1
- package/dist/src/core/tasks/task-board.d.ts +5 -2
- package/dist/src/core/tasks/task-board.d.ts.map +1 -1
- package/dist/src/core/tasks/task-board.js +6 -2
- package/dist/src/core/tasks/task-board.js.map +1 -1
- package/dist/src/core/tasks/verify-runner.d.ts +3 -0
- package/dist/src/core/tasks/verify-runner.d.ts.map +1 -1
- package/dist/src/core/tasks/verify-runner.js +6 -1
- package/dist/src/core/tasks/verify-runner.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave/skills/do/SKILL.md +6 -4
- package/plugins/specweave/skills/done/SKILL.md +5 -1
- package/src/templates/.gitignore.template +1 -4
- package/src/templates/AGENTS.md.template +3 -5
- package/src/templates/CLAUDE.md.template +0 -1
- package/src/templates/README.md.template +1 -1
- package/dist/dashboard/assets/index-DjwOIk2X.js +0 -16
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.17",
|
|
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": "3.1.
|
|
15
|
+
"version": "3.1.17",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "Anton Abyzov",
|
|
18
18
|
"email": "anton.abyzov@gmail.com"
|
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ specweave init .
|
|
|
28
28
|
|
|
29
29
|
## SpecWithCode: the free workspace on top
|
|
30
30
|
|
|
31
|
-
[SpecWithCode](https://spec-weave.com/code/) is a desktop app built on SpecWeave. Describe the work once and a coordinator splits it across Claude Code, Codex, Grok or Cursor workers on your own machines, with the spec, evidence and handoff in git. It is
|
|
31
|
+
[SpecWithCode](https://spec-weave.com/code/) is a desktop app built on SpecWeave. Describe the work once and a coordinator splits it across Claude Code, Codex, Grok or Cursor workers on your own machines, with the spec, evidence and handoff in git. It is free for every developer and team: no markup, no token resale, no seat fee to run agents on your own machines. Early access, for Apple silicon Macs, Windows 10 and 11, and Linux. [Download SpecWithCode](https://spec-weave.com/code/download/) · [Pricing](https://spec-weave.com/pricing)
|
|
32
32
|
|
|
33
33
|
## Keep your repositories where they are
|
|
34
34
|
|
|
@@ -183,7 +183,7 @@ Cursor tells AI "use Tailwind." SpecWeave tells AI "build a checkout flow agains
|
|
|
183
183
|
|
|
184
184
|
**7 core skills, 4 optional, one source** — the same skills for Claude Code, Codex and Grok; see [Seven core skills, four optional](#seven-core-skills-four-optional).
|
|
185
185
|
|
|
186
|
-
**
|
|
186
|
+
**For developers and teams** — Compliance audit trails. Brownfield analysis. Multi-repo workspaces.
|
|
187
187
|
|
|
188
188
|
**Dashboard** — `specweave dashboard` shows intents, increments and evidence from local files, with no model calls.
|
|
189
189
|
|
package/bin/help.js
CHANGED
|
@@ -1,44 +1,26 @@
|
|
|
1
1
|
export function registerHelp(program) {
|
|
2
|
-
// Help text
|
|
2
|
+
// Help text: the loop first, then a few everyday commands. Plumbing and legacy
|
|
3
|
+
// commands are registered with { hidden: true } and still run.
|
|
3
4
|
program.on('--help', () => {
|
|
4
5
|
console.log('');
|
|
5
|
-
console.log('
|
|
6
|
-
console.log(' $ specweave init
|
|
7
|
-
console.log(' $ specweave
|
|
8
|
-
console.log(' $ specweave
|
|
9
|
-
console.log(' $ specweave
|
|
10
|
-
console.log(' $ specweave
|
|
11
|
-
console.log(' $ specweave
|
|
12
|
-
console.log(' $ specweave
|
|
13
|
-
console.log(' $ specweave abandon 0007 --reason "obsolete" # Abandon increment 0007');
|
|
14
|
-
console.log(' $ specweave qa 0008 # Quick quality check');
|
|
15
|
-
console.log(' $ specweave qa 0008 --pre # Pre-implementation check');
|
|
16
|
-
console.log(' $ specweave qa 0008 --gate --export # Quality gate + export to tasks');
|
|
17
|
-
console.log(' $ specweave sync status # Token/account, provider health, sync gaps');
|
|
18
|
-
console.log(' $ specweave sync push 0008 # Push increment progress to GitHub/Jira/ADO');
|
|
19
|
-
console.log(' $ specweave sync pull --since 3 # Show external changes from the last 3 days');
|
|
20
|
-
console.log(' $ specweave sync setup --validate # Validate tracker configuration + credentials');
|
|
21
|
-
console.log(' $ specweave doctor --fix-status # Fix metadata/spec status desyncs');
|
|
22
|
-
console.log(' $ specweave refresh-plugins # Refresh core SpecWeave plugin');
|
|
23
|
-
console.log(' $ specweave refresh-plugins --all # Refresh every installed plugin');
|
|
24
|
-
console.log(' $ specweave refresh-plugins --force # Force reinstall (skip hash check)');
|
|
25
|
-
console.log(' $ specweave update # Update CLI + instructions + config');
|
|
26
|
-
console.log(' $ specweave update --plugins # Also refresh marketplace plugins');
|
|
27
|
-
console.log(' $ specweave update --no-self # Skip CLI update, only project files');
|
|
28
|
-
console.log(' $ specweave update --check # Dry run - preview changes');
|
|
6
|
+
console.log('The loop:');
|
|
7
|
+
console.log(' $ specweave init # Set up SpecWeave in this folder');
|
|
8
|
+
console.log(' $ specweave create-increment "Add login form" # Plan: fill spec.md (Problem, ACs, Tasks)');
|
|
9
|
+
console.log(' $ specweave task done T-01 --run "npm test" # After the commit: run the task\'s Test, record it');
|
|
10
|
+
console.log(' $ specweave verify # Run the project\'s build/test/lint commands');
|
|
11
|
+
console.log(' $ specweave complete 0001 # Close the increment');
|
|
12
|
+
console.log(' $ specweave handoff --reason "out of tokens" # Stop here; another tool or account continues');
|
|
13
|
+
console.log(' $ specweave pickup # Continue handed-off work');
|
|
29
14
|
console.log('');
|
|
30
|
-
console.log('
|
|
31
|
-
console.log(' $
|
|
32
|
-
console.log(' $
|
|
33
|
-
console.log(' $
|
|
15
|
+
console.log('Also:');
|
|
16
|
+
console.log(' $ specweave status # Increments and their progress');
|
|
17
|
+
console.log(' $ specweave task next # The next open task with its acceptance criteria');
|
|
18
|
+
console.log(' $ specweave sync setup # Connect GitHub Issues, Jira or Azure DevOps');
|
|
19
|
+
console.log(' $ specweave doctor # Check project health');
|
|
20
|
+
console.log(' $ specweave update # Update the CLI, instructions and skills');
|
|
34
21
|
console.log('');
|
|
35
|
-
console.log('
|
|
36
|
-
console.log('
|
|
37
|
-
console.log(' - Cursor (semi-automation) - .cursorrules, @ shortcuts');
|
|
38
|
-
console.log(' - GitHub Copilot (basic) - Workspace instructions');
|
|
39
|
-
console.log(' - Generic (manual) - Works with ANY AI (ChatGPT, Gemini, etc.)');
|
|
40
|
-
console.log('');
|
|
41
|
-
console.log('For more information, visit: https://spec-weave.com');
|
|
22
|
+
console.log('Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI and any tool that reads AGENTS.md.');
|
|
23
|
+
console.log('More: https://spec-weave.com');
|
|
42
24
|
});
|
|
43
25
|
|
|
44
26
|
}
|
package/bin/specweave.js
CHANGED
|
@@ -23,7 +23,7 @@ const program = new Command();
|
|
|
23
23
|
|
|
24
24
|
program
|
|
25
25
|
.name('specweave')
|
|
26
|
-
.description('Spec-
|
|
26
|
+
.description('Spec-driven increments for AI coding agents: plan in spec.md, do each task, verify, close, hand off')
|
|
27
27
|
.version(packageJson.version)
|
|
28
28
|
.option('--workspace <root>', 'Select the planning workspace explicitly');
|
|
29
29
|
|
|
@@ -170,6 +170,7 @@ program
|
|
|
170
170
|
.option('--accepted-by <who>', 'With accept-skip: the person who accepted the skip (required)')
|
|
171
171
|
.option('--authorization <text>', 'With accept-skip: their words, quoted, or a message/thread reference (required)')
|
|
172
172
|
.option('--accepted-at <date>', 'With accept-skip: when they accepted it, ISO-8601 (default: now)')
|
|
173
|
+
.option('--uncovered', 'With accept-skip: confirm skipping on an AC no task cites (it closes the whole AC)')
|
|
173
174
|
.option('--no-commit', 'Skip the git.autoCommitIncrement commit of the increment files')
|
|
174
175
|
.option('--json', 'Machine-readable output')
|
|
175
176
|
.action(async (action, acOrIncrement, increment, options) => {
|
|
@@ -255,7 +256,7 @@ program
|
|
|
255
256
|
// Create Increment command - Create template files for a new increment
|
|
256
257
|
program
|
|
257
258
|
.command('create-increment [title]')
|
|
258
|
-
.description('Create increment
|
|
259
|
+
.description('Create an increment: metadata.json and spec.md (Problem, Scope, ACs, Approach, Tasks). Short form: specweave create-increment "Add login form"')
|
|
259
260
|
.option('--id <increment-id>', 'Increment ID (e.g., "0042-my-feature")')
|
|
260
261
|
.option('--auto-id', 'Auto-generate next available increment ID (default when --id is absent)')
|
|
261
262
|
.option('--name <name>', 'Increment name suffix (defaults to a slug of the title)')
|
|
@@ -381,7 +382,7 @@ program
|
|
|
381
382
|
});
|
|
382
383
|
|
|
383
384
|
program
|
|
384
|
-
.command('statusline')
|
|
385
|
+
.command('statusline', { hidden: true })
|
|
385
386
|
.description('Claude Code status line that records usage for auto-handoff')
|
|
386
387
|
.option('--wrap <command>', 'Print this status line command\'s output instead of the built-in line')
|
|
387
388
|
.action(async (options) => {
|
|
@@ -390,7 +391,7 @@ program
|
|
|
390
391
|
});
|
|
391
392
|
|
|
392
393
|
program
|
|
393
|
-
.command('usage-guard')
|
|
394
|
+
.command('usage-guard', { hidden: true })
|
|
394
395
|
.description('Stop hook: save a local checkpoint; at the auto-handoff threshold, suggest or ask for a handoff once')
|
|
395
396
|
.option('--limit-hit', 'StopFailure hook: the turn hit the rate limit, so hand off now (or only save, in checkpoint-only mode)')
|
|
396
397
|
.action(async (options) => {
|
|
@@ -400,7 +401,7 @@ program
|
|
|
400
401
|
|
|
401
402
|
// Auto-compact window for Claude Code (400K keeps 1M-context turns small)
|
|
402
403
|
program
|
|
403
|
-
.command('autocompact [action]')
|
|
404
|
+
.command('autocompact [action]', { hidden: true })
|
|
404
405
|
.description('on | off | status: where Claude Code summarizes a long session (default 400k)')
|
|
405
406
|
.option('--at <tokens>', 'Window for `on`, 100k to 1M (default 400k)')
|
|
406
407
|
.option('--project', 'Write .claude/settings.json in this project instead of ~/.claude/settings.json')
|
|
@@ -456,7 +457,7 @@ program
|
|
|
456
457
|
|
|
457
458
|
// Next ID command - Return the next available increment number
|
|
458
459
|
program
|
|
459
|
-
.command('next-id')
|
|
460
|
+
.command('next-id', { hidden: true })
|
|
460
461
|
.description('Return the next available increment number. Prefer: create-increment --auto-id')
|
|
461
462
|
.option('--project <project-id>', 'Project ID for per-project collision prevention')
|
|
462
463
|
.option('--project-root <path>', 'Override project root directory')
|
|
@@ -511,7 +512,7 @@ program
|
|
|
511
512
|
|
|
512
513
|
// Save command - Smart save with auto-sync
|
|
513
514
|
program
|
|
514
|
-
.command('save [message]')
|
|
515
|
+
.command('save [message]', { hidden: true })
|
|
515
516
|
.description('Smart save - auto-generate commit message, sync with remote, commit and push')
|
|
516
517
|
.option('-i, --interactive', 'Interactive mode - ask before each step')
|
|
517
518
|
.option('--dry-run', 'Preview without executing')
|
|
@@ -558,7 +559,7 @@ program
|
|
|
558
559
|
// Auto mode commands - Autonomous execution with stop hook feedback loop (v3.0)
|
|
559
560
|
// No session files. No complex state. Just: "Are there active increments?"
|
|
560
561
|
program
|
|
561
|
-
.command('auto [incrementIds...]')
|
|
562
|
+
.command('auto [incrementIds...]', { hidden: true })
|
|
562
563
|
.description('Start autonomous execution (stop hook feedback loop)')
|
|
563
564
|
.option('--dry-run', 'Preview without activating')
|
|
564
565
|
.option('--all-backlog', 'Activate all backlog items')
|
|
@@ -587,7 +588,7 @@ program
|
|
|
587
588
|
});
|
|
588
589
|
|
|
589
590
|
program
|
|
590
|
-
.command('auto-status')
|
|
591
|
+
.command('auto-status', { hidden: true })
|
|
591
592
|
.description('Check auto session status and progress')
|
|
592
593
|
.option('--verbose', 'Show detailed information')
|
|
593
594
|
.option('--json', 'Output as JSON')
|
|
@@ -601,7 +602,7 @@ program
|
|
|
601
602
|
});
|
|
602
603
|
|
|
603
604
|
program
|
|
604
|
-
.command('cancel-auto')
|
|
605
|
+
.command('cancel-auto', { hidden: true })
|
|
605
606
|
.description('Cancel running auto session')
|
|
606
607
|
.option('--force', 'Force cancel without confirmation')
|
|
607
608
|
.action(async (options) => {
|
|
@@ -614,7 +615,7 @@ program
|
|
|
614
615
|
|
|
615
616
|
// Team command - Launch Claude Code with native agent teams
|
|
616
617
|
program
|
|
617
|
-
.command('team [description]')
|
|
618
|
+
.command('team [description]', { hidden: true })
|
|
618
619
|
.description('Launch Claude Code with agent teams (tmux/iTerm2 split panes)')
|
|
619
620
|
.option('--mode <mode>', 'Display mode: tmux (default) or in-process', 'tmux')
|
|
620
621
|
.option('--no-increment', 'Launch without requiring a SpecWeave increment (free-form agent swarm)')
|
|
@@ -631,7 +632,7 @@ program
|
|
|
631
632
|
|
|
632
633
|
// Update instructions command - Smart merge CLAUDE.md/AGENTS.md
|
|
633
634
|
program
|
|
634
|
-
.command('update-instructions')
|
|
635
|
+
.command('update-instructions', { hidden: true })
|
|
635
636
|
.description('Update CLAUDE.md and AGENTS.md with smart merge (preserves user content)')
|
|
636
637
|
.option('--dry-run', 'Preview changes without writing')
|
|
637
638
|
.option('-v, --verbose', 'Show detailed merge information')
|
|
@@ -660,7 +661,7 @@ program
|
|
|
660
661
|
|
|
661
662
|
// Check discipline command - Validate increment discipline
|
|
662
663
|
program
|
|
663
|
-
.command('check-discipline')
|
|
664
|
+
.command('check-discipline', { hidden: true })
|
|
664
665
|
.description('Report increment status counts, advisory WIP note and metadata consistency')
|
|
665
666
|
.option('-v, --verbose', 'Show detailed increment information')
|
|
666
667
|
.option('--json', 'Output results as JSON')
|
|
@@ -676,7 +677,7 @@ program
|
|
|
676
677
|
|
|
677
678
|
// GC command - purge junk from .specweave/state (dry-run by default)
|
|
678
679
|
program
|
|
679
|
-
.command('gc')
|
|
680
|
+
.command('gc', { hidden: true })
|
|
680
681
|
.description('Purge stale .specweave/state files (dry-run; --yes to delete), report .worktrees size and nested .specweave dirs, expire session checkpoints older than 7 days')
|
|
681
682
|
.option('-y, --yes', 'Actually delete (default is dry-run)')
|
|
682
683
|
.option('--json', 'Output as JSON')
|
|
@@ -688,7 +689,7 @@ program
|
|
|
688
689
|
|
|
689
690
|
// QA command - Quality assessment
|
|
690
691
|
program
|
|
691
|
-
.command('qa <increment-id>')
|
|
692
|
+
.command('qa <increment-id>', { hidden: true })
|
|
692
693
|
.description('Run quality assessment on an increment')
|
|
693
694
|
.option('--quick', 'Quick mode (default)')
|
|
694
695
|
.option('--pre', 'Pre-implementation check')
|
|
@@ -707,7 +708,7 @@ program
|
|
|
707
708
|
|
|
708
709
|
// Link PR - Link pull requests to external tickets (JIRA remote links, ADO hyperlinks)
|
|
709
710
|
program
|
|
710
|
-
.command('link-pr')
|
|
711
|
+
.command('link-pr', { hidden: true })
|
|
711
712
|
.description('Link a pull request to external tickets (JIRA, ADO)')
|
|
712
713
|
.requiredOption('--increment <id>', 'Increment ID')
|
|
713
714
|
.requiredOption('--pr-url <url>', 'Pull request URL')
|
|
@@ -720,7 +721,7 @@ program
|
|
|
720
721
|
|
|
721
722
|
// Branch-name command - Compute branch name with optional external ticket key
|
|
722
723
|
program
|
|
723
|
-
.command('branch-name <increment-id>')
|
|
724
|
+
.command('branch-name <increment-id>', { hidden: true })
|
|
724
725
|
.description('Output the computed branch name for an increment (with optional JIRA/ADO ticket key)')
|
|
725
726
|
.action(async (incrementId) => {
|
|
726
727
|
const { branchNameCommand } = await import('../dist/src/cli/commands/branch-name.js');
|
|
@@ -736,7 +737,7 @@ async function runLspCommand(args) {
|
|
|
736
737
|
|
|
737
738
|
// LSP command - Code intelligence operations
|
|
738
739
|
const lspCmd = program
|
|
739
|
-
.command('lsp')
|
|
740
|
+
.command('lsp', { hidden: true })
|
|
740
741
|
.description('LSP code intelligence (refs, def, hover, symbols, search)');
|
|
741
742
|
|
|
742
743
|
lspCmd
|
|
@@ -864,7 +865,7 @@ syncCmd
|
|
|
864
865
|
|
|
865
866
|
// Refresh plugins command - Copy first-party plugins to ~/.claude/commands/
|
|
866
867
|
program
|
|
867
|
-
.command('refresh-plugins')
|
|
868
|
+
.command('refresh-plugins', { hidden: true })
|
|
868
869
|
.description('Refresh SpecWeave plugins (core only by default, use --all for everything)')
|
|
869
870
|
.option('--all', 'Install ALL plugins (not just core sw)')
|
|
870
871
|
.option('--plugin <name>', 'Install a specific plugin by name')
|