specweave 0.6.7 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/.claude-plugin/README.md +1 -1
  2. package/CLAUDE.md +920 -107
  3. package/README.md +143 -207
  4. package/bin/specweave.js +67 -0
  5. package/dist/adapters/adapter-interface.d.ts +11 -11
  6. package/dist/adapters/adapter-interface.d.ts.map +1 -1
  7. package/dist/adapters/adapter-interface.js +1 -1
  8. package/dist/adapters/adapter-loader.d.ts +1 -2
  9. package/dist/adapters/adapter-loader.d.ts.map +1 -1
  10. package/dist/adapters/adapter-loader.js +3 -6
  11. package/dist/adapters/adapter-loader.js.map +1 -1
  12. package/dist/adapters/agents-md-generator.d.ts +3 -3
  13. package/dist/adapters/agents-md-generator.js +3 -3
  14. package/dist/adapters/generic/adapter.d.ts +2 -2
  15. package/dist/adapters/generic/adapter.d.ts.map +1 -1
  16. package/dist/adapters/generic/adapter.js +28 -9
  17. package/dist/adapters/generic/adapter.js.map +1 -1
  18. package/dist/cli/commands/abandon.d.ts +13 -0
  19. package/dist/cli/commands/abandon.d.ts.map +1 -0
  20. package/dist/cli/commands/abandon.js +15 -0
  21. package/dist/cli/commands/abandon.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts.map +1 -1
  23. package/dist/cli/commands/init.js +141 -40
  24. package/dist/cli/commands/init.js.map +1 -1
  25. package/dist/cli/commands/pause.d.ts +13 -0
  26. package/dist/cli/commands/pause.d.ts.map +1 -0
  27. package/dist/cli/commands/pause.js +15 -0
  28. package/dist/cli/commands/pause.js.map +1 -0
  29. package/dist/cli/commands/qa.d.ts +54 -0
  30. package/dist/cli/commands/qa.d.ts.map +1 -0
  31. package/dist/cli/commands/qa.js +98 -0
  32. package/dist/cli/commands/qa.js.map +1 -0
  33. package/dist/cli/commands/resume.d.ts +12 -0
  34. package/dist/cli/commands/resume.d.ts.map +1 -0
  35. package/dist/cli/commands/resume.js +14 -0
  36. package/dist/cli/commands/resume.js.map +1 -0
  37. package/dist/cli/commands/status.d.ts +12 -0
  38. package/dist/cli/commands/status.d.ts.map +1 -0
  39. package/dist/cli/commands/status.js +23 -0
  40. package/dist/cli/commands/status.js.map +1 -0
  41. package/dist/cli/helpers/issue-tracker/ado.d.ts +57 -0
  42. package/dist/cli/helpers/issue-tracker/ado.d.ts.map +1 -0
  43. package/dist/cli/helpers/issue-tracker/ado.js +223 -0
  44. package/dist/cli/helpers/issue-tracker/ado.js.map +1 -0
  45. package/dist/cli/helpers/issue-tracker/github.d.ts +65 -0
  46. package/dist/cli/helpers/issue-tracker/github.d.ts.map +1 -0
  47. package/dist/cli/helpers/issue-tracker/github.js +284 -0
  48. package/dist/cli/helpers/issue-tracker/github.js.map +1 -0
  49. package/dist/cli/helpers/issue-tracker/index.d.ts +22 -0
  50. package/dist/cli/helpers/issue-tracker/index.d.ts.map +1 -0
  51. package/dist/cli/helpers/issue-tracker/index.js +270 -0
  52. package/dist/cli/helpers/issue-tracker/index.js.map +1 -0
  53. package/dist/cli/helpers/issue-tracker/jira.d.ts +61 -0
  54. package/dist/cli/helpers/issue-tracker/jira.d.ts.map +1 -0
  55. package/dist/cli/helpers/issue-tracker/jira.js +265 -0
  56. package/dist/cli/helpers/issue-tracker/jira.js.map +1 -0
  57. package/dist/cli/helpers/issue-tracker/types.d.ts +86 -0
  58. package/dist/cli/helpers/issue-tracker/types.d.ts.map +1 -0
  59. package/dist/cli/helpers/issue-tracker/types.js +16 -0
  60. package/dist/cli/helpers/issue-tracker/types.js.map +1 -0
  61. package/dist/cli/helpers/issue-tracker/utils.d.ts +103 -0
  62. package/dist/cli/helpers/issue-tracker/utils.d.ts.map +1 -0
  63. package/dist/cli/helpers/issue-tracker/utils.js +240 -0
  64. package/dist/cli/helpers/issue-tracker/utils.js.map +1 -0
  65. package/dist/core/increment/limits.d.ts +68 -0
  66. package/dist/core/increment/limits.d.ts.map +1 -0
  67. package/dist/core/increment/limits.js +224 -0
  68. package/dist/core/increment/limits.js.map +1 -0
  69. package/dist/core/increment/metadata-manager.d.ts +114 -0
  70. package/dist/core/increment/metadata-manager.d.ts.map +1 -0
  71. package/dist/core/increment/metadata-manager.js +320 -0
  72. package/dist/core/increment/metadata-manager.js.map +1 -0
  73. package/dist/core/increment/status-commands.d.ts +43 -0
  74. package/dist/core/increment/status-commands.d.ts.map +1 -0
  75. package/dist/core/increment/status-commands.js +277 -0
  76. package/dist/core/increment/status-commands.js.map +1 -0
  77. package/dist/core/plugin-detector.d.ts +1 -0
  78. package/dist/core/plugin-detector.d.ts.map +1 -1
  79. package/dist/core/plugin-detector.js +25 -0
  80. package/dist/core/plugin-detector.js.map +1 -1
  81. package/dist/core/qa/qa-runner.d.ts +16 -0
  82. package/dist/core/qa/qa-runner.d.ts.map +1 -0
  83. package/dist/core/qa/qa-runner.js +404 -0
  84. package/dist/core/qa/qa-runner.js.map +1 -0
  85. package/dist/core/qa/quality-gate-decider.d.ts +53 -0
  86. package/dist/core/qa/quality-gate-decider.d.ts.map +1 -0
  87. package/dist/core/qa/quality-gate-decider.js +268 -0
  88. package/dist/core/qa/quality-gate-decider.js.map +1 -0
  89. package/dist/core/qa/risk-calculator.d.ts +126 -0
  90. package/dist/core/qa/risk-calculator.d.ts.map +1 -0
  91. package/dist/core/qa/risk-calculator.js +247 -0
  92. package/dist/core/qa/risk-calculator.js.map +1 -0
  93. package/dist/core/qa/types.d.ts +315 -0
  94. package/dist/core/qa/types.d.ts.map +1 -0
  95. package/dist/core/qa/types.js +8 -0
  96. package/dist/core/qa/types.js.map +1 -0
  97. package/dist/core/types/config.d.ts +37 -2
  98. package/dist/core/types/config.d.ts.map +1 -1
  99. package/dist/core/types/config.js +16 -0
  100. package/dist/core/types/config.js.map +1 -1
  101. package/dist/core/types/increment-metadata.d.ts +120 -0
  102. package/dist/core/types/increment-metadata.d.ts.map +1 -0
  103. package/dist/core/types/increment-metadata.js +138 -0
  104. package/dist/core/types/increment-metadata.js.map +1 -0
  105. package/dist/hooks/lib/invoke-translator-skill.d.ts +60 -0
  106. package/dist/hooks/lib/invoke-translator-skill.d.ts.map +1 -0
  107. package/dist/hooks/lib/invoke-translator-skill.js +201 -0
  108. package/dist/hooks/lib/invoke-translator-skill.js.map +1 -0
  109. package/dist/hooks/lib/translate-file.d.ts +59 -0
  110. package/dist/hooks/lib/translate-file.d.ts.map +1 -0
  111. package/dist/hooks/lib/translate-file.js +350 -0
  112. package/dist/hooks/lib/translate-file.js.map +1 -0
  113. package/dist/locales/en/cli.json +3 -1
  114. package/dist/metrics/calculators/change-failure-rate.d.ts +22 -0
  115. package/dist/metrics/calculators/change-failure-rate.d.ts.map +1 -0
  116. package/dist/metrics/calculators/change-failure-rate.js +70 -0
  117. package/dist/metrics/calculators/change-failure-rate.js.map +1 -0
  118. package/dist/metrics/calculators/deployment-frequency.d.ts +20 -0
  119. package/dist/metrics/calculators/deployment-frequency.d.ts.map +1 -0
  120. package/dist/metrics/calculators/deployment-frequency.js +61 -0
  121. package/dist/metrics/calculators/deployment-frequency.js.map +1 -0
  122. package/dist/metrics/calculators/lead-time.d.ts +22 -0
  123. package/dist/metrics/calculators/lead-time.d.ts.map +1 -0
  124. package/dist/metrics/calculators/lead-time.js +82 -0
  125. package/dist/metrics/calculators/lead-time.js.map +1 -0
  126. package/dist/metrics/calculators/mttr.d.ts +21 -0
  127. package/dist/metrics/calculators/mttr.d.ts.map +1 -0
  128. package/dist/metrics/calculators/mttr.js +60 -0
  129. package/dist/metrics/calculators/mttr.js.map +1 -0
  130. package/dist/metrics/dora-calculator.d.ts +24 -0
  131. package/dist/metrics/dora-calculator.d.ts.map +1 -0
  132. package/dist/metrics/dora-calculator.js +104 -0
  133. package/dist/metrics/dora-calculator.js.map +1 -0
  134. package/dist/metrics/github-client.d.ts +51 -0
  135. package/dist/metrics/github-client.d.ts.map +1 -0
  136. package/dist/metrics/github-client.js +133 -0
  137. package/dist/metrics/github-client.js.map +1 -0
  138. package/dist/metrics/types.d.ts +112 -0
  139. package/dist/metrics/types.d.ts.map +1 -0
  140. package/dist/metrics/types.js +10 -0
  141. package/dist/metrics/types.js.map +1 -0
  142. package/dist/metrics/utils/percentile.d.ts +25 -0
  143. package/dist/metrics/utils/percentile.d.ts.map +1 -0
  144. package/dist/metrics/utils/percentile.js +46 -0
  145. package/dist/metrics/utils/percentile.js.map +1 -0
  146. package/dist/metrics/utils/tier-classifier.d.ts +61 -0
  147. package/dist/metrics/utils/tier-classifier.d.ts.map +1 -0
  148. package/dist/metrics/utils/tier-classifier.js +100 -0
  149. package/dist/metrics/utils/tier-classifier.js.map +1 -0
  150. package/dist/utils/auth-helpers.d.ts +58 -0
  151. package/dist/utils/auth-helpers.d.ts.map +1 -0
  152. package/dist/utils/auth-helpers.js +108 -0
  153. package/dist/utils/auth-helpers.js.map +1 -0
  154. package/dist/utils/env-file.d.ts +88 -0
  155. package/dist/utils/env-file.d.ts.map +1 -0
  156. package/dist/utils/env-file.js +180 -0
  157. package/dist/utils/env-file.js.map +1 -0
  158. package/dist/utils/plugin-detection.d.ts +50 -0
  159. package/dist/utils/plugin-detection.d.ts.map +1 -0
  160. package/dist/utils/plugin-detection.js +229 -0
  161. package/dist/utils/plugin-detection.js.map +1 -0
  162. package/dist/utils/secrets-loader.d.ts +88 -0
  163. package/dist/utils/secrets-loader.d.ts.map +1 -0
  164. package/dist/utils/secrets-loader.js +271 -0
  165. package/dist/utils/secrets-loader.js.map +1 -0
  166. package/dist/utils/translation.d.ts +187 -0
  167. package/dist/utils/translation.d.ts.map +1 -0
  168. package/dist/utils/translation.js +414 -0
  169. package/dist/utils/translation.js.map +1 -0
  170. package/package.json +28 -44
  171. package/plugins/specweave/.claude-plugin/plugin.json +3 -3
  172. package/plugins/specweave/agents/pm/AGENT.md +330 -54
  173. package/plugins/specweave/agents/test-aware-planner/AGENT.md +1035 -0
  174. package/plugins/specweave/agents/test-aware-planner/templates/README.md +118 -0
  175. package/plugins/specweave/agents/test-aware-planner/templates/task-non-testable.md.template +24 -0
  176. package/plugins/specweave/agents/test-aware-planner/templates/task-testable.md.template +53 -0
  177. package/plugins/specweave/agents/test-aware-planner/templates/tasks-frontmatter.md.template +11 -0
  178. package/plugins/specweave/commands/README.md +88 -163
  179. package/plugins/specweave/commands/specweave-abandon.md +314 -0
  180. package/plugins/specweave/commands/specweave-check-tests.md +546 -0
  181. package/plugins/specweave/commands/{do.md → specweave-do.md} +5 -5
  182. package/plugins/specweave/commands/{done.md → specweave-done.md} +2 -0
  183. package/plugins/specweave/commands/{increment.md → specweave-increment.md} +231 -4
  184. package/plugins/specweave/commands/specweave-pause.md +189 -0
  185. package/plugins/specweave/commands/specweave-qa.md +245 -0
  186. package/plugins/specweave/commands/specweave-resume.md +216 -0
  187. package/plugins/specweave/commands/specweave-status.md +397 -0
  188. package/plugins/specweave/commands/specweave-sync-tasks.md +256 -0
  189. package/plugins/specweave/commands/{translate.md → specweave-translate.md} +3 -3
  190. package/plugins/specweave/commands/specweave-update-scope.md +351 -0
  191. package/plugins/specweave/commands/{validate.md → specweave-validate.md} +2 -0
  192. package/plugins/specweave/commands/specweave.md +21 -21
  193. package/plugins/specweave/hooks/docs-changed.sh +23 -3
  194. package/plugins/specweave/hooks/human-input-required.sh +23 -3
  195. package/plugins/specweave/hooks/post-increment-planning.sh +335 -0
  196. package/plugins/specweave/hooks/post-task-completion.sh +161 -1
  197. package/plugins/specweave/hooks/pre-implementation.sh +23 -3
  198. package/plugins/specweave/skills/SKILLS-INDEX.md +1 -1
  199. package/plugins/specweave/skills/brownfield-analyzer/SKILL.md +9 -9
  200. package/plugins/specweave/skills/increment-planner/SKILL.md +400 -212
  201. package/plugins/specweave/skills/increment-quality-judge-v2/SKILL.md +499 -0
  202. package/plugins/specweave/skills/plugin-detector/SKILL.md +114 -1
  203. package/plugins/specweave/skills/project-kickstarter/SKILL.md +74 -1
  204. package/plugins/specweave/skills/{rfc-generator → spec-generator}/SKILL.md +22 -29
  205. package/plugins/specweave/skills/specweave-detector/SKILL.md +3 -3
  206. package/plugins/specweave/skills/specweave-framework/SKILL.md +2 -2
  207. package/plugins/specweave-ado/.claude-plugin/plugin.json +18 -4
  208. package/plugins/specweave-ado/agents/ado-manager/AGENT.md +426 -0
  209. package/plugins/specweave-ado/commands/close-workitem.md +52 -0
  210. package/plugins/specweave-ado/commands/create-workitem.md +53 -0
  211. package/plugins/specweave-ado/commands/status.md +53 -0
  212. package/plugins/specweave-ado/commands/sync.md +55 -0
  213. package/plugins/specweave-ado/lib/ado-client.ts +361 -0
  214. package/plugins/specweave-ado/reference/ado-specweave-mapping.md +552 -0
  215. package/plugins/specweave-ado/skills/ado-sync/SKILL.md +344 -193
  216. package/plugins/specweave-docs/skills/docusaurus/SKILL.md +73 -0
  217. package/plugins/specweave-github/agents/github-manager/AGENT.md +49 -0
  218. package/plugins/specweave-github/commands/{github-close-issue.md → close-issue.md} +1 -1
  219. package/plugins/specweave-github/commands/{github-create-issue.md → create-issue.md} +1 -1
  220. package/plugins/specweave-github/commands/{github-status.md → status.md} +1 -1
  221. package/plugins/specweave-github/commands/{github-sync-tasks.md → sync-tasks.md} +1 -1
  222. package/plugins/specweave-github/commands/{github-sync.md → sync.md} +1 -1
  223. package/plugins/specweave-github/reference/github-specweave-mapping.md +377 -0
  224. package/plugins/specweave-github/skills/github-sync/SKILL.md +11 -3
  225. package/plugins/specweave-infrastructure/commands/{specweave.monitor-setup.md → monitor-setup.md} +5 -0
  226. package/plugins/specweave-infrastructure/commands/{specweave.slo-implement.md → slo-implement.md} +5 -0
  227. package/plugins/specweave-jira/agents/jira-manager/AGENT.md +380 -0
  228. package/plugins/specweave-jira/commands/{specweave.sync-jira.md → sync.md} +1 -1
  229. package/plugins/specweave-jira/reference/jira-specweave-mapping.md +508 -0
  230. package/plugins/specweave-ml/commands/ml-deploy.md +1 -1
  231. package/plugins/specweave-ml/commands/ml-evaluate.md +1 -1
  232. package/plugins/specweave-ml/commands/ml-explain.md +1 -1
  233. package/plugins/specweave-ml/commands/{specweave.ml-pipeline.md → ml-pipeline.md} +5 -0
  234. package/src/templates/AGENTS.md.template +652 -1
  235. package/src/templates/CLAUDE.md.template +36 -21
  236. package/src/templates/COMPLETION-REPORT.template.md +128 -0
  237. package/src/templates/README.md.template +17 -16
  238. package/src/templates/docs/README.md +11 -9
  239. package/src/templates/docs/spec-template.md +229 -0
  240. package/dist/adapters/copilot/adapter.d.ts +0 -86
  241. package/dist/adapters/copilot/adapter.d.ts.map +0 -1
  242. package/dist/adapters/copilot/adapter.js +0 -396
  243. package/dist/adapters/copilot/adapter.js.map +0 -1
  244. package/plugins/.specweave/logs/hooks-debug.log +0 -24
  245. package/plugins/.specweave/logs/last-hook-fire +0 -1
  246. package/plugins/.specweave/logs/last-todowrite-time +0 -1
  247. package/plugins/.specweave/logs/tasks.log +0 -6
  248. package/plugins/specweave/commands/inc.md +0 -85
  249. package/plugins/specweave/commands/list-increments.md +0 -180
  250. package/src/adapters/README.md +0 -311
  251. package/src/adapters/adapter-base.ts +0 -182
  252. package/src/adapters/adapter-interface.ts +0 -166
  253. package/src/adapters/adapter-loader.ts +0 -259
  254. package/src/adapters/agents-md-generator.ts +0 -228
  255. package/src/adapters/claude/README.md +0 -233
  256. package/src/adapters/claude/adapter.ts +0 -468
  257. package/src/adapters/claude-md-generator.ts +0 -377
  258. package/src/adapters/codex/README.md +0 -105
  259. package/src/adapters/codex/adapter.ts +0 -333
  260. package/src/adapters/copilot/README.md +0 -240
  261. package/src/adapters/copilot/adapter.ts +0 -444
  262. package/src/adapters/cursor/.cursor/context/docs-context.md +0 -62
  263. package/src/adapters/cursor/.cursor/context/increments-context.md +0 -71
  264. package/src/adapters/cursor/.cursor/context/strategy-context.md +0 -73
  265. package/src/adapters/cursor/.cursor/context/tests-context.md +0 -89
  266. package/src/adapters/cursor/README.md +0 -283
  267. package/src/adapters/cursor/adapter.ts +0 -451
  268. package/src/adapters/doc-generator.ts +0 -331
  269. package/src/adapters/gemini/README.md +0 -97
  270. package/src/adapters/gemini/adapter.ts +0 -298
  271. package/src/adapters/generic/README.md +0 -277
  272. package/src/adapters/generic/adapter.ts +0 -359
  273. package/src/adapters/registry.yaml +0 -187
  274. /package/plugins/specweave/commands/{costs.md → specweave-costs.md} +0 -0
  275. /package/plugins/specweave/commands/{next.md → specweave-next.md} +0 -0
  276. /package/plugins/specweave/commands/{progress.md → specweave-progress.md} +0 -0
  277. /package/plugins/specweave/commands/{sync-docs.md → specweave-sync-docs.md} +0 -0
  278. /package/plugins/specweave/commands/{tdd-cycle.md → specweave-tdd-cycle.md} +0 -0
  279. /package/plugins/specweave/commands/{tdd-green.md → specweave-tdd-green.md} +0 -0
  280. /package/plugins/specweave/commands/{tdd-red.md → specweave-tdd-red.md} +0 -0
  281. /package/plugins/specweave/commands/{tdd-refactor.md → specweave-tdd-refactor.md} +0 -0
@@ -1,359 +0,0 @@
1
- /**
2
- * Generic Adapter
3
- *
4
- * Universal adapter that works with ANY AI tool.
5
- * All AI tools can read AGENTS.md (universal standard) for workflow instructions.
6
- *
7
- * This adapter ensures 100% compatibility - works with ChatGPT web, Claude web,
8
- * Gemini, or literally ANY AI that can read markdown and follow instructions.
9
- */
10
-
11
- import * as path from 'path';
12
- import fs from 'fs-extra';
13
- import { AdapterBase } from '../adapter-base.js';
14
- import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
15
- import type { Plugin } from '../../core/types/plugin.js';
16
- import { LanguageManager, getSystemPromptForLanguage } from '../../core/i18n/language-manager.js';
17
- import type { SupportedLanguage } from '../../core/i18n/types.js';
18
-
19
- export class GenericAdapter extends AdapterBase {
20
- name = 'generic';
21
- description = 'Generic adapter - AGENTS.md works with ANY AI tool (ChatGPT, Gemini, etc.)';
22
- automationLevel = 'manual' as const;
23
-
24
- /**
25
- * Detect if generic adapter should be used
26
- *
27
- * This adapter is the universal fallback - always returns true
28
- * since it works with literally any AI tool.
29
- */
30
- async detect(): Promise<boolean> {
31
- // Generic adapter works with ANY tool - always available
32
- return true;
33
- }
34
-
35
- /**
36
- * Get files to install for Generic adapter
37
- *
38
- * Note: Any AI tool can read AGENTS.md (universal standard).
39
- * No additional files needed.
40
- */
41
- getFiles(): AdapterFile[] {
42
- return [];
43
- }
44
-
45
- /**
46
- * Install Generic adapter
47
- */
48
- async install(options: AdapterOptions): Promise<void> {
49
- console.log('\n📦 Configuring for Universal AI Tool Compatibility\n');
50
-
51
- // No files to install - any AI can read AGENTS.md
52
- console.log('✅ AGENTS.md works with any AI tool (ChatGPT, Gemini, Claude web, etc.)');
53
- }
54
-
55
- /**
56
- * Post-installation instructions
57
- */
58
- async postInstall(options: AdapterOptions): Promise<void> {
59
- console.log(this.getInstructions());
60
- }
61
-
62
- /**
63
- * Get usage instructions for Generic adapter
64
- */
65
- getInstructions(): string {
66
- return `
67
- ================================================================
68
- Generic Adapter - Universal Compatibility
69
- ================================================================
70
-
71
- Your project is now configured for ANY AI tool!
72
-
73
- WHAT THIS PROVIDES:
74
-
75
- - AGENTS.md (Universal Standard)
76
- - Any AI tool can read this file
77
- - Contains all workflow instructions
78
- - Project structure and templates
79
- - Following agents.md standard (https://agents.md/)
80
-
81
- - 100% Compatibility
82
- - ChatGPT (web), Claude (web), Gemini
83
- - Any AI that can read markdown
84
-
85
- HOW TO USE AGENTS.MD WITH ANY AI:
86
-
87
- Method 1: Copy-Paste Workflow (ChatGPT web, Claude web, etc.)
88
- 1. Open AGENTS.md in your browser/editor
89
- 2. Copy relevant section (e.g., "Creating a Feature Increment")
90
- 3. Paste into AI chat (ChatGPT, Claude web, Gemini, etc.)
91
- 4. Ask AI to follow the instructions
92
- 5. AI generates content (spec.md, plan.md, etc.)
93
- 6. Copy AI's response, save to files
94
-
95
- Method 2: File System Access (AI with file access)
96
- 1. AI automatically reads AGENTS.md
97
- 2. Ask: "Create increment for user authentication"
98
- 3. AI follows AGENTS.md workflow
99
- 4. AI creates files directly
100
-
101
- UNDERSTANDING "MANUAL":
102
-
103
- Manual = You Orchestrate, AI Executes
104
-
105
- Example workflow:
106
- 1. Read AGENTS.md section "Creating a Feature Increment"
107
- 2. Copy instructions to ChatGPT
108
- 3. ChatGPT generates spec.md content
109
- 4. Save content to .specweave/increments/0001-auth/spec.md
110
- 5. Repeat for plan.md, tasks.md
111
-
112
- Manual does not mean harder - just means YOU control each step (no automation).
113
- Benefit: Works with ANY AI tool!
114
-
115
- COMPARISON:
116
-
117
- Claude Code (Full): "create increment" -> Done in 30 seconds (auto)
118
- Cursor (Semi): "create increment" -> Done in 5 minutes (reads AGENTS.md)
119
- Copilot (Basic): Reads AGENTS.md, suggests content as you type
120
- Generic (Manual): Copy AGENTS.md instructions to any AI (10-30 min)
121
-
122
- Trade-off: Speed vs Compatibility
123
- - Claude Code: Fast, but requires Claude Code CLI
124
- - Generic: Slower, but works with EVERY AI tool (even web-based)!
125
-
126
- WHEN TO USE:
127
-
128
- Use Generic adapter if:
129
- - You use ChatGPT web, Claude web, Gemini, or other AI
130
- - You don't have access to Claude Code or Cursor
131
- - You want maximum compatibility (works with ANYTHING)
132
- - Simple projects where automation isn't critical
133
-
134
- Consider alternatives if:
135
- - You want automation -> Use Claude Code (full)
136
- - You have CLI access -> Use Cursor (semi) or Copilot (basic)
137
- - Large projects -> Manual workflow becomes tedious
138
-
139
- QUICK START:
140
-
141
- 1. Open AGENTS.md
142
- Read the "Common Workflows" section
143
-
144
- 2. Copy workflow to your AI tool:
145
- - "Creating a Feature Increment" section
146
- - Paste into ChatGPT/Claude/Gemini
147
-
148
- 3. Follow AI's guidance:
149
- - AI generates spec.md content (copy & save)
150
- - AI generates plan.md content (copy & save)
151
- - AI generates tasks.md content (copy & save)
152
-
153
- 4. Use any AI tool you prefer:
154
- ChatGPT, Claude web, Gemini, Perplexity, etc.
155
-
156
- DOCUMENTATION:
157
-
158
- - AGENTS.md: Universal workflow instructions (works with any AI!)
159
- - .specweave/docs/: Project documentation
160
-
161
- You're ready to build with SpecWeave using ANY AI tool!
162
-
163
- Remember: AGENTS.md is the universal standard - it works everywhere!
164
- `;
165
- }
166
-
167
- /**
168
- * Check if Generic adapter supports plugins
169
- *
170
- * Generic has manual plugin support via AGENTS.md
171
- *
172
- * @returns boolean True
173
- */
174
- supportsPlugins(): boolean {
175
- return true;
176
- }
177
-
178
- /**
179
- * Read language configuration from project config
180
- *
181
- * @returns Language setting from config, defaults to 'en'
182
- */
183
- private async getLanguageConfig(): Promise<SupportedLanguage> {
184
- const projectPath = process.cwd();
185
- const configPath = path.join(projectPath, '.specweave', 'config.json');
186
-
187
- if (!(await fs.pathExists(configPath))) {
188
- return 'en'; // Default to English if no config
189
- }
190
-
191
- try {
192
- const config = await fs.readJson(configPath);
193
- return (config.language as SupportedLanguage) || 'en';
194
- } catch (error) {
195
- console.warn('⚠️ Could not read language from config, defaulting to English');
196
- return 'en';
197
- }
198
- }
199
-
200
- /**
201
- * Inject system prompt for non-English languages
202
- *
203
- * Prepends language instruction to markdown content if language !== 'en'
204
- *
205
- * @param content Original markdown content
206
- * @param language Target language
207
- * @returns Modified content with system prompt (or unchanged if English)
208
- */
209
- private injectSystemPrompt(content: string, language: SupportedLanguage): string {
210
- if (language === 'en') {
211
- return content; // No changes for English - preserve default behavior
212
- }
213
-
214
- // Get system prompt for target language
215
- const systemPrompt = getSystemPromptForLanguage(language);
216
-
217
- // For AGENTS.md compilation, inject at the beginning of the content
218
- return `${systemPrompt}\n\n${content}`;
219
- }
220
-
221
- /**
222
- * Compile and install a plugin for Generic adapter
223
- *
224
- * Appends plugin content to AGENTS.md for manual copy-paste workflows
225
- *
226
- * NEW: Injects system prompts for non-English languages
227
- *
228
- * @param plugin Plugin to install
229
- */
230
- async compilePlugin(plugin: Plugin): Promise<void> {
231
- const projectPath = process.cwd();
232
- const agentsMdPath = path.join(projectPath, 'AGENTS.md');
233
-
234
- console.log(`\n📦 Adding plugin to AGENTS.md: ${plugin.manifest.name}`);
235
-
236
- // Get language configuration for system prompt injection
237
- const language = await this.getLanguageConfig();
238
- if (language !== 'en') {
239
- console.log(` 🌐 Language: ${language} (system prompts will be injected)`);
240
- }
241
-
242
- if (!(await fs.pathExists(agentsMdPath))) {
243
- throw new Error('AGENTS.md not found. Run specweave init first.');
244
- }
245
-
246
- let agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
247
-
248
- const pluginMarker = `<!-- Plugin: ${plugin.manifest.name} -->`;
249
- if (agentsMd.includes(pluginMarker)) {
250
- console.log(` ℹ️ Plugin ${plugin.manifest.name} already in AGENTS.md`);
251
- return;
252
- }
253
-
254
- let pluginSection = `\n\n${pluginMarker}\n\n`;
255
- pluginSection += `# Plugin: ${plugin.manifest.name}\n\n`;
256
- pluginSection += `${plugin.manifest.description}\n\n`;
257
-
258
- if (plugin.skills.length > 0) {
259
- pluginSection += `## Skills\n\n`;
260
- for (const skill of plugin.skills) {
261
- const skillContent = await fs.readFile(path.join(skill.path, 'SKILL.md'), 'utf-8');
262
- const contentWithoutFrontmatter = skillContent.replace(/^---\n[\s\S]+?\n---\n/, '');
263
- // Inject system prompt if needed
264
- const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
265
- pluginSection += `### ${skill.name}\n\n${modifiedContent}\n\n`;
266
- }
267
- }
268
-
269
- if (plugin.agents.length > 0) {
270
- pluginSection += `## Agents\n\n`;
271
- for (const agent of plugin.agents) {
272
- const agentContent = await fs.readFile(path.join(agent.path, 'AGENT.md'), 'utf-8');
273
- // Inject system prompt if needed
274
- const modifiedContent = this.injectSystemPrompt(agentContent, language);
275
- pluginSection += `### ${agent.name}\n\n${modifiedContent}\n\n`;
276
- }
277
- }
278
-
279
- if (plugin.commands.length > 0) {
280
- pluginSection += `## Workflows (Manual)\n\n`;
281
- for (const command of plugin.commands) {
282
- const commandContent = await fs.readFile(command.path, 'utf-8');
283
- const contentWithoutFrontmatter = commandContent.replace(/^---\n[\s\S]+?\n---\n/, '');
284
- // Inject system prompt if needed
285
- const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
286
- pluginSection += `### ${command.name.replace('specweave.', '')}\n\n${modifiedContent}\n\n`;
287
- }
288
- }
289
-
290
- pluginSection += `<!-- End Plugin: ${plugin.manifest.name} -->\n`;
291
-
292
- agentsMd += pluginSection;
293
- await fs.writeFile(agentsMdPath, agentsMd, 'utf-8');
294
-
295
- console.log(` ✓ Added to AGENTS.md (copy-paste workflows)`);
296
- console.log(`\n✅ Plugin ${plugin.manifest.name} available for manual use!`);
297
- }
298
-
299
- /**
300
- * Unload a plugin from Generic adapter
301
- */
302
- async unloadPlugin(pluginName: string): Promise<void> {
303
- const projectPath = process.cwd();
304
- const agentsMdPath = path.join(projectPath, 'AGENTS.md');
305
-
306
- console.log(`\n🗑️ Removing plugin from AGENTS.md: ${pluginName}`);
307
-
308
- if (!(await fs.pathExists(agentsMdPath))) {
309
- console.warn(`⚠️ AGENTS.md not found`);
310
- return;
311
- }
312
-
313
- let agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
314
-
315
- const startMarker = `<!-- Plugin: ${pluginName} -->`;
316
- const endMarker = `<!-- End Plugin: ${pluginName} -->`;
317
-
318
- const startIndex = agentsMd.indexOf(startMarker);
319
- if (startIndex === -1) {
320
- console.warn(`⚠️ Plugin ${pluginName} not found in AGENTS.md`);
321
- return;
322
- }
323
-
324
- const endIndex = agentsMd.indexOf(endMarker, startIndex);
325
- if (endIndex === -1) {
326
- console.warn(`⚠️ Plugin ${pluginName} section malformed`);
327
- return;
328
- }
329
-
330
- agentsMd = agentsMd.slice(0, startIndex) + agentsMd.slice(endIndex + endMarker.length);
331
- await fs.writeFile(agentsMdPath, agentsMd, 'utf-8');
332
-
333
- console.log(` ✓ Removed from AGENTS.md`);
334
- console.log(`\n✅ Plugin ${pluginName} removed!`);
335
- }
336
-
337
- /**
338
- * Get list of installed plugins for Generic adapter
339
- */
340
- async getInstalledPlugins(): Promise<string[]> {
341
- const projectPath = process.cwd();
342
- const agentsMdPath = path.join(projectPath, 'AGENTS.md');
343
-
344
- if (!(await fs.pathExists(agentsMdPath))) {
345
- return [];
346
- }
347
-
348
- const agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
349
- const pluginMarkerRegex = /<!-- Plugin: (specweave-[a-z0-9-]+) -->/g;
350
- const matches = agentsMd.matchAll(pluginMarkerRegex);
351
-
352
- const plugins: string[] = [];
353
- for (const match of matches) {
354
- plugins.push(match[1]);
355
- }
356
-
357
- return plugins;
358
- }
359
- }
@@ -1,187 +0,0 @@
1
- ---
2
- # SpecWeave Adapter Registry
3
- #
4
- # Lists all available adapters for multi-tool support.
5
- # CLI reads this file to show available adapters.
6
-
7
- version: 1
8
- last_updated: 2025-10-27
9
-
10
- adapters:
11
- - name: claude
12
- description: "Claude Code - NATIVE/BASELINE (no adapter needed!). Full automation with skills, agents, hooks"
13
- automation_level: full
14
- status: native
15
- directory: claude
16
- features:
17
- - Native skills, agents, hooks (no approximation needed)
18
- - Skills auto-activate (specweave-detector, skill-router, etc.)
19
- - Agents coordinate (PM, Architect, DevOps, QA, Security)
20
- - Hooks auto-update docs (post-task-completion, etc.)
21
- - Slash commands (/create-increment, /sync-docs, etc.)
22
- - Best experience, most features - THE BASELINE!
23
- requirements:
24
- - Claude Code CLI installed
25
- - Node.js >= 18.0.0
26
- market_share: 10%
27
- priority: P0
28
- note: "Claude is the native experience - adapters exist to approximate these capabilities for other tools"
29
-
30
- - name: cursor
31
- description: "Cursor adapter - Semi-automation with .cursorrules and @ shortcuts"
32
- automation_level: semi
33
- status: active
34
- directory: cursor
35
- features:
36
- - .cursorrules with SpecWeave workflow instructions
37
- - "@ context shortcuts (@increments, @docs, @strategy)"
38
- - Composer multi-file editing support
39
- - Good experience, semi-automated
40
- requirements:
41
- - Cursor editor installed
42
- - Node.js >= 18.0.0
43
- market_share: 30%
44
- priority: P1
45
-
46
- - name: copilot
47
- description: "GitHub Copilot adapter - Basic automation with workspace instructions"
48
- automation_level: basic
49
- status: active
50
- directory: copilot
51
- features:
52
- - .github/copilot/instructions.md workspace guidance
53
- - Copilot reads context manifests for suggestions
54
- - Works with built-in Copilot features only
55
- - Decent experience, basic automation
56
- requirements:
57
- - GitHub Copilot extension (VS Code)
58
- - Node.js >= 18.0.0
59
- market_share: 40%
60
- priority: P1
61
-
62
- - name: generic
63
- description: "Generic adapter - Manual workflow for ANY AI tool (ChatGPT, Gemini, etc.)"
64
- automation_level: manual
65
- status: active
66
- directory: generic
67
- features:
68
- - SPECWEAVE.md with step-by-step manual instructions
69
- - Works with ANY AI (ChatGPT, Gemini, Claude web, etc.)
70
- - No automation, user guides AI through workflow
71
- - Basic experience, maximum compatibility (100%)
72
- requirements:
73
- - Node.js >= 18.0.0 (for CLI init only)
74
- - Any AI tool (web or local)
75
- market_share: 20%
76
- priority: P1
77
-
78
- - name: gemini
79
- description: "Gemini CLI adapter - Semi-automation with AGENTS.md and agent mode"
80
- automation_level: semi
81
- status: active
82
- directory: gemini
83
- features:
84
- - AGENTS.md universal instructions
85
- - 1M token context window (5x larger than Claude!)
86
- - Agent mode for multi-file tasks
87
- - MCP (Model Context Protocol) support
88
- - Free tier available (60 req/min, 1K req/day)
89
- - Open source (Apache 2.0)
90
- requirements:
91
- - Gemini CLI installed
92
- - Node.js >= 18.0.0
93
- market_share: 10%
94
- priority: P1
95
-
96
- - name: codex
97
- description: "OpenAI Codex adapter - Semi-automation with AGENTS.md and GPT-5-Codex"
98
- automation_level: semi
99
- status: active
100
- directory: codex
101
- features:
102
- - AGENTS.md universal instructions
103
- - GPT-5-Codex optimized for engineering
104
- - Multiple access points (CLI + Web + IDE + GitHub + iOS)
105
- - Task-based isolated execution
106
- - File operations and test execution
107
- requirements:
108
- - ChatGPT Plus/Pro/Business/Enterprise
109
- - Node.js >= 18.0.0
110
- market_share: 20%
111
- priority: P1
112
-
113
- # Future adapters (P2/P3)
114
- future_adapters:
115
- - name: windsurf
116
- description: "Windsurf adapter (if requested by community)"
117
- automation_level: semi
118
- status: planned
119
- priority: P2
120
-
121
- # Adapter capabilities comparison
122
- capabilities:
123
- skills:
124
- claude: full
125
- cursor: via_agents_md
126
- copilot: via_agents_md
127
- gemini: via_agents_md
128
- codex: via_agents_md
129
- generic: via_agents_md
130
-
131
- agents:
132
- claude: full
133
- cursor: via_agents_md
134
- copilot: via_agents_md
135
- gemini: via_agents_md
136
- codex: via_agents_md
137
- generic: via_agents_md
138
-
139
- hooks:
140
- claude: full
141
- cursor: none
142
- copilot: none
143
- gemini: none
144
- codex: none
145
- generic: none
146
-
147
- instruction_file:
148
- claude: .claude/skills + agents
149
- cursor: AGENTS.md
150
- copilot: AGENTS.md
151
- gemini: AGENTS.md
152
- codex: AGENTS.md
153
- generic: AGENTS.md
154
-
155
- context_manifests:
156
- claude: auto_load
157
- cursor: manual_reference
158
- copilot: manual_reference
159
- gemini: manual_reference
160
- codex: manual_reference
161
- generic: manual_copy_paste
162
-
163
- # Target market coverage
164
- market_coverage:
165
- claude: 10%
166
- cursor: 30%
167
- copilot: 35%
168
- gemini: 10%
169
- codex: 20%
170
- generic: 5%
171
- total: 110% # Overlapping users
172
- unique_coverage: 100%
173
- goal: "Make SpecWeave accessible to ALL developers"
174
-
175
- # Universal AGENTS.md
176
- universal_standard:
177
- file: AGENTS.md
178
- purpose: "Single source of truth for all adapters (except Claude which has native support)"
179
- replaces:
180
- - .cursorrules (Cursor)
181
- - .github/copilot/instructions.md (Copilot)
182
- - Multiple tool-specific files
183
- benefits:
184
- - Single file to maintain
185
- - Works across ALL tools
186
- - Auto-generated from actual skills/agents
187
- - Follows agents.md standard