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.
Files changed (73) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/README.md +2 -2
  3. package/bin/help.js +18 -36
  4. package/bin/specweave.js +20 -19
  5. package/dist/dashboard/assets/index-Xf8t0BTq.js +16 -0
  6. package/dist/dashboard/index.html +1 -1
  7. package/dist/src/adapters/generic/adapter.d.ts.map +1 -1
  8. package/dist/src/adapters/generic/adapter.js +4 -44
  9. package/dist/src/adapters/generic/adapter.js.map +1 -1
  10. package/dist/src/cli/commands/ac.d.ts +9 -0
  11. package/dist/src/cli/commands/ac.d.ts.map +1 -1
  12. package/dist/src/cli/commands/ac.js +20 -0
  13. package/dist/src/cli/commands/ac.js.map +1 -1
  14. package/dist/src/cli/commands/complete.d.ts +6 -0
  15. package/dist/src/cli/commands/complete.d.ts.map +1 -1
  16. package/dist/src/cli/commands/complete.js +18 -0
  17. package/dist/src/cli/commands/complete.js.map +1 -1
  18. package/dist/src/cli/commands/task.d.ts +19 -1
  19. package/dist/src/cli/commands/task.d.ts.map +1 -1
  20. package/dist/src/cli/commands/task.js +62 -5
  21. package/dist/src/cli/commands/task.js.map +1 -1
  22. package/dist/src/cli/helpers/init/gitignore-generator.d.ts.map +1 -1
  23. package/dist/src/cli/helpers/init/gitignore-generator.js +32 -7
  24. package/dist/src/cli/helpers/init/gitignore-generator.js.map +1 -1
  25. package/dist/src/cli/helpers/init/next-steps.d.ts +3 -2
  26. package/dist/src/cli/helpers/init/next-steps.d.ts.map +1 -1
  27. package/dist/src/cli/helpers/init/next-steps.js +18 -31
  28. package/dist/src/cli/helpers/init/next-steps.js.map +1 -1
  29. package/dist/src/cli/helpers/init/summary-banner.js +1 -1
  30. package/dist/src/cli/helpers/init/summary-banner.js.map +1 -1
  31. package/dist/src/core/increment/template-creator.js +1 -1
  32. package/dist/src/core/increment/template-creator.js.map +1 -1
  33. package/dist/src/core/session/handoff-all.d.ts +2 -0
  34. package/dist/src/core/session/handoff-all.d.ts.map +1 -1
  35. package/dist/src/core/session/handoff-all.js +12 -6
  36. package/dist/src/core/session/handoff-all.js.map +1 -1
  37. package/dist/src/core/session/handoff-doc-format.d.ts +2 -0
  38. package/dist/src/core/session/handoff-doc-format.d.ts.map +1 -1
  39. package/dist/src/core/session/handoff-doc-format.js +3 -1
  40. package/dist/src/core/session/handoff-doc-format.js.map +1 -1
  41. package/dist/src/core/session/handoff-report.d.ts.map +1 -1
  42. package/dist/src/core/session/handoff-report.js +8 -4
  43. package/dist/src/core/session/handoff-report.js.map +1 -1
  44. package/dist/src/core/session/pickup.d.ts.map +1 -1
  45. package/dist/src/core/session/pickup.js +5 -2
  46. package/dist/src/core/session/pickup.js.map +1 -1
  47. package/dist/src/core/session/work-handoff.d.ts.map +1 -1
  48. package/dist/src/core/session/work-handoff.js +2 -0
  49. package/dist/src/core/session/work-handoff.js.map +1 -1
  50. package/dist/src/core/tasks/accepted-skip.d.ts +15 -3
  51. package/dist/src/core/tasks/accepted-skip.d.ts.map +1 -1
  52. package/dist/src/core/tasks/accepted-skip.js +15 -6
  53. package/dist/src/core/tasks/accepted-skip.js.map +1 -1
  54. package/dist/src/core/tasks/closure-gate.d.ts.map +1 -1
  55. package/dist/src/core/tasks/closure-gate.js +3 -0
  56. package/dist/src/core/tasks/closure-gate.js.map +1 -1
  57. package/dist/src/core/tasks/task-board.d.ts +5 -2
  58. package/dist/src/core/tasks/task-board.d.ts.map +1 -1
  59. package/dist/src/core/tasks/task-board.js +6 -2
  60. package/dist/src/core/tasks/task-board.js.map +1 -1
  61. package/dist/src/core/tasks/verify-runner.d.ts +3 -0
  62. package/dist/src/core/tasks/verify-runner.d.ts.map +1 -1
  63. package/dist/src/core/tasks/verify-runner.js +6 -1
  64. package/dist/src/core/tasks/verify-runner.js.map +1 -1
  65. package/package.json +1 -1
  66. package/plugins/specweave/.claude-plugin/plugin.json +1 -1
  67. package/plugins/specweave/skills/do/SKILL.md +6 -4
  68. package/plugins/specweave/skills/done/SKILL.md +5 -1
  69. package/src/templates/.gitignore.template +1 -4
  70. package/src/templates/AGENTS.md.template +3 -5
  71. package/src/templates/CLAUDE.md.template +0 -1
  72. package/src/templates/README.md.template +1 -1
  73. package/dist/dashboard/assets/index-DjwOIk2X.js +0 -16
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "3.1.15",
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",
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 built for teams of 2–10 people and free: 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)
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
- **Built for teams of 2–10 people** — Compliance audit trails. Brownfield analysis. Multi-repo workspaces.
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('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 status # Show all increments status');
10
- console.log(' $ specweave status --verbose # Show detailed increment info');
11
- console.log(' $ specweave pause 0007 --reason "blocked" # Pause increment 0007');
12
- console.log(' $ specweave resume 0007 # Resume increment 0007');
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('Plugin Management (use Claude CLI commands):');
31
- console.log(' $ claude plugin install sw@specweave # Install core SpecWeave');
32
- console.log(' $ claude plugin list # Show installed plugins');
33
- console.log(' $ vskill install anton-abyzov/vskill --plugin mobile # Install domain plugin');
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('Supported AI Tools:');
36
- console.log(' - Claude Code (full automation) - Native skills, agents, hooks');
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-Driven Development framework with AI-powered autonomous agents')
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 template files (metadata.json, spec.md, tasks.md). Short form: specweave create-increment "Add login form"')
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')