agent-toolkit-cli 1.11.0__py3-none-win_amd64.whl

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 (438) hide show
  1. agent_toolkit/__init__.py +4 -0
  2. agent_toolkit/__main__.py +5 -0
  3. agent_toolkit/_paths.py +145 -0
  4. agent_toolkit/bin/.gitkeep +0 -0
  5. agent_toolkit/bin/agent-toolkit.exe +0 -0
  6. agent_toolkit/cli/__init__.py +0 -0
  7. agent_toolkit/cli/__main__.py +5 -0
  8. agent_toolkit/cli/build.py +278 -0
  9. agent_toolkit/cli/completion.py +297 -0
  10. agent_toolkit/cli/context_budget.py +455 -0
  11. agent_toolkit/cli/devcompanion.py +923 -0
  12. agent_toolkit/cli/devcompanion_queue.py +235 -0
  13. agent_toolkit/cli/diff.py +176 -0
  14. agent_toolkit/cli/doctor.py +1052 -0
  15. agent_toolkit/cli/insights.py +771 -0
  16. agent_toolkit/cli/install.py +706 -0
  17. agent_toolkit/cli/main.py +171 -0
  18. agent_toolkit/cli/mcp.py +537 -0
  19. agent_toolkit/cli/memory.py +739 -0
  20. agent_toolkit/cli/plugin.py +224 -0
  21. agent_toolkit/cli/project.py +459 -0
  22. agent_toolkit/cli/release.py +178 -0
  23. agent_toolkit/cli/skills.py +461 -0
  24. agent_toolkit/cli/uninstall.py +166 -0
  25. agent_toolkit/cli/update.py +298 -0
  26. agent_toolkit/cli/workspace.py +1713 -0
  27. agent_toolkit/compiler/hook_registry.py +110 -0
  28. agent_toolkit/compiler/loader.py +338 -0
  29. agent_toolkit/compiler/mcp_registry.py +87 -0
  30. agent_toolkit/compiler/model.py +182 -0
  31. agent_toolkit/compiler/provenance.py +140 -0
  32. agent_toolkit/compiler/registry_emit.py +263 -0
  33. agent_toolkit/compiler/target_registry.py +122 -0
  34. agent_toolkit/compiler/targets/__init__.py +1 -0
  35. agent_toolkit/compiler/targets/agent_plugins.py +160 -0
  36. agent_toolkit/compiler/targets/base.py +229 -0
  37. agent_toolkit/compiler/targets/claude_code.py +241 -0
  38. agent_toolkit/compiler/targets/codex.py +261 -0
  39. agent_toolkit/compiler/targets/copilot.py +275 -0
  40. agent_toolkit/compiler/targets/cursor.py +207 -0
  41. agent_toolkit/compiler/targets/gemini_cli.py +213 -0
  42. agent_toolkit/compiler/targets/muse_code.py +113 -0
  43. agent_toolkit/compiler/targets/opencode.py +204 -0
  44. agent_toolkit/compiler/targets/pi.py +263 -0
  45. agent_toolkit/compiler/targets/windsurf.py +267 -0
  46. agent_toolkit/compiler/tool_mapping.py +83 -0
  47. agent_toolkit/data/.gitignore +4 -0
  48. agent_toolkit/data/__init__.py +1 -0
  49. agent_toolkit/data/agents/agentic-security-reviewer/AGENT.md +60 -0
  50. agent_toolkit/data/agents/architect/AGENT.md +30 -0
  51. agent_toolkit/data/agents/assistant/AGENT.md +59 -0
  52. agent_toolkit/data/agents/build-error-resolver/AGENT.md +30 -0
  53. agent_toolkit/data/agents/client-workflow-bootstrap/AGENT.md +60 -0
  54. agent_toolkit/data/agents/code-reviewer/AGENT.md +49 -0
  55. agent_toolkit/data/agents/database-reviewer/AGENT.md +44 -0
  56. agent_toolkit/data/agents/docs-lookup/AGENT.md +28 -0
  57. agent_toolkit/data/agents/e2e-runner/AGENT.md +38 -0
  58. agent_toolkit/data/agents/performance-optimizer/AGENT.md +52 -0
  59. agent_toolkit/data/agents/planner/AGENT.md +41 -0
  60. agent_toolkit/data/agents/refactor-cleaner/AGENT.md +43 -0
  61. agent_toolkit/data/agents/reference-lookup/AGENT.md +33 -0
  62. agent_toolkit/data/agents/security-reviewer/AGENT.md +47 -0
  63. agent_toolkit/data/agents/tdd-guide/AGENT.md +58 -0
  64. agent_toolkit/data/agents/tech-assistant/AGENT.md +11 -0
  65. agent_toolkit/data/agents/typescript-reviewer/AGENT.md +61 -0
  66. agent_toolkit/data/capabilities/hooks/README.md +6 -0
  67. agent_toolkit/data/capabilities/hooks/pre-commit-validate.yaml +26 -0
  68. agent_toolkit/data/capabilities/hooks/scripts/pre-commit-validate.sh +41 -0
  69. agent_toolkit/data/capabilities/hooks/scripts/session-start-context.sh +11 -0
  70. agent_toolkit/data/capabilities/hooks/session-start-context.yaml +23 -0
  71. agent_toolkit/data/capabilities/targets/registry.yaml +90 -0
  72. agent_toolkit/data/capabilities/upstream.lock +118 -0
  73. agent_toolkit/data/catalogs/agent-catalog.yaml +81 -0
  74. agent_toolkit/data/catalogs/loop-catalog.yaml +55 -0
  75. agent_toolkit/data/catalogs/skill-catalog.yaml +520 -0
  76. agent_toolkit/data/catalogs/skills-layout.json +391 -0
  77. agent_toolkit/data/distributions/products.yaml +190 -0
  78. agent_toolkit/data/distributions/targets/claude-code.yaml +47 -0
  79. agent_toolkit/data/distributions/targets/cursor.yaml +42 -0
  80. agent_toolkit/data/distributions/targets/opencode.yaml +55 -0
  81. agent_toolkit/data/loops/changelog-drafter/loop.yaml +40 -0
  82. agent_toolkit/data/loops/ci-sweeper/loop.yaml +53 -0
  83. agent_toolkit/data/loops/daily-triage/loop.yaml +47 -0
  84. agent_toolkit/data/loops/dep-sweeper/loop.yaml +46 -0
  85. agent_toolkit/data/loops/issue-triage/loop.yaml +40 -0
  86. agent_toolkit/data/loops/oss-daily-briefing/loop.yaml +65 -0
  87. agent_toolkit/data/loops/oss-pr-monitor/loop.yaml +86 -0
  88. agent_toolkit/data/loops/oss-triage/loop.yaml +67 -0
  89. agent_toolkit/data/loops/post-merge-cleanup/loop.yaml +44 -0
  90. agent_toolkit/data/loops/pr-babysitter/loop.yaml +46 -0
  91. agent_toolkit/data/mcp/registry/chrome-devtools.yaml +61 -0
  92. agent_toolkit/data/mcp/registry/clickup.yaml +48 -0
  93. agent_toolkit/data/mcp/registry/figma.yaml +44 -0
  94. agent_toolkit/data/mcp/registry/github.yaml +52 -0
  95. agent_toolkit/data/mcp/registry/linear.yaml +47 -0
  96. agent_toolkit/data/mcp/registry/notion.yaml +48 -0
  97. agent_toolkit/data/mcp/registry/slack.yaml +46 -0
  98. agent_toolkit/data/mcp/templates/chrome-devtools/README.md +57 -0
  99. agent_toolkit/data/mcp/templates/chrome-devtools/config.template.json +6 -0
  100. agent_toolkit/data/mcp/templates/clickup/README.md +45 -0
  101. agent_toolkit/data/mcp/templates/clickup/config.template.json +8 -0
  102. agent_toolkit/data/mcp/templates/clickup/wrapper.sh +23 -0
  103. agent_toolkit/data/mcp/templates/figma/README.md +54 -0
  104. agent_toolkit/data/mcp/templates/figma/config.template.json +9 -0
  105. agent_toolkit/data/mcp/templates/github/README.md +16 -0
  106. agent_toolkit/data/mcp/templates/github/config.template.json +15 -0
  107. agent_toolkit/data/mcp/templates/github/wrapper.sh +6 -0
  108. agent_toolkit/data/mcp/templates/linear/README.md +49 -0
  109. agent_toolkit/data/mcp/templates/linear/config.template.json +10 -0
  110. agent_toolkit/data/mcp/templates/notion/README.md +7 -0
  111. agent_toolkit/data/mcp/templates/notion/config.template.json +8 -0
  112. agent_toolkit/data/mcp/templates/notion/wrapper.sh +23 -0
  113. agent_toolkit/data/mcp/templates/slack/README.md +8 -0
  114. agent_toolkit/data/mcp/templates/slack/config.template.json +9 -0
  115. agent_toolkit/data/mcp/templates/slack/wrapper.sh +23 -0
  116. agent_toolkit/data/packs/README.md +66 -0
  117. agent_toolkit/data/packs/agentic-security/README.md +19 -0
  118. agent_toolkit/data/packs/agentic-security/config.yaml +25 -0
  119. agent_toolkit/data/packs/architecture/README.md +22 -0
  120. agent_toolkit/data/packs/architecture/config.yaml +27 -0
  121. agent_toolkit/data/packs/code-quality/README.md +19 -0
  122. agent_toolkit/data/packs/code-quality/config.yaml +21 -0
  123. agent_toolkit/data/packs/delivery-discipline/README.md +19 -0
  124. agent_toolkit/data/packs/delivery-discipline/config.yaml +42 -0
  125. agent_toolkit/data/packs/design-engineering/README.md +19 -0
  126. agent_toolkit/data/packs/design-engineering/config.yaml +41 -0
  127. agent_toolkit/data/packs/engineering-workflow/README.md +21 -0
  128. agent_toolkit/data/packs/engineering-workflow/config.yaml +57 -0
  129. agent_toolkit/data/packs/oss-maintenance/README.md +245 -0
  130. agent_toolkit/data/packs/oss-maintenance/config.yaml +75 -0
  131. agent_toolkit/data/profiles/claude-code/CLAUDE.md +110 -0
  132. agent_toolkit/data/profiles/claude-code/agents/assistant.md +59 -0
  133. agent_toolkit/data/profiles/claude-code/agents/build-error-resolver.md +30 -0
  134. agent_toolkit/data/profiles/claude-code/agents/client-workflow-bootstrap.md +60 -0
  135. agent_toolkit/data/profiles/claude-code/agents/contribution-planner.md +39 -0
  136. agent_toolkit/data/profiles/claude-code/agents/database-reviewer.md +44 -0
  137. agent_toolkit/data/profiles/claude-code/agents/docs-lookup.md +28 -0
  138. agent_toolkit/data/profiles/claude-code/agents/e2e-runner.md +38 -0
  139. agent_toolkit/data/profiles/claude-code/agents/performance-optimizer.md +52 -0
  140. agent_toolkit/data/profiles/claude-code/agents/planner.md +41 -0
  141. agent_toolkit/data/profiles/claude-code/agents/refactor-cleaner.md +43 -0
  142. agent_toolkit/data/profiles/claude-code/agents/reference-lookup.md +33 -0
  143. agent_toolkit/data/profiles/claude-code/agents/security-reviewer.md +47 -0
  144. agent_toolkit/data/profiles/claude-code/agents/tdd-guide.md +58 -0
  145. agent_toolkit/data/profiles/claude-code/agents/typescript-reviewer.md +61 -0
  146. agent_toolkit/data/profiles/claude-code/settings.json +86 -0
  147. agent_toolkit/data/profiles/copilot/copilot-instructions.md +15 -0
  148. agent_toolkit/data/profiles/cursor/README.md +33 -0
  149. agent_toolkit/data/profiles/cursor/rules/architect.mdc +23 -0
  150. agent_toolkit/data/profiles/cursor/rules/assistant.mdc +61 -0
  151. agent_toolkit/data/profiles/cursor/rules/build-error-resolver.mdc +20 -0
  152. agent_toolkit/data/profiles/cursor/rules/code-reviewer.mdc +21 -0
  153. agent_toolkit/data/profiles/cursor/rules/database-reviewer.mdc +29 -0
  154. agent_toolkit/data/profiles/cursor/rules/docs-lookup.mdc +15 -0
  155. agent_toolkit/data/profiles/cursor/rules/e2e-runner.mdc +30 -0
  156. agent_toolkit/data/profiles/cursor/rules/performance-optimizer.mdc +27 -0
  157. agent_toolkit/data/profiles/cursor/rules/planner.mdc +28 -0
  158. agent_toolkit/data/profiles/cursor/rules/refactor-cleaner.mdc +26 -0
  159. agent_toolkit/data/profiles/cursor/rules/reference-lookup.mdc +20 -0
  160. agent_toolkit/data/profiles/cursor/rules/security-reviewer.mdc +20 -0
  161. agent_toolkit/data/profiles/cursor/rules/tdd-guide.mdc +26 -0
  162. agent_toolkit/data/profiles/cursor/rules/typescript-reviewer.mdc +28 -0
  163. agent_toolkit/data/profiles/muse-code/README.md +35 -0
  164. agent_toolkit/data/profiles/opencode/README.md +44 -0
  165. agent_toolkit/data/profiles/opencode/agents/architect.md +30 -0
  166. agent_toolkit/data/profiles/opencode/agents/assistant.md +96 -0
  167. agent_toolkit/data/profiles/opencode/agents/build-error-resolver.md +31 -0
  168. agent_toolkit/data/profiles/opencode/agents/client-workflow-bootstrap.md +66 -0
  169. agent_toolkit/data/profiles/opencode/agents/code-reviewer.md +47 -0
  170. agent_toolkit/data/profiles/opencode/agents/contribution-planner.md +44 -0
  171. agent_toolkit/data/profiles/opencode/agents/database-reviewer.md +43 -0
  172. agent_toolkit/data/profiles/opencode/agents/docs-lookup.md +28 -0
  173. agent_toolkit/data/profiles/opencode/agents/e2e-runner.md +33 -0
  174. agent_toolkit/data/profiles/opencode/agents/performance-optimizer.md +34 -0
  175. agent_toolkit/data/profiles/opencode/agents/planner.md +27 -0
  176. agent_toolkit/data/profiles/opencode/agents/refactor-cleaner.md +27 -0
  177. agent_toolkit/data/profiles/opencode/agents/reference-lookup.md +27 -0
  178. agent_toolkit/data/profiles/opencode/agents/security-reviewer.md +27 -0
  179. agent_toolkit/data/profiles/opencode/agents/tdd-guide.md +27 -0
  180. agent_toolkit/data/profiles/opencode/agents/typescript-reviewer.md +30 -0
  181. agent_toolkit/data/profiles/opencode/opencode.json +3 -0
  182. agent_toolkit/data/profiles/pi/skills/architect/skill.md +5 -0
  183. agent_toolkit/data/profiles/pi/skills/assistant/skill.md +3 -0
  184. agent_toolkit/data/profiles/pi/skills/code-reviewer/skill.md +5 -0
  185. agent_toolkit/data/profiles/pi/skills/planner/skill.md +3 -0
  186. agent_toolkit/data/profiles/pi/skills/security-reviewer/skill.md +3 -0
  187. agent_toolkit/data/profiles/windsurf/memories/global_rules.md +114 -0
  188. agent_toolkit/data/profiles/windsurf/rules/architect.mdc +23 -0
  189. agent_toolkit/data/profiles/windsurf/rules/assistant.mdc +61 -0
  190. agent_toolkit/data/profiles/windsurf/rules/build-error-resolver.mdc +20 -0
  191. agent_toolkit/data/profiles/windsurf/rules/code-reviewer.mdc +21 -0
  192. agent_toolkit/data/profiles/windsurf/rules/database-reviewer.mdc +29 -0
  193. agent_toolkit/data/profiles/windsurf/rules/docs-lookup.mdc +15 -0
  194. agent_toolkit/data/profiles/windsurf/rules/e2e-runner.mdc +30 -0
  195. agent_toolkit/data/profiles/windsurf/rules/performance-optimizer.mdc +27 -0
  196. agent_toolkit/data/profiles/windsurf/rules/planner.mdc +28 -0
  197. agent_toolkit/data/profiles/windsurf/rules/refactor-cleaner.mdc +26 -0
  198. agent_toolkit/data/profiles/windsurf/rules/reference-lookup.mdc +20 -0
  199. agent_toolkit/data/profiles/windsurf/rules/security-reviewer.mdc +20 -0
  200. agent_toolkit/data/profiles/windsurf/rules/tdd-guide.mdc +26 -0
  201. agent_toolkit/data/profiles/windsurf/rules/typescript-reviewer.mdc +28 -0
  202. agent_toolkit/data/skills/accessibility/review/SKILL.md +116 -0
  203. agent_toolkit/data/skills/accessibility/review/references/a11y-checklist.md +25 -0
  204. agent_toolkit/data/skills/accessibility/review/references/a11y-findings-template.md +56 -0
  205. agent_toolkit/data/skills/accessibility/review/references/research.md +47 -0
  206. agent_toolkit/data/skills/agentic-security/mcp-audit/SKILL.md +116 -0
  207. agent_toolkit/data/skills/agentic-security/mcp-audit/references/mcp-audit-template.md +51 -0
  208. agent_toolkit/data/skills/agentic-security/owasp-agentic-review/SKILL.md +73 -0
  209. agent_toolkit/data/skills/agentic-security/owasp-agentic-review/references/owasp-agentic-template.md +32 -0
  210. agent_toolkit/data/skills/agentic-security/supply-chain-audit/SKILL.md +142 -0
  211. agent_toolkit/data/skills/agentic-security/threat-modeling/SKILL.md +100 -0
  212. agent_toolkit/data/skills/agentic-security/threat-modeling/references/threat-model-template.md +55 -0
  213. agent_toolkit/data/skills/architecture/c4-model/SKILL.md +49 -0
  214. agent_toolkit/data/skills/cloud/aws-well-architected-review/SKILL.md +37 -0
  215. agent_toolkit/data/skills/cloud/cloud-design-patterns/SKILL.md +38 -0
  216. agent_toolkit/data/skills/core/assistant/SKILL.md +216 -0
  217. agent_toolkit/data/skills/core/assistant/references/AGENTS_TEMPLATE.md +0 -0
  218. agent_toolkit/data/skills/core/assistant/references/ORCHESTRATION.md +0 -0
  219. agent_toolkit/data/skills/core/assistant/references/REPO_INSPECTION.md +0 -0
  220. agent_toolkit/data/skills/core/dev-companion/SKILL.md +65 -0
  221. agent_toolkit/data/skills/core/dev-companion/references/LOOP_GUARDRAILS.md +0 -0
  222. agent_toolkit/data/skills/core/onboarding/SKILL.md +122 -0
  223. agent_toolkit/data/skills/core/output-handshake/SKILL.md +26 -0
  224. agent_toolkit/data/skills/core/pr-fallback/SKILL.md +35 -0
  225. agent_toolkit/data/skills/core/pr-fallback/references/pr-body-default.md +0 -0
  226. agent_toolkit/data/skills/core/project/SKILL.md +89 -0
  227. agent_toolkit/data/skills/core/workspace/SKILL.md +103 -0
  228. agent_toolkit/data/skills/core/workspace-knowledge-sync/SKILL.md +140 -0
  229. agent_toolkit/data/skills/data/dbt-validation/SKILL.md +41 -0
  230. agent_toolkit/data/skills/data/snowflake-validation/SKILL.md +38 -0
  231. agent_toolkit/data/skills/delivery/adr/SKILL.md +56 -0
  232. agent_toolkit/data/skills/delivery/adr/references/default-template.md +35 -0
  233. agent_toolkit/data/skills/delivery/adr/references/example-001-graphql-adoption.md +66 -0
  234. agent_toolkit/data/skills/delivery/agreement/SKILL.md +24 -0
  235. agent_toolkit/data/skills/delivery/agreement/references/default-template.md +17 -0
  236. agent_toolkit/data/skills/delivery/agreement/references/example-api-versioning.md +29 -0
  237. agent_toolkit/data/skills/delivery/bug/SKILL.md +26 -0
  238. agent_toolkit/data/skills/delivery/bug/references/default-template.md +26 -0
  239. agent_toolkit/data/skills/delivery/bug/references/example-search-filter-bug.md +58 -0
  240. agent_toolkit/data/skills/delivery/decision-log/SKILL.md +28 -0
  241. agent_toolkit/data/skills/delivery/decision-log/references/default-template.md +17 -0
  242. agent_toolkit/data/skills/delivery/decision-log/references/example-repository-pattern.md +27 -0
  243. agent_toolkit/data/skills/delivery/development-workflow/SKILL.md +34 -0
  244. agent_toolkit/data/skills/delivery/development-workflow/references/default-workflow-checklist.md +44 -0
  245. agent_toolkit/data/skills/delivery/epic/SKILL.md +22 -0
  246. agent_toolkit/data/skills/delivery/epic/references/default-template.md +26 -0
  247. agent_toolkit/data/skills/delivery/epic/references/example-unified-dashboard.md +40 -0
  248. agent_toolkit/data/skills/delivery/incident/SKILL.md +24 -0
  249. agent_toolkit/data/skills/delivery/incident/references/default-template.md +29 -0
  250. agent_toolkit/data/skills/delivery/incident/references/example-payment-outage.md +62 -0
  251. agent_toolkit/data/skills/delivery/management-unit-assessment/SKILL.md +104 -0
  252. agent_toolkit/data/skills/delivery/management-unit-assessment/references/default-template.md +24 -0
  253. agent_toolkit/data/skills/delivery/management-unit-assessment/references/example-team-assessment.md +126 -0
  254. agent_toolkit/data/skills/delivery/meeting-minutes/SKILL.md +25 -0
  255. agent_toolkit/data/skills/delivery/meeting-minutes/references/default-template.md +22 -0
  256. agent_toolkit/data/skills/delivery/meeting-minutes/references/example-weekly-sync.md +72 -0
  257. agent_toolkit/data/skills/delivery/planning/SKILL.md +31 -0
  258. agent_toolkit/data/skills/delivery/planning/references/default-template.md +25 -0
  259. agent_toolkit/data/skills/delivery/planning/references/example-sprint-planning.md +62 -0
  260. agent_toolkit/data/skills/delivery/prd/SKILL.md +46 -0
  261. agent_toolkit/data/skills/delivery/prd/references/default-template.md +31 -0
  262. agent_toolkit/data/skills/delivery/prd/references/example-unified-api.md +71 -0
  263. agent_toolkit/data/skills/delivery/project-assessment/SKILL.md +90 -0
  264. agent_toolkit/data/skills/delivery/project-assessment/references/default-template.md +26 -0
  265. agent_toolkit/data/skills/delivery/project-assessment/references/example-platform-assessment.md +122 -0
  266. agent_toolkit/data/skills/delivery/project-assessment-evidence/SKILL.md +88 -0
  267. agent_toolkit/data/skills/delivery/project-assessment-evidence/references/default-template.md +24 -0
  268. agent_toolkit/data/skills/delivery/project-assessment-evidence/references/example-evidence-map.md +46 -0
  269. agent_toolkit/data/skills/delivery/spike/SKILL.md +24 -0
  270. agent_toolkit/data/skills/delivery/spike/references/default-template.md +29 -0
  271. agent_toolkit/data/skills/delivery/spike/references/example-graphql-federation.md +79 -0
  272. agent_toolkit/data/skills/delivery/task/SKILL.md +21 -0
  273. agent_toolkit/data/skills/delivery/task/references/default-template.md +21 -0
  274. agent_toolkit/data/skills/delivery/task/references/example-nav-system.md +33 -0
  275. agent_toolkit/data/skills/delivery/technical-unit-assessment/SKILL.md +58 -0
  276. agent_toolkit/data/skills/delivery/technical-unit-assessment/references/default-template.md +26 -0
  277. agent_toolkit/data/skills/delivery/technical-unit-assessment/references/example-frontend-assessment.md +112 -0
  278. agent_toolkit/data/skills/delivery/technical-unit-assessment/references/indicator-groups.md +65 -0
  279. agent_toolkit/data/skills/delivery/trd/SKILL.md +49 -0
  280. agent_toolkit/data/skills/delivery/trd/references/default-template.md +31 -0
  281. agent_toolkit/data/skills/delivery/trd/references/example-api-migration.md +122 -0
  282. agent_toolkit/data/skills/delivery/user-story/SKILL.md +21 -0
  283. agent_toolkit/data/skills/delivery/user-story/references/default-template.md +21 -0
  284. agent_toolkit/data/skills/delivery/user-story/references/example-advanced-filtering.md +37 -0
  285. agent_toolkit/data/skills/delivery/work-item/SKILL.md +31 -0
  286. agent_toolkit/data/skills/delivery/work-item/references/default-template.md +21 -0
  287. agent_toolkit/data/skills/delivery/work-item/references/example-routing-dashboard.md +23 -0
  288. agent_toolkit/data/skills/delivery/workflow-client-bootstrap/SKILL.md +148 -0
  289. agent_toolkit/data/skills/delivery/workflow-client-bootstrap/questions.yaml +165 -0
  290. agent_toolkit/data/skills/delivery/workflow-generic-project/SKILL.md +79 -0
  291. agent_toolkit/data/skills/design/design-assessment/SKILL.md +150 -0
  292. agent_toolkit/data/skills/design/design-assessment/references/design-scorecard-template.md +78 -0
  293. agent_toolkit/data/skills/design/design-improvement/SKILL.md +167 -0
  294. agent_toolkit/data/skills/design/design-improvement/references/improvement-plan-template.md +113 -0
  295. agent_toolkit/data/skills/design/figma/LICENSE.txt +2 -0
  296. agent_toolkit/data/skills/design/figma/NOTICE.txt +25 -0
  297. agent_toolkit/data/skills/design/figma/SKILL.md +98 -0
  298. agent_toolkit/data/skills/design/figma/references/figma-mcp-config.md +82 -0
  299. agent_toolkit/data/skills/design/figma/references/figma-tools-and-prompts.md +34 -0
  300. agent_toolkit/data/skills/design/figma-code-connect-components/LICENSE.txt +2 -0
  301. agent_toolkit/data/skills/design/figma-code-connect-components/NOTICE.txt +18 -0
  302. agent_toolkit/data/skills/design/figma-code-connect-components/SKILL.md +354 -0
  303. agent_toolkit/data/skills/design/figma-code-connect-components/references/mapping-checklist.md +7 -0
  304. agent_toolkit/data/skills/design/figma-code-connect-components/scripts/normalize_node_id.py +25 -0
  305. agent_toolkit/data/skills/design/figma-create-design-system-rules/LICENSE.txt +2 -0
  306. agent_toolkit/data/skills/design/figma-create-design-system-rules/NOTICE.txt +19 -0
  307. agent_toolkit/data/skills/design/figma-create-design-system-rules/SKILL.md +554 -0
  308. agent_toolkit/data/skills/design/figma-create-design-system-rules/references/rule-template.md +15 -0
  309. agent_toolkit/data/skills/design/figma-create-design-system-rules/scripts/check_agents_md.sh +9 -0
  310. agent_toolkit/data/skills/design/figma-create-new-file/LICENSE.txt +2 -0
  311. agent_toolkit/data/skills/design/figma-create-new-file/NOTICE.txt +17 -0
  312. agent_toolkit/data/skills/design/figma-create-new-file/SKILL.md +72 -0
  313. agent_toolkit/data/skills/design/figma-implement-design/LICENSE.txt +2 -0
  314. agent_toolkit/data/skills/design/figma-implement-design/NOTICE.txt +19 -0
  315. agent_toolkit/data/skills/design/figma-implement-design/SKILL.md +268 -0
  316. agent_toolkit/data/skills/design/frontend-design/LICENSE.txt +177 -0
  317. agent_toolkit/data/skills/design/frontend-design/SKILL.md +82 -0
  318. agent_toolkit/data/skills/design/frontend-design/UPSTREAM.md +14 -0
  319. agent_toolkit/data/skills/design/frontend-design-review/LICENSE +21 -0
  320. agent_toolkit/data/skills/design/frontend-design-review/SKILL.md +194 -0
  321. agent_toolkit/data/skills/design/frontend-design-review/references/pattern-examples.md +21 -0
  322. agent_toolkit/data/skills/design/frontend-design-review/references/quick-checklist.md +38 -0
  323. agent_toolkit/data/skills/design/frontend-design-review/references/review-output-format.md +68 -0
  324. agent_toolkit/data/skills/design/frontend-design-review/references/review-type-modifiers.md +31 -0
  325. agent_toolkit/data/skills/design/web-design-guidelines/SKILL.md +78 -0
  326. agent_toolkit/data/skills/design/web-design-guidelines/references/LICENSE +21 -0
  327. agent_toolkit/data/skills/design/web-design-guidelines/references/web-interface-guidelines.md +180 -0
  328. agent_toolkit/data/skills/forge/gh-address-comments/LICENSE.txt +202 -0
  329. agent_toolkit/data/skills/forge/gh-address-comments/NOTICE.txt +20 -0
  330. agent_toolkit/data/skills/forge/gh-address-comments/SKILL.md +72 -0
  331. agent_toolkit/data/skills/forge/gh-address-comments/scripts/fetch_comments.py +239 -0
  332. agent_toolkit/data/skills/forge/gh-contribution-planner/SKILL.md +160 -0
  333. agent_toolkit/data/skills/forge/gh-contribution-planner/scripts/inspect_contributions.py +818 -0
  334. agent_toolkit/data/skills/forge/gh-fix-ci/LICENSE.txt +201 -0
  335. agent_toolkit/data/skills/forge/gh-fix-ci/NOTICE.txt +20 -0
  336. agent_toolkit/data/skills/forge/gh-fix-ci/SKILL.md +74 -0
  337. agent_toolkit/data/skills/forge/gh-fix-ci/scripts/inspect_pr_checks.py +509 -0
  338. agent_toolkit/data/skills/forge/github-cli-workflow/SKILL.md +49 -0
  339. agent_toolkit/data/skills/forge/gitlab-cli-workflow/SKILL.md +44 -0
  340. agent_toolkit/data/skills/forge/workflow-client-bootstrap/SKILL.md +14 -0
  341. agent_toolkit/data/skills/forge/workflow-generic-project/SKILL.md +14 -0
  342. agent_toolkit/data/skills/forge/worktree/SKILL.md +113 -0
  343. agent_toolkit/data/skills/integrations/clickup-cli/SKILL.md +78 -0
  344. agent_toolkit/data/skills/integrations/clickup-cli/references/docs-management.md +57 -0
  345. agent_toolkit/data/skills/integrations/clickup-cli/references/task-management.md +131 -0
  346. agent_toolkit/data/skills/integrations/clickup-cli/references/time-tracking.md +38 -0
  347. agent_toolkit/data/skills/integrations/linear/LICENSE.txt +202 -0
  348. agent_toolkit/data/skills/integrations/linear/NOTICE.txt +23 -0
  349. agent_toolkit/data/skills/integrations/linear/SKILL.md +134 -0
  350. agent_toolkit/data/skills/integrations/mcp/SKILL.md +88 -0
  351. agent_toolkit/data/skills/integrations/slack-assistant/SKILL.md +138 -0
  352. agent_toolkit/data/skills/integrations/slack-cli/SKILL.md +109 -0
  353. agent_toolkit/data/skills/integrations/slack-cli/references/INSTALLATION.md +42 -0
  354. agent_toolkit/data/skills/loops/loop-runner/SKILL.md +92 -0
  355. agent_toolkit/data/skills/ops/docs-generator/SKILL.md +120 -0
  356. agent_toolkit/data/skills/ops/llm-cost-advisor/SKILL.md +87 -0
  357. agent_toolkit/data/skills/ops/swarm/SKILL.md +108 -0
  358. agent_toolkit/data/skills/ops/swarm-handoff/SKILL.md +112 -0
  359. agent_toolkit/data/skills/ops/swarm-observer/SKILL.md +102 -0
  360. agent_toolkit/data/skills/ops/triage/SKILL.md +119 -0
  361. agent_toolkit/data/skills/quality/codeql/SKILL.md +106 -0
  362. agent_toolkit/data/skills/quality/codeql/references/codeql-queries.md +43 -0
  363. agent_toolkit/data/skills/quality/megalinter/SKILL.md +162 -0
  364. agent_toolkit/data/skills/quality/megalinter/references/megalinter-images.md +36 -0
  365. agent_toolkit/data/skills/quality/megalinter/references/megalinter-license.md +41 -0
  366. agent_toolkit/data/skills/quality/megalinter/references/megalinter-targets.md +66 -0
  367. agent_toolkit/data/skills/tooling/chrome-devtools/SKILL.md +146 -0
  368. agent_toolkit/data/skills/tooling/herdr/SKILL.md +109 -0
  369. agent_toolkit/data/skills/tooling/inventory/SKILL.md +81 -0
  370. agent_toolkit/data/skills/tooling/jupyter-notebook/LICENSE.txt +201 -0
  371. agent_toolkit/data/skills/tooling/jupyter-notebook/NOTICE.txt +27 -0
  372. agent_toolkit/data/skills/tooling/jupyter-notebook/SKILL.md +145 -0
  373. agent_toolkit/data/skills/tooling/jupyter-notebook/assets/experiment-template.ipynb +117 -0
  374. agent_toolkit/data/skills/tooling/jupyter-notebook/assets/tutorial-template.ipynb +115 -0
  375. agent_toolkit/data/skills/tooling/jupyter-notebook/references/experiment-patterns.md +10 -0
  376. agent_toolkit/data/skills/tooling/jupyter-notebook/references/notebook-structure.md +17 -0
  377. agent_toolkit/data/skills/tooling/jupyter-notebook/references/quality-checklist.md +11 -0
  378. agent_toolkit/data/skills/tooling/jupyter-notebook/references/tutorial-patterns.md +9 -0
  379. agent_toolkit/data/skills/tooling/jupyter-notebook/scripts/new_notebook.py +132 -0
  380. agent_toolkit/data/skills/tooling/mermaid/SKILL.md +36 -0
  381. agent_toolkit/data/skills/tooling/playwright-cli/LICENSE.txt +201 -0
  382. agent_toolkit/data/skills/tooling/playwright-cli/NOTICE.txt +29 -0
  383. agent_toolkit/data/skills/tooling/playwright-cli/SKILL.md +154 -0
  384. agent_toolkit/data/skills/tooling/playwright-cli/references/cli.md +116 -0
  385. agent_toolkit/data/skills/tooling/playwright-cli/references/workflows.md +98 -0
  386. agent_toolkit/data/skills/tooling/playwright-cli/scripts/executable_playwright_cli.sh +25 -0
  387. agent_toolkit/data_cache.py +79 -0
  388. agent_toolkit/data_sync.py +144 -0
  389. agent_toolkit/installer/__init__.py +0 -0
  390. agent_toolkit/installer/merge.py +59 -0
  391. agent_toolkit/installer/receipt.py +89 -0
  392. agent_toolkit/installer/sources.py +92 -0
  393. agent_toolkit/installer/tracking.py +63 -0
  394. agent_toolkit/launcher.py +69 -0
  395. agent_toolkit/loop/__init__.py +0 -0
  396. agent_toolkit/loop/budget.py +107 -0
  397. agent_toolkit/loop/gh_gate.py +923 -0
  398. agent_toolkit/loop/loop-gh-gate +923 -0
  399. agent_toolkit/loop/pack.py +65 -0
  400. agent_toolkit/loop/runner.py +2722 -0
  401. agent_toolkit/runner/__init__.py +0 -0
  402. agent_toolkit/runner/dispatcher.py +163 -0
  403. agent_toolkit/runner/policy.py +356 -0
  404. agent_toolkit/runner/providers/__init__.py +21 -0
  405. agent_toolkit/runner/providers/anthropic_provider.py +109 -0
  406. agent_toolkit/runner/providers/base.py +53 -0
  407. agent_toolkit/runner/providers/ollama_provider.py +108 -0
  408. agent_toolkit/runner/providers/openai_provider.py +103 -0
  409. agent_toolkit/runner/providers/opencode_provider.py +127 -0
  410. agent_toolkit/swarm/__init__.py +5 -0
  411. agent_toolkit/swarm/approvals.py +121 -0
  412. agent_toolkit/swarm/backends/__init__.py +596 -0
  413. agent_toolkit/swarm/budget.py +83 -0
  414. agent_toolkit/swarm/cli.py +2448 -0
  415. agent_toolkit/swarm/config.py +351 -0
  416. agent_toolkit/swarm/handoff.py +174 -0
  417. agent_toolkit/swarm/models.py +230 -0
  418. agent_toolkit/swarm/prompts.py +177 -0
  419. agent_toolkit/swarm/recipes.py +304 -0
  420. agent_toolkit/swarm/runner.py +267 -0
  421. agent_toolkit/swarm/state.py +93 -0
  422. agent_toolkit/swarm/store.py +148 -0
  423. agent_toolkit/swarm/worktree.py +105 -0
  424. agent_toolkit/templates/workspace/.gitignore +19 -0
  425. agent_toolkit/templates/workspace/AGENTS.md +82 -0
  426. agent_toolkit/templates/workspace/knowledge/README.md +22 -0
  427. agent_toolkit/templates/workspace/knowledge/learnings/general.md +3 -0
  428. agent_toolkit/templates/workspace/knowledge/todos/pending.md +7 -0
  429. agent_toolkit/templates/workspace/packs/README.md +24 -0
  430. agent_toolkit/templates/workspace/personas/architect.md +12 -0
  431. agent_toolkit/templates/workspace/personas/implementer.md +12 -0
  432. agent_toolkit/templates/workspace/personas/researcher.md +12 -0
  433. agent_toolkit/templates/workspace/personas/reviewer.md +12 -0
  434. agent_toolkit_cli-1.11.0.dist-info/METADATA +363 -0
  435. agent_toolkit_cli-1.11.0.dist-info/RECORD +438 -0
  436. agent_toolkit_cli-1.11.0.dist-info/WHEEL +4 -0
  437. agent_toolkit_cli-1.11.0.dist-info/entry_points.txt +4 -0
  438. agent_toolkit_cli-1.11.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,207 @@
1
+ """
2
+ Cursor IDE/CLI target adapter.
3
+
4
+ Compiles canonical IR into Cursor plugin bundles:
5
+ plugins/<product-id>/.cursor-plugin/plugin.json — marketplace manifest
6
+ plugins/<product-id>/skills/<name>/SKILL.md — on-demand procedures
7
+ plugins/<product-id>/agents/<name>/AGENT.md — agent personas
8
+
9
+ Key differences from Claude Code:
10
+ - Manifest key is `.cursor-plugin/`, not `.claude-plugin/`
11
+ - Rules (.mdc) are a separate surface from skills:
12
+ * Rules = persistent behavioral constraints (always-on in session)
13
+ * Skills = on-demand procedures with resources (invoked explicitly)
14
+ Rules are generated from agent/assistant instructions; they are NOT
15
+ a substitute for skills in the plugin bundle.
16
+ - Hook event names differ (workspaceOpen, sessionStart vs session.start)
17
+ - MCP config goes in .cursor/mcp.json, not .mcp.json
18
+
19
+ Official docs: https://cursor.com/docs/plugins
20
+ Research: docs/research/platform-capability-matrix.md (2026-08-04)
21
+ """
22
+
23
+ from __future__ import annotations
24
+
25
+ import json
26
+ from pathlib import Path
27
+
28
+ from agent_toolkit.compiler.model import (
29
+ Agent,
30
+ CanonicalGraph,
31
+ CompilationResult,
32
+ Product,
33
+ Skill,
34
+ )
35
+ from agent_toolkit.compiler.targets.base import TargetAdapter
36
+
37
+ # Cursor supports these .mdc rule frontmatter fields.
38
+ # We generate rules only from skill/agent behavioral constraints —
39
+ # NOT as a substitute for skills in the plugin bundle.
40
+ _CURSOR_RULE_HEADER = """\
41
+ ---
42
+ description: {description}
43
+ alwaysApply: {always_apply}
44
+ ---
45
+ """
46
+
47
+
48
+ class CursorAdapter(TargetAdapter):
49
+ """Compiles agent-toolkit products into Cursor plugin bundles.
50
+
51
+ Cursor reads both IDE and CLI from the same plugin bundle.
52
+ The generated bundle is installable via the Cursor marketplace or
53
+ local plugin development linking.
54
+
55
+ Capability parity:
56
+ native: skills, agents, plugin manifest
57
+ native-experimental: hooks (not yet implemented — pending hook model)
58
+ manual: MCP (user configures ~/.cursor/mcp.json separately)
59
+ unsupported: Windsurf-style always-on global rules
60
+ """
61
+
62
+ target_id = "cursor"
63
+ package_type = "plugin"
64
+ maturity = "stable"
65
+
66
+ def compile(self, graph: CanonicalGraph, product: Product) -> CompilationResult:
67
+ result = CompilationResult(target=self.target_id, product=product.id)
68
+ out_dir = self.output_root / product.id
69
+
70
+ # 1. Emit .cursor-plugin/plugin.json
71
+ plugin_json = self._build_plugin_json(product)
72
+ self._write_file(
73
+ out_dir / ".cursor-plugin" / "plugin.json",
74
+ json.dumps(plugin_json, indent=2) + "\n",
75
+ result,
76
+ )
77
+ result.emitted.append("plugin-manifest")
78
+
79
+ # 2. Emit skills (same Agent Skills SKILL.md format as Claude Code)
80
+ for skill_id in product.included_skills:
81
+ skill = graph.skills.get(skill_id)
82
+ if skill is None:
83
+ result.warnings.append(f"Skill '{skill_id}' not found — skipping")
84
+ result.omitted.append(f"skill:{skill_id}")
85
+ continue
86
+ self._emit_skill(skill, out_dir, result)
87
+
88
+ # 3. Emit agents (AGENT.md format)
89
+ for agent_id in product.included_agents:
90
+ agent = graph.agents.get(agent_id)
91
+ if agent is None:
92
+ result.warnings.append(f"Agent '{agent_id}' not found — skipping")
93
+ result.omitted.append(f"agent:{agent_id}")
94
+ continue
95
+ self._emit_agent(agent, out_dir, result)
96
+
97
+ # 4. Explicitly document unsupported/pending capabilities
98
+ # (never silently drop — always report)
99
+ result.unsupported.extend(
100
+ [
101
+ "hooks (pending canonical hook model — Cursor uses workspaceOpen/sessionStart events)",
102
+ "mcp (.cursor/mcp.json — user configures manually; not bundled in plugin)",
103
+ "cursor-rules (.mdc) — generated as a separate profile surface, not in plugin bundle",
104
+ ]
105
+ )
106
+
107
+ return result
108
+
109
+ # ── manifest ──────────────────────────────────────────────────────────────
110
+
111
+ def _build_plugin_json(self, product: Product) -> dict:
112
+ """Build the .cursor-plugin/plugin.json manifest.
113
+
114
+ Schema matches Claude Code plugin.json (both platforms share this format),
115
+ but Cursor resolves plugin root from .cursor-plugin/ not .claude-plugin/.
116
+ """
117
+ try:
118
+ from agent_toolkit import __version__
119
+
120
+ version = __version__
121
+ except ImportError:
122
+ version = "1.0.0"
123
+
124
+ return {
125
+ "name": product.id,
126
+ "version": version,
127
+ "description": product.description,
128
+ "author": {
129
+ "name": "ulises-jeremias",
130
+ "email": "ulisescf.24@gmail.com",
131
+ },
132
+ "homepage": "https://github.com/ulises-jeremias/agent-toolkit",
133
+ "repository": "https://github.com/ulises-jeremias/agent-toolkit",
134
+ "license": "MIT",
135
+ "keywords": [
136
+ "agent-toolkit",
137
+ product.id.replace("agent-toolkit-", ""),
138
+ "cursor",
139
+ "skills",
140
+ "agents",
141
+ ],
142
+ }
143
+
144
+ # ── skills ────────────────────────────────────────────────────────────────
145
+
146
+ def _emit_skill(self, skill: Skill, out_dir: Path, result: CompilationResult) -> None:
147
+ """Copy SKILL.md (and references/) into plugin skills/ directory.
148
+
149
+ Cursor discovers skills at <plugin-root>/skills/<name>/SKILL.md —
150
+ the same path as Claude Code. No transformation needed.
151
+ """
152
+ if not skill.source_path.exists():
153
+ result.warnings.append(f"Skill source missing: {skill.source_path}")
154
+ result.omitted.append(f"skill:{skill.id}")
155
+ return
156
+
157
+ dst = out_dir / "skills" / skill.name
158
+ dst.mkdir(parents=True, exist_ok=True)
159
+
160
+ content = skill.source_path.read_text(encoding="utf-8", errors="replace")
161
+ self._write_file(dst / "SKILL.md", content, result)
162
+
163
+ # Copy references/ (progressive disclosure)
164
+ self._copy_skill_references(skill, dst, result)
165
+
166
+ result.emitted.append(f"skill:{skill.id}")
167
+
168
+ # ── agents ────────────────────────────────────────────────────────────────
169
+
170
+ def _emit_agent(self, agent: Agent, out_dir: Path, result: CompilationResult) -> None:
171
+ """Copy AGENT.md into plugin agents/ directory.
172
+
173
+ Cursor discovers agents at <plugin-root>/agents/<name>/AGENT.md.
174
+ """
175
+ if not agent.source_path.exists():
176
+ result.warnings.append(f"Agent source missing: {agent.source_path}")
177
+ result.omitted.append(f"agent:{agent.id}")
178
+ return
179
+
180
+ dst = out_dir / "agents" / agent.name
181
+ dst.mkdir(parents=True, exist_ok=True)
182
+
183
+ content = agent.source_path.read_text(encoding="utf-8", errors="replace")
184
+ self._write_file(dst / "AGENT.md", content, result)
185
+ result.emitted.append(f"agent:{agent.id}")
186
+
187
+ # ── parity document ───────────────────────────────────────────────────────
188
+
189
+ @staticmethod
190
+ def parity_notes() -> str:
191
+ """Return honest parity notes for documentation generation."""
192
+ return (
193
+ "Cursor IDE and Cursor CLI both read from the same plugin bundle and "
194
+ "the same ~/.cursor/rules/ directory. No separate surface needed.\n"
195
+ "\n"
196
+ "Rules (.mdc files) are generated separately as a profile surface "
197
+ "(`profiles/cursor/rules/`) for users who install profiles manually. "
198
+ "They are NOT duplicated inside the plugin bundle because rules represent "
199
+ "persistent behavioral constraints, not the same semantic as on-demand skills.\n"
200
+ "\n"
201
+ "MCP: user configures ~/.cursor/mcp.json independently. The plugin does "
202
+ "not bundle MCP server configuration (pending MCP registry implementation).\n"
203
+ "\n"
204
+ "Hooks: Cursor supports workspaceOpen, sessionStart, sessionEnd, and other "
205
+ "lifecycle events. These require the canonical hook model to be defined first "
206
+ "(see issue #16)."
207
+ )
@@ -0,0 +1,213 @@
1
+ """
2
+ Gemini CLI extension adapter.
3
+
4
+ Generates a Gemini CLI extension bundle from the canonical IR.
5
+
6
+ Official docs:
7
+ https://github.com/google-gemini/gemini-cli/blob/main/docs/extensions/index.md
8
+ https://github.com/google-gemini/gemini-cli/blob/main/docs/extensions/reference.md
9
+ Gallery:
10
+ https://geminicli.com/extensions/
11
+ Research:
12
+ docs/research/platform-capability-matrix.md (2026-08-04)
13
+
14
+ Key differences from Claude Code / Cursor:
15
+ - Manifest: gemini-extension.json (at extension root)
16
+ - Commands: TOML format (not YAML frontmatter or Markdown)
17
+ Skills map to Gemini commands via TOML definitions
18
+ - MCP: native (mcpServers array in gemini-extension.json)
19
+ - Hooks: native (hooks/hooks.json, 8+ events: SessionStart, BeforeTool, etc.)
20
+ - Distribution: GitHub repo or geminicli.com gallery
21
+ - Path variables: use ${extensionPath} (not absolute paths)
22
+ - Context files: NOT a large always-on GEMINI.md — prefer minimal context
23
+ """
24
+
25
+ from __future__ import annotations
26
+
27
+ import json
28
+ from pathlib import Path
29
+
30
+ from agent_toolkit.compiler.model import (
31
+ Agent,
32
+ CanonicalGraph,
33
+ CompilationResult,
34
+ Product,
35
+ Skill,
36
+ )
37
+ from agent_toolkit.compiler.targets.base import TargetAdapter
38
+
39
+ # Minimum Gemini CLI version supporting the extension system
40
+ MIN_GEMINI_CLI_VERSION = "0.1.0"
41
+
42
+ # Gemini uses TOML for commands — we generate a TOML block per skill
43
+ _TOML_COMMAND_TEMPLATE = """\
44
+ [[commands]]
45
+ name = "{name}"
46
+ description = "{description}"
47
+ """
48
+
49
+
50
+ class GeminiCLIAdapter(TargetAdapter):
51
+ """Compiles agent-toolkit products into Gemini CLI extension bundles.
52
+
53
+ Extension is installable via:
54
+ gemini extensions add ulises-jeremias/agent-toolkit-gemini
55
+
56
+ Or linked for local development:
57
+ gemini extensions link /path/to/extension
58
+
59
+ Capability parity:
60
+ native: skills (as TOML commands), agents, plugin manifest
61
+ native: MCP (mcpServers in gemini-extension.json — pending MCP registry #15)
62
+ native-experimental: hooks (hooks/hooks.json — pending canonical hook model #16)
63
+ unsupported: always-on GEMINI.md (prefer minimal context + commands)
64
+ """
65
+
66
+ target_id = "gemini-cli"
67
+ package_type = "extension"
68
+ maturity = "stable"
69
+
70
+ def compile(self, graph: CanonicalGraph, product: Product) -> CompilationResult:
71
+ result = CompilationResult(target=self.target_id, product=product.id)
72
+ out_dir = self.output_root / product.id
73
+
74
+ # 1. gemini-extension.json manifest
75
+ manifest = self._build_manifest(product, graph)
76
+ self._write_file(
77
+ out_dir / "gemini-extension.json",
78
+ json.dumps(manifest, indent=2) + "\n",
79
+ result,
80
+ )
81
+ result.emitted.append("extension-manifest")
82
+
83
+ # 2. Skills → bundled SKILL.md + TOML commands that inject the body via @{…}
84
+ commands_toml_lines: list[str] = []
85
+ for skill_id in product.included_skills:
86
+ skill = graph.skills.get(skill_id)
87
+ if skill is None:
88
+ result.warnings.append(f"Skill '{skill_id}' not found — skipping")
89
+ result.omitted.append(f"skill:{skill_id}")
90
+ continue
91
+ rel_skill = self._emit_skill_file(skill, out_dir, result)
92
+ if rel_skill is None:
93
+ continue
94
+ commands_toml_lines.extend(self._skill_to_toml_command(skill, rel_skill))
95
+ result.emitted.append(f"skill:{skill_id}")
96
+
97
+ if commands_toml_lines:
98
+ self._write_file(
99
+ out_dir / "commands.toml",
100
+ "\n".join(commands_toml_lines) + "\n",
101
+ result,
102
+ )
103
+ result.emitted.append("commands.toml")
104
+
105
+ # 3. Agent context files (minimal — not large always-on context)
106
+ for agent_id in product.included_agents:
107
+ agent = graph.agents.get(agent_id)
108
+ if agent is None:
109
+ result.warnings.append(f"Agent '{agent_id}' not found — skipping")
110
+ result.omitted.append(f"agent:{agent_id}")
111
+ continue
112
+ self._emit_agent_context(agent, out_dir, result)
113
+
114
+ # 4. Explicitly document pending capabilities
115
+ result.unsupported.extend(
116
+ [
117
+ "hooks (hooks/hooks.json — pending canonical hook model #16)",
118
+ "mcp (mcpServers — pending MCP registry #15; field reserved in manifest)",
119
+ "excludeTools (tool restrictions — pending agent model with abstract tools)",
120
+ ]
121
+ )
122
+
123
+ return result
124
+
125
+ def _build_manifest(self, product: Product, graph: CanonicalGraph) -> dict:
126
+ """Build gemini-extension.json manifest.
127
+
128
+ Uses ${extensionPath} variable for bundled resource references.
129
+ Never uses absolute machine paths.
130
+ """
131
+ try:
132
+ from agent_toolkit import __version__
133
+
134
+ version = __version__
135
+ except ImportError:
136
+ version = "1.0.0"
137
+
138
+ manifest: dict = {
139
+ "name": product.id,
140
+ "version": version,
141
+ "description": product.description,
142
+ "author": "ulises-jeremias",
143
+ "repository": "https://github.com/ulises-jeremias/agent-toolkit",
144
+ "license": "MIT",
145
+ "geminiCliVersion": f">={MIN_GEMINI_CLI_VERSION}",
146
+ "contextFiles": [], # Minimal context — no large always-on files
147
+ "commands": "${extensionPath}/commands.toml",
148
+ # MCP servers placeholder — populated by MCP registry (issue #15)
149
+ # "mcpServers": [],
150
+ # Hooks placeholder — populated by hook model (issue #16)
151
+ # "hooks": "${extensionPath}/hooks/hooks.json",
152
+ }
153
+ return manifest
154
+
155
+ def _emit_skill_file(
156
+ self, skill: Skill, out_dir: Path, result: CompilationResult
157
+ ) -> str | None:
158
+ """Copy SKILL.md into the extension bundle; return path relative to out_dir."""
159
+ if not skill.source_path.exists():
160
+ result.warnings.append(f"Skill source missing: {skill.source_path}")
161
+ result.omitted.append(f"skill:{skill.id}")
162
+ return None
163
+
164
+ dst = out_dir / "skills" / skill.name
165
+ dst.mkdir(parents=True, exist_ok=True)
166
+ content = skill.source_path.read_text(encoding="utf-8", errors="replace")
167
+ self._write_file(dst / "SKILL.md", content, result)
168
+
169
+ self._copy_skill_references(skill, dst, result, text_mode=True)
170
+
171
+ return f"skills/{skill.name}/SKILL.md"
172
+
173
+ def _skill_to_toml_command(self, skill: Skill, skill_relpath: str) -> list[str]:
174
+ """Convert a canonical skill to a Gemini TOML command block.
175
+
176
+ Gemini CLI uses TOML for command definitions. The prompt injects the
177
+ bundled SKILL.md via ``@{path}`` so maturity=stable ships real body
178
+ content (not a stub pointer).
179
+ """
180
+ safe_name = skill.name.replace("-", "_").replace(" ", "_")
181
+ desc = (skill.description or "").replace('"', "'")[:200]
182
+
183
+ lines = [
184
+ "[[commands]]",
185
+ f'name = "{safe_name}"',
186
+ f'description = "{desc}"',
187
+ 'prompt = """',
188
+ f"Follow the `{skill.name}` skill instructions for {{{{args}}}}.",
189
+ "",
190
+ f"@{{{skill_relpath}}}",
191
+ '"""',
192
+ "",
193
+ ]
194
+ return lines
195
+
196
+ def _emit_agent_context(self, agent: Agent, out_dir: Path, result: CompilationResult) -> None:
197
+ """Emit a minimal agent context file.
198
+
199
+ Gemini prefers on-demand commands over large always-on context.
200
+ We emit a compact context file, not the full AGENT.md.
201
+ """
202
+ if not agent.source_path.exists():
203
+ result.warnings.append(f"Agent source missing: {agent.source_path}")
204
+ result.omitted.append(f"agent:{agent.id}")
205
+ return
206
+
207
+ ctx_dir = out_dir / "context"
208
+ ctx_dir.mkdir(parents=True, exist_ok=True)
209
+
210
+ # Copy full AGENT.md for reference — context is opt-in
211
+ content = agent.source_path.read_text(encoding="utf-8", errors="replace")
212
+ self._write_file(ctx_dir / f"{agent.name}.md", content, result)
213
+ result.emitted.append(f"agent:{agent.id}")
@@ -0,0 +1,113 @@
1
+ """
2
+ Muse Code target adapter (Meta).
3
+
4
+ Muse Code (https://developer.meta.com/ai/products/muse-code/) is Meta's agentic CLI for complex coding
5
+ workstreams. It follows the Agent Skills specification:
6
+
7
+ Project scope: .agents/skills/<name>/SKILL.md
8
+ User scope: ~/.config/muse/skills/<name>/SKILL.md (XDG: $XDG_CONFIG_HOME/muse)
9
+
10
+ Muse also supports `muse skills import --from claude|codex` to migrate
11
+ existing skills, and project-local `.agents/skills` which is the primary
12
+ portable contract (AGENTS.md as primary agent contract, .agents/skills
13
+ for skills).
14
+
15
+ This adapter generates static companion assets for Muse Code:
16
+
17
+ skills/<name>/SKILL.md — on-demand procedures (native SKILL.md format)
18
+ agents/<name>/AGENT.md — agent personas (for future muse agent support)
19
+
20
+ No plugin marketplace exists yet for Muse Code; install is via
21
+ `muse skills install` (personal scope) or git-tracked `.agents/skills`
22
+ (project scope). The adapter therefore uses package_type "skills" and
23
+ maturity "stable".
24
+
25
+ Install path: `agent-toolkit install --target muse-code` copies skills to
26
+ ~/.config/muse/skills/ and/or .agents/skills/ via the installer.
27
+ """
28
+
29
+ from __future__ import annotations
30
+
31
+ from pathlib import Path
32
+
33
+ from agent_toolkit.compiler.model import (
34
+ Agent,
35
+ CanonicalGraph,
36
+ CompilationResult,
37
+ Product,
38
+ Skill,
39
+ )
40
+ from agent_toolkit.compiler.targets.base import TargetAdapter
41
+
42
+
43
+ class MuseCodeAdapter(TargetAdapter):
44
+ """Compiles agent-toolkit products into Muse Code skills."""
45
+
46
+ target_id = "muse-code"
47
+ package_type = "skills"
48
+ maturity = "stable"
49
+
50
+ def compile(
51
+ self,
52
+ graph: CanonicalGraph,
53
+ product: Product,
54
+ *,
55
+ emit_registries: bool = False,
56
+ ) -> CompilationResult:
57
+ result = CompilationResult(target=self.target_id, product=product.id)
58
+ out_dir = self.output_root / product.id
59
+
60
+ # Emit skills — Muse uses the universal SKILL.md format (Agent Skills spec)
61
+ for skill_id in product.included_skills:
62
+ skill = graph.skills.get(skill_id)
63
+ if skill is None:
64
+ result.warnings.append(f"Skill '{skill_id}' not found — skipping")
65
+ result.omitted.append(f"skill:{skill_id}")
66
+ continue
67
+ self._emit_skill(skill, out_dir, result)
68
+
69
+ # Emit agents as .agents compatible markdown (future Muse agent support)
70
+ for agent_id in product.included_agents:
71
+ agent = graph.agents.get(agent_id)
72
+ if agent is None:
73
+ result.warnings.append(f"Agent '{agent_id}' not found — skipping")
74
+ result.omitted.append(f"agent:{agent_id}")
75
+ continue
76
+ self._emit_agent(agent, out_dir, result)
77
+
78
+ self._finalize_provenance(product, result)
79
+ return result
80
+
81
+ def _emit_skill(self, skill: Skill, out_dir: Path, result: CompilationResult) -> None:
82
+ # Muse prefers `.agents/skills/<name>/SKILL.md` (project) and
83
+ # `~/.config/muse/skills/<name>/SKILL.md` (user). We emit to `skills/`
84
+ # which the installer maps to both locations.
85
+ src = skill.source_path
86
+ if src and src.is_file():
87
+ content = src.read_text(encoding="utf-8")
88
+ else:
89
+ # Fallback: minimal frontmatter + description
90
+ content = f"---\nname: {skill.name}\ndescription: {skill.description}\n---\n\n# {skill.name}\n\n{skill.description}\n"
91
+ dest = out_dir / "skills" / skill.name / "SKILL.md"
92
+ self._write_file(dest, content, result, source_file=src)
93
+ result.emitted.append(f"skill:{skill.name}")
94
+
95
+ def _emit_agent(self, agent: Agent, out_dir: Path, result: CompilationResult) -> None:
96
+ src = getattr(agent, "source_path", None)
97
+ if src and Path(src).is_file():
98
+ content = Path(src).read_text(encoding="utf-8")
99
+ else:
100
+ content = f"---\nname: {agent.name}\ndescription: {getattr(agent, 'description', '')}\n---\n\n# {agent.name}\n"
101
+ dest = out_dir / "agents" / agent.name / "AGENT.md"
102
+ self._write_file(dest, content, result, source_file=src)
103
+ result.emitted.append(f"agent:{agent.name}")
104
+
105
+ def _build_plugin_json(self, product: Product, graph: CanonicalGraph | None = None) -> dict: # noqa: ARG002
106
+ return {
107
+ "name": product.id,
108
+ "version": getattr(product, "version", "0.0.0"),
109
+ "description": getattr(product, "description", ""),
110
+ "skills": list(product.included_skills),
111
+ "agents": list(product.included_agents),
112
+ "target": self.target_id,
113
+ }