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,154 @@
1
+ ---
2
+ name: playwright-cli
3
+ description: Drive a real browser from the terminal using the Playwright CLI (snapshot, click, fill, screenshots,
4
+ traces). Use when the task is CLI-first browser automation (data extraction, UI debugging, form fills,
5
+ multi-tab work). For Playwright **test specs**, use `e2e-runner` instead.
6
+ origin:
7
+ type: first-party
8
+ ---
9
+ # Playwright CLI
10
+
11
+ Drive a real browser from the terminal using `playwright-cli`. The bundled
12
+ wrapper script runs the CLI through `npx`, so a global install is not required.
13
+
14
+ > Treat this skill as **CLI-first automation**. Do NOT pivot to
15
+ > `@playwright/test` test files unless the user explicitly asks for them — for
16
+ > Playwright tests use [`e2e-runner`](../../../agents/e2e-runner/AGENT.md).
17
+
18
+ ## When to use
19
+
20
+ - Quick, one-off browser automation from the shell (snapshot → interact →
21
+ screenshot/trace).
22
+ - Reproducing a UI bug step-by-step with persistent sessions.
23
+ - Extracting data from a page that requires JS rendering.
24
+ - Smoke-checking a deployment without authoring a test suite.
25
+
26
+ ## Prerequisites
27
+
28
+ - `npx` on `PATH` (provided by Node.js / `volta` from `bootstrap`).
29
+ - Optional but recommended: a global install for faster startup —
30
+ `npm install -g @playwright/cli@latest`.
31
+ - Outbound HTTPS access to npm and to the target sites.
32
+
33
+ `skills check playwright-cli` validates `npx` is present.
34
+
35
+ ## Wrapper script (set once per shell)
36
+
37
+ ```bash
38
+ export PWCLI="$HOME/.local/share/agent-toolkit/skills/playwright-cli/scripts/playwright_cli.sh"
39
+ alias pwcli="$PWCLI"
40
+ pwcli --help
41
+ ```
42
+
43
+ The wrapper uses `npx --yes --package @playwright/cli playwright-cli`, so even
44
+ without a global install the first call will fetch the package and cache it.
45
+
46
+ If `PLAYWRIGHT_CLI_SESSION` is set, the wrapper passes it as `--session`
47
+ automatically — handy to keep separate browser contexts per project.
48
+
49
+ ## Quick start
50
+
51
+ ```bash
52
+ pwcli open https://playwright.dev --headed
53
+ pwcli snapshot
54
+ pwcli click e15
55
+ pwcli type "Playwright"
56
+ pwcli press Enter
57
+ pwcli screenshot
58
+ ```
59
+
60
+ ## Core workflow
61
+
62
+ 1. `open` the page.
63
+ 2. `snapshot` to get stable element refs (e.g. `e3`).
64
+ 3. Interact using refs from the **latest** snapshot.
65
+ 4. Re-snapshot after navigation or significant DOM changes.
66
+ 5. Capture artifacts (`screenshot`, `pdf`, `tracing-start`/`tracing-stop`)
67
+ when useful.
68
+
69
+ Minimal loop:
70
+
71
+ ```bash
72
+ pwcli open https://example.com
73
+ pwcli snapshot
74
+ pwcli click e3
75
+ pwcli snapshot
76
+ ```
77
+
78
+ ## When to snapshot again
79
+
80
+ After:
81
+
82
+ - navigation
83
+ - clicking elements that change the UI substantially
84
+ - opening/closing modals or menus
85
+ - tab switches
86
+
87
+ Refs go stale silently. When a command fails due to a missing ref, snapshot
88
+ again — do not bypass with `run-code`/`eval` unless explicitly justified.
89
+
90
+ ## Recommended patterns
91
+
92
+ ### Form fill and submit
93
+
94
+ ```bash
95
+ pwcli open https://example.com/form
96
+ pwcli snapshot
97
+ pwcli fill e1 "user@example.com"
98
+ pwcli fill e2 "password123"
99
+ pwcli click e3
100
+ pwcli snapshot
101
+ ```
102
+
103
+ ### Debug a UI flow with traces
104
+
105
+ ```bash
106
+ pwcli open https://example.com --headed
107
+ pwcli tracing-start
108
+ # ...interactions...
109
+ pwcli tracing-stop
110
+ ```
111
+
112
+ ### Multi-tab work
113
+
114
+ ```bash
115
+ pwcli tab-new https://example.com
116
+ pwcli tab-list
117
+ pwcli tab-select 0
118
+ pwcli snapshot
119
+ ```
120
+
121
+ ## Sessions
122
+
123
+ ```bash
124
+ pwcli --session todo open https://demo.playwright.dev/todomvc
125
+ pwcli --session todo snapshot
126
+ ```
127
+
128
+ Or set the env var once:
129
+
130
+ ```bash
131
+ export PLAYWRIGHT_CLI_SESSION=todo
132
+ pwcli open https://demo.playwright.dev/todomvc
133
+ ```
134
+
135
+ ## Boundaries
136
+
137
+ - This skill is **read/interact** on real browsers. No test framework, no test
138
+ files. For test suites, hand off to `e2e-runner`.
139
+ - When this skill captures artifacts inside a project, write them under
140
+ `output/playwright/` (or whatever the repo defines) — never introduce new
141
+ top-level artifact folders.
142
+ - For sandboxed AI tools that block `npx`/network, ask the user to authorize
143
+ outbound network for this skill rather than disabling sandboxing globally.
144
+
145
+ ## References
146
+
147
+ - [`references/cli.md`](references/cli.md) — CLI command reference.
148
+ - [`references/workflows.md`](references/workflows.md) — practical workflows
149
+ and troubleshooting.
150
+
151
+ ## See also
152
+
153
+ - [`e2e-runner`](../../../agents/e2e-runner/AGENT.md) — Playwright **test**
154
+ authoring & execution (different mental model than this skill).
@@ -0,0 +1,116 @@
1
+ # Playwright CLI Reference
2
+
3
+ Use the wrapper script unless `playwright-cli` is already installed globally:
4
+
5
+ ```bash
6
+ export PWCLI="$HOME/.local/share/agent-toolkit/skills/playwright-cli/scripts/playwright_cli.sh"
7
+ "$PWCLI" --help
8
+ ```
9
+
10
+ Optional convenience alias:
11
+
12
+ ```bash
13
+ alias pwcli="$PWCLI"
14
+ ```
15
+
16
+ The wrapper uses `npx --yes --package @playwright/cli playwright-cli`, so the
17
+ first invocation will fetch the package on demand and cache it.
18
+
19
+ ## Core
20
+
21
+ ```bash
22
+ pwcli open https://example.com
23
+ pwcli close
24
+ pwcli snapshot
25
+ pwcli click e3
26
+ pwcli dblclick e7
27
+ pwcli type "search terms"
28
+ pwcli press Enter
29
+ pwcli fill e5 "user@example.com"
30
+ pwcli drag e2 e8
31
+ pwcli hover e4
32
+ pwcli select e9 "option-value"
33
+ pwcli upload ./document.pdf
34
+ pwcli check e12
35
+ pwcli uncheck e12
36
+ pwcli eval "document.title"
37
+ pwcli eval "el => el.textContent" e5
38
+ pwcli dialog-accept
39
+ pwcli dialog-accept "confirmation text"
40
+ pwcli dialog-dismiss
41
+ pwcli resize 1920 1080
42
+ ```
43
+
44
+ ## Navigation
45
+
46
+ ```bash
47
+ pwcli go-back
48
+ pwcli go-forward
49
+ pwcli reload
50
+ ```
51
+
52
+ ## Keyboard
53
+
54
+ ```bash
55
+ pwcli press Enter
56
+ pwcli press ArrowDown
57
+ pwcli keydown Shift
58
+ pwcli keyup Shift
59
+ ```
60
+
61
+ ## Mouse
62
+
63
+ ```bash
64
+ pwcli mousemove 150 300
65
+ pwcli mousedown
66
+ pwcli mousedown right
67
+ pwcli mouseup
68
+ pwcli mouseup right
69
+ pwcli mousewheel 0 100
70
+ ```
71
+
72
+ ## Save as
73
+
74
+ ```bash
75
+ pwcli screenshot
76
+ pwcli screenshot e5
77
+ pwcli pdf
78
+ ```
79
+
80
+ ## Tabs
81
+
82
+ ```bash
83
+ pwcli tab-list
84
+ pwcli tab-new
85
+ pwcli tab-new https://example.com/page
86
+ pwcli tab-close
87
+ pwcli tab-close 2
88
+ pwcli tab-select 0
89
+ ```
90
+
91
+ ## DevTools
92
+
93
+ ```bash
94
+ pwcli console
95
+ pwcli console warning
96
+ pwcli network
97
+ pwcli run-code "await page.waitForTimeout(1000)"
98
+ pwcli tracing-start
99
+ pwcli tracing-stop
100
+ ```
101
+
102
+ ## Sessions
103
+
104
+ Use a named session to isolate work:
105
+
106
+ ```bash
107
+ pwcli --session todo open https://demo.playwright.dev/todomvc
108
+ pwcli --session todo snapshot
109
+ ```
110
+
111
+ Or set an environment variable once:
112
+
113
+ ```bash
114
+ export PLAYWRIGHT_CLI_SESSION=todo
115
+ pwcli open https://demo.playwright.dev/todomvc
116
+ ```
@@ -0,0 +1,98 @@
1
+ # Playwright CLI Workflows
2
+
3
+ Use the wrapper script and snapshot often.
4
+ Assume `PWCLI` is set and `pwcli` is an alias for `"$PWCLI"`.
5
+ When running inside a project, contain artifacts under `output/playwright/<label>/`.
6
+
7
+ ## Standard interaction loop
8
+
9
+ ```bash
10
+ pwcli open https://example.com
11
+ pwcli snapshot
12
+ pwcli click e3
13
+ pwcli snapshot
14
+ ```
15
+
16
+ ## Form submission
17
+
18
+ ```bash
19
+ pwcli open https://example.com/form --headed
20
+ pwcli snapshot
21
+ pwcli fill e1 "user@example.com"
22
+ pwcli fill e2 "password123"
23
+ pwcli click e3
24
+ pwcli snapshot
25
+ pwcli screenshot
26
+ ```
27
+
28
+ ## Data extraction
29
+
30
+ ```bash
31
+ pwcli open https://example.com
32
+ pwcli snapshot
33
+ pwcli eval "document.title"
34
+ pwcli eval "el => el.textContent" e12
35
+ ```
36
+
37
+ ## Debugging and inspection
38
+
39
+ Capture console messages and network activity after reproducing an issue:
40
+
41
+ ```bash
42
+ pwcli console warning
43
+ pwcli network
44
+ ```
45
+
46
+ Record a trace around a suspicious flow:
47
+
48
+ ```bash
49
+ pwcli tracing-start
50
+ # reproduce the issue
51
+ pwcli tracing-stop
52
+ pwcli screenshot
53
+ ```
54
+
55
+ ## Sessions
56
+
57
+ Use sessions to isolate work across projects:
58
+
59
+ ```bash
60
+ pwcli --session marketing open https://example.com
61
+ pwcli --session marketing snapshot
62
+ pwcli --session checkout open https://example.com/checkout
63
+ ```
64
+
65
+ Or set the session once:
66
+
67
+ ```bash
68
+ export PLAYWRIGHT_CLI_SESSION=checkout
69
+ pwcli open https://example.com/checkout
70
+ ```
71
+
72
+ ## Configuration file
73
+
74
+ By default the CLI reads `playwright-cli.json` from the current directory. Use
75
+ `--config` to point at a specific file.
76
+
77
+ Minimal example:
78
+
79
+ ```json
80
+ {
81
+ "browser": {
82
+ "launchOptions": {
83
+ "headless": false
84
+ },
85
+ "contextOptions": {
86
+ "viewport": { "width": 1280, "height": 720 }
87
+ }
88
+ }
89
+ }
90
+ ```
91
+
92
+ ## Troubleshooting
93
+
94
+ - If an element ref fails, run `pwcli snapshot` again and retry.
95
+ - If the page looks wrong, re-open with `--headed` and resize the window.
96
+ - If a flow depends on prior state, use a named `--session`.
97
+ - If `npx` is blocked by your AI tool's sandbox, authorize outbound network
98
+ for this skill rather than disabling sandboxing globally.
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ if ! command -v npx >/dev/null 2>&1; then
5
+ echo "Error: npx is required but not found on PATH." >&2
6
+ exit 1
7
+ fi
8
+
9
+ has_session_flag="false"
10
+ for arg in "$@"; do
11
+ case "$arg" in
12
+ --session | --session=*)
13
+ has_session_flag="true"
14
+ break
15
+ ;;
16
+ esac
17
+ done
18
+
19
+ cmd=(npx --yes --package @playwright/cli playwright-cli)
20
+ if [[ ${has_session_flag} != "true" && -n ${PLAYWRIGHT_CLI_SESSION:-} ]]; then
21
+ cmd+=(--session "${PLAYWRIGHT_CLI_SESSION}")
22
+ fi
23
+ cmd+=("$@")
24
+
25
+ exec "${cmd[@]}"
@@ -0,0 +1,79 @@
1
+ """GitHub Release data cache for lighter wheel installs."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ import os
7
+ import urllib.request
8
+ from pathlib import Path
9
+
10
+ from agent_toolkit import __version__
11
+
12
+
13
+ def _xdg_cache_home() -> Path:
14
+ return Path(os.environ.get("XDG_CACHE_HOME", str(Path.home() / ".cache")))
15
+
16
+
17
+ def cache_dir() -> Path:
18
+ return _xdg_cache_home() / "agent-toolkit"
19
+
20
+
21
+ CACHE_DIR = cache_dir() # default at import; tests should patch cache_dir()
22
+ CACHE_VERSION_FILE = cache_dir() / "cached_version.json"
23
+ GITHUB_RELEASES_API = "https://api.github.com/repos/ulises-jeremias/agent-toolkit/releases/latest"
24
+
25
+
26
+ def cached_version() -> str | None:
27
+ version_file = cache_dir() / "cached_version.json"
28
+ if not version_file.is_file():
29
+ return None
30
+ try:
31
+ data = json.loads(version_file.read_text())
32
+ return str(data.get("version", "")) or None
33
+ except (json.JSONDecodeError, OSError):
34
+ return None
35
+
36
+
37
+ def is_cache_current() -> bool:
38
+ cached = cached_version()
39
+ return cached is not None and cached == __version__
40
+
41
+
42
+ def ensure_cached_data(*, offline: bool = False, force: bool = False) -> Path | None:
43
+ """Ensure toolkit data exists in XDG cache. Returns cache path or None."""
44
+ dest = cache_dir()
45
+ dest.mkdir(parents=True, exist_ok=True)
46
+
47
+ if not force and is_cache_current() and (dest / "profiles").is_dir():
48
+ return dest
49
+
50
+ if offline:
51
+ if (dest / "profiles").is_dir():
52
+ return dest
53
+ return None
54
+
55
+ try:
56
+ req = urllib.request.Request(
57
+ GITHUB_RELEASES_API,
58
+ headers={"User-Agent": "agent-toolkit-data-cache/1"},
59
+ )
60
+ with urllib.request.urlopen(req, timeout=15) as resp:
61
+ release = json.loads(resp.read())
62
+ tag = str(release.get("tag_name", __version__)).lstrip("v")
63
+ tarball_url = release.get("tarball_url")
64
+ if not tarball_url:
65
+ return None
66
+ version_file = dest / "cached_version.json"
67
+ version_file.write_text(
68
+ json.dumps({"version": tag, "source": "github-release", "url": tarball_url}, indent=2)
69
+ + "\n"
70
+ )
71
+ return dest
72
+ except Exception:
73
+ return dest if (dest / "profiles").is_dir() else None
74
+
75
+
76
+ def refresh_cache() -> bool:
77
+ """Force refresh cache metadata from GitHub Releases."""
78
+ result = ensure_cached_data(force=True)
79
+ return result is not None
@@ -0,0 +1,144 @@
1
+ """Download and cache agent-toolkit capability data from GitHub Releases."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ import os
7
+ import shutil
8
+ import tarfile
9
+ import tempfile
10
+ import urllib.error
11
+ import urllib.request
12
+ from pathlib import Path
13
+
14
+ from agent_toolkit import __version__
15
+
16
+ GITHUB_REPO = "ulises-jeremias/agent-toolkit"
17
+ DATA_SUBDIRS = ("skills", "agents", "loops", "profiles", "mcp", "catalogs")
18
+ VERSION_FILE = ".version"
19
+
20
+
21
+ def data_cache_dir() -> Path:
22
+ """XDG data directory for downloaded capability trees."""
23
+ xdg = os.environ.get("XDG_DATA_HOME", "").strip()
24
+ base = Path(xdg).expanduser() if xdg else Path.home() / ".local" / "share"
25
+ return base / "agent-toolkit" / "data"
26
+
27
+
28
+ def is_valid_data_root(path: Path) -> bool:
29
+ return (
30
+ path.is_dir()
31
+ and (path / "profiles").is_dir()
32
+ and ((path / "skills").is_dir() or (path / "loops").is_dir())
33
+ )
34
+
35
+
36
+ def cached_version() -> str | None:
37
+ vf = data_cache_dir() / VERSION_FILE
38
+ if vf.is_file():
39
+ return vf.read_text(encoding="utf-8").strip() or None
40
+ return None
41
+
42
+
43
+ def _release_tag(version: str) -> str:
44
+ return version if version.startswith("v") else f"v{version}"
45
+
46
+
47
+ def _fetch_latest_release_tag() -> str:
48
+ url = f"https://api.github.com/repos/{GITHUB_REPO}/releases/latest"
49
+ req = urllib.request.Request(url, headers={"Accept": "application/vnd.github+json"})
50
+ with urllib.request.urlopen(req, timeout=30) as resp:
51
+ payload = json.loads(resp.read().decode("utf-8"))
52
+ tag = payload.get("tag_name", "")
53
+ if not tag:
54
+ raise RuntimeError("GitHub Releases API returned no tag_name")
55
+ return tag
56
+
57
+
58
+ def _copy_data_tree(src_root: Path, dest: Path) -> None:
59
+ dest.mkdir(parents=True, exist_ok=True)
60
+ for name in DATA_SUBDIRS:
61
+ src = src_root / name
62
+ if not src.is_dir():
63
+ continue
64
+ dst = dest / name
65
+ if dst.exists():
66
+ shutil.rmtree(dst)
67
+ shutil.copytree(src, dst)
68
+
69
+
70
+ def download_data(
71
+ version: str | None = None,
72
+ *,
73
+ force: bool = False,
74
+ quiet: bool = False,
75
+ ) -> Path:
76
+ """Download capability data from a GitHub Release source tarball into the cache."""
77
+ cache = data_cache_dir()
78
+ target_version = version or cached_version() or _release_tag(__version__)
79
+
80
+ if not force and is_valid_data_root(cache):
81
+ current = cached_version()
82
+ if current and current.lstrip("v") == target_version.lstrip("v"):
83
+ return cache
84
+
85
+ tag = _release_tag(target_version)
86
+ url = f"https://github.com/{GITHUB_REPO}/archive/refs/tags/{tag}.tar.gz"
87
+ if not quiet:
88
+ print(f"[agent-toolkit] Downloading capability data ({tag})…", flush=True)
89
+
90
+ with tempfile.TemporaryDirectory(prefix="agent-toolkit-data-") as tmp:
91
+ tarball = Path(tmp) / "source.tar.gz"
92
+ try:
93
+ urllib.request.urlretrieve(url, tarball)
94
+ except urllib.error.HTTPError as exc:
95
+ raise RuntimeError(
96
+ f"Failed to download {url} (HTTP {exc.code}). "
97
+ "Set AGENT_TOOLKIT_ROOT to a checkout or run with bundled wheel data."
98
+ ) from exc
99
+ except OSError as exc:
100
+ raise RuntimeError(
101
+ f"Failed to download {url} ({exc}). "
102
+ "Set AGENT_TOOLKIT_ROOT to a checkout or run with bundled wheel data."
103
+ ) from exc
104
+
105
+ extract_dir = Path(tmp) / "extract"
106
+ extract_dir.mkdir()
107
+ with tarfile.open(tarball, "r:gz") as tar:
108
+ tar.extractall(extract_dir, filter="data")
109
+
110
+ roots = [p for p in extract_dir.iterdir() if p.is_dir()]
111
+ if not roots:
112
+ raise RuntimeError(f"No top-level directory in release tarball for {tag}")
113
+ src_root = roots[0]
114
+ if not is_valid_data_root(src_root):
115
+ raise RuntimeError(f"Release {tag} tarball does not contain capability data")
116
+
117
+ if cache.exists():
118
+ shutil.rmtree(cache)
119
+ _copy_data_tree(src_root, cache)
120
+ (cache / VERSION_FILE).write_text(tag.lstrip("v"), encoding="utf-8")
121
+
122
+ if not quiet:
123
+ print(f"[agent-toolkit] Cached data at {cache}", flush=True)
124
+ return cache
125
+
126
+
127
+ def ensure_data(
128
+ *,
129
+ offline: bool = False,
130
+ force: bool = False,
131
+ version: str | None = None,
132
+ ) -> Path | None:
133
+ """Return cached/downloaded data root, or None when offline and cache is missing."""
134
+ cache = data_cache_dir()
135
+ if is_valid_data_root(cache) and not force:
136
+ cv = cached_version()
137
+ pin = version or __version__
138
+ if cv is None or cv.lstrip("v") == pin.lstrip("v"):
139
+ return cache
140
+
141
+ if offline:
142
+ return cache if is_valid_data_root(cache) else None
143
+
144
+ return download_data(version, force=force)
File without changes
@@ -0,0 +1,59 @@
1
+ """Non-destructive JSON config merge for profile installs."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ from pathlib import Path
7
+ from typing import Any
8
+
9
+
10
+ def merge_json_objects(
11
+ base: dict[str, Any],
12
+ overlay: dict[str, Any],
13
+ *,
14
+ prefix: str = "",
15
+ ) -> tuple[dict[str, Any], list[dict[str, Any]]]:
16
+ """Merge overlay into base without overwriting existing keys.
17
+
18
+ Returns the merged dict and a list of ownership patches (JSON-pointer-like paths).
19
+ """
20
+ merged = dict(base)
21
+ patches: list[dict[str, Any]] = []
22
+
23
+ for key, value in overlay.items():
24
+ path = f"{prefix}/{key}" if prefix else f"/{key}"
25
+ if key not in merged:
26
+ merged[key] = value
27
+ patches.append({"op": "add", "path": path, "value": value})
28
+ continue
29
+ if isinstance(merged[key], dict) and isinstance(value, dict):
30
+ nested, nested_patches = merge_json_objects(merged[key], value, prefix=path)
31
+ if nested != merged[key]:
32
+ merged[key] = nested
33
+ patches.extend(nested_patches)
34
+
35
+ return merged, patches
36
+
37
+
38
+ def merge_json_file(
39
+ src: Path,
40
+ dst: Path,
41
+ *,
42
+ force: bool = False,
43
+ ) -> tuple[dict[str, Any] | None, list[dict[str, Any]], str]:
44
+ """Merge src JSON into dst when dst exists; otherwise return src content.
45
+
46
+ Returns (result_dict, patches, ownership) where ownership is ``created`` or ``merged``.
47
+ """
48
+ overlay = json.loads(src.read_text(encoding="utf-8"))
49
+ if not dst.is_file() or force:
50
+ return overlay, [], "created"
51
+
52
+ base = json.loads(dst.read_text(encoding="utf-8"))
53
+ if not isinstance(base, dict) or not isinstance(overlay, dict):
54
+ return None, [], "skipped"
55
+
56
+ merged, patches = merge_json_objects(base, overlay)
57
+ if merged == base:
58
+ return merged, [], "unchanged"
59
+ return merged, patches, "merged"