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,204 @@
1
+ """
2
+ OpenCode target adapter.
3
+
4
+ OpenCode supports two integration surfaces:
5
+
6
+ 1. **Static companion assets** (generated by this adapter):
7
+ `.opencode/skills/<name>/SKILL.md` — on-demand procedures
8
+ `.opencode/agents/<name>/AGENT.md` — agent personas
9
+ `.opencode/commands/<name>.md` — slash commands (future)
10
+ `opencode.json` — minimal, portable model config
11
+
12
+ These companion assets work without any runtime code and are
13
+ discoverable by OpenCode from the project root.
14
+
15
+ 2. **Runtime TypeScript plugin** (NOT implemented here — see issue #10):
16
+ A proper npm/Bun package in `packages/opencode-plugin/` that exports
17
+ a plugin function and receives the full OpenCode context API.
18
+ This is required for lifecycle hooks, custom tools, MCP configuration,
19
+ and model/tool-call interception.
20
+
21
+ The static adapter explicitly reports what requires the runtime plugin.
22
+
23
+ Official docs: https://opencode.ai/docs/plugins/
24
+ Research: docs/research/platform-capability-matrix.md (2026-08-04)
25
+
26
+ Key differences from Claude Code/Cursor:
27
+ - No JSON manifest (JS/TS modules, not plugin.json)
28
+ - Distribution: npm or local path (not git marketplace)
29
+ - Skills go in .opencode/skills/, agents in .opencode/agents/
30
+ - opencode.json for model config MUST NOT contain private provider URLs
31
+ """
32
+
33
+ from __future__ import annotations
34
+
35
+ import json
36
+ from pathlib import Path
37
+
38
+ from agent_toolkit.compiler.model import (
39
+ Agent,
40
+ CanonicalGraph,
41
+ CompilationResult,
42
+ Product,
43
+ Skill,
44
+ )
45
+ from agent_toolkit.compiler.targets.base import TargetAdapter, private_network_leak_errors
46
+
47
+ # opencode.json safe defaults — NO private providers, NO hardcoded models.
48
+ # Users customize their own ~/.config/opencode/opencode.json.
49
+ _OPENCODE_JSON_TEMPLATE = {
50
+ "$schema": "https://opencode.ai/config.schema.json",
51
+ }
52
+
53
+ # opencode.json fields that indicate private/personal configuration.
54
+ # These must never appear in generated output.
55
+ _FORBIDDEN_OPENCODE_FIELDS = {
56
+ "provider", # provider config with baseURL can contain private LAN URLs
57
+ }
58
+
59
+
60
+ class OpenCodeAdapter(TargetAdapter):
61
+ """Compiles agent-toolkit products into OpenCode companion assets.
62
+
63
+ Generates static companion assets discoverable by OpenCode from the project root.
64
+ Does NOT generate a runtime TypeScript plugin (that requires packages/opencode-plugin/).
65
+
66
+ Capability parity:
67
+ native (static): skills (.opencode/skills/), agents (.opencode/agents/)
68
+ generated: opencode.json (minimal portable model config)
69
+ unsupported: lifecycle hooks, custom tools, MCP config, model interception
70
+ (all require the runtime TypeScript plugin — issue #10)
71
+ unsupported: plugin marketplace (OpenCode uses npm/git, not marketplace)
72
+ """
73
+
74
+ target_id = "opencode"
75
+ package_type = "companion-assets" # NOT a plugin — accurately named
76
+ maturity = "stable"
77
+
78
+ def compile(self, graph: CanonicalGraph, product: Product) -> CompilationResult:
79
+ result = CompilationResult(target=self.target_id, product=product.id)
80
+ out_dir = self.output_root / product.id
81
+
82
+ # 1. Generate minimal opencode.json (safe defaults only)
83
+ self._write_file(
84
+ out_dir / "opencode.json",
85
+ json.dumps(_OPENCODE_JSON_TEMPLATE, indent=2) + "\n",
86
+ result,
87
+ )
88
+ result.emitted.append("opencode-config")
89
+
90
+ # 2. Emit skills to .opencode/skills/
91
+ for skill_id in product.included_skills:
92
+ skill = graph.skills.get(skill_id)
93
+ if skill is None:
94
+ result.warnings.append(f"Skill '{skill_id}' not found — skipping")
95
+ result.omitted.append(f"skill:{skill_id}")
96
+ continue
97
+ self._emit_skill(skill, out_dir, result)
98
+
99
+ # 3. Emit agents to .opencode/agents/
100
+ for agent_id in product.included_agents:
101
+ agent = graph.agents.get(agent_id)
102
+ if agent is None:
103
+ result.warnings.append(f"Agent '{agent_id}' not found — skipping")
104
+ result.omitted.append(f"agent:{agent_id}")
105
+ continue
106
+ self._emit_agent(agent, out_dir, result)
107
+
108
+ # 4. Explicitly document what requires the runtime TypeScript plugin
109
+ result.unsupported.extend(
110
+ [
111
+ "lifecycle hooks — requires packages/opencode-plugin/ TypeScript runtime (issue #10)",
112
+ "custom tools — requires TypeScript plugin with tool registration API",
113
+ "MCP server config — requires TypeScript plugin (no static opencode.json format)",
114
+ "model/tool-call interception — requires TypeScript plugin",
115
+ "plugin marketplace install — OpenCode uses npm/Bun; no marketplace format",
116
+ ]
117
+ )
118
+
119
+ return result
120
+
121
+ # ── opencode.json ─────────────────────────────────────────────────────────
122
+
123
+ @staticmethod
124
+ def validate_opencode_json(data: dict) -> list[str]:
125
+ """Return error messages for any forbidden opencode.json fields."""
126
+ errors = []
127
+ for field in _FORBIDDEN_OPENCODE_FIELDS:
128
+ if field in data:
129
+ errors.append(
130
+ f"Forbidden field '{field}' in opencode.json — "
131
+ "provider config can contain private LAN URLs and must not ship publicly"
132
+ )
133
+ # Check for private hostnames in the whole JSON blob
134
+ text = json.dumps(data)
135
+ errors.extend(private_network_leak_errors(text, context="opencode.json"))
136
+ return errors
137
+
138
+ # ── skills ────────────────────────────────────────────────────────────────
139
+
140
+ def _emit_skill(self, skill: Skill, out_dir: Path, result: CompilationResult) -> None:
141
+ """Copy SKILL.md to .opencode/skills/<name>/SKILL.md.
142
+
143
+ OpenCode discovers skills at .opencode/skills/<name>/SKILL.md.
144
+ Same Agent Skills format as Claude Code and Cursor.
145
+ """
146
+ if not skill.source_path.exists():
147
+ result.warnings.append(f"Skill source missing: {skill.source_path}")
148
+ result.omitted.append(f"skill:{skill.id}")
149
+ return
150
+
151
+ dst = out_dir / ".opencode" / "skills" / skill.name
152
+ dst.mkdir(parents=True, exist_ok=True)
153
+
154
+ content = skill.source_path.read_text(encoding="utf-8", errors="replace")
155
+ self._write_file(dst / "SKILL.md", content, result)
156
+
157
+ # Progressive disclosure: copy references/
158
+ self._copy_skill_references(skill, dst, result)
159
+
160
+ result.emitted.append(f"skill:{skill.id}")
161
+
162
+ # ── agents ────────────────────────────────────────────────────────────────
163
+
164
+ def _emit_agent(self, agent: Agent, out_dir: Path, result: CompilationResult) -> None:
165
+ """Copy AGENT.md to .opencode/agents/<name>/AGENT.md."""
166
+ if not agent.source_path.exists():
167
+ result.warnings.append(f"Agent source missing: {agent.source_path}")
168
+ result.omitted.append(f"agent:{agent.id}")
169
+ return
170
+
171
+ dst = out_dir / ".opencode" / "agents" / agent.name
172
+ dst.mkdir(parents=True, exist_ok=True)
173
+
174
+ content = agent.source_path.read_text(encoding="utf-8", errors="replace")
175
+ self._write_file(dst / "AGENT.md", content, result)
176
+ result.emitted.append(f"agent:{agent.id}")
177
+
178
+ # ── parity notes ──────────────────────────────────────────────────────────
179
+
180
+ @staticmethod
181
+ def typescript_plugin_status() -> str:
182
+ """Document TypeScript runtime plugin gap for certification."""
183
+ return (
184
+ "pending TypeScript runtime plugin — packages/opencode-plugin/ must export "
185
+ "OpenCode's plugin function for hooks, MCP, custom tools, and tool-call "
186
+ "interception (issue #10)"
187
+ )
188
+
189
+ @staticmethod
190
+ def parity_notes() -> str:
191
+ return (
192
+ "OpenCode companion assets are static files discoverable from the project "
193
+ "root. They work without any runtime code.\n"
194
+ "\n"
195
+ "The full OpenCode plugin API (lifecycle hooks, custom tools, MCP config, "
196
+ "model interception) requires a TypeScript package in packages/opencode-plugin/ "
197
+ "that exports a plugin function receiving the OpenCode context API. "
198
+ "This is a separate work item (see issue #10).\n"
199
+ "\n"
200
+ "opencode.json is generated with safe defaults only (no provider config, "
201
+ "no hardcoded model). Users customize their own ~/.config/opencode/opencode.json "
202
+ "for model selection. This prevents the DEFECT-002 class of bugs where "
203
+ "private LAN URLs get committed to public repositories."
204
+ )
@@ -0,0 +1,263 @@
1
+ """
2
+ Pi Coding Agent target adapter.
3
+
4
+ Pi Coding Agent uses npm packages — NOT a plugin marketplace. Packages are
5
+ published to npm (or installed from git) and declare their capabilities via a
6
+ ``pi`` field in package.json.
7
+
8
+ Auto-discovery paths (from research, 2026-08-04):
9
+ ~/.pi/agent/extensions/*.ts (global user install)
10
+ .pi/extensions/*.ts (project-local install)
11
+
12
+ This adapter generates **static companion assets only** — no TypeScript runtime
13
+ code is emitted. The companion assets work without any TypeScript and are
14
+ discoverable by Pi from the project root.
15
+
16
+ 1. **Static companion assets** (generated by this adapter):
17
+ ``pi-package.json`` — package.json declaring ``pi`` field with skills
18
+ ``skills/<name>/SKILL.md`` — on-demand procedures (native SKILL.md format)
19
+ ``agents/<name>/AGENT.md`` — agent personas
20
+
21
+ 2. **TypeScript extension** (NOT generated here — see packages/pi-package/):
22
+ A factory function accepting ExtensionAPI, distributed via npm/pi.dev registry.
23
+ Required for: lifecycle hooks, custom tools, MCP integration, session state.
24
+
25
+ Unsupported by this static adapter:
26
+ - Custom tools (require TypeScript ExtensionAPI)
27
+ - Lifecycle hooks (require TypeScript ExtensionAPI)
28
+ - MCP server configuration (no static format — requires TypeScript runtime)
29
+ - Session state (runtime only)
30
+ - Plugin marketplace (Pi uses npm / pi.dev registry, not a marketplace)
31
+
32
+ Research: docs/research/platform-capability-matrix.md (2026-08-04)
33
+ Official registry: https://pi.dev/registry (npm-compatible)
34
+ """
35
+
36
+ from __future__ import annotations
37
+
38
+ import json
39
+ from pathlib import Path
40
+
41
+ from agent_toolkit.compiler.model import (
42
+ Agent,
43
+ CanonicalGraph,
44
+ CompilationResult,
45
+ Product,
46
+ Skill,
47
+ )
48
+ from agent_toolkit.compiler.targets.base import TargetAdapter, private_network_leak_errors
49
+
50
+ # Fields that must never appear in a publicly distributed pi-package.json.
51
+ # Private LAN URLs committed to public packages are a DEFECT-002 class bug.
52
+ _FORBIDDEN_PI_FIELDS = {
53
+ "private", # marks private packages — companion packs should be public
54
+ }
55
+
56
+
57
+ class PiAdapter(TargetAdapter):
58
+ """Compiles agent-toolkit products into Pi Coding Agent companion assets.
59
+
60
+ Pi uses npm package conventions with a ``pi`` field in package.json to
61
+ declare skills and other capabilities. This adapter generates static
62
+ companion assets only — no TypeScript code is emitted.
63
+
64
+ Capability parity:
65
+ native (static): skills (skills/<name>/SKILL.md), agents (agents/<name>/AGENT.md)
66
+ generated: pi-package.json (package.json with ``pi`` field)
67
+ unsupported: lifecycle hooks, custom tools, MCP integration, session state
68
+ (all require TypeScript ExtensionAPI — packages/pi-package/)
69
+ unsupported: plugin marketplace (Pi uses npm / pi.dev registry, not a marketplace)
70
+
71
+ Note on package_type:
72
+ Pi does not have a plugin marketplace. ``package_type = "companion-assets"``
73
+ accurately reflects that this output is a companion npm package of static
74
+ assets, NOT a marketplace plugin.
75
+ """
76
+
77
+ target_id = "pi"
78
+ package_type = "companion-assets" # NOT "plugin" — Pi has no plugin marketplace
79
+ maturity = "stable"
80
+
81
+ def compile(self, graph: CanonicalGraph, product: Product) -> CompilationResult:
82
+ result = CompilationResult(target=self.target_id, product=product.id)
83
+ out_dir = self.output_root / product.id
84
+
85
+ # 1. Generate pi-package.json (package.json with pi field declaring skills)
86
+ self._emit_pi_package_json(product, graph, out_dir, result)
87
+
88
+ # 2. Emit skills to skills/<name>/SKILL.md
89
+ for skill_id in product.included_skills:
90
+ skill = graph.skills.get(skill_id)
91
+ if skill is None:
92
+ result.warnings.append(f"Skill '{skill_id}' not found — skipping")
93
+ result.omitted.append(f"skill:{skill_id}")
94
+ continue
95
+ self._emit_skill(skill, out_dir, result)
96
+
97
+ # 3. Emit agents to agents/<name>/AGENT.md
98
+ for agent_id in product.included_agents:
99
+ agent = graph.agents.get(agent_id)
100
+ if agent is None:
101
+ result.warnings.append(f"Agent '{agent_id}' not found — skipping")
102
+ result.omitted.append(f"agent:{agent_id}")
103
+ continue
104
+ self._emit_agent(agent, out_dir, result)
105
+
106
+ # 4. Explicitly document what requires the TypeScript ExtensionAPI
107
+ # Never silently drop a capability — always report.
108
+ result.unsupported.extend(
109
+ [
110
+ "lifecycle hooks — requires TypeScript ExtensionAPI (packages/pi-package/)",
111
+ "custom tools — requires TypeScript ExtensionAPI with tool registration",
112
+ "MCP server config — no static format; requires TypeScript runtime",
113
+ "session state — runtime only; not expressible in static assets",
114
+ "plugin marketplace install — Pi uses npm/pi.dev registry, not a marketplace",
115
+ ]
116
+ )
117
+
118
+ return result
119
+
120
+ # ── pi-package.json ───────────────────────────────────────────────────────
121
+
122
+ def _emit_pi_package_json(
123
+ self,
124
+ product: Product,
125
+ graph: CanonicalGraph,
126
+ out_dir: Path,
127
+ result: CompilationResult,
128
+ ) -> None:
129
+ """Generate pi-package.json — package.json with ``pi`` field.
130
+
131
+ The ``pi`` field declares which skills are provided by this package.
132
+ Pi discovers packages from ~/.pi/agent/extensions/*.ts or .pi/extensions/*.ts,
133
+ but the static companion assets are loaded separately from this manifest.
134
+
135
+ Named ``pi-package.json`` (not ``package.json``) so it can coexist with an
136
+ existing package.json in the project root without collisions.
137
+ """
138
+ try:
139
+ from agent_toolkit import __version__
140
+
141
+ version = __version__
142
+ except ImportError:
143
+ version = "1.0.0"
144
+
145
+ skill_names = []
146
+ for skill_id in product.included_skills:
147
+ skill = graph.skills.get(skill_id)
148
+ if skill is not None:
149
+ skill_names.append(f"skills/{skill.name}/SKILL.md")
150
+
151
+ agent_names = []
152
+ for agent_id in product.included_agents:
153
+ agent = graph.agents.get(agent_id)
154
+ if agent is not None:
155
+ agent_names.append(f"agents/{agent.name}/AGENT.md")
156
+
157
+ pi_package = {
158
+ "name": f"@agent-toolkit/{product.id}",
159
+ "version": version,
160
+ "description": product.description,
161
+ "license": "MIT",
162
+ "repository": {
163
+ "type": "git",
164
+ "url": "https://github.com/ulises-jeremias/agent-toolkit",
165
+ },
166
+ "keywords": [
167
+ "agent-toolkit",
168
+ "pi",
169
+ "skills",
170
+ "agents",
171
+ product.id.replace("agent-toolkit-", ""),
172
+ ],
173
+ "pi": {
174
+ "skills": skill_names,
175
+ "agents": agent_names,
176
+ },
177
+ }
178
+
179
+ errors = self.validate_pi_package_json(pi_package)
180
+ for err in errors:
181
+ result.warnings.append(err)
182
+
183
+ self._write_file(
184
+ out_dir / "pi-package.json",
185
+ json.dumps(pi_package, indent=2) + "\n",
186
+ result,
187
+ )
188
+ result.emitted.append("pi-package-json")
189
+
190
+ @staticmethod
191
+ def validate_pi_package_json(data: dict) -> list[str]:
192
+ """Return error messages for any forbidden pi-package.json fields."""
193
+ errors = []
194
+ for field in _FORBIDDEN_PI_FIELDS:
195
+ if field in data and data[field] is True:
196
+ errors.append(
197
+ f"Field '{field}: true' in pi-package.json — "
198
+ "companion packs should be publishable (not private)"
199
+ )
200
+ text = json.dumps(data)
201
+ errors.extend(private_network_leak_errors(text, context="pi-package.json"))
202
+ return errors
203
+
204
+ # ── skills ────────────────────────────────────────────────────────────────
205
+
206
+ def _emit_skill(self, skill: Skill, out_dir: Path, result: CompilationResult) -> None:
207
+ """Copy SKILL.md to skills/<name>/SKILL.md.
208
+
209
+ Pi uses the native SKILL.md format — same as Claude Code, Cursor, and OpenCode.
210
+ """
211
+ if not skill.source_path.exists():
212
+ result.warnings.append(f"Skill source missing: {skill.source_path}")
213
+ result.omitted.append(f"skill:{skill.id}")
214
+ return
215
+
216
+ dst = out_dir / "skills" / skill.name
217
+ dst.mkdir(parents=True, exist_ok=True)
218
+
219
+ content = skill.source_path.read_text(encoding="utf-8", errors="replace")
220
+ self._write_file(dst / "SKILL.md", content, result)
221
+
222
+ # Progressive disclosure: copy references/
223
+ self._copy_skill_references(skill, dst, result)
224
+
225
+ result.emitted.append(f"skill:{skill.id}")
226
+
227
+ # ── agents ────────────────────────────────────────────────────────────────
228
+
229
+ def _emit_agent(self, agent: Agent, out_dir: Path, result: CompilationResult) -> None:
230
+ """Copy AGENT.md to agents/<name>/AGENT.md."""
231
+ if not agent.source_path.exists():
232
+ result.warnings.append(f"Agent source missing: {agent.source_path}")
233
+ result.omitted.append(f"agent:{agent.id}")
234
+ return
235
+
236
+ dst = out_dir / "agents" / agent.name
237
+ dst.mkdir(parents=True, exist_ok=True)
238
+
239
+ content = agent.source_path.read_text(encoding="utf-8", errors="replace")
240
+ self._write_file(dst / "AGENT.md", content, result)
241
+ result.emitted.append(f"agent:{agent.id}")
242
+
243
+ # ── parity notes ──────────────────────────────────────────────────────────
244
+
245
+ @staticmethod
246
+ def parity_notes() -> str:
247
+ return (
248
+ "Pi Coding Agent companion assets are declared via the ``pi`` field in "
249
+ "package.json (generated as ``pi-package.json`` here to avoid collisions). "
250
+ "Skills and agents are static files discoverable without any runtime code.\n"
251
+ "\n"
252
+ "Pi does NOT have a plugin marketplace. Packages are distributed via npm "
253
+ "or the pi.dev registry (npm-compatible). The ``package_type`` for this "
254
+ "adapter is ``companion-assets`` — not ``plugin``.\n"
255
+ "\n"
256
+ "The full Pi ExtensionAPI (lifecycle hooks, custom tools, MCP integration, "
257
+ "session state) requires a TypeScript factory function exported from an npm "
258
+ "package. This is a separate work item (see packages/pi-package/).\n"
259
+ "\n"
260
+ "Auto-discovery: ~/.pi/agent/extensions/*.ts (global) or "
261
+ ".pi/extensions/*.ts (project-local). The static companion assets are "
262
+ "referenced from pi-package.json's ``pi.skills`` and ``pi.agents`` arrays."
263
+ )