specweave 0.1.9 → 0.3.1

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 (293) hide show
  1. package/CLAUDE.md +600 -0
  2. package/README.md +263 -81
  3. package/bin/install-all.sh +1 -1
  4. package/bin/install-commands.sh +3 -3
  5. package/bin/specweave.js +39 -9
  6. package/dist/adapters/adapter-base.d.ts +1 -1
  7. package/dist/adapters/adapter-base.d.ts.map +1 -1
  8. package/dist/adapters/adapter-base.js +6 -41
  9. package/dist/adapters/adapter-base.js.map +1 -1
  10. package/dist/adapters/adapter-interface.js +1 -2
  11. package/dist/adapters/adapter-interface.js.map +1 -1
  12. package/dist/adapters/adapter-loader.d.ts +86 -0
  13. package/dist/adapters/adapter-loader.d.ts.map +1 -0
  14. package/dist/adapters/adapter-loader.js +216 -0
  15. package/dist/adapters/adapter-loader.js.map +1 -0
  16. package/dist/adapters/agents-md-generator.d.ts +48 -0
  17. package/dist/adapters/agents-md-generator.d.ts.map +1 -0
  18. package/dist/adapters/agents-md-generator.js +132 -0
  19. package/dist/adapters/agents-md-generator.js.map +1 -0
  20. package/dist/adapters/claude/adapter.d.ts +2 -2
  21. package/dist/adapters/claude/adapter.d.ts.map +1 -1
  22. package/dist/adapters/claude/adapter.js +5 -42
  23. package/dist/adapters/claude/adapter.js.map +1 -1
  24. package/dist/adapters/claude-md-generator.d.ts +78 -0
  25. package/dist/adapters/claude-md-generator.d.ts.map +1 -0
  26. package/dist/adapters/claude-md-generator.js +246 -0
  27. package/dist/adapters/claude-md-generator.js.map +1 -0
  28. package/dist/adapters/codex/adapter.d.ts +50 -0
  29. package/dist/adapters/codex/adapter.d.ts.map +1 -0
  30. package/dist/adapters/codex/adapter.js +316 -0
  31. package/dist/adapters/codex/adapter.js.map +1 -0
  32. package/dist/adapters/copilot/adapter.d.ts +10 -9
  33. package/dist/adapters/copilot/adapter.d.ts.map +1 -1
  34. package/dist/adapters/copilot/adapter.js +35 -100
  35. package/dist/adapters/copilot/adapter.js.map +1 -1
  36. package/dist/adapters/cursor/adapter.d.ts +8 -6
  37. package/dist/adapters/cursor/adapter.d.ts.map +1 -1
  38. package/dist/adapters/cursor/adapter.js +47 -130
  39. package/dist/adapters/cursor/adapter.js.map +1 -1
  40. package/dist/adapters/doc-generator.d.ts +69 -0
  41. package/dist/adapters/doc-generator.d.ts.map +1 -0
  42. package/dist/adapters/doc-generator.js +247 -0
  43. package/dist/adapters/doc-generator.js.map +1 -0
  44. package/dist/adapters/gemini/adapter.d.ts +50 -0
  45. package/dist/adapters/gemini/adapter.d.ts.map +1 -0
  46. package/dist/adapters/gemini/adapter.js +281 -0
  47. package/dist/adapters/gemini/adapter.js.map +1 -0
  48. package/dist/adapters/generic/adapter.d.ts +7 -4
  49. package/dist/adapters/generic/adapter.d.ts.map +1 -1
  50. package/dist/adapters/generic/adapter.js +60 -59
  51. package/dist/adapters/generic/adapter.js.map +1 -1
  52. package/dist/cli/commands/init.d.ts +3 -1
  53. package/dist/cli/commands/init.d.ts.map +1 -1
  54. package/dist/cli/commands/init.js +327 -177
  55. package/dist/cli/commands/init.js.map +1 -1
  56. package/dist/cli/commands/install.d.ts.map +1 -1
  57. package/dist/cli/commands/install.js +22 -58
  58. package/dist/cli/commands/install.js.map +1 -1
  59. package/dist/cli/commands/list.d.ts.map +1 -1
  60. package/dist/cli/commands/list.js +27 -64
  61. package/dist/cli/commands/list.js.map +1 -1
  62. package/dist/core/credentials-manager.d.ts +90 -0
  63. package/dist/core/credentials-manager.d.ts.map +1 -0
  64. package/dist/core/credentials-manager.js +271 -0
  65. package/dist/core/credentials-manager.js.map +1 -0
  66. package/dist/core/project-structure-detector.d.ts +92 -0
  67. package/dist/core/project-structure-detector.d.ts.map +1 -0
  68. package/dist/core/project-structure-detector.js +289 -0
  69. package/dist/core/project-structure-detector.js.map +1 -0
  70. package/dist/core/rfc-generator-v2.d.ts +149 -0
  71. package/dist/core/rfc-generator-v2.d.ts.map +1 -0
  72. package/dist/core/rfc-generator-v2.js +399 -0
  73. package/dist/core/rfc-generator-v2.js.map +1 -0
  74. package/dist/core/rfc-generator.d.ts +147 -0
  75. package/dist/core/rfc-generator.d.ts.map +1 -0
  76. package/dist/core/rfc-generator.js +434 -0
  77. package/dist/core/rfc-generator.js.map +1 -0
  78. package/dist/integrations/ado/ado-client.d.ts +123 -0
  79. package/dist/integrations/ado/ado-client.d.ts.map +1 -0
  80. package/dist/integrations/ado/ado-client.js +398 -0
  81. package/dist/integrations/ado/ado-client.js.map +1 -0
  82. package/dist/integrations/jira/jira-client.d.ts +139 -0
  83. package/dist/integrations/jira/jira-client.d.ts.map +1 -0
  84. package/dist/integrations/jira/jira-client.js +386 -0
  85. package/dist/integrations/jira/jira-client.js.map +1 -0
  86. package/dist/integrations/jira/jira-incremental-mapper.d.ts +75 -0
  87. package/dist/integrations/jira/jira-incremental-mapper.d.ts.map +1 -0
  88. package/dist/integrations/jira/jira-incremental-mapper.js +474 -0
  89. package/dist/integrations/jira/jira-incremental-mapper.js.map +1 -0
  90. package/dist/integrations/jira/jira-mapper.d.ts +105 -0
  91. package/dist/integrations/jira/jira-mapper.d.ts.map +1 -0
  92. package/dist/integrations/jira/jira-mapper.js +494 -0
  93. package/dist/integrations/jira/jira-mapper.js.map +1 -0
  94. package/dist/testing/test-generator.d.ts +117 -0
  95. package/dist/testing/test-generator.d.ts.map +1 -0
  96. package/dist/testing/test-generator.js +370 -0
  97. package/dist/testing/test-generator.js.map +1 -0
  98. package/dist/utils/auto-install.d.ts +3 -0
  99. package/dist/utils/auto-install.d.ts.map +1 -1
  100. package/dist/utils/auto-install.js +16 -82
  101. package/dist/utils/auto-install.js.map +1 -1
  102. package/dist/utils/esm-helpers.d.ts +50 -0
  103. package/dist/utils/esm-helpers.d.ts.map +1 -0
  104. package/dist/utils/esm-helpers.js +57 -0
  105. package/dist/utils/esm-helpers.js.map +1 -0
  106. package/package.json +16 -7
  107. package/src/adapters/README.md +1 -2
  108. package/src/adapters/adapter-base.ts +6 -3
  109. package/src/adapters/adapter-loader.ts +261 -0
  110. package/src/adapters/agents-md-generator.ts +162 -0
  111. package/src/adapters/claude/README.md +6 -14
  112. package/src/adapters/claude/adapter.ts +4 -4
  113. package/src/adapters/claude-md-generator.ts +311 -0
  114. package/src/adapters/codex/README.md +105 -0
  115. package/src/adapters/codex/adapter.ts +333 -0
  116. package/src/adapters/copilot/adapter.ts +36 -65
  117. package/src/adapters/cursor/README.md +0 -2
  118. package/src/adapters/cursor/adapter.ts +46 -92
  119. package/src/adapters/doc-generator.ts +331 -0
  120. package/src/adapters/gemini/README.md +97 -0
  121. package/src/adapters/gemini/adapter.ts +298 -0
  122. package/src/adapters/generic/adapter.ts +61 -57
  123. package/src/adapters/registry.yaml +86 -25
  124. package/src/agents/devops/AGENT.md +16 -18
  125. package/src/agents/docs-writer/AGENT.md +2 -2
  126. package/src/agents/pm/AGENT.md +1 -50
  127. package/src/commands/README.md +134 -111
  128. package/src/commands/{build.md → specweave.do.md} +141 -69
  129. package/src/commands/{done.md → specweave.done.md} +3 -3
  130. package/src/commands/{inc.md → specweave.inc.md} +4 -4
  131. package/src/commands/{increment.md → specweave.increment.md} +143 -76
  132. package/src/commands/specweave.md +430 -0
  133. package/src/commands/specweave.next.md +495 -0
  134. package/src/commands/{progress.md → specweave.progress.md} +12 -12
  135. package/src/commands/specweave.sync-docs.md +665 -0
  136. package/src/commands/specweave.sync-github.md +269 -0
  137. package/src/commands/specweave.sync-jira.md +197 -0
  138. package/src/commands/{validate.md → specweave.validate.md} +4 -4
  139. package/src/hooks/README.md +19 -29
  140. package/src/hooks/post-task-completion.sh +25 -30
  141. package/src/skills/ado-sync/README.md +1 -36
  142. package/src/skills/bmad-method-expert/SKILL.md +1 -3
  143. package/src/skills/brownfield-analyzer/SKILL.md +429 -23
  144. package/src/skills/brownfield-onboarder/SKILL.md +221 -8
  145. package/src/skills/context-loader/SKILL.md +239 -617
  146. package/src/skills/context-optimizer/SKILL.md +0 -30
  147. package/src/skills/github-sync/SKILL.md +1 -19
  148. package/src/skills/increment-planner/SKILL.md +64 -18
  149. package/src/skills/increment-quality-judge/SKILL.md +1 -36
  150. package/src/skills/jira-sync/README.md +1 -38
  151. package/src/skills/role-orchestrator/README.md +1 -22
  152. package/src/skills/role-orchestrator/SKILL.md +1 -59
  153. package/src/skills/skill-router/SKILL.md +0 -18
  154. package/src/skills/spec-kit-expert/SKILL.md +1 -3
  155. package/src/skills/specweave-detector/SKILL.md +225 -275
  156. package/src/skills/task-builder/README.md +1 -7
  157. package/src/templates/AGENTS.md.template +334 -0
  158. package/src/templates/CLAUDE.md.template +131 -298
  159. package/src/templates/README.md.template +115 -23
  160. package/src/templates/environments/minimal/README.md +0 -1
  161. package/INSTALL.md +0 -848
  162. package/SPECWEAVE.md +0 -743
  163. package/src/adapters/copilot/.github/copilot/instructions.md +0 -376
  164. package/src/adapters/cursor/.cursorrules +0 -325
  165. package/src/adapters/generic/SPECWEAVE-MANUAL.md +0 -676
  166. package/src/commands/create-project.md +0 -528
  167. package/src/commands/generate-docs.md +0 -623
  168. package/src/commands/review-docs.md +0 -331
  169. package/src/commands/sync-github.md +0 -115
  170. package/src/skills/ado-sync/test-cases/test-1.yaml +0 -9
  171. package/src/skills/ado-sync/test-cases/test-2.yaml +0 -8
  172. package/src/skills/ado-sync/test-cases/test-3.yaml +0 -9
  173. package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +0 -12
  174. package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +0 -12
  175. package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +0 -12
  176. package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +0 -48
  177. package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +0 -12
  178. package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +0 -12
  179. package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +0 -12
  180. package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +0 -12
  181. package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +0 -12
  182. package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +0 -12
  183. package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +0 -12
  184. package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +0 -12
  185. package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +0 -39
  186. package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +0 -44
  187. package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +0 -45
  188. package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +0 -97
  189. package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +0 -109
  190. package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +0 -98
  191. package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +0 -75
  192. package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +0 -52
  193. package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +0 -63
  194. package/src/skills/cost-optimizer/test-results/README.md +0 -46
  195. package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +0 -23
  196. package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +0 -24
  197. package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +0 -23
  198. package/src/skills/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -13
  199. package/src/skills/diagrams-architect/test-cases/test-2-sequence-diagram.yaml +0 -13
  200. package/src/skills/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -13
  201. package/src/skills/diagrams-generator/test-cases/test-1.yaml +0 -9
  202. package/src/skills/diagrams-generator/test-cases/test-2.yaml +0 -9
  203. package/src/skills/diagrams-generator/test-cases/test-3.yaml +0 -8
  204. package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +0 -12
  205. package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +0 -12
  206. package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +0 -12
  207. package/src/skills/dotnet-backend/test-cases/test-1-rest-api.yaml +0 -14
  208. package/src/skills/dotnet-backend/test-cases/test-2-authentication.yaml +0 -13
  209. package/src/skills/dotnet-backend/test-cases/test-3-minimal-api.yaml +0 -13
  210. package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +0 -54
  211. package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +0 -64
  212. package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +0 -74
  213. package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +0 -98
  214. package/src/skills/figma-designer/test-cases/test-1-design-system.yaml +0 -13
  215. package/src/skills/figma-designer/test-cases/test-2-component-library.yaml +0 -13
  216. package/src/skills/figma-designer/test-cases/test-3-responsive-layout.yaml +0 -13
  217. package/src/skills/figma-implementer/test-cases/test-1-design-to-react.yaml +0 -13
  218. package/src/skills/figma-implementer/test-cases/test-2-storybook.yaml +0 -13
  219. package/src/skills/figma-implementer/test-cases/test-3-design-tokens.yaml +0 -13
  220. package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +0 -22
  221. package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +0 -21
  222. package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +0 -18
  223. package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +0 -29
  224. package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +0 -27
  225. package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +0 -28
  226. package/src/skills/frontend/test-cases/test-1-react-component.yaml +0 -13
  227. package/src/skills/frontend/test-cases/test-2-form-validation.yaml +0 -13
  228. package/src/skills/frontend/test-cases/test-3-state-management.yaml +0 -13
  229. package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +0 -12
  230. package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +0 -12
  231. package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +0 -12
  232. package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +0 -71
  233. package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +0 -85
  234. package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +0 -126
  235. package/src/skills/hetzner-provisioner/test-results/README.md +0 -259
  236. package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +0 -27
  237. package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +0 -30
  238. package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +0 -24
  239. package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +0 -95
  240. package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +0 -108
  241. package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +0 -87
  242. package/src/skills/jira-sync/test-cases/test-1.yaml +0 -9
  243. package/src/skills/jira-sync/test-cases/test-2.yaml +0 -9
  244. package/src/skills/jira-sync/test-cases/test-3.yaml +0 -10
  245. package/src/skills/nextjs/test-cases/test-1-app-router.yaml +0 -13
  246. package/src/skills/nextjs/test-cases/test-2-server-actions.yaml +0 -13
  247. package/src/skills/nextjs/test-cases/test-3-api-routes.yaml +0 -13
  248. package/src/skills/nodejs-backend/test-cases/test-1-express-api.yaml +0 -13
  249. package/src/skills/nodejs-backend/test-cases/test-2-prisma-orm.yaml +0 -13
  250. package/src/skills/nodejs-backend/test-cases/test-3-authentication.yaml +0 -13
  251. package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +0 -12
  252. package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +0 -12
  253. package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +0 -12
  254. package/src/skills/python-backend/test-cases/test-1-fastapi-crud.yaml +0 -13
  255. package/src/skills/python-backend/test-cases/test-2-sqlalchemy.yaml +0 -13
  256. package/src/skills/python-backend/test-cases/test-3-authentication.yaml +0 -13
  257. package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +0 -98
  258. package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +0 -73
  259. package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +0 -121
  260. package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +0 -145
  261. package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +0 -149
  262. package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +0 -12
  263. package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +0 -12
  264. package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +0 -12
  265. package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +0 -33
  266. package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +0 -42
  267. package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +0 -50
  268. package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +0 -148
  269. package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +0 -190
  270. package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +0 -233
  271. package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +0 -212
  272. package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +0 -461
  273. package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +0 -366
  274. package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +0 -12
  275. package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +0 -12
  276. package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +0 -12
  277. package/src/skills/specweave-ado-mapper/test-cases/test-1-export-to-ado.yaml +0 -13
  278. package/src/skills/specweave-ado-mapper/test-cases/test-2-import-from-ado.yaml +0 -13
  279. package/src/skills/specweave-ado-mapper/test-cases/test-3-bidirectional-sync.yaml +0 -13
  280. package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +0 -37
  281. package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +0 -37
  282. package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +0 -34
  283. package/src/skills/specweave-jira-mapper/test-cases/test-1-export-to-jira.yaml +0 -13
  284. package/src/skills/specweave-jira-mapper/test-cases/test-2-import-from-jira.yaml +0 -13
  285. package/src/skills/specweave-jira-mapper/test-cases/test-3-sync-status.yaml +0 -13
  286. package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +0 -12
  287. package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +0 -12
  288. package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +0 -12
  289. package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +0 -12
  290. package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +0 -12
  291. package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +0 -12
  292. package/src/templates/config.yaml +0 -351
  293. /package/src/commands/{list-increments.md → specweave.list-increments.md} +0 -0
@@ -2,20 +2,20 @@
2
2
  * Cursor Adapter
3
3
  *
4
4
  * Semi-automation adapter for Cursor editor.
5
- * Provides workflow instructions via .cursorrules and @ context shortcuts.
5
+ * Provides @ context shortcuts for quick context injection.
6
6
  *
7
- * Since Cursor doesn't natively support Claude Code's skills/agents/hooks,
8
- * this adapter teaches Cursor HOW TO BEHAVE LIKE it has these capabilities.
7
+ * Cursor automatically reads AGENTS.md (universal standard) for workflow instructions.
8
+ * This adapter only installs Cursor-specific features (@ shortcuts).
9
9
  */
10
10
 
11
11
  import * as path from 'path';
12
- import * as fs from 'fs-extra';
13
- import { AdapterBase } from '../adapter-base';
14
- import { AdapterOptions, AdapterFile } from '../adapter-interface';
12
+ import fs from 'fs-extra';
13
+ import { AdapterBase } from '../adapter-base.js';
14
+ import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
15
15
 
16
16
  export class CursorAdapter extends AdapterBase {
17
17
  name = 'cursor';
18
- description = 'Cursor adapter - Semi-automation with .cursorrules and @ context shortcuts';
18
+ description = 'Cursor adapter - Semi-automation with AGENTS.md and @ context shortcuts';
19
19
  automationLevel = 'semi' as const;
20
20
 
21
21
  /**
@@ -24,26 +24,22 @@ export class CursorAdapter extends AdapterBase {
24
24
  * Checks for:
25
25
  * - cursor command in PATH
26
26
  * - .cursor/ directory exists
27
- * - .cursorrules file exists
28
27
  */
29
28
  async detect(): Promise<boolean> {
30
29
  const hasCursorCLI = await this.commandExists('cursor');
31
30
  const hasCursorDir = await this.fileExists('.cursor');
32
- const hasCursorRules = await this.fileExists('.cursorrules');
33
31
 
34
- return hasCursorCLI || hasCursorDir || hasCursorRules;
32
+ return hasCursorCLI || hasCursorDir;
35
33
  }
36
34
 
37
35
  /**
38
36
  * Get files to install for Cursor adapter
37
+ *
38
+ * Note: Cursor automatically reads AGENTS.md (universal standard).
39
+ * This adapter only installs Cursor-specific @ context shortcuts.
39
40
  */
40
41
  getFiles(): AdapterFile[] {
41
42
  return [
42
- {
43
- sourcePath: '.cursorrules',
44
- targetPath: '.cursorrules',
45
- description: 'Cursor workflow instructions (how to act like skills/agents)'
46
- },
47
43
  {
48
44
  sourcePath: '.cursor/context/increments-context.md',
49
45
  targetPath: '.cursor/context/increments-context.md',
@@ -88,8 +84,7 @@ export class CursorAdapter extends AdapterBase {
88
84
 
89
85
  console.log('\n✨ Cursor adapter installed!');
90
86
  console.log('\n📋 Files created:');
91
- console.log(' - .cursorrules (workflow instructions)');
92
- console.log(' - .cursor/context/ (@ shortcuts)');
87
+ console.log(' - .cursor/context/ (@ shortcuts for quick context injection)');
93
88
  }
94
89
 
95
90
  /**
@@ -112,11 +107,13 @@ Your project is now configured for Cursor with SEMI-automation!
112
107
 
113
108
  WHAT THIS PROVIDES:
114
109
 
115
- - .cursorrules (Workflow Instructions)
116
- - Teaches Cursor HOW to act like Claude Code skills/agents
117
- - Step-by-step workflow for creating increments
118
- - Context loading strategy (70%+ token savings)
119
- - Increment lifecycle management
110
+ - AGENTS.md (Universal Standard)
111
+ - Cursor automatically reads this file
112
+ - Contains all workflow instructions
113
+ - Defines agent roles (PM, Architect, etc.)
114
+ - Defines skill capabilities (increment-planner, context-loader, etc.)
115
+ - Project structure and templates
116
+ - Following agents.md standard (https://agents.md/)
120
117
 
121
118
  - @ Context Shortcuts (Quick Access)
122
119
  - @increments - Load current increment files
@@ -134,72 +131,30 @@ Claude Code (Full Automation):
134
131
  - Native skills (auto-activate)
135
132
  - Native agents (separate context windows)
136
133
  - Native hooks (auto-update docs)
137
- - Slash commands (/create-increment)
134
+ - Slash commands (/inc, /do, /done)
138
135
 
139
136
  Cursor (Semi-Automation - This Adapter):
140
- - Simulated skills (via .cursorrules instructions)
141
- - Simulated agents (manual role invocation)
137
+ - Reads AGENTS.md for workflow instructions
138
+ - Manual role adoption (say "act as PM")
142
139
  - No hooks (manual doc updates)
143
- - Simulated commands (via workflow instructions)
144
-
145
- HOW WE BRIDGE THE GAP:
146
-
147
- Anthropic's standards (skills, agents, MCP) provide superior
148
- results. For Cursor, we provide "implementation guides"
149
- that teach Cursor's AI how to BEHAVE LIKE it has these
150
- capabilities, even without native support.
151
-
152
- Example: .cursorrules says:
153
- "When user requests feature, act like 'increment-planner' skill:
154
- 1. Read context-manifest.yaml
155
- 2. Load only files listed there
156
- 3. Invoke PM role: Create spec.md
157
- 4. Invoke Architect role: Create plan.md"
158
-
159
- HOW TO "IMPLEMENT" SKILLS IN CURSOR:
160
-
161
- What is a SpecWeave Skill?
162
- A skill is a specialized capability that activates when needed.
163
-
164
- In Claude Code: Skills are native (.claude/skills/)
165
- In Cursor: You simulate by reading relevant files
166
-
167
- Example: increment-planner skill
168
-
169
- Claude Code (automatic):
170
- User: "create increment for auth"
171
- → increment-planner skill activates automatically
172
-
173
- Cursor (manual simulation):
174
- User: "create increment for auth"
175
- → You read .cursorrules
176
- → Follow workflow: read config → create spec → create plan
177
- → Act like increment-planner by following those steps
178
-
179
- HOW TO "IMPLEMENT" AGENTS IN CURSOR:
180
-
181
- What is a SpecWeave Agent?
182
- An agent is a specialized role (PM, Architect, DevOps, etc.)
183
- with separate context window.
184
-
185
- In Claude Code: Agents have separate context windows
186
- In Cursor: You adopt the role's perspective
187
-
188
- Example: PM agent
140
+ - Manual workflows (follow AGENTS.md steps)
189
141
 
190
- Claude Code (automatic):
191
- Task({ subagent_type: "pm", prompt: "create spec" })
192
- → PM agent with separate context window
142
+ HOW CURSOR USES AGENTS.MD:
193
143
 
194
- Cursor (manual simulation):
195
- User: "act as PM agent and create spec"
196
- You adopt PM perspective:
197
- - Focus on WHAT and WHY (not HOW)
198
- - Technology-agnostic requirements
199
- - User stories and acceptance criteria
200
- → Create spec.md following PM role
144
+ Cursor automatically reads AGENTS.md to understand:
145
+ 1. Project structure (.specweave/ folders)
146
+ 2. How to create increments (spec.md, plan.md, tasks.md)
147
+ 3. Agent roles (PM defines WHAT/WHY, Architect designs HOW)
148
+ 4. Skill workflows (increment-planner, context-loader, etc.)
149
+ 5. Context manifests (70%+ token savings)
150
+ 6. Templates and examples
201
151
 
202
- Pro Tip: .cursorrules defines each role's responsibilities
152
+ When you say "create increment for auth":
153
+ → Cursor reads AGENTS.md
154
+ → Follows the workflow described there
155
+ → Creates spec.md (adopting PM role)
156
+ → Creates plan.md (adopting Architect role)
157
+ → Creates tasks.md
203
158
 
204
159
  QUICK START:
205
160
 
@@ -209,10 +164,10 @@ QUICK START:
209
164
  "Create increment for user authentication"
210
165
 
211
166
  Cursor will:
212
- - Read .cursorrules for workflow
167
+ - Read AGENTS.md for workflow
213
168
  - Ask clarifying questions
214
- - Create spec.md (acting as PM)
215
- - Create plan.md (acting as Architect)
169
+ - Create spec.md (acting as PM from AGENTS.md)
170
+ - Create plan.md (acting as Architect from AGENTS.md)
216
171
  - Create tasks.md
217
172
 
218
173
  3. Use @ shortcuts for context:
@@ -227,7 +182,7 @@ CONTEXT LOADING (70%+ Token Savings):
227
182
 
228
183
  CRITICAL: Always read context-manifest.yaml first!
229
184
 
230
- .cursorrules teaches Cursor:
185
+ AGENTS.md teaches Cursor:
231
186
  1. Look for .specweave/increments/####/context-manifest.yaml
232
187
  2. ONLY load files listed in manifest
233
188
  3. Don't load all specs (wastes tokens)
@@ -252,17 +207,16 @@ But still VERY good experience with Composer + @ shortcuts!
252
207
 
253
208
  DOCUMENTATION:
254
209
 
255
- - SPECWEAVE.md: Complete development guide
256
- - .cursorrules: Workflow instructions (READ THIS!)
210
+ - AGENTS.md: Universal workflow instructions (Cursor reads this!)
257
211
  - .cursor/README.md: Cursor-specific documentation
258
212
  - .specweave/docs/: Project documentation
259
213
 
260
214
  You're ready to build with SpecWeave on Cursor!
261
215
 
262
- Pro tip: Say "act as [role]" to simulate agents:
263
- - "act as PM and create spec"
264
- - "act as Architect and design system"
265
- - "act as DevOps and create infrastructure"
216
+ Pro tip: Say "act as [role]" to follow AGENTS.md patterns:
217
+ - "act as PM and create spec" (AGENTS.md defines PM role)
218
+ - "act as Architect and design system" (AGENTS.md defines Architect role)
219
+ - "act as DevOps and create infrastructure" (AGENTS.md defines DevOps role)
266
220
  `;
267
221
  }
268
222
  }
@@ -0,0 +1,331 @@
1
+ /**
2
+ * Documentation Generator for Adapters
3
+ *
4
+ * Generates markdown documentation from actual skills/agents/commands
5
+ * for use in adapter instruction files (.cursorrules, instructions.md, etc.)
6
+ */
7
+
8
+ import fs from 'fs-extra';
9
+ import * as path from 'path';
10
+ import * as YAML from 'yaml';
11
+ import { getDirname } from '../utils/esm-helpers.js';
12
+
13
+ const __dirname = getDirname(import.meta.url);
14
+
15
+ interface SkillMetadata {
16
+ name: string;
17
+ description: string;
18
+ location: string;
19
+ }
20
+
21
+ interface AgentMetadata {
22
+ name: string;
23
+ role: string;
24
+ description: string;
25
+ location: string;
26
+ }
27
+
28
+ interface CommandMetadata {
29
+ name: string;
30
+ description: string;
31
+ location: string;
32
+ }
33
+
34
+ /**
35
+ * Documentation Generator
36
+ */
37
+ export class DocGenerator {
38
+ private skillsDir: string;
39
+ private agentsDir: string;
40
+ private commandsDir: string;
41
+
42
+ constructor(
43
+ skillsDir: string = path.join(__dirname, '../skills'),
44
+ agentsDir: string = path.join(__dirname, '../agents'),
45
+ commandsDir: string = path.join(__dirname, '../commands')
46
+ ) {
47
+ this.skillsDir = skillsDir;
48
+ this.agentsDir = agentsDir;
49
+ this.commandsDir = commandsDir;
50
+ }
51
+
52
+ /**
53
+ * Extract skills metadata from SKILL.md files
54
+ */
55
+ async extractSkills(): Promise<SkillMetadata[]> {
56
+ const skills: SkillMetadata[] = [];
57
+
58
+ if (!await fs.pathExists(this.skillsDir)) {
59
+ return skills;
60
+ }
61
+
62
+ const skillFolders = await fs.readdir(this.skillsDir);
63
+
64
+ for (const folder of skillFolders) {
65
+ const skillPath = path.join(this.skillsDir, folder);
66
+ const skillFile = path.join(skillPath, 'SKILL.md');
67
+
68
+ if (await fs.pathExists(skillFile)) {
69
+ const content = await fs.readFile(skillFile, 'utf-8');
70
+ const metadata = this.extractYAMLFrontmatter(content);
71
+
72
+ if (metadata && metadata.name && metadata.description) {
73
+ skills.push({
74
+ name: metadata.name,
75
+ description: metadata.description,
76
+ location: `.claude/skills/${folder}/SKILL.md`
77
+ });
78
+ }
79
+ }
80
+ }
81
+
82
+ return skills.sort((a, b) => a.name.localeCompare(b.name));
83
+ }
84
+
85
+ /**
86
+ * Extract agents metadata from AGENT.md files
87
+ */
88
+ async extractAgents(): Promise<AgentMetadata[]> {
89
+ const agents: AgentMetadata[] = [];
90
+
91
+ if (!await fs.pathExists(this.agentsDir)) {
92
+ return agents;
93
+ }
94
+
95
+ const agentFolders = await fs.readdir(this.agentsDir);
96
+
97
+ for (const folder of agentFolders) {
98
+ const agentPath = path.join(this.agentsDir, folder);
99
+ const agentFile = path.join(agentPath, 'AGENT.md');
100
+
101
+ if (await fs.pathExists(agentFile)) {
102
+ const content = await fs.readFile(agentFile, 'utf-8');
103
+
104
+ // Extract role from content (look for "# [Role]" heading)
105
+ const roleMatch = content.match(/^#\s+(.+?)$/m);
106
+ const role = roleMatch ? roleMatch[1].trim() : folder;
107
+
108
+ // Extract description (first paragraph after frontmatter)
109
+ const descriptionMatch = content.match(/---\n[\s\S]*?---\n\n(.+?)(?:\n\n|$)/);
110
+ const description = descriptionMatch ? descriptionMatch[1].trim() : `${role} agent`;
111
+
112
+ agents.push({
113
+ name: folder,
114
+ role: role,
115
+ description: description,
116
+ location: `.claude/agents/${folder}/AGENT.md`
117
+ });
118
+ }
119
+ }
120
+
121
+ return agents.sort((a, b) => a.name.localeCompare(b.name));
122
+ }
123
+
124
+ /**
125
+ * Extract commands metadata from .md files
126
+ */
127
+ async extractCommands(): Promise<CommandMetadata[]> {
128
+ const commands: CommandMetadata[] = [];
129
+
130
+ if (!await fs.pathExists(this.commandsDir)) {
131
+ return commands;
132
+ }
133
+
134
+ const commandFiles = await fs.readdir(this.commandsDir);
135
+
136
+ for (const file of commandFiles) {
137
+ if (file.endsWith('.md') && file !== 'README.md') {
138
+ const commandPath = path.join(this.commandsDir, file);
139
+ const content = await fs.readFile(commandPath, 'utf-8');
140
+
141
+ // Extract description from first paragraph
142
+ const descriptionMatch = content.match(/^(.+?)(?:\n\n|$)/);
143
+ const description = descriptionMatch ? descriptionMatch[1].trim() : '';
144
+
145
+ const commandName = file.replace('.md', '');
146
+
147
+ commands.push({
148
+ name: commandName,
149
+ description: description,
150
+ location: `.claude/commands/${file}`
151
+ });
152
+ }
153
+ }
154
+
155
+ return commands.sort((a, b) => a.name.localeCompare(b.name));
156
+ }
157
+
158
+ /**
159
+ * Generate skills documentation for Cursor .cursorrules
160
+ */
161
+ async generateSkillsDocForCursor(): Promise<string> {
162
+ const skills = await this.extractSkills();
163
+
164
+ let doc = '## Available Skills (Read SKILL.md when task matches)\n\n';
165
+ doc += 'SpecWeave skills are specialized capabilities. In Claude Code, they auto-activate.\n';
166
+ doc += 'In Cursor, you simulate by reading the skill file and following its workflow.\n\n';
167
+
168
+ for (const skill of skills) {
169
+ doc += `### ${skill.name}\n`;
170
+ doc += `**File**: \`${skill.location}\`\n`;
171
+ doc += `**Description**: ${skill.description}\n`;
172
+ doc += `**How to use**: Read the SKILL.md file and follow the workflow described\n\n`;
173
+ }
174
+
175
+ return doc;
176
+ }
177
+
178
+ /**
179
+ * Generate agents documentation for Cursor .cursorrules
180
+ */
181
+ async generateAgentsDocForCursor(): Promise<string> {
182
+ const agents = await this.extractAgents();
183
+
184
+ let doc = '## Agent Roles (Adopt role when specialized expertise needed)\n\n';
185
+ doc += 'SpecWeave agents are specialized roles. In Claude Code, they have separate contexts.\n';
186
+ doc += 'In Cursor, you adopt the role\'s perspective and responsibilities.\n\n';
187
+
188
+ for (const agent of agents) {
189
+ doc += `### ${agent.role}\n`;
190
+ doc += `**File**: \`${agent.location}\`\n`;
191
+ doc += `**Description**: ${agent.description}\n`;
192
+ doc += `**When to adopt**: Say "Adopting ${agent.role} role..." and follow AGENT.md guidance\n\n`;
193
+ }
194
+
195
+ return doc;
196
+ }
197
+
198
+ /**
199
+ * Generate skills documentation for Copilot instructions.md
200
+ */
201
+ async generateSkillsDocForCopilot(): Promise<string> {
202
+ const skills = await this.extractSkills();
203
+
204
+ let doc = '## Available Capabilities (SpecWeave Skills)\n\n';
205
+ doc += 'The project uses these specialized capabilities:\n\n';
206
+
207
+ for (const skill of skills) {
208
+ doc += `- **${skill.name}**: ${skill.description}\n`;
209
+ }
210
+
211
+ doc += '\n_Note: These are defined in `.claude/skills/` but work as documentation for code suggestions._\n\n';
212
+
213
+ return doc;
214
+ }
215
+
216
+ /**
217
+ * Generate agents documentation for Copilot instructions.md
218
+ */
219
+ async generateAgentsDocForCopilot(): Promise<string> {
220
+ const agents = await this.extractAgents();
221
+
222
+ let doc = '## Project Roles (SpecWeave Agents)\n\n';
223
+ doc += 'Code in this project follows these role-based patterns:\n\n';
224
+
225
+ for (const agent of agents) {
226
+ doc += `- **${agent.role}**: ${agent.description}\n`;
227
+ }
228
+
229
+ doc += '\n_Note: These are defined in `.claude/agents/` but inform code patterns and suggestions._\n\n';
230
+
231
+ return doc;
232
+ }
233
+
234
+ /**
235
+ * Generate complete manual workflow for generic adapter
236
+ */
237
+ async generateManualWorkflow(): Promise<string> {
238
+ const skills = await this.extractSkills();
239
+ const agents = await this.extractAgents();
240
+ const commands = await this.extractCommands();
241
+
242
+ let doc = '# SpecWeave Manual Workflow Guide\n\n';
243
+ doc += '_For use with ANY AI tool (ChatGPT, Claude web, Gemini, etc.)_\n\n';
244
+ doc += '---\n\n';
245
+
246
+ doc += '## What is SpecWeave?\n\n';
247
+ doc += 'SpecWeave is a spec-driven development framework where specifications are the source of truth.\n';
248
+ doc += 'This manual shows you how to use SpecWeave WITHOUT specialized tools (works with ANY AI).\n\n';
249
+
250
+ doc += '## Available Capabilities\n\n';
251
+ doc += 'While you can\'t auto-activate these like Claude Code, you can reference them:\n\n';
252
+
253
+ doc += '### Skills\n\n';
254
+ for (const skill of skills.slice(0, 10)) { // Top 10 skills
255
+ doc += `- **${skill.name}**: ${skill.description}\n`;
256
+ }
257
+ doc += `\n_...and ${skills.length - 10} more in \`.claude/skills/\`_\n\n`;
258
+
259
+ doc += '### Roles\n\n';
260
+ for (const agent of agents) {
261
+ doc += `- **${agent.role}**: ${agent.description}\n`;
262
+ }
263
+ doc += '\n';
264
+
265
+ doc += '## Step-by-Step: Creating a Feature\n\n';
266
+ doc += '### Step 1: Create Increment Folder\n\n';
267
+ doc += '```bash\n';
268
+ doc += 'mkdir -p .specweave/increments/0001-feature-name\n';
269
+ doc += '```\n\n';
270
+
271
+ doc += '### Step 2: Create spec.md (Act as Product Manager)\n\n';
272
+ doc += '_Copy this template to your AI and ask it to fill it out:_\n\n';
273
+ doc += '```markdown\n';
274
+ doc += '---\n';
275
+ doc += 'increment: 0001-feature-name\n';
276
+ doc += 'title: "Feature Title"\n';
277
+ doc += 'priority: P1\n';
278
+ doc += 'status: planned\n';
279
+ doc += '---\n\n';
280
+ doc += '# Increment 0001: Feature Name\n\n';
281
+ doc += '## Overview\n';
282
+ doc += '[Problem and solution]\n\n';
283
+ doc += '## User Stories\n';
284
+ doc += '[User stories with acceptance criteria]\n';
285
+ doc += '```\n\n';
286
+
287
+ doc += '### Step 3: Create plan.md (Act as Architect)\n\n';
288
+ doc += '_Copy this template to your AI:_\n\n';
289
+ doc += '```markdown\n';
290
+ doc += '# Technical Plan: Feature Name\n\n';
291
+ doc += '## Architecture\n';
292
+ doc += '[Component design]\n\n';
293
+ doc += '## Data Model\n';
294
+ doc += '[Database schema]\n';
295
+ doc += '```\n\n';
296
+
297
+ doc += '### Step 4: Create tasks.md\n\n';
298
+ doc += '```markdown\n';
299
+ doc += '# Implementation Tasks\n\n';
300
+ doc += '- [ ] T001: Task 1\n';
301
+ doc += '- [ ] T002: Task 2\n';
302
+ doc += '```\n\n';
303
+
304
+ doc += '### Step 5: Create context-manifest.yaml\n\n';
305
+ doc += '```yaml\n';
306
+ doc += 'spec_sections:\n';
307
+ doc += ' - .specweave/docs/internal/strategy/relevant-spec.md\n';
308
+ doc += 'documentation:\n';
309
+ doc += ' - .specweave/docs/internal/architecture/relevant-design.md\n';
310
+ doc += '```\n\n';
311
+
312
+ doc += '## Complete Workflow Reference\n\n';
313
+ doc += 'For detailed guidance, see SPECWEAVE.md in the project root.\n\n';
314
+
315
+ return doc;
316
+ }
317
+
318
+ /**
319
+ * Extract YAML frontmatter from markdown content
320
+ */
321
+ private extractYAMLFrontmatter(content: string): any {
322
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
323
+ if (!match) return null;
324
+
325
+ try {
326
+ return YAML.parse(match[1]);
327
+ } catch (error) {
328
+ return null;
329
+ }
330
+ }
331
+ }
@@ -0,0 +1,97 @@
1
+ # Gemini CLI Adapter
2
+
3
+ **Automation Level**: Semi (Good experience with 1M context window and agent mode)
4
+
5
+ ## Overview
6
+
7
+ The Gemini CLI adapter provides **semi-automation** for SpecWeave using Google's open-source Gemini CLI tool with **AGENTS.md** as the universal instruction file.
8
+
9
+ ## Key Features
10
+
11
+ - **1M Token Context Window**: Handle massive specifications
12
+ - **Agent Mode**: Multi-file task completion with approval workflow
13
+ - **MCP Support**: Model Context Protocol for extensibility
14
+ - **Built-in Tools**: File operations, shell commands, Google Search, web fetching
15
+ - **Free Tier**: Gemini 2.5 Pro included (60 req/min, 1K req/day)
16
+ - **Open Source**: Apache 2.0 license
17
+
18
+ ## Installation
19
+
20
+ ```bash
21
+ # Install Gemini CLI
22
+ npm install -g @google-cloud/gemini-cli
23
+
24
+ # Authenticate
25
+ gemini auth
26
+
27
+ # Initialize SpecWeave project with Gemini adapter
28
+ npx specweave init my-project --adapter gemini
29
+ ```
30
+
31
+ ## How It Works
32
+
33
+ Gemini CLI reads **AGENTS.md** (universal instruction file) for SpecWeave context:
34
+
35
+ ```bash
36
+ gemini "Read AGENTS.md and create increment for user authentication"
37
+ ```
38
+
39
+ Gemini will:
40
+ 1. Read AGENTS.md for project structure and roles
41
+ 2. Adopt PM role: Create spec.md (WHAT/WHY)
42
+ 3. Adopt Architect role: Create plan.md (HOW)
43
+ 4. Create tasks.md (implementation checklist)
44
+ 5. Use agent mode for multi-file operations
45
+
46
+ ## Universal AGENTS.md
47
+
48
+ Instead of tool-specific files (.cursorrules, copilot instructions), SpecWeave uses **AGENTS.md** that works with ALL tools:
49
+
50
+ - ✅ Gemini CLI
51
+ - ✅ Codex (OpenAI)
52
+ - ✅ Cursor
53
+ - ✅ GitHub Copilot
54
+ - ✅ ANY AI tool
55
+
56
+ **Single source of truth** = easier maintenance!
57
+
58
+ ## Example Workflows
59
+
60
+ ### Create Feature
61
+ ```bash
62
+ gemini "Read AGENTS.md. Create increment 0002 for payment processing with Stripe."
63
+ ```
64
+
65
+ ### Implement Task
66
+ ```bash
67
+ gemini "Read increment 0002, implement task T001"
68
+ ```
69
+
70
+ ### Context Loading (70%+ Token Savings)
71
+ ```bash
72
+ gemini "Read context-manifest.yaml from increment 0001, load only those files, then implement T001"
73
+ ```
74
+
75
+ ## Comparison with Claude Code
76
+
77
+ | Feature | Claude Code | Gemini CLI |
78
+ |---------|-------------|------------|
79
+ | **Automation** | Full | Semi |
80
+ | **Context** | 200k tokens | 1M tokens (5x!) |
81
+ | **Skills** | Native | Via AGENTS.md |
82
+ | **Agents** | Native (separate contexts) | Via AGENTS.md (manual adoption) |
83
+ | **Hooks** | Yes (auto-update) | No (manual) |
84
+ | **Cost** | Paid | Free tier available |
85
+ | **Open Source** | No | Yes (Apache 2.0) |
86
+
87
+ ## Links
88
+
89
+ - [Gemini CLI Documentation](https://developers.google.com/gemini-code-assist/docs/gemini-cli)
90
+ - [GitHub Repository](https://github.com/google-gemini/gemini-cli)
91
+ - [SpecWeave Website](https://spec-weave.com)
92
+
93
+ ---
94
+
95
+ **Status**: Active (v0.2.0+)
96
+ **Market Share**: Growing (Google's AI coding tool)
97
+ **Priority**: P1 (high impact - 1M context window!)