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.
- agent_toolkit/__init__.py +4 -0
- agent_toolkit/__main__.py +5 -0
- agent_toolkit/_paths.py +145 -0
- agent_toolkit/bin/.gitkeep +0 -0
- agent_toolkit/bin/agent-toolkit.exe +0 -0
- agent_toolkit/cli/__init__.py +0 -0
- agent_toolkit/cli/__main__.py +5 -0
- agent_toolkit/cli/build.py +278 -0
- agent_toolkit/cli/completion.py +297 -0
- agent_toolkit/cli/context_budget.py +455 -0
- agent_toolkit/cli/devcompanion.py +923 -0
- agent_toolkit/cli/devcompanion_queue.py +235 -0
- agent_toolkit/cli/diff.py +176 -0
- agent_toolkit/cli/doctor.py +1052 -0
- agent_toolkit/cli/insights.py +771 -0
- agent_toolkit/cli/install.py +706 -0
- agent_toolkit/cli/main.py +171 -0
- agent_toolkit/cli/mcp.py +537 -0
- agent_toolkit/cli/memory.py +739 -0
- agent_toolkit/cli/plugin.py +224 -0
- agent_toolkit/cli/project.py +459 -0
- agent_toolkit/cli/release.py +178 -0
- agent_toolkit/cli/skills.py +461 -0
- agent_toolkit/cli/uninstall.py +166 -0
- agent_toolkit/cli/update.py +298 -0
- agent_toolkit/cli/workspace.py +1713 -0
- agent_toolkit/compiler/hook_registry.py +110 -0
- agent_toolkit/compiler/loader.py +338 -0
- agent_toolkit/compiler/mcp_registry.py +87 -0
- agent_toolkit/compiler/model.py +182 -0
- agent_toolkit/compiler/provenance.py +140 -0
- agent_toolkit/compiler/registry_emit.py +263 -0
- agent_toolkit/compiler/target_registry.py +122 -0
- agent_toolkit/compiler/targets/__init__.py +1 -0
- agent_toolkit/compiler/targets/agent_plugins.py +160 -0
- agent_toolkit/compiler/targets/base.py +229 -0
- agent_toolkit/compiler/targets/claude_code.py +241 -0
- agent_toolkit/compiler/targets/codex.py +261 -0
- agent_toolkit/compiler/targets/copilot.py +275 -0
- agent_toolkit/compiler/targets/cursor.py +207 -0
- agent_toolkit/compiler/targets/gemini_cli.py +213 -0
- agent_toolkit/compiler/targets/muse_code.py +113 -0
- agent_toolkit/compiler/targets/opencode.py +204 -0
- agent_toolkit/compiler/targets/pi.py +263 -0
- agent_toolkit/compiler/targets/windsurf.py +267 -0
- agent_toolkit/compiler/tool_mapping.py +83 -0
- agent_toolkit/data/.gitignore +4 -0
- agent_toolkit/data/__init__.py +1 -0
- agent_toolkit/data/agents/agentic-security-reviewer/AGENT.md +60 -0
- agent_toolkit/data/agents/architect/AGENT.md +30 -0
- agent_toolkit/data/agents/assistant/AGENT.md +59 -0
- agent_toolkit/data/agents/build-error-resolver/AGENT.md +30 -0
- agent_toolkit/data/agents/client-workflow-bootstrap/AGENT.md +60 -0
- agent_toolkit/data/agents/code-reviewer/AGENT.md +49 -0
- agent_toolkit/data/agents/database-reviewer/AGENT.md +44 -0
- agent_toolkit/data/agents/docs-lookup/AGENT.md +28 -0
- agent_toolkit/data/agents/e2e-runner/AGENT.md +38 -0
- agent_toolkit/data/agents/performance-optimizer/AGENT.md +52 -0
- agent_toolkit/data/agents/planner/AGENT.md +41 -0
- agent_toolkit/data/agents/refactor-cleaner/AGENT.md +43 -0
- agent_toolkit/data/agents/reference-lookup/AGENT.md +33 -0
- agent_toolkit/data/agents/security-reviewer/AGENT.md +47 -0
- agent_toolkit/data/agents/tdd-guide/AGENT.md +58 -0
- agent_toolkit/data/agents/tech-assistant/AGENT.md +11 -0
- agent_toolkit/data/agents/typescript-reviewer/AGENT.md +61 -0
- agent_toolkit/data/capabilities/hooks/README.md +6 -0
- agent_toolkit/data/capabilities/hooks/pre-commit-validate.yaml +26 -0
- agent_toolkit/data/capabilities/hooks/scripts/pre-commit-validate.sh +41 -0
- agent_toolkit/data/capabilities/hooks/scripts/session-start-context.sh +11 -0
- agent_toolkit/data/capabilities/hooks/session-start-context.yaml +23 -0
- agent_toolkit/data/capabilities/targets/registry.yaml +90 -0
- agent_toolkit/data/capabilities/upstream.lock +118 -0
- agent_toolkit/data/catalogs/agent-catalog.yaml +81 -0
- agent_toolkit/data/catalogs/loop-catalog.yaml +55 -0
- agent_toolkit/data/catalogs/skill-catalog.yaml +520 -0
- agent_toolkit/data/catalogs/skills-layout.json +391 -0
- agent_toolkit/data/distributions/products.yaml +190 -0
- agent_toolkit/data/distributions/targets/claude-code.yaml +47 -0
- agent_toolkit/data/distributions/targets/cursor.yaml +42 -0
- agent_toolkit/data/distributions/targets/opencode.yaml +55 -0
- agent_toolkit/data/loops/changelog-drafter/loop.yaml +40 -0
- agent_toolkit/data/loops/ci-sweeper/loop.yaml +53 -0
- agent_toolkit/data/loops/daily-triage/loop.yaml +47 -0
- agent_toolkit/data/loops/dep-sweeper/loop.yaml +46 -0
- agent_toolkit/data/loops/issue-triage/loop.yaml +40 -0
- agent_toolkit/data/loops/oss-daily-briefing/loop.yaml +65 -0
- agent_toolkit/data/loops/oss-pr-monitor/loop.yaml +86 -0
- agent_toolkit/data/loops/oss-triage/loop.yaml +67 -0
- agent_toolkit/data/loops/post-merge-cleanup/loop.yaml +44 -0
- agent_toolkit/data/loops/pr-babysitter/loop.yaml +46 -0
- agent_toolkit/data/mcp/registry/chrome-devtools.yaml +61 -0
- agent_toolkit/data/mcp/registry/clickup.yaml +48 -0
- agent_toolkit/data/mcp/registry/figma.yaml +44 -0
- agent_toolkit/data/mcp/registry/github.yaml +52 -0
- agent_toolkit/data/mcp/registry/linear.yaml +47 -0
- agent_toolkit/data/mcp/registry/notion.yaml +48 -0
- agent_toolkit/data/mcp/registry/slack.yaml +46 -0
- agent_toolkit/data/mcp/templates/chrome-devtools/README.md +57 -0
- agent_toolkit/data/mcp/templates/chrome-devtools/config.template.json +6 -0
- agent_toolkit/data/mcp/templates/clickup/README.md +45 -0
- agent_toolkit/data/mcp/templates/clickup/config.template.json +8 -0
- agent_toolkit/data/mcp/templates/clickup/wrapper.sh +23 -0
- agent_toolkit/data/mcp/templates/figma/README.md +54 -0
- agent_toolkit/data/mcp/templates/figma/config.template.json +9 -0
- agent_toolkit/data/mcp/templates/github/README.md +16 -0
- agent_toolkit/data/mcp/templates/github/config.template.json +15 -0
- agent_toolkit/data/mcp/templates/github/wrapper.sh +6 -0
- agent_toolkit/data/mcp/templates/linear/README.md +49 -0
- agent_toolkit/data/mcp/templates/linear/config.template.json +10 -0
- agent_toolkit/data/mcp/templates/notion/README.md +7 -0
- agent_toolkit/data/mcp/templates/notion/config.template.json +8 -0
- agent_toolkit/data/mcp/templates/notion/wrapper.sh +23 -0
- agent_toolkit/data/mcp/templates/slack/README.md +8 -0
- agent_toolkit/data/mcp/templates/slack/config.template.json +9 -0
- agent_toolkit/data/mcp/templates/slack/wrapper.sh +23 -0
- agent_toolkit/data/packs/README.md +66 -0
- agent_toolkit/data/packs/agentic-security/README.md +19 -0
- agent_toolkit/data/packs/agentic-security/config.yaml +25 -0
- agent_toolkit/data/packs/architecture/README.md +22 -0
- agent_toolkit/data/packs/architecture/config.yaml +27 -0
- agent_toolkit/data/packs/code-quality/README.md +19 -0
- agent_toolkit/data/packs/code-quality/config.yaml +21 -0
- agent_toolkit/data/packs/delivery-discipline/README.md +19 -0
- agent_toolkit/data/packs/delivery-discipline/config.yaml +42 -0
- agent_toolkit/data/packs/design-engineering/README.md +19 -0
- agent_toolkit/data/packs/design-engineering/config.yaml +41 -0
- agent_toolkit/data/packs/engineering-workflow/README.md +21 -0
- agent_toolkit/data/packs/engineering-workflow/config.yaml +57 -0
- agent_toolkit/data/packs/oss-maintenance/README.md +245 -0
- agent_toolkit/data/packs/oss-maintenance/config.yaml +75 -0
- agent_toolkit/data/profiles/claude-code/CLAUDE.md +110 -0
- agent_toolkit/data/profiles/claude-code/agents/assistant.md +59 -0
- agent_toolkit/data/profiles/claude-code/agents/build-error-resolver.md +30 -0
- agent_toolkit/data/profiles/claude-code/agents/client-workflow-bootstrap.md +60 -0
- agent_toolkit/data/profiles/claude-code/agents/contribution-planner.md +39 -0
- agent_toolkit/data/profiles/claude-code/agents/database-reviewer.md +44 -0
- agent_toolkit/data/profiles/claude-code/agents/docs-lookup.md +28 -0
- agent_toolkit/data/profiles/claude-code/agents/e2e-runner.md +38 -0
- agent_toolkit/data/profiles/claude-code/agents/performance-optimizer.md +52 -0
- agent_toolkit/data/profiles/claude-code/agents/planner.md +41 -0
- agent_toolkit/data/profiles/claude-code/agents/refactor-cleaner.md +43 -0
- agent_toolkit/data/profiles/claude-code/agents/reference-lookup.md +33 -0
- agent_toolkit/data/profiles/claude-code/agents/security-reviewer.md +47 -0
- agent_toolkit/data/profiles/claude-code/agents/tdd-guide.md +58 -0
- agent_toolkit/data/profiles/claude-code/agents/typescript-reviewer.md +61 -0
- agent_toolkit/data/profiles/claude-code/settings.json +86 -0
- agent_toolkit/data/profiles/copilot/copilot-instructions.md +15 -0
- agent_toolkit/data/profiles/cursor/README.md +33 -0
- agent_toolkit/data/profiles/cursor/rules/architect.mdc +23 -0
- agent_toolkit/data/profiles/cursor/rules/assistant.mdc +61 -0
- agent_toolkit/data/profiles/cursor/rules/build-error-resolver.mdc +20 -0
- agent_toolkit/data/profiles/cursor/rules/code-reviewer.mdc +21 -0
- agent_toolkit/data/profiles/cursor/rules/database-reviewer.mdc +29 -0
- agent_toolkit/data/profiles/cursor/rules/docs-lookup.mdc +15 -0
- agent_toolkit/data/profiles/cursor/rules/e2e-runner.mdc +30 -0
- agent_toolkit/data/profiles/cursor/rules/performance-optimizer.mdc +27 -0
- agent_toolkit/data/profiles/cursor/rules/planner.mdc +28 -0
- agent_toolkit/data/profiles/cursor/rules/refactor-cleaner.mdc +26 -0
- agent_toolkit/data/profiles/cursor/rules/reference-lookup.mdc +20 -0
- agent_toolkit/data/profiles/cursor/rules/security-reviewer.mdc +20 -0
- agent_toolkit/data/profiles/cursor/rules/tdd-guide.mdc +26 -0
- agent_toolkit/data/profiles/cursor/rules/typescript-reviewer.mdc +28 -0
- agent_toolkit/data/profiles/muse-code/README.md +35 -0
- agent_toolkit/data/profiles/opencode/README.md +44 -0
- agent_toolkit/data/profiles/opencode/agents/architect.md +30 -0
- agent_toolkit/data/profiles/opencode/agents/assistant.md +96 -0
- agent_toolkit/data/profiles/opencode/agents/build-error-resolver.md +31 -0
- agent_toolkit/data/profiles/opencode/agents/client-workflow-bootstrap.md +66 -0
- agent_toolkit/data/profiles/opencode/agents/code-reviewer.md +47 -0
- agent_toolkit/data/profiles/opencode/agents/contribution-planner.md +44 -0
- agent_toolkit/data/profiles/opencode/agents/database-reviewer.md +43 -0
- agent_toolkit/data/profiles/opencode/agents/docs-lookup.md +28 -0
- agent_toolkit/data/profiles/opencode/agents/e2e-runner.md +33 -0
- agent_toolkit/data/profiles/opencode/agents/performance-optimizer.md +34 -0
- agent_toolkit/data/profiles/opencode/agents/planner.md +27 -0
- agent_toolkit/data/profiles/opencode/agents/refactor-cleaner.md +27 -0
- agent_toolkit/data/profiles/opencode/agents/reference-lookup.md +27 -0
- agent_toolkit/data/profiles/opencode/agents/security-reviewer.md +27 -0
- agent_toolkit/data/profiles/opencode/agents/tdd-guide.md +27 -0
- agent_toolkit/data/profiles/opencode/agents/typescript-reviewer.md +30 -0
- agent_toolkit/data/profiles/opencode/opencode.json +3 -0
- agent_toolkit/data/profiles/pi/skills/architect/skill.md +5 -0
- agent_toolkit/data/profiles/pi/skills/assistant/skill.md +3 -0
- agent_toolkit/data/profiles/pi/skills/code-reviewer/skill.md +5 -0
- agent_toolkit/data/profiles/pi/skills/planner/skill.md +3 -0
- agent_toolkit/data/profiles/pi/skills/security-reviewer/skill.md +3 -0
- agent_toolkit/data/profiles/windsurf/memories/global_rules.md +114 -0
- agent_toolkit/data/profiles/windsurf/rules/architect.mdc +23 -0
- agent_toolkit/data/profiles/windsurf/rules/assistant.mdc +61 -0
- agent_toolkit/data/profiles/windsurf/rules/build-error-resolver.mdc +20 -0
- agent_toolkit/data/profiles/windsurf/rules/code-reviewer.mdc +21 -0
- agent_toolkit/data/profiles/windsurf/rules/database-reviewer.mdc +29 -0
- agent_toolkit/data/profiles/windsurf/rules/docs-lookup.mdc +15 -0
- agent_toolkit/data/profiles/windsurf/rules/e2e-runner.mdc +30 -0
- agent_toolkit/data/profiles/windsurf/rules/performance-optimizer.mdc +27 -0
- agent_toolkit/data/profiles/windsurf/rules/planner.mdc +28 -0
- agent_toolkit/data/profiles/windsurf/rules/refactor-cleaner.mdc +26 -0
- agent_toolkit/data/profiles/windsurf/rules/reference-lookup.mdc +20 -0
- agent_toolkit/data/profiles/windsurf/rules/security-reviewer.mdc +20 -0
- agent_toolkit/data/profiles/windsurf/rules/tdd-guide.mdc +26 -0
- agent_toolkit/data/profiles/windsurf/rules/typescript-reviewer.mdc +28 -0
- agent_toolkit/data/skills/accessibility/review/SKILL.md +116 -0
- agent_toolkit/data/skills/accessibility/review/references/a11y-checklist.md +25 -0
- agent_toolkit/data/skills/accessibility/review/references/a11y-findings-template.md +56 -0
- agent_toolkit/data/skills/accessibility/review/references/research.md +47 -0
- agent_toolkit/data/skills/agentic-security/mcp-audit/SKILL.md +116 -0
- agent_toolkit/data/skills/agentic-security/mcp-audit/references/mcp-audit-template.md +51 -0
- agent_toolkit/data/skills/agentic-security/owasp-agentic-review/SKILL.md +73 -0
- agent_toolkit/data/skills/agentic-security/owasp-agentic-review/references/owasp-agentic-template.md +32 -0
- agent_toolkit/data/skills/agentic-security/supply-chain-audit/SKILL.md +142 -0
- agent_toolkit/data/skills/agentic-security/threat-modeling/SKILL.md +100 -0
- agent_toolkit/data/skills/agentic-security/threat-modeling/references/threat-model-template.md +55 -0
- agent_toolkit/data/skills/architecture/c4-model/SKILL.md +49 -0
- agent_toolkit/data/skills/cloud/aws-well-architected-review/SKILL.md +37 -0
- agent_toolkit/data/skills/cloud/cloud-design-patterns/SKILL.md +38 -0
- agent_toolkit/data/skills/core/assistant/SKILL.md +216 -0
- agent_toolkit/data/skills/core/assistant/references/AGENTS_TEMPLATE.md +0 -0
- agent_toolkit/data/skills/core/assistant/references/ORCHESTRATION.md +0 -0
- agent_toolkit/data/skills/core/assistant/references/REPO_INSPECTION.md +0 -0
- agent_toolkit/data/skills/core/dev-companion/SKILL.md +65 -0
- agent_toolkit/data/skills/core/dev-companion/references/LOOP_GUARDRAILS.md +0 -0
- agent_toolkit/data/skills/core/onboarding/SKILL.md +122 -0
- agent_toolkit/data/skills/core/output-handshake/SKILL.md +26 -0
- agent_toolkit/data/skills/core/pr-fallback/SKILL.md +35 -0
- agent_toolkit/data/skills/core/pr-fallback/references/pr-body-default.md +0 -0
- agent_toolkit/data/skills/core/project/SKILL.md +89 -0
- agent_toolkit/data/skills/core/workspace/SKILL.md +103 -0
- agent_toolkit/data/skills/core/workspace-knowledge-sync/SKILL.md +140 -0
- agent_toolkit/data/skills/data/dbt-validation/SKILL.md +41 -0
- agent_toolkit/data/skills/data/snowflake-validation/SKILL.md +38 -0
- agent_toolkit/data/skills/delivery/adr/SKILL.md +56 -0
- agent_toolkit/data/skills/delivery/adr/references/default-template.md +35 -0
- agent_toolkit/data/skills/delivery/adr/references/example-001-graphql-adoption.md +66 -0
- agent_toolkit/data/skills/delivery/agreement/SKILL.md +24 -0
- agent_toolkit/data/skills/delivery/agreement/references/default-template.md +17 -0
- agent_toolkit/data/skills/delivery/agreement/references/example-api-versioning.md +29 -0
- agent_toolkit/data/skills/delivery/bug/SKILL.md +26 -0
- agent_toolkit/data/skills/delivery/bug/references/default-template.md +26 -0
- agent_toolkit/data/skills/delivery/bug/references/example-search-filter-bug.md +58 -0
- agent_toolkit/data/skills/delivery/decision-log/SKILL.md +28 -0
- agent_toolkit/data/skills/delivery/decision-log/references/default-template.md +17 -0
- agent_toolkit/data/skills/delivery/decision-log/references/example-repository-pattern.md +27 -0
- agent_toolkit/data/skills/delivery/development-workflow/SKILL.md +34 -0
- agent_toolkit/data/skills/delivery/development-workflow/references/default-workflow-checklist.md +44 -0
- agent_toolkit/data/skills/delivery/epic/SKILL.md +22 -0
- agent_toolkit/data/skills/delivery/epic/references/default-template.md +26 -0
- agent_toolkit/data/skills/delivery/epic/references/example-unified-dashboard.md +40 -0
- agent_toolkit/data/skills/delivery/incident/SKILL.md +24 -0
- agent_toolkit/data/skills/delivery/incident/references/default-template.md +29 -0
- agent_toolkit/data/skills/delivery/incident/references/example-payment-outage.md +62 -0
- agent_toolkit/data/skills/delivery/management-unit-assessment/SKILL.md +104 -0
- agent_toolkit/data/skills/delivery/management-unit-assessment/references/default-template.md +24 -0
- agent_toolkit/data/skills/delivery/management-unit-assessment/references/example-team-assessment.md +126 -0
- agent_toolkit/data/skills/delivery/meeting-minutes/SKILL.md +25 -0
- agent_toolkit/data/skills/delivery/meeting-minutes/references/default-template.md +22 -0
- agent_toolkit/data/skills/delivery/meeting-minutes/references/example-weekly-sync.md +72 -0
- agent_toolkit/data/skills/delivery/planning/SKILL.md +31 -0
- agent_toolkit/data/skills/delivery/planning/references/default-template.md +25 -0
- agent_toolkit/data/skills/delivery/planning/references/example-sprint-planning.md +62 -0
- agent_toolkit/data/skills/delivery/prd/SKILL.md +46 -0
- agent_toolkit/data/skills/delivery/prd/references/default-template.md +31 -0
- agent_toolkit/data/skills/delivery/prd/references/example-unified-api.md +71 -0
- agent_toolkit/data/skills/delivery/project-assessment/SKILL.md +90 -0
- agent_toolkit/data/skills/delivery/project-assessment/references/default-template.md +26 -0
- agent_toolkit/data/skills/delivery/project-assessment/references/example-platform-assessment.md +122 -0
- agent_toolkit/data/skills/delivery/project-assessment-evidence/SKILL.md +88 -0
- agent_toolkit/data/skills/delivery/project-assessment-evidence/references/default-template.md +24 -0
- agent_toolkit/data/skills/delivery/project-assessment-evidence/references/example-evidence-map.md +46 -0
- agent_toolkit/data/skills/delivery/spike/SKILL.md +24 -0
- agent_toolkit/data/skills/delivery/spike/references/default-template.md +29 -0
- agent_toolkit/data/skills/delivery/spike/references/example-graphql-federation.md +79 -0
- agent_toolkit/data/skills/delivery/task/SKILL.md +21 -0
- agent_toolkit/data/skills/delivery/task/references/default-template.md +21 -0
- agent_toolkit/data/skills/delivery/task/references/example-nav-system.md +33 -0
- agent_toolkit/data/skills/delivery/technical-unit-assessment/SKILL.md +58 -0
- agent_toolkit/data/skills/delivery/technical-unit-assessment/references/default-template.md +26 -0
- agent_toolkit/data/skills/delivery/technical-unit-assessment/references/example-frontend-assessment.md +112 -0
- agent_toolkit/data/skills/delivery/technical-unit-assessment/references/indicator-groups.md +65 -0
- agent_toolkit/data/skills/delivery/trd/SKILL.md +49 -0
- agent_toolkit/data/skills/delivery/trd/references/default-template.md +31 -0
- agent_toolkit/data/skills/delivery/trd/references/example-api-migration.md +122 -0
- agent_toolkit/data/skills/delivery/user-story/SKILL.md +21 -0
- agent_toolkit/data/skills/delivery/user-story/references/default-template.md +21 -0
- agent_toolkit/data/skills/delivery/user-story/references/example-advanced-filtering.md +37 -0
- agent_toolkit/data/skills/delivery/work-item/SKILL.md +31 -0
- agent_toolkit/data/skills/delivery/work-item/references/default-template.md +21 -0
- agent_toolkit/data/skills/delivery/work-item/references/example-routing-dashboard.md +23 -0
- agent_toolkit/data/skills/delivery/workflow-client-bootstrap/SKILL.md +148 -0
- agent_toolkit/data/skills/delivery/workflow-client-bootstrap/questions.yaml +165 -0
- agent_toolkit/data/skills/delivery/workflow-generic-project/SKILL.md +79 -0
- agent_toolkit/data/skills/design/design-assessment/SKILL.md +150 -0
- agent_toolkit/data/skills/design/design-assessment/references/design-scorecard-template.md +78 -0
- agent_toolkit/data/skills/design/design-improvement/SKILL.md +167 -0
- agent_toolkit/data/skills/design/design-improvement/references/improvement-plan-template.md +113 -0
- agent_toolkit/data/skills/design/figma/LICENSE.txt +2 -0
- agent_toolkit/data/skills/design/figma/NOTICE.txt +25 -0
- agent_toolkit/data/skills/design/figma/SKILL.md +98 -0
- agent_toolkit/data/skills/design/figma/references/figma-mcp-config.md +82 -0
- agent_toolkit/data/skills/design/figma/references/figma-tools-and-prompts.md +34 -0
- agent_toolkit/data/skills/design/figma-code-connect-components/LICENSE.txt +2 -0
- agent_toolkit/data/skills/design/figma-code-connect-components/NOTICE.txt +18 -0
- agent_toolkit/data/skills/design/figma-code-connect-components/SKILL.md +354 -0
- agent_toolkit/data/skills/design/figma-code-connect-components/references/mapping-checklist.md +7 -0
- agent_toolkit/data/skills/design/figma-code-connect-components/scripts/normalize_node_id.py +25 -0
- agent_toolkit/data/skills/design/figma-create-design-system-rules/LICENSE.txt +2 -0
- agent_toolkit/data/skills/design/figma-create-design-system-rules/NOTICE.txt +19 -0
- agent_toolkit/data/skills/design/figma-create-design-system-rules/SKILL.md +554 -0
- agent_toolkit/data/skills/design/figma-create-design-system-rules/references/rule-template.md +15 -0
- agent_toolkit/data/skills/design/figma-create-design-system-rules/scripts/check_agents_md.sh +9 -0
- agent_toolkit/data/skills/design/figma-create-new-file/LICENSE.txt +2 -0
- agent_toolkit/data/skills/design/figma-create-new-file/NOTICE.txt +17 -0
- agent_toolkit/data/skills/design/figma-create-new-file/SKILL.md +72 -0
- agent_toolkit/data/skills/design/figma-implement-design/LICENSE.txt +2 -0
- agent_toolkit/data/skills/design/figma-implement-design/NOTICE.txt +19 -0
- agent_toolkit/data/skills/design/figma-implement-design/SKILL.md +268 -0
- agent_toolkit/data/skills/design/frontend-design/LICENSE.txt +177 -0
- agent_toolkit/data/skills/design/frontend-design/SKILL.md +82 -0
- agent_toolkit/data/skills/design/frontend-design/UPSTREAM.md +14 -0
- agent_toolkit/data/skills/design/frontend-design-review/LICENSE +21 -0
- agent_toolkit/data/skills/design/frontend-design-review/SKILL.md +194 -0
- agent_toolkit/data/skills/design/frontend-design-review/references/pattern-examples.md +21 -0
- agent_toolkit/data/skills/design/frontend-design-review/references/quick-checklist.md +38 -0
- agent_toolkit/data/skills/design/frontend-design-review/references/review-output-format.md +68 -0
- agent_toolkit/data/skills/design/frontend-design-review/references/review-type-modifiers.md +31 -0
- agent_toolkit/data/skills/design/web-design-guidelines/SKILL.md +78 -0
- agent_toolkit/data/skills/design/web-design-guidelines/references/LICENSE +21 -0
- agent_toolkit/data/skills/design/web-design-guidelines/references/web-interface-guidelines.md +180 -0
- agent_toolkit/data/skills/forge/gh-address-comments/LICENSE.txt +202 -0
- agent_toolkit/data/skills/forge/gh-address-comments/NOTICE.txt +20 -0
- agent_toolkit/data/skills/forge/gh-address-comments/SKILL.md +72 -0
- agent_toolkit/data/skills/forge/gh-address-comments/scripts/fetch_comments.py +239 -0
- agent_toolkit/data/skills/forge/gh-contribution-planner/SKILL.md +160 -0
- agent_toolkit/data/skills/forge/gh-contribution-planner/scripts/inspect_contributions.py +818 -0
- agent_toolkit/data/skills/forge/gh-fix-ci/LICENSE.txt +201 -0
- agent_toolkit/data/skills/forge/gh-fix-ci/NOTICE.txt +20 -0
- agent_toolkit/data/skills/forge/gh-fix-ci/SKILL.md +74 -0
- agent_toolkit/data/skills/forge/gh-fix-ci/scripts/inspect_pr_checks.py +509 -0
- agent_toolkit/data/skills/forge/github-cli-workflow/SKILL.md +49 -0
- agent_toolkit/data/skills/forge/gitlab-cli-workflow/SKILL.md +44 -0
- agent_toolkit/data/skills/forge/workflow-client-bootstrap/SKILL.md +14 -0
- agent_toolkit/data/skills/forge/workflow-generic-project/SKILL.md +14 -0
- agent_toolkit/data/skills/forge/worktree/SKILL.md +113 -0
- agent_toolkit/data/skills/integrations/clickup-cli/SKILL.md +78 -0
- agent_toolkit/data/skills/integrations/clickup-cli/references/docs-management.md +57 -0
- agent_toolkit/data/skills/integrations/clickup-cli/references/task-management.md +131 -0
- agent_toolkit/data/skills/integrations/clickup-cli/references/time-tracking.md +38 -0
- agent_toolkit/data/skills/integrations/linear/LICENSE.txt +202 -0
- agent_toolkit/data/skills/integrations/linear/NOTICE.txt +23 -0
- agent_toolkit/data/skills/integrations/linear/SKILL.md +134 -0
- agent_toolkit/data/skills/integrations/mcp/SKILL.md +88 -0
- agent_toolkit/data/skills/integrations/slack-assistant/SKILL.md +138 -0
- agent_toolkit/data/skills/integrations/slack-cli/SKILL.md +109 -0
- agent_toolkit/data/skills/integrations/slack-cli/references/INSTALLATION.md +42 -0
- agent_toolkit/data/skills/loops/loop-runner/SKILL.md +92 -0
- agent_toolkit/data/skills/ops/docs-generator/SKILL.md +120 -0
- agent_toolkit/data/skills/ops/llm-cost-advisor/SKILL.md +87 -0
- agent_toolkit/data/skills/ops/swarm/SKILL.md +108 -0
- agent_toolkit/data/skills/ops/swarm-handoff/SKILL.md +112 -0
- agent_toolkit/data/skills/ops/swarm-observer/SKILL.md +102 -0
- agent_toolkit/data/skills/ops/triage/SKILL.md +119 -0
- agent_toolkit/data/skills/quality/codeql/SKILL.md +106 -0
- agent_toolkit/data/skills/quality/codeql/references/codeql-queries.md +43 -0
- agent_toolkit/data/skills/quality/megalinter/SKILL.md +162 -0
- agent_toolkit/data/skills/quality/megalinter/references/megalinter-images.md +36 -0
- agent_toolkit/data/skills/quality/megalinter/references/megalinter-license.md +41 -0
- agent_toolkit/data/skills/quality/megalinter/references/megalinter-targets.md +66 -0
- agent_toolkit/data/skills/tooling/chrome-devtools/SKILL.md +146 -0
- agent_toolkit/data/skills/tooling/herdr/SKILL.md +109 -0
- agent_toolkit/data/skills/tooling/inventory/SKILL.md +81 -0
- agent_toolkit/data/skills/tooling/jupyter-notebook/LICENSE.txt +201 -0
- agent_toolkit/data/skills/tooling/jupyter-notebook/NOTICE.txt +27 -0
- agent_toolkit/data/skills/tooling/jupyter-notebook/SKILL.md +145 -0
- agent_toolkit/data/skills/tooling/jupyter-notebook/assets/experiment-template.ipynb +117 -0
- agent_toolkit/data/skills/tooling/jupyter-notebook/assets/tutorial-template.ipynb +115 -0
- agent_toolkit/data/skills/tooling/jupyter-notebook/references/experiment-patterns.md +10 -0
- agent_toolkit/data/skills/tooling/jupyter-notebook/references/notebook-structure.md +17 -0
- agent_toolkit/data/skills/tooling/jupyter-notebook/references/quality-checklist.md +11 -0
- agent_toolkit/data/skills/tooling/jupyter-notebook/references/tutorial-patterns.md +9 -0
- agent_toolkit/data/skills/tooling/jupyter-notebook/scripts/new_notebook.py +132 -0
- agent_toolkit/data/skills/tooling/mermaid/SKILL.md +36 -0
- agent_toolkit/data/skills/tooling/playwright-cli/LICENSE.txt +201 -0
- agent_toolkit/data/skills/tooling/playwright-cli/NOTICE.txt +29 -0
- agent_toolkit/data/skills/tooling/playwright-cli/SKILL.md +154 -0
- agent_toolkit/data/skills/tooling/playwright-cli/references/cli.md +116 -0
- agent_toolkit/data/skills/tooling/playwright-cli/references/workflows.md +98 -0
- agent_toolkit/data/skills/tooling/playwright-cli/scripts/executable_playwright_cli.sh +25 -0
- agent_toolkit/data_cache.py +79 -0
- agent_toolkit/data_sync.py +144 -0
- agent_toolkit/installer/__init__.py +0 -0
- agent_toolkit/installer/merge.py +59 -0
- agent_toolkit/installer/receipt.py +89 -0
- agent_toolkit/installer/sources.py +92 -0
- agent_toolkit/installer/tracking.py +63 -0
- agent_toolkit/launcher.py +69 -0
- agent_toolkit/loop/__init__.py +0 -0
- agent_toolkit/loop/budget.py +107 -0
- agent_toolkit/loop/gh_gate.py +923 -0
- agent_toolkit/loop/loop-gh-gate +923 -0
- agent_toolkit/loop/pack.py +65 -0
- agent_toolkit/loop/runner.py +2722 -0
- agent_toolkit/runner/__init__.py +0 -0
- agent_toolkit/runner/dispatcher.py +163 -0
- agent_toolkit/runner/policy.py +356 -0
- agent_toolkit/runner/providers/__init__.py +21 -0
- agent_toolkit/runner/providers/anthropic_provider.py +109 -0
- agent_toolkit/runner/providers/base.py +53 -0
- agent_toolkit/runner/providers/ollama_provider.py +108 -0
- agent_toolkit/runner/providers/openai_provider.py +103 -0
- agent_toolkit/runner/providers/opencode_provider.py +127 -0
- agent_toolkit/swarm/__init__.py +5 -0
- agent_toolkit/swarm/approvals.py +121 -0
- agent_toolkit/swarm/backends/__init__.py +596 -0
- agent_toolkit/swarm/budget.py +83 -0
- agent_toolkit/swarm/cli.py +2448 -0
- agent_toolkit/swarm/config.py +351 -0
- agent_toolkit/swarm/handoff.py +174 -0
- agent_toolkit/swarm/models.py +230 -0
- agent_toolkit/swarm/prompts.py +177 -0
- agent_toolkit/swarm/recipes.py +304 -0
- agent_toolkit/swarm/runner.py +267 -0
- agent_toolkit/swarm/state.py +93 -0
- agent_toolkit/swarm/store.py +148 -0
- agent_toolkit/swarm/worktree.py +105 -0
- agent_toolkit/templates/workspace/.gitignore +19 -0
- agent_toolkit/templates/workspace/AGENTS.md +82 -0
- agent_toolkit/templates/workspace/knowledge/README.md +22 -0
- agent_toolkit/templates/workspace/knowledge/learnings/general.md +3 -0
- agent_toolkit/templates/workspace/knowledge/todos/pending.md +7 -0
- agent_toolkit/templates/workspace/packs/README.md +24 -0
- agent_toolkit/templates/workspace/personas/architect.md +12 -0
- agent_toolkit/templates/workspace/personas/implementer.md +12 -0
- agent_toolkit/templates/workspace/personas/researcher.md +12 -0
- agent_toolkit/templates/workspace/personas/reviewer.md +12 -0
- agent_toolkit_cli-1.11.0.dist-info/METADATA +363 -0
- agent_toolkit_cli-1.11.0.dist-info/RECORD +438 -0
- agent_toolkit_cli-1.11.0.dist-info/WHEEL +4 -0
- agent_toolkit_cli-1.11.0.dist-info/entry_points.txt +4 -0
- 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
|
+
)
|