specweave 0.6.0 → 0.6.3

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 (95) hide show
  1. package/.claude-plugin/README.md +16 -29
  2. package/.claude-plugin/marketplace.json +5 -5
  3. package/CLAUDE.md +103 -35
  4. package/README.md +167 -800
  5. package/dist/adapters/claude/adapter.d.ts +1 -1
  6. package/dist/adapters/claude/adapter.js +2 -2
  7. package/dist/adapters/claude/adapter.js.map +1 -1
  8. package/dist/cli/commands/init.d.ts.map +1 -1
  9. package/dist/cli/commands/init.js +197 -83
  10. package/dist/cli/commands/init.js.map +1 -1
  11. package/dist/cli/commands/plugin.d.ts +16 -5
  12. package/dist/cli/commands/plugin.d.ts.map +1 -1
  13. package/dist/cli/commands/plugin.js +20 -5
  14. package/dist/cli/commands/plugin.js.map +1 -1
  15. package/dist/locales/en/cli.json +19 -3
  16. package/dist/utils/agents-md-compiler.js +1 -1
  17. package/dist/utils/execFileNoThrow.d.ts +97 -0
  18. package/dist/utils/execFileNoThrow.d.ts.map +1 -0
  19. package/dist/utils/execFileNoThrow.js +130 -0
  20. package/dist/utils/execFileNoThrow.js.map +1 -0
  21. package/package.json +3 -3
  22. package/plugins/.specweave/logs/hooks-debug.log +24 -0
  23. package/plugins/.specweave/logs/last-hook-fire +1 -0
  24. package/plugins/.specweave/logs/last-todowrite-time +1 -0
  25. package/plugins/.specweave/logs/tasks.log +6 -0
  26. package/plugins/specweave/.claude-plugin/plugin.json +22 -0
  27. package/plugins/{specweave-core/commands/specweave.costs.md → specweave/commands/costs.md} +1 -1
  28. package/plugins/{specweave-core/commands/specweave.do.md → specweave/commands/do.md} +1 -1
  29. package/plugins/{specweave-core/commands/specweave.done.md → specweave/commands/done.md} +1 -1
  30. package/plugins/{specweave-core/commands/specweave.inc.md → specweave/commands/inc.md} +1 -1
  31. package/plugins/{specweave-core/commands/specweave.increment.md → specweave/commands/increment.md} +1 -1
  32. package/plugins/{specweave-core/commands/specweave.next.md → specweave/commands/next.md} +1 -1
  33. package/plugins/{specweave-core/commands/specweave.progress.md → specweave/commands/progress.md} +1 -1
  34. package/plugins/{specweave-core → specweave}/commands/specweave.md +13 -13
  35. package/plugins/{specweave-core/commands/specweave.sync-docs.md → specweave/commands/sync-docs.md} +1 -1
  36. package/plugins/{specweave-core/commands/specweave.translate.md → specweave/commands/translate.md} +1 -1
  37. package/plugins/{specweave-core/commands/specweave.validate.md → specweave/commands/validate.md} +1 -1
  38. package/plugins/specweave/hooks/hooks.json +15 -0
  39. package/plugins/{specweave-core → specweave}/skills/plugin-detector/SKILL.md +1 -1
  40. package/plugins/{specweave-core → specweave}/skills/tdd-workflow/SKILL.md +1 -1
  41. package/plugins/specweave-github/.claude-plugin/plugin.json +13 -2
  42. package/plugins/specweave-ml/.claude-plugin/plugin.json +5 -6
  43. package/plugins/specweave-ui/.claude-plugin/plugin.json +6 -86
  44. package/src/adapters/claude/adapter.ts +2 -2
  45. package/plugins/specweave-core/.claude-plugin/plugin.json +0 -25
  46. package/plugins/specweave-core/hooks/hooks.json +0 -13
  47. /package/plugins/{specweave-core → specweave}/agents/architect/AGENT.md +0 -0
  48. /package/plugins/{specweave-core → specweave}/agents/code-reviewer.md +0 -0
  49. /package/plugins/{specweave-core → specweave}/agents/docs-writer/AGENT.md +0 -0
  50. /package/plugins/{specweave-core → specweave}/agents/performance/AGENT.md +0 -0
  51. /package/plugins/{specweave-core → specweave}/agents/pm/AGENT.md +0 -0
  52. /package/plugins/{specweave-core → specweave}/agents/qa-lead/AGENT.md +0 -0
  53. /package/plugins/{specweave-core → specweave}/agents/security/AGENT.md +0 -0
  54. /package/plugins/{specweave-core → specweave}/agents/tdd-orchestrator/AGENT.md +0 -0
  55. /package/plugins/{specweave-core → specweave}/agents/tech-lead/AGENT.md +0 -0
  56. /package/plugins/{specweave-core → specweave}/agents/translator/AGENT.md +0 -0
  57. /package/plugins/{specweave-core → specweave}/commands/README.md +0 -0
  58. /package/plugins/{specweave-core/commands/specweave.list-increments.md → specweave/commands/list-increments.md} +0 -0
  59. /package/plugins/{specweave-core/commands/specweave.tdd-cycle.md → specweave/commands/tdd-cycle.md} +0 -0
  60. /package/plugins/{specweave-core/commands/specweave.tdd-green.md → specweave/commands/tdd-green.md} +0 -0
  61. /package/plugins/{specweave-core/commands/specweave.tdd-red.md → specweave/commands/tdd-red.md} +0 -0
  62. /package/plugins/{specweave-core/commands/specweave.tdd-refactor.md → specweave/commands/tdd-refactor.md} +0 -0
  63. /package/plugins/{specweave-core → specweave}/hooks/README.md +0 -0
  64. /package/plugins/{specweave-core → specweave}/hooks/docs-changed.sh +0 -0
  65. /package/plugins/{specweave-core → specweave}/hooks/human-input-required.sh +0 -0
  66. /package/plugins/{specweave-core → specweave}/hooks/post-increment-plugin-detect.sh +0 -0
  67. /package/plugins/{specweave-core → specweave}/hooks/post-task-completion.sh +0 -0
  68. /package/plugins/{specweave-core → specweave}/hooks/pre-implementation.sh +0 -0
  69. /package/plugins/{specweave-core → specweave}/hooks/pre-task-plugin-detect.sh +0 -0
  70. /package/plugins/{specweave-core → specweave}/skills/SKILLS-INDEX.md +0 -0
  71. /package/plugins/{specweave-core → specweave}/skills/brownfield-analyzer/SKILL.md +0 -0
  72. /package/plugins/{specweave-core → specweave}/skills/brownfield-onboarder/SKILL.md +0 -0
  73. /package/plugins/{specweave-core → specweave}/skills/context-loader/SKILL.md +0 -0
  74. /package/plugins/{specweave-core → specweave}/skills/context-optimizer/SKILL.md +0 -0
  75. /package/plugins/{specweave-core → specweave}/skills/docs-updater/README.md +0 -0
  76. /package/plugins/{specweave-core → specweave}/skills/docs-updater/SKILL.md +0 -0
  77. /package/plugins/{specweave-core → specweave}/skills/increment-planner/SKILL.md +0 -0
  78. /package/plugins/{specweave-core → specweave}/skills/increment-planner/scripts/feature-utils.js +0 -0
  79. /package/plugins/{specweave-core → specweave}/skills/increment-quality-judge/SKILL.md +0 -0
  80. /package/plugins/{specweave-core → specweave}/skills/project-kickstarter/SKILL.md +0 -0
  81. /package/plugins/{specweave-core → specweave}/skills/project-kickstarter/test-cases/test-1-high-confidence-full-product.yaml +0 -0
  82. /package/plugins/{specweave-core → specweave}/skills/project-kickstarter/test-cases/test-2-medium-confidence-partial.yaml +0 -0
  83. /package/plugins/{specweave-core → specweave}/skills/project-kickstarter/test-cases/test-3-low-confidence-technical-question.yaml +0 -0
  84. /package/plugins/{specweave-core → specweave}/skills/project-kickstarter/test-cases/test-4-opt-out-explicit.yaml +0 -0
  85. /package/plugins/{specweave-core → specweave}/skills/rfc-generator/SKILL.md +0 -0
  86. /package/plugins/{specweave-core → specweave}/skills/role-orchestrator/README.md +0 -0
  87. /package/plugins/{specweave-core → specweave}/skills/role-orchestrator/SKILL.md +0 -0
  88. /package/plugins/{specweave-core → specweave}/skills/specweave-detector/SKILL.md +0 -0
  89. /package/plugins/{specweave-core → specweave}/skills/specweave-framework/SKILL.md +0 -0
  90. /package/plugins/{specweave-core → specweave}/skills/specweave-framework/test-cases/test-1-increment-naming.yaml +0 -0
  91. /package/plugins/{specweave-core → specweave}/skills/specweave-framework/test-cases/test-2-source-of-truth.yaml +0 -0
  92. /package/plugins/{specweave-core → specweave}/skills/specweave-framework/test-cases/test-3-increment-discipline.yaml +0 -0
  93. /package/plugins/{specweave-core → specweave}/skills/specweave-framework/test-cases/test-4-file-placement.yaml +0 -0
  94. /package/plugins/{specweave-core → specweave}/skills/task-builder/README.md +0 -0
  95. /package/plugins/{specweave-core → specweave}/skills/translator/SKILL.md +0 -0
@@ -0,0 +1,130 @@
1
+ import { execFile, execFileSync } from 'child_process';
2
+ import { promisify } from 'util';
3
+ const execFileAsync = promisify(execFile);
4
+ /**
5
+ * Safely execute a command without throwing errors
6
+ *
7
+ * This utility uses child_process.execFile instead of exec/execSync:
8
+ * - ✅ Prevents command injection vulnerabilities (no shell interpolation)
9
+ * - ✅ Cross-platform compatible (Windows, Mac, Linux)
10
+ * - ✅ Proper error handling (returns result instead of throwing)
11
+ * - ✅ Structured output (stdout, stderr, exitCode)
12
+ *
13
+ * @param command - Command to execute (must be in PATH or absolute path)
14
+ * @param args - Array of arguments (safely escaped automatically)
15
+ * @param options - Additional execution options
16
+ * @returns Promise resolving to execution result
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * // ✅ Safe: Arguments automatically escaped
21
+ * const result = await execFileNoThrow('git', ['add', userProvidedFilename]);
22
+ * if (result.success) {
23
+ * console.log('Git add succeeded:', result.stdout);
24
+ * } else {
25
+ * console.error('Git add failed:', result.stderr);
26
+ * }
27
+ *
28
+ * // ✅ Check if command exists
29
+ * const which = process.platform === 'win32' ? 'where' : 'which';
30
+ * const checkResult = await execFileNoThrow(which, ['claude']);
31
+ * if (checkResult.success) {
32
+ * console.log('Claude CLI found at:', checkResult.stdout.trim());
33
+ * }
34
+ * ```
35
+ */
36
+ export async function execFileNoThrow(command, args = [], options = {}) {
37
+ try {
38
+ const { stdout, stderr } = await execFileAsync(command, args, {
39
+ ...options,
40
+ encoding: 'utf-8',
41
+ // Windows compatibility: execFile automatically finds .exe/.cmd/.bat
42
+ windowsHide: true, // Don't show console window on Windows
43
+ });
44
+ return {
45
+ stdout: stdout || '',
46
+ stderr: stderr || '',
47
+ exitCode: 0,
48
+ success: true,
49
+ };
50
+ }
51
+ catch (error) {
52
+ const execError = error;
53
+ return {
54
+ stdout: execError.stdout || '',
55
+ stderr: execError.stderr || '',
56
+ exitCode: typeof execError.code === 'number' ? execError.code : 1,
57
+ success: false,
58
+ error: execError,
59
+ };
60
+ }
61
+ }
62
+ /**
63
+ * Synchronous version of execFileNoThrow
64
+ *
65
+ * Use sparingly - prefer async version when possible.
66
+ * Useful for initialization code that needs to be synchronous.
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * const result = execFileNoThrowSync('claude', ['--version']);
71
+ * if (result.success) {
72
+ * console.log('Claude version:', result.stdout.trim());
73
+ * }
74
+ * ```
75
+ */
76
+ export function execFileNoThrowSync(command, args = [], options = {}) {
77
+ try {
78
+ const stdout = execFileSync(command, args, {
79
+ ...options,
80
+ encoding: 'utf-8',
81
+ windowsHide: true,
82
+ });
83
+ return {
84
+ stdout: stdout || '',
85
+ stderr: '',
86
+ exitCode: 0,
87
+ success: true,
88
+ };
89
+ }
90
+ catch (error) {
91
+ return {
92
+ stdout: error.stdout || '',
93
+ stderr: error.stderr || '',
94
+ exitCode: typeof error.status === 'number' ? error.status : 1,
95
+ success: false,
96
+ error: error,
97
+ };
98
+ }
99
+ }
100
+ /**
101
+ * Check if a command is available in PATH
102
+ *
103
+ * Cross-platform helper that uses 'which' (Unix) or 'where' (Windows)
104
+ *
105
+ * @param command - Command name to check (e.g., 'claude', 'git', 'node')
106
+ * @returns Promise resolving to true if command exists, false otherwise
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * if (await isCommandAvailable('claude')) {
111
+ * console.log('Claude CLI is installed');
112
+ * } else {
113
+ * console.log('Claude CLI not found - install from https://claude.com/code');
114
+ * }
115
+ * ```
116
+ */
117
+ export async function isCommandAvailable(command) {
118
+ const whichCommand = process.platform === 'win32' ? 'where' : 'which';
119
+ const result = await execFileNoThrow(whichCommand, [command]);
120
+ return result.success;
121
+ }
122
+ /**
123
+ * Synchronous version of isCommandAvailable
124
+ */
125
+ export function isCommandAvailableSync(command) {
126
+ const whichCommand = process.platform === 'win32' ? 'where' : 'which';
127
+ const result = execFileNoThrowSync(whichCommand, [command]);
128
+ return result.success;
129
+ }
130
+ //# sourceMappingURL=execFileNoThrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execFileNoThrow.js","sourceRoot":"","sources":["../../src/utils/execFileNoThrow.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "0.6.0",
3
+ "version": "0.6.3",
4
4
  "description": "Replace vibe coding with spec-driven development. LLM-native i18n in 9 languages. Smart workflow: /specweave inc auto-closes previous, /specweave build auto-resumes, /specweave progress shows status. PM-led planning, 10 agents, 35+ skills. spec-weave.com",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "scripts": {
11
11
  "build": "tsc && npm run copy:locales",
12
- "copy:locales": "mkdir -p dist/locales && cp -r src/locales/* dist/locales/",
12
+ "copy:locales": "node scripts/copy-locales.js",
13
13
  "dev": "tsc --watch",
14
14
  "prepare": "npm run build",
15
15
  "test": "jest",
@@ -59,7 +59,7 @@
59
59
  },
60
60
  "homepage": "https://spec-weave.com",
61
61
  "engines": {
62
- "node": ">=18.0.0"
62
+ "node": ">=20.0.0"
63
63
  },
64
64
  "files": [
65
65
  "dist",
@@ -0,0 +1,24 @@
1
+ [Mon Nov 3 09:34:04 EST 2025] 📋 TodoWrite hook fired
2
+ [Mon Nov 3 09:34:04 EST 2025] Input JSON:
3
+ {"session_id":"0838c8f3-363c-474c-b220-be7164977242","transcript_path":"/Users/antonabyzov/.claude/projects/-Users-antonabyzov-Projects-github-specweave/0838c8f3-363c-474c-b220-be7164977242.jsonl","cwd":"/Users/antonabyzov/Projects/github/specweave","permission_mode":"bypassPermissions","hook_event_name":"PostToolUse","tool_name":"TodoWrite","tool_input":{"todos":[{"content":"Analyze failing GitHub Actions workflows","status":"completed","activeForm":"Analyzing failing GitHub Actions workflows"},{"content":"Fix cross-platform copy:locales script for Windows support","status":"completed","activeForm":"Fixing cross-platform copy:locales script for Windows support"},{"content":"Update Node.js minimum version to 20.x for dependencies","status":"completed","activeForm":"Updating Node.js minimum version to 20.x for dependencies"},{"content":"Test the build locally to verify copy-locales script works","status":"completed","activeForm":"Testing the build locally to verify copy-locales script works"},{"content":"Check and fix Jest test configuration","status":"completed","activeForm":"Checking and fixing Jest test configuration"},{"content":"Fix E2E smoke test failures","status":"completed","activeForm":"Fixing E2E smoke test failures"},{"content":"Commit and push all fixes","status":"completed","activeForm":"Committing and pushing all fixes"}]},"tool_response":{"oldTodos":[{"content":"Analyze failing GitHub Actions workflows","status":"completed","activeForm":"Analyzing failing GitHub Actions workflows"},{"content":"Fix cross-platform copy:locales script for Windows support","status":"completed","activeForm":"Fixing cross-platform copy:locales script for Windows support"},{"content":"Update Node.js minimum version to 20.x for dependencies","status":"completed","activeForm":"Updating Node.js minimum version to 20.x for dependencies"},{"content":"Test the build locally to verify copy-locales script works","status":"completed","activeForm":"Testing the build locally to verify copy-locales script works"},{"content":"Check and fix Jest test configuration","status":"completed","activeForm":"Checking and fixing Jest test configuration"},{"content":"Fix E2E smoke test failures","status":"completed","activeForm":"Fixing E2E smoke test failures"},{"content":"Commit and push all fixes","status":"in_progress","activeForm":"Committing and pushing all fixes"}],"newTodos":[{"content":"Analyze failing GitHub Actions workflows","status":"completed","activeForm":"Analyzing failing GitHub Actions workflows"},{"content":"Fix cross-platform copy:locales script for Windows support","status":"completed","activeForm":"Fixing cross-platform copy:locales script for Windows support"},{"content":"Update Node.js minimum version to 20.x for dependencies","status":"completed","activeForm":"Updating Node.js minimum version to 20.x for dependencies"},{"content":"Test the build locally to verify copy-locales script works","status":"completed","activeForm":"Testing the build locally to verify copy-locales script works"},{"content":"Check and fix Jest test configuration","status":"completed","activeForm":"Checking and fixing Jest test configuration"},{"content":"Fix E2E smoke test failures","status":"completed","activeForm":"Fixing E2E smoke test failures"},{"content":"Commit and push all fixes","status":"completed","activeForm":"Committing and pushing all fixes"}]}}
4
+ [Mon Nov 3 09:34:04 EST 2025] 🆕 First TodoWrite in session
5
+ [Mon Nov 3 09:34:04 EST 2025] 📊 Tasks: 7/7 completed
6
+ [Mon Nov 3 09:34:04 EST 2025] ⚡ All tasks complete, but rapid activity (0s < 15s) - Claude likely creating more work (no sound)
7
+ [Mon Nov 3 09:34:04 EST 2025] ℹ️ No current increment or tasks.md found, skipping tasks.md update
8
+ ---
9
+ [Mon Nov 3 13:38:00 EST 2025] 📋 TodoWrite hook fired
10
+ [Mon Nov 3 13:38:00 EST 2025] Input JSON:
11
+ {"session_id":"2bd78607-8a30-4dc4-a33c-a79f383b2cf5","transcript_path":"/Users/antonabyzov/.claude/projects/-Users-antonabyzov-Projects-github-specweave/2bd78607-8a30-4dc4-a33c-a79f383b2cf5.jsonl","cwd":"/Users/antonabyzov/Projects/github/specweave","permission_mode":"bypassPermissions","hook_event_name":"PostToolUse","tool_name":"TodoWrite","tool_input":{"todos":[{"content":"Rename plugin directory from specweave-core to specweave","status":"pending","activeForm":"Renaming plugin directory from specweave-core to specweave"},{"content":"Update plugin.json with new name","status":"pending","activeForm":"Updating plugin.json with new name"},{"content":"Rename all command files (remove specweave. prefix)","status":"pending","activeForm":"Renaming all command files (remove specweave. prefix)"},{"content":"Update marketplace.json registry","status":"pending","activeForm":"Updating marketplace.json registry"},{"content":"Update CLAUDE.md with new command format","status":"pending","activeForm":"Updating CLAUDE.md with new command format"},{"content":"Update README.md with new command format","status":"pending","activeForm":"Updating README.md with new command format"},{"content":"Update all Docusaurus site documentation","status":"pending","activeForm":"Updating all Docusaurus site documentation"},{"content":"Update source code references to plugin name","status":"pending","activeForm":"Updating source code references to plugin name"},{"content":"Update test files with new plugin name","status":"pending","activeForm":"Updating test files with new plugin name"},{"content":"Update increment specs/plans with new command format","status":"pending","activeForm":"Updating increment specs/plans with new command format"}]},"tool_response":{"oldTodos":[],"newTodos":[{"content":"Rename plugin directory from specweave-core to specweave","status":"pending","activeForm":"Renaming plugin directory from specweave-core to specweave"},{"content":"Update plugin.json with new name","status":"pending","activeForm":"Updating plugin.json with new name"},{"content":"Rename all command files (remove specweave. prefix)","status":"pending","activeForm":"Renaming all command files (remove specweave. prefix)"},{"content":"Update marketplace.json registry","status":"pending","activeForm":"Updating marketplace.json registry"},{"content":"Update CLAUDE.md with new command format","status":"pending","activeForm":"Updating CLAUDE.md with new command format"},{"content":"Update README.md with new command format","status":"pending","activeForm":"Updating README.md with new command format"},{"content":"Update all Docusaurus site documentation","status":"pending","activeForm":"Updating all Docusaurus site documentation"},{"content":"Update source code references to plugin name","status":"pending","activeForm":"Updating source code references to plugin name"},{"content":"Update test files with new plugin name","status":"pending","activeForm":"Updating test files with new plugin name"},{"content":"Update increment specs/plans with new command format","status":"pending","activeForm":"Updating increment specs/plans with new command format"}]}}
12
+ [Mon Nov 3 13:38:00 EST 2025] ⏱️ Inactivity gap: 14636s (threshold: 15s)
13
+ [Mon Nov 3 13:38:00 EST 2025] 📊 Tasks: 0/10 completed
14
+ [Mon Nov 3 13:38:00 EST 2025] 🔄 Tasks remaining in current list (no sound)
15
+ [Mon Nov 3 13:38:00 EST 2025] ℹ️ No current increment or tasks.md found, skipping tasks.md update
16
+ ---
17
+ [Mon Nov 3 13:38:09 EST 2025] 📋 TodoWrite hook fired
18
+ [Mon Nov 3 13:38:09 EST 2025] Input JSON:
19
+ {"session_id":"2bd78607-8a30-4dc4-a33c-a79f383b2cf5","transcript_path":"/Users/antonabyzov/.claude/projects/-Users-antonabyzov-Projects-github-specweave/2bd78607-8a30-4dc4-a33c-a79f383b2cf5.jsonl","cwd":"/Users/antonabyzov/Projects/github/specweave","permission_mode":"bypassPermissions","hook_event_name":"PostToolUse","tool_name":"TodoWrite","tool_input":{"todos":[{"content":"Rename plugin directory from specweave-core to specweave","status":"in_progress","activeForm":"Renaming plugin directory from specweave-core to specweave"},{"content":"Update plugin.json with new name","status":"pending","activeForm":"Updating plugin.json with new name"},{"content":"Rename all command files (remove specweave. prefix)","status":"pending","activeForm":"Renaming all command files (remove specweave. prefix)"},{"content":"Update marketplace.json registry","status":"pending","activeForm":"Updating marketplace.json registry"},{"content":"Update CLAUDE.md with new command format","status":"pending","activeForm":"Updating CLAUDE.md with new command format"},{"content":"Update README.md with new command format","status":"pending","activeForm":"Updating README.md with new command format"},{"content":"Update all Docusaurus site documentation","status":"pending","activeForm":"Updating all Docusaurus site documentation"},{"content":"Update source code references to plugin name","status":"pending","activeForm":"Updating source code references to plugin name"},{"content":"Update test files with new plugin name","status":"pending","activeForm":"Updating test files with new plugin name"},{"content":"Update increment specs/plans with new command format","status":"pending","activeForm":"Updating increment specs/plans with new command format"}]},"tool_response":{"oldTodos":[{"content":"Rename plugin directory from specweave-core to specweave","status":"pending","activeForm":"Renaming plugin directory from specweave-core to specweave"},{"content":"Update plugin.json with new name","status":"pending","activeForm":"Updating plugin.json with new name"},{"content":"Rename all command files (remove specweave. prefix)","status":"pending","activeForm":"Renaming all command files (remove specweave. prefix)"},{"content":"Update marketplace.json registry","status":"pending","activeForm":"Updating marketplace.json registry"},{"content":"Update CLAUDE.md with new command format","status":"pending","activeForm":"Updating CLAUDE.md with new command format"},{"content":"Update README.md with new command format","status":"pending","activeForm":"Updating README.md with new command format"},{"content":"Update all Docusaurus site documentation","status":"pending","activeForm":"Updating all Docusaurus site documentation"},{"content":"Update source code references to plugin name","status":"pending","activeForm":"Updating source code references to plugin name"},{"content":"Update test files with new plugin name","status":"pending","activeForm":"Updating test files with new plugin name"},{"content":"Update increment specs/plans with new command format","status":"pending","activeForm":"Updating increment specs/plans with new command format"}],"newTodos":[{"content":"Rename plugin directory from specweave-core to specweave","status":"in_progress","activeForm":"Renaming plugin directory from specweave-core to specweave"},{"content":"Update plugin.json with new name","status":"pending","activeForm":"Updating plugin.json with new name"},{"content":"Rename all command files (remove specweave. prefix)","status":"pending","activeForm":"Renaming all command files (remove specweave. prefix)"},{"content":"Update marketplace.json registry","status":"pending","activeForm":"Updating marketplace.json registry"},{"content":"Update CLAUDE.md with new command format","status":"pending","activeForm":"Updating CLAUDE.md with new command format"},{"content":"Update README.md with new command format","status":"pending","activeForm":"Updating README.md with new command format"},{"content":"Update all Docusaurus site documentation","status":"pending","activeForm":"Updating all Docusaurus site documentation"},{"content":"Update source code references to plugin name","status":"pending","activeForm":"Updating source code references to plugin name"},{"content":"Update test files with new plugin name","status":"pending","activeForm":"Updating test files with new plugin name"},{"content":"Update increment specs/plans with new command format","status":"pending","activeForm":"Updating increment specs/plans with new command format"}]}}
20
+ [Mon Nov 3 13:38:09 EST 2025] ⏱️ Inactivity gap: 9s (threshold: 15s)
21
+ [Mon Nov 3 13:38:09 EST 2025] 📊 Tasks: 0/10 completed
22
+ [Mon Nov 3 13:38:09 EST 2025] 🔄 Tasks remaining in current list (no sound)
23
+ [Mon Nov 3 13:38:09 EST 2025] ℹ️ No current increment or tasks.md found, skipping tasks.md update
24
+ ---
@@ -0,0 +1 @@
1
+ 1762195089
@@ -0,0 +1 @@
1
+ 1762195089
@@ -0,0 +1,6 @@
1
+ [Mon Nov 3 09:34:04 EST 2025] Status: All_completed=true, Session_ending=false, Inactivity=0s
2
+ [Mon Nov 3 09:34:04 EST 2025] Reason: All tasks complete, but rapid activity (0s < 15s) - Claude likely creating more work
3
+ [Mon Nov 3 13:38:00 EST 2025] Status: All_completed=false, Session_ending=false, Inactivity=14636s
4
+ [Mon Nov 3 13:38:00 EST 2025] Reason: Tasks remaining in current list
5
+ [Mon Nov 3 13:38:09 EST 2025] Status: All_completed=false, Session_ending=false, Inactivity=9s
6
+ [Mon Nov 3 13:38:09 EST 2025] Reason: Tasks remaining in current list
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "specweave",
3
+ "description": "SpecWeave framework. Provides increment planning (PM, Architect, Tech Lead agents), RFC generation, TDD workflow, living docs sync, and brownfield support. Essential for all SpecWeave projects.",
4
+ "version": "0.6.1",
5
+ "author": {
6
+ "name": "SpecWeave Team",
7
+ "url": "https://spec-weave.com"
8
+ },
9
+ "homepage": "https://spec-weave.com",
10
+ "repository": "https://github.com/anton-abyzov/specweave",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "specweave",
14
+ "core",
15
+ "increment-planning",
16
+ "rfc",
17
+ "tdd",
18
+ "pm",
19
+ "architect",
20
+ "living-docs"
21
+ ]
22
+ }
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave.costs
2
+ name: costs
3
3
  description: Display AI cost dashboard for current or specified increment with real-time savings tracking
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave.do
2
+ name: do
3
3
  description: Execute increment implementation following spec and plan - hooks run after EVERY task
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave.done
2
+ name: done
3
3
  description: Close increment with PM validation - checks tasks, tests, and docs before closing
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave.inc
2
+ name: inc
3
3
  description: Shorthand for /increment - Plan new Product Increment (PM-led process)
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave.increment
2
+ name: increment
3
3
  description: Plan new Product Increment - PM-led process (market research, spec, plan, auto-generate tasks). Auto-closes previous increment if PM gates pass.
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave.next
2
+ name: next
3
3
  description: Smart increment transition - auto-close current if ready, intelligently suggest next work (backlog or new feature)
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave.progress
2
+ name: progress
3
3
  description: Show current increment progress, task completion %, PM gate status, and next action
4
4
  ---
5
5
 
@@ -73,11 +73,11 @@ subcommands:
73
73
  sync-jira: .claude/commands/specweave:sync-jira.md
74
74
 
75
75
  # GitHub Plugin Commands
76
- github.create-issue: .claude/commands/specweave.github.github-create-issue.md
77
- github.sync: .claude/commands/specweave.github.github-sync.md
78
- github.sync-tasks: .claude/commands/specweave.github.github-sync-tasks.md
79
- github.close-issue: .claude/commands/specweave.github.github-close-issue.md
80
- github.status: .claude/commands/specweave.github.github-status.md
76
+ github.create-issue: .claude/commands/specweave-github:github-create-issue.md
77
+ github.sync: .claude/commands/specweave-github:github-sync.md
78
+ github.sync-tasks: .claude/commands/specweave-github:github-sync-tasks.md
79
+ github.close-issue: .claude/commands/specweave-github:github-close-issue.md
80
+ github.status: .claude/commands/specweave-github:github-status.md
81
81
  ```
82
82
 
83
83
  ---
@@ -209,14 +209,14 @@ function handleSpecweaveCommand(rawInput) {
209
209
 
210
210
  // Routing table
211
211
  const routes = {
212
- 'inc': 'specweave.inc.md',
213
- 'do': 'specweave.do.md',
214
- 'next': 'specweave.next.md',
215
- 'done': 'specweave.done.md',
216
- 'progress': 'specweave.progress.md',
217
- 'validate': 'specweave.validate.md',
218
- 'sync-github': 'specweave.sync-github.md',
219
- 'sync-docs': 'specweave.sync-docs.md'
212
+ 'inc': 'inc.md',
213
+ 'do': 'do.md',
214
+ 'next': 'next.md',
215
+ 'done': 'done.md',
216
+ 'progress': 'progress.md',
217
+ 'validate': 'validate.md',
218
+ 'sync-github': 'sync-github.md',
219
+ 'sync-docs': 'sync-docs.md'
220
220
  };
221
221
 
222
222
  // Validate subcommand
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave.sync-docs
2
+ name: sync-docs
3
3
  description: Bidirectional documentation sync - review strategic docs before implementation OR update living docs from completed increments with conflict resolution
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave.translate
2
+ name: translate
3
3
  description: Translate SpecWeave project content to target language using LLM-native zero-cost translation
4
4
  ---
5
5
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: specweave.validate
2
+ name: validate
3
3
  description: Validate SpecWeave increment with rule-based checks and optional AI quality assessment
4
4
  ---
5
5
 
@@ -0,0 +1,15 @@
1
+ {
2
+ "hooks": {
3
+ "PostToolUse": [
4
+ {
5
+ "matcher": "TodoWrite",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/post-task-completion.sh"
10
+ }
11
+ ]
12
+ }
13
+ ]
14
+ }
15
+ }
@@ -134,7 +134,7 @@ Let me start by examining your architecture specifications...
134
134
  ## Available SpecWeave Plugins
135
135
 
136
136
  ### Core (Always Available)
137
- - `specweave-core` - Framework essentials (increment lifecycle, PM/Architect/Tech Lead agents)
137
+ - `specweave` - Framework essentials (increment lifecycle, PM/Architect/Tech Lead agents)
138
138
 
139
139
  ### Integrations
140
140
  - `specweave-github` - GitHub Issues sync
@@ -369,7 +369,7 @@ tdd:
369
369
 
370
370
  **Not a replacement for**:
371
371
  - `tdd-orchestrator` agent (deep expertise)
372
- - `/specweave.tdd-*` commands (workflow enforcement)
372
+ - `/specweave:tdd-*` commands (workflow enforcement)
373
373
 
374
374
  **Instead, it's the entry point** that helps users choose the right TDD tool for their context.
375
375
 
@@ -3,6 +3,17 @@
3
3
  "description": "GitHub Issues integration for SpecWeave increments. Bidirectional sync between SpecWeave increments and GitHub Issues. Automatically creates issues from increments, tracks progress, and closes issues on completion. Uses GitHub CLI (gh) for seamless integration.",
4
4
  "version": "1.0.0",
5
5
  "author": {
6
- "name": "SpecWeave Team"
7
- }
6
+ "name": "SpecWeave Team",
7
+ "url": "https://spec-weave.com"
8
+ },
9
+ "homepage": "https://spec-weave.com",
10
+ "repository": "https://github.com/anton-abyzov/specweave",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "github",
14
+ "issues",
15
+ "integration",
16
+ "sync",
17
+ "specweave"
18
+ ]
8
19
  }
@@ -3,9 +3,11 @@
3
3
  "version": "1.0.0",
4
4
  "description": "Complete ML/AI workflow integration for SpecWeave - from experiment tracking to production deployment. Includes 13 comprehensive skills covering the full ML lifecycle: pipeline orchestration, experiment tracking, model evaluation, explainability, deployment, feature engineering, AutoML, computer vision, NLP, time series forecasting, anomaly detection, data visualization, and model registry.",
5
5
  "author": {
6
- "name": "SpecWeave",
7
- "email": "[email protected]"
6
+ "name": "SpecWeave Team",
7
+ "email": "[email protected]",
8
+ "url": "https://spec-weave.com"
8
9
  },
10
+ "homepage": "https://spec-weave.com",
9
11
  "repository": "https://github.com/anton-abyzov/specweave",
10
12
  "license": "MIT",
11
13
  "keywords": [
@@ -32,8 +34,5 @@
32
34
  "prophet",
33
35
  "data-science",
34
36
  "specweave"
35
- ],
36
- "dependencies": {
37
- "specweave": ">=0.6.0"
38
- }
37
+ ]
39
38
  }
@@ -3,17 +3,13 @@
3
3
  "description": "Complete UI/UX development toolkit - Playwright E2E testing, Figma design integration, React/Vue/Angular development, design systems, Storybook component testing. Auto-activates for frontend projects.",
4
4
  "version": "1.0.0",
5
5
  "author": {
6
- "name": "Anton Abyzov",
6
+ "name": "SpecWeave Team",
7
7
  "email": "anton@spec-weave.com",
8
8
  "url": "https://spec-weave.com"
9
9
  },
10
10
  "license": "MIT",
11
- "homepage": "https://spec-weave.com/plugins/ui",
12
- "repository": {
13
- "type": "git",
14
- "url": "https://github.com/anton-abyzov/specweave.git",
15
- "directory": "src/plugins/specweave-ui"
16
- },
11
+ "homepage": "https://spec-weave.com",
12
+ "repository": "https://github.com/anton-abyzov/specweave",
17
13
  "keywords": [
18
14
  "ui",
19
15
  "ux",
@@ -24,83 +20,7 @@
24
20
  "design-system",
25
21
  "e2e-testing",
26
22
  "storybook",
27
- "frontend"
28
- ],
29
- "specweave": {
30
- "core_version": ">=0.4.0",
31
- "plugin_type": "domain",
32
- "category": "ui-ux"
33
- },
34
- "provides": {
35
- "skills": [
36
- "e2e-playwright",
37
- "figma-designer",
38
- "figma-implementer",
39
- "figma-mcp-connector",
40
- "design-system-architect",
41
- "frontend",
42
- "nextjs"
43
- ],
44
- "agents": [
45
- "ui-ux-specialist"
46
- ],
47
- "commands": [
48
- "ui.test",
49
- "ui.design",
50
- "ui.implement"
51
- ]
52
- },
53
- "auto_detect": {
54
- "packages": [
55
- "@playwright/test",
56
- "playwright",
57
- "figma",
58
- "@figma/rest-api-types",
59
- "react",
60
- "react-dom",
61
- "next",
62
- "vue",
63
- "@angular/core",
64
- "@storybook/react",
65
- "@storybook/vue",
66
- "@storybook/angular"
67
- ],
68
- "files": [
69
- "playwright.config.ts",
70
- "playwright.config.js",
71
- "figma.config.json",
72
- ".storybook/",
73
- "next.config.js",
74
- "next.config.ts"
75
- ],
76
- "triggers": [
77
- "playwright",
78
- "e2e",
79
- "end-to-end",
80
- "figma",
81
- "design",
82
- "ui",
83
- "ux",
84
- "frontend",
85
- "react",
86
- "next",
87
- "vue",
88
- "angular",
89
- "storybook",
90
- "design system",
91
- "component library"
92
- ]
93
- },
94
- "dependencies": {
95
- "mcp_servers": {
96
- "browserbase": {
97
- "optional": true,
98
- "description": "Cloud browser automation for Playwright tests",
99
- "env_vars": [
100
- "BROWSERBASE_API_KEY",
101
- "BROWSERBASE_PROJECT_ID"
102
- ]
103
- }
104
- }
105
- }
23
+ "frontend",
24
+ "specweave"
25
+ ]
106
26
  }
@@ -56,7 +56,7 @@ export class ClaudeAdapter extends AdapterBase {
56
56
  * 1. Create .specweave/ structure (project data)
57
57
  * 2. Show marketplace installation instructions
58
58
  * 3. User adds marketplace: /plugin marketplace add anton-abyzov/specweave
59
- * 4. User installs plugins: /plugin install specweave-core@specweave
59
+ * 4. User installs plugins: /plugin install specweave@specweave
60
60
  */
61
61
  async install(options: AdapterOptions): Promise<void> {
62
62
  console.log('\n📦 Installing Claude Code Adapter (Native Plugin System)\n');
@@ -79,7 +79,7 @@ export class ClaudeAdapter extends AdapterBase {
79
79
  console.log('\n 1️⃣ Add SpecWeave marketplace:');
80
80
  console.log(' /plugin marketplace add anton-abyzov/specweave');
81
81
  console.log('\n 2️⃣ Install SpecWeave core:');
82
- console.log(' /plugin install specweave-core@specweave');
82
+ console.log(' /plugin install specweave@specweave');
83
83
  console.log('\n 3️⃣ (Optional) Install GitHub plugin:');
84
84
  console.log(' /plugin install specweave-github@specweave');
85
85
  console.log('\n 4️⃣ Start using SpecWeave:');
@@ -1,25 +0,0 @@
1
- {
2
- "name": "specweave-core",
3
- "description": "Core SpecWeave framework. Provides increment planning (PM, Architect, Tech Lead agents), RFC generation, TDD workflow, living docs sync, and brownfield support. Essential for all SpecWeave projects.",
4
- "version": "0.6.0",
5
- "author": {
6
- "name": "SpecWeave Team",
7
- "url": "https://spec-weave.com"
8
- },
9
- "homepage": "https://spec-weave.com",
10
- "repository": {
11
- "type": "git",
12
- "url": "https://github.com/anton-abyzov/specweave"
13
- },
14
- "keywords": [
15
- "specweave",
16
- "core",
17
- "increment-planning",
18
- "rfc",
19
- "tdd",
20
- "pm",
21
- "architect",
22
- "living-docs"
23
- ],
24
- "dependencies": []
25
- }
@@ -1,13 +0,0 @@
1
- {
2
- "hooks": [
3
- {
4
- "name": "post-task-completion",
5
- "description": "Fires after EVERY task completion via TodoWrite. Updates living docs, plays notification sound when session ends.",
6
- "event": "tool:after",
7
- "tool": "TodoWrite",
8
- "script": "./post-task-completion.sh",
9
- "blocking": false,
10
- "enabled": true
11
- }
12
- ]
13
- }