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,261 @@
|
|
|
1
|
+
"""
|
|
2
|
+
OpenAI Codex target adapter.
|
|
3
|
+
|
|
4
|
+
OpenAI Codex launched a plugin marketplace in March 2026. As of the research
|
|
5
|
+
date (2026-08-04) it is in early experimental status — self-serve marketplace
|
|
6
|
+
submission is "coming soon" and the plugin API surface is still evolving.
|
|
7
|
+
|
|
8
|
+
**IMPORTANT**: This adapter is labeled ``maturity = "experimental"`` because:
|
|
9
|
+
1. The Codex plugin API may change without notice.
|
|
10
|
+
2. Marketplace submission requires explicit authorization from OpenAI.
|
|
11
|
+
3. Hooks and MCP integration are unknown-blocked (not confirmed by official docs).
|
|
12
|
+
|
|
13
|
+
Generated artifacts:
|
|
14
|
+
.codex-plugin/plugin.json — manifest (different directory from .claude-plugin/)
|
|
15
|
+
skills/<name>/SKILL.md — on-demand procedures
|
|
16
|
+
agents/<name>/AGENT.md — agent personas
|
|
17
|
+
|
|
18
|
+
NOT generated:
|
|
19
|
+
Hooks — unknown-blocked; not confirmed in official Codex plugin docs.
|
|
20
|
+
MCP — unknown-blocked; not confirmed in official Codex plugin docs.
|
|
21
|
+
|
|
22
|
+
Marketplace note:
|
|
23
|
+
Codex artifacts MUST NOT be submitted to the Codex marketplace without
|
|
24
|
+
explicit authorization from OpenAI. The marketplace is gated as of 2026-08-04.
|
|
25
|
+
Use this adapter to generate the plugin structure for local development only.
|
|
26
|
+
|
|
27
|
+
Path distinction from Claude Code / Cursor:
|
|
28
|
+
Claude Code: .claude-plugin/plugin.json
|
|
29
|
+
Cursor: .cursor-plugin/plugin.json
|
|
30
|
+
Codex: .codex-plugin/plugin.json ← this adapter
|
|
31
|
+
|
|
32
|
+
Research: docs/research/platform-capability-matrix.md (2026-08-04)
|
|
33
|
+
Marketplace: https://marketplace.openai.com/codex (gated, submission "coming soon")
|
|
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
|
+
# Settings that must never appear in a publicly distributed Codex plugin.
|
|
51
|
+
# These bypass safety mechanisms and are forbidden in any marketplace submission.
|
|
52
|
+
_FORBIDDEN_CODEX_SETTINGS = {
|
|
53
|
+
"skipDangerousModePermissionPrompt",
|
|
54
|
+
"autoAcceptPermissions",
|
|
55
|
+
"disablePermissionPrompts",
|
|
56
|
+
"allowUnsafeCode",
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class CodexAdapter(TargetAdapter):
|
|
61
|
+
"""Compiles agent-toolkit products into OpenAI Codex plugin bundles.
|
|
62
|
+
|
|
63
|
+
EXPERIMENTAL: The Codex plugin API launched in March 2026 and is still
|
|
64
|
+
evolving. Self-serve marketplace submission is "coming soon" as of
|
|
65
|
+
2026-08-04. Do NOT submit generated artifacts to the marketplace without
|
|
66
|
+
explicit OpenAI authorization.
|
|
67
|
+
|
|
68
|
+
The generated bundle structure mirrors the Codex plugin format:
|
|
69
|
+
.codex-plugin/plugin.json — manifest
|
|
70
|
+
skills/<name>/SKILL.md — on-demand skills
|
|
71
|
+
agents/<name>/AGENT.md — agent personas
|
|
72
|
+
|
|
73
|
+
Capability parity:
|
|
74
|
+
native (experimental): plugin manifest, skills, agents
|
|
75
|
+
unknown-blocked: hooks (not confirmed in official Codex docs)
|
|
76
|
+
unknown-blocked: MCP (not confirmed in official Codex docs)
|
|
77
|
+
unsupported: lifecycle hooks, MCP integration
|
|
78
|
+
|
|
79
|
+
Maturity: experimental — API may change without notice.
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
target_id = "codex"
|
|
83
|
+
package_type = "plugin"
|
|
84
|
+
maturity = "experimental" # MUST remain "experimental" — marketplace is gated
|
|
85
|
+
|
|
86
|
+
def compile(self, graph: CanonicalGraph, product: Product) -> CompilationResult:
|
|
87
|
+
result = CompilationResult(target=self.target_id, product=product.id)
|
|
88
|
+
out_dir = self.output_root / product.id
|
|
89
|
+
|
|
90
|
+
# 1. Emit .codex-plugin/plugin.json (NOT .claude-plugin/ — different path)
|
|
91
|
+
plugin_json = self._build_plugin_json(product)
|
|
92
|
+
self._write_file(
|
|
93
|
+
out_dir / ".codex-plugin" / "plugin.json",
|
|
94
|
+
json.dumps(plugin_json, indent=2) + "\n",
|
|
95
|
+
result,
|
|
96
|
+
)
|
|
97
|
+
result.emitted.append("plugin-manifest")
|
|
98
|
+
|
|
99
|
+
# 2. Emit skills to skills/<name>/SKILL.md
|
|
100
|
+
for skill_id in product.included_skills:
|
|
101
|
+
skill = graph.skills.get(skill_id)
|
|
102
|
+
if skill is None:
|
|
103
|
+
result.warnings.append(f"Skill '{skill_id}' not found — skipping")
|
|
104
|
+
result.omitted.append(f"skill:{skill_id}")
|
|
105
|
+
continue
|
|
106
|
+
self._emit_skill(skill, out_dir, result)
|
|
107
|
+
|
|
108
|
+
# 3. Emit agents to agents/<name>/AGENT.md
|
|
109
|
+
for agent_id in product.included_agents:
|
|
110
|
+
agent = graph.agents.get(agent_id)
|
|
111
|
+
if agent is None:
|
|
112
|
+
result.warnings.append(f"Agent '{agent_id}' not found — skipping")
|
|
113
|
+
result.omitted.append(f"agent:{agent_id}")
|
|
114
|
+
continue
|
|
115
|
+
self._emit_agent(agent, out_dir, result)
|
|
116
|
+
|
|
117
|
+
# 4. Explicitly document unsupported capabilities.
|
|
118
|
+
# Never silently drop a capability — always report.
|
|
119
|
+
result.unsupported.extend(
|
|
120
|
+
[
|
|
121
|
+
"hooks — unknown-blocked: lifecycle hooks not confirmed in official Codex plugin docs",
|
|
122
|
+
"mcp — unknown-blocked: MCP integration not confirmed in official Codex plugin docs",
|
|
123
|
+
]
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
# 5. Add an experimental maturity warning to every compilation result.
|
|
127
|
+
result.warnings.append(
|
|
128
|
+
"Codex plugin API is experimental (maturity='experimental'). "
|
|
129
|
+
"Do NOT submit to Codex marketplace without explicit OpenAI authorization. "
|
|
130
|
+
"Self-serve submission is 'coming soon' as of 2026-08-04."
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
return result
|
|
134
|
+
|
|
135
|
+
# ── manifest ──────────────────────────────────────────────────────────────
|
|
136
|
+
|
|
137
|
+
def _build_plugin_json(self, product: Product) -> dict:
|
|
138
|
+
"""Build .codex-plugin/plugin.json manifest.
|
|
139
|
+
|
|
140
|
+
The Codex manifest uses the same general shape as Claude Code / Cursor
|
|
141
|
+
plugin.json but is placed in .codex-plugin/ (not .claude-plugin/).
|
|
142
|
+
|
|
143
|
+
Security:
|
|
144
|
+
- No forbidden settings (skipDangerousModePermissionPrompt, etc.)
|
|
145
|
+
- No private hostnames or IPs
|
|
146
|
+
- maturity field is always set to "experimental"
|
|
147
|
+
"""
|
|
148
|
+
try:
|
|
149
|
+
from agent_toolkit import __version__
|
|
150
|
+
|
|
151
|
+
version = __version__
|
|
152
|
+
except ImportError:
|
|
153
|
+
version = "1.0.0"
|
|
154
|
+
|
|
155
|
+
manifest = {
|
|
156
|
+
"name": product.id,
|
|
157
|
+
"version": version,
|
|
158
|
+
"description": product.description,
|
|
159
|
+
"maturity": self.maturity, # always "experimental" — accurately labels this plugin
|
|
160
|
+
"author": {
|
|
161
|
+
"name": "ulises-jeremias",
|
|
162
|
+
"email": "ulisescf.24@gmail.com",
|
|
163
|
+
},
|
|
164
|
+
"homepage": "https://github.com/ulises-jeremias/agent-toolkit",
|
|
165
|
+
"repository": "https://github.com/ulises-jeremias/agent-toolkit",
|
|
166
|
+
"license": "MIT",
|
|
167
|
+
"keywords": [
|
|
168
|
+
"agent-toolkit",
|
|
169
|
+
product.id.replace("agent-toolkit-", ""),
|
|
170
|
+
"codex",
|
|
171
|
+
"skills",
|
|
172
|
+
"agents",
|
|
173
|
+
],
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
# Validate — raise loudly if forbidden settings sneak in
|
|
177
|
+
errors = self.validate_plugin_json(manifest)
|
|
178
|
+
# In practice this should never trigger since we build the dict above,
|
|
179
|
+
# but defensive validation is always correct.
|
|
180
|
+
for err in errors:
|
|
181
|
+
raise ValueError(f"Generated Codex plugin.json is invalid: {err}")
|
|
182
|
+
|
|
183
|
+
return manifest
|
|
184
|
+
|
|
185
|
+
@staticmethod
|
|
186
|
+
def validate_plugin_json(data: dict) -> list[str]:
|
|
187
|
+
"""Return error messages for any forbidden plugin.json fields or values."""
|
|
188
|
+
errors = []
|
|
189
|
+
for field in _FORBIDDEN_CODEX_SETTINGS:
|
|
190
|
+
if field in data:
|
|
191
|
+
errors.append(
|
|
192
|
+
f"Forbidden field '{field}' in .codex-plugin/plugin.json — "
|
|
193
|
+
"this setting bypasses safety mechanisms and is prohibited "
|
|
194
|
+
"in any Codex marketplace submission"
|
|
195
|
+
)
|
|
196
|
+
text = json.dumps(data)
|
|
197
|
+
errors.extend(private_network_leak_errors(text, context="plugin.json"))
|
|
198
|
+
return errors
|
|
199
|
+
|
|
200
|
+
# ── skills ────────────────────────────────────────────────────────────────
|
|
201
|
+
|
|
202
|
+
def _emit_skill(self, skill: Skill, out_dir: Path, result: CompilationResult) -> None:
|
|
203
|
+
"""Copy SKILL.md to skills/<name>/SKILL.md.
|
|
204
|
+
|
|
205
|
+
Codex discovers skills at <plugin-root>/skills/<name>/SKILL.md —
|
|
206
|
+
the same path convention as Claude Code and Cursor.
|
|
207
|
+
"""
|
|
208
|
+
if not skill.source_path.exists():
|
|
209
|
+
result.warnings.append(f"Skill source missing: {skill.source_path}")
|
|
210
|
+
result.omitted.append(f"skill:{skill.id}")
|
|
211
|
+
return
|
|
212
|
+
|
|
213
|
+
dst = out_dir / "skills" / skill.name
|
|
214
|
+
dst.mkdir(parents=True, exist_ok=True)
|
|
215
|
+
|
|
216
|
+
content = skill.source_path.read_text(encoding="utf-8", errors="replace")
|
|
217
|
+
self._write_file(dst / "SKILL.md", content, result)
|
|
218
|
+
|
|
219
|
+
# Progressive disclosure: copy references/
|
|
220
|
+
self._copy_skill_references(skill, dst, result)
|
|
221
|
+
|
|
222
|
+
result.emitted.append(f"skill:{skill.id}")
|
|
223
|
+
|
|
224
|
+
# ── agents ────────────────────────────────────────────────────────────────
|
|
225
|
+
|
|
226
|
+
def _emit_agent(self, agent: Agent, out_dir: Path, result: CompilationResult) -> None:
|
|
227
|
+
"""Copy AGENT.md to agents/<name>/AGENT.md."""
|
|
228
|
+
if not agent.source_path.exists():
|
|
229
|
+
result.warnings.append(f"Agent source missing: {agent.source_path}")
|
|
230
|
+
result.omitted.append(f"agent:{agent.id}")
|
|
231
|
+
return
|
|
232
|
+
|
|
233
|
+
dst = out_dir / "agents" / agent.name
|
|
234
|
+
dst.mkdir(parents=True, exist_ok=True)
|
|
235
|
+
|
|
236
|
+
content = agent.source_path.read_text(encoding="utf-8", errors="replace")
|
|
237
|
+
self._write_file(dst / "AGENT.md", content, result)
|
|
238
|
+
result.emitted.append(f"agent:{agent.id}")
|
|
239
|
+
|
|
240
|
+
# ── parity notes ──────────────────────────────────────────────────────────
|
|
241
|
+
|
|
242
|
+
@staticmethod
|
|
243
|
+
def parity_notes() -> str:
|
|
244
|
+
return (
|
|
245
|
+
"OpenAI Codex plugin support is EXPERIMENTAL. The marketplace launched "
|
|
246
|
+
"in March 2026 but self-serve submission is 'coming soon' as of 2026-08-04. "
|
|
247
|
+
"Generated artifacts MUST NOT be submitted to the marketplace without "
|
|
248
|
+
"explicit authorization from OpenAI.\n"
|
|
249
|
+
"\n"
|
|
250
|
+
"Manifest path: .codex-plugin/plugin.json\n"
|
|
251
|
+
" (distinct from .claude-plugin/ and .cursor-plugin/ — same general schema)\n"
|
|
252
|
+
"\n"
|
|
253
|
+
"Hooks and MCP are unknown-blocked — neither surface is confirmed by "
|
|
254
|
+
"official Codex plugin documentation. They are explicitly reported in "
|
|
255
|
+
"CompilationResult.unsupported rather than silently dropped.\n"
|
|
256
|
+
"\n"
|
|
257
|
+
"The ``maturity`` field in plugin.json is always set to 'experimental' "
|
|
258
|
+
"to accurately represent the current state of the Codex plugin ecosystem. "
|
|
259
|
+
"This must not be changed to 'stable' until the Codex plugin API is "
|
|
260
|
+
"officially stable and marketplace submission is open to all publishers."
|
|
261
|
+
)
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"""
|
|
2
|
+
GitHub Copilot CLI and Repository target adapter.
|
|
3
|
+
|
|
4
|
+
GitHub Copilot has TWO distinct distribution surfaces — both generated from
|
|
5
|
+
the same canonical IR but published separately:
|
|
6
|
+
|
|
7
|
+
1. **Copilot CLI Plugin** — installable via `copilot plugin install`
|
|
8
|
+
Root-level `plugin.json` (NOT `.copilot-plugin/` — different schema
|
|
9
|
+
from Claude Code / Cursor).
|
|
10
|
+
Discovery paths: skills/, agents/, hooks.json
|
|
11
|
+
|
|
12
|
+
2. **Repository Surface** — files committed to a project repository
|
|
13
|
+
`.github/copilot-instructions.md` — global instructions
|
|
14
|
+
`.github/agents/<name>.agent.md` — agent personas (different format!)
|
|
15
|
+
`.github/skills/<name>/SKILL.md` — on-demand skills
|
|
16
|
+
`.github/hooks/<name>.json` — lifecycle hooks (future)
|
|
17
|
+
|
|
18
|
+
Official docs:
|
|
19
|
+
https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-plugin-reference
|
|
20
|
+
Research:
|
|
21
|
+
docs/research/platform-capability-matrix.md (2026-08-04)
|
|
22
|
+
|
|
23
|
+
Key differences from Claude Code / Cursor:
|
|
24
|
+
- CLI plugin.json is at ROOT level, not in .copilot-plugin/
|
|
25
|
+
- Agent format uses .agent.md extension (not AGENT.md)
|
|
26
|
+
- Each surface (CLI plugin, repository) must be generated independently
|
|
27
|
+
- Hooks require both Bash (.sh) AND PowerShell (.ps1) handlers
|
|
28
|
+
- MCP: unknown-blocked (not confirmed from official docs as of research date)
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
from __future__ import annotations
|
|
32
|
+
|
|
33
|
+
import json
|
|
34
|
+
from pathlib import Path
|
|
35
|
+
|
|
36
|
+
from agent_toolkit.compiler.model import (
|
|
37
|
+
Agent,
|
|
38
|
+
CanonicalGraph,
|
|
39
|
+
CompilationResult,
|
|
40
|
+
Product,
|
|
41
|
+
Skill,
|
|
42
|
+
)
|
|
43
|
+
from agent_toolkit.compiler.targets.base import TargetAdapter
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class CopilotCLIAdapter(TargetAdapter):
|
|
47
|
+
"""Generates GitHub Copilot CLI plugin bundle.
|
|
48
|
+
|
|
49
|
+
The plugin is installed via:
|
|
50
|
+
copilot plugin install <name>@<marketplace>
|
|
51
|
+
or declared in .github/copilot/settings.json.
|
|
52
|
+
|
|
53
|
+
Capability parity:
|
|
54
|
+
native: skills, agents (.agent.md format), plugin manifest
|
|
55
|
+
unknown-blocked: MCP (not confirmed from official docs)
|
|
56
|
+
unsupported: hooks (handler format unclear; cross-platform requires
|
|
57
|
+
both Bash + PowerShell — pending canonical hook model #16)
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
target_id = "copilot-cli"
|
|
61
|
+
package_type = "plugin"
|
|
62
|
+
maturity = "stable"
|
|
63
|
+
|
|
64
|
+
def compile(self, graph: CanonicalGraph, product: Product) -> CompilationResult:
|
|
65
|
+
result = CompilationResult(target=self.target_id, product=product.id)
|
|
66
|
+
out_dir = self.output_root / product.id
|
|
67
|
+
|
|
68
|
+
# 1. Root-level plugin.json (different from .claude-plugin/plugin.json)
|
|
69
|
+
self._write_file(
|
|
70
|
+
out_dir / "plugin.json",
|
|
71
|
+
json.dumps(self._build_plugin_json(product), indent=2) + "\n",
|
|
72
|
+
result,
|
|
73
|
+
)
|
|
74
|
+
result.emitted.append("plugin-manifest")
|
|
75
|
+
|
|
76
|
+
# 2. Skills
|
|
77
|
+
for skill_id in product.included_skills:
|
|
78
|
+
skill = graph.skills.get(skill_id)
|
|
79
|
+
if skill is None:
|
|
80
|
+
result.warnings.append(f"Skill '{skill_id}' not found — skipping")
|
|
81
|
+
result.omitted.append(f"skill:{skill_id}")
|
|
82
|
+
continue
|
|
83
|
+
self._emit_skill(skill, out_dir, result)
|
|
84
|
+
|
|
85
|
+
# 3. Agents (.agent.md format — distinct from AGENT.md)
|
|
86
|
+
for agent_id in product.included_agents:
|
|
87
|
+
agent = graph.agents.get(agent_id)
|
|
88
|
+
if agent is None:
|
|
89
|
+
result.warnings.append(f"Agent '{agent_id}' not found — skipping")
|
|
90
|
+
result.omitted.append(f"agent:{agent_id}")
|
|
91
|
+
continue
|
|
92
|
+
self._emit_agent_cli(agent, out_dir, result)
|
|
93
|
+
|
|
94
|
+
# 4. Explicitly report what is not yet implemented
|
|
95
|
+
result.unsupported.extend(
|
|
96
|
+
[
|
|
97
|
+
"hooks (cross-platform Bash+PowerShell handlers required — pending #16)",
|
|
98
|
+
"mcp (unknown-blocked: not confirmed in official Copilot CLI docs)",
|
|
99
|
+
]
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
return result
|
|
103
|
+
|
|
104
|
+
def _build_plugin_json(self, product: Product) -> dict:
|
|
105
|
+
try:
|
|
106
|
+
from agent_toolkit import __version__
|
|
107
|
+
|
|
108
|
+
version = __version__
|
|
109
|
+
except ImportError:
|
|
110
|
+
version = "1.0.0"
|
|
111
|
+
|
|
112
|
+
return {
|
|
113
|
+
"name": product.id,
|
|
114
|
+
"version": version,
|
|
115
|
+
"description": product.description,
|
|
116
|
+
"author": {
|
|
117
|
+
"name": "ulises-jeremias",
|
|
118
|
+
"url": "https://github.com/ulises-jeremias/agent-toolkit",
|
|
119
|
+
},
|
|
120
|
+
"repository": "https://github.com/ulises-jeremias/agent-toolkit",
|
|
121
|
+
"license": "MIT",
|
|
122
|
+
"skills": "skills/",
|
|
123
|
+
"agents": "agents/",
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
def _emit_skill(self, skill: Skill, out_dir: Path, result: CompilationResult) -> None:
|
|
127
|
+
if not skill.source_path.exists():
|
|
128
|
+
result.warnings.append(f"Skill source missing: {skill.source_path}")
|
|
129
|
+
result.omitted.append(f"skill:{skill.id}")
|
|
130
|
+
return
|
|
131
|
+
|
|
132
|
+
dst = out_dir / "skills" / skill.name
|
|
133
|
+
dst.mkdir(parents=True, exist_ok=True)
|
|
134
|
+
content = skill.source_path.read_text(encoding="utf-8", errors="replace")
|
|
135
|
+
self._write_file(dst / "SKILL.md", content, result)
|
|
136
|
+
|
|
137
|
+
self._copy_skill_references(skill, dst, result)
|
|
138
|
+
|
|
139
|
+
result.emitted.append(f"skill:{skill.id}")
|
|
140
|
+
|
|
141
|
+
def _emit_agent_cli(self, agent: Agent, out_dir: Path, result: CompilationResult) -> None:
|
|
142
|
+
"""Emit agent in Copilot CLI .agent.md format.
|
|
143
|
+
|
|
144
|
+
The Copilot CLI agent format uses <name>.agent.md (not AGENT.md).
|
|
145
|
+
Content is the same AGENT.md body with frontmatter.
|
|
146
|
+
"""
|
|
147
|
+
if not agent.source_path.exists():
|
|
148
|
+
result.warnings.append(f"Agent source missing: {agent.source_path}")
|
|
149
|
+
result.omitted.append(f"agent:{agent.id}")
|
|
150
|
+
return
|
|
151
|
+
|
|
152
|
+
dst = out_dir / "agents"
|
|
153
|
+
dst.mkdir(parents=True, exist_ok=True)
|
|
154
|
+
|
|
155
|
+
content = agent.source_path.read_text(encoding="utf-8", errors="replace")
|
|
156
|
+
# Write as <name>.agent.md (Copilot CLI convention)
|
|
157
|
+
self._write_file(dst / f"{agent.name}.agent.md", content, result)
|
|
158
|
+
result.emitted.append(f"agent:{agent.id}")
|
|
159
|
+
|
|
160
|
+
@staticmethod
|
|
161
|
+
def parity_notes() -> str:
|
|
162
|
+
return (
|
|
163
|
+
"Copilot CLI plugins use root-level plugin.json (not .copilot-plugin/). "
|
|
164
|
+
"Agents use the .agent.md extension. Hooks and MCP are not generated — "
|
|
165
|
+
"hooks need cross-platform handlers; MCP is unknown-blocked pending official docs."
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
class CopilotRepositoryAdapter(TargetAdapter):
|
|
170
|
+
"""Generates GitHub Copilot repository-scoped assets.
|
|
171
|
+
|
|
172
|
+
These are committed to a project repository and activate for
|
|
173
|
+
all Copilot surfaces (IDE, cloud-agent, CLI) within that repo.
|
|
174
|
+
|
|
175
|
+
Generated files:
|
|
176
|
+
.github/copilot-instructions.md ← global instructions
|
|
177
|
+
.github/agents/<name>.agent.md ← agent personas
|
|
178
|
+
.github/skills/<name>/SKILL.md ← on-demand skills
|
|
179
|
+
|
|
180
|
+
Capability parity:
|
|
181
|
+
native: copilot-instructions.md, agents (.agent.md), skills
|
|
182
|
+
unsupported: hooks, MCP (not confirmed for repository surface)
|
|
183
|
+
"""
|
|
184
|
+
|
|
185
|
+
target_id = "copilot-repository"
|
|
186
|
+
package_type = "repository-customization"
|
|
187
|
+
maturity = "stable"
|
|
188
|
+
|
|
189
|
+
def compile(self, graph: CanonicalGraph, product: Product) -> CompilationResult:
|
|
190
|
+
result = CompilationResult(target=self.target_id, product=product.id)
|
|
191
|
+
out_dir = self.output_root / product.id
|
|
192
|
+
|
|
193
|
+
# 1. Global instructions from assistant agent body
|
|
194
|
+
self._emit_instructions(graph, product, out_dir, result)
|
|
195
|
+
|
|
196
|
+
# 2. Skills
|
|
197
|
+
for skill_id in product.included_skills:
|
|
198
|
+
skill = graph.skills.get(skill_id)
|
|
199
|
+
if skill is None:
|
|
200
|
+
result.omitted.append(f"skill:{skill_id}")
|
|
201
|
+
continue
|
|
202
|
+
self._emit_skill_repo(skill, out_dir, result)
|
|
203
|
+
|
|
204
|
+
# 3. Agents
|
|
205
|
+
for agent_id in product.included_agents:
|
|
206
|
+
agent = graph.agents.get(agent_id)
|
|
207
|
+
if agent is None:
|
|
208
|
+
result.omitted.append(f"agent:{agent_id}")
|
|
209
|
+
continue
|
|
210
|
+
self._emit_agent_repo(agent, out_dir, result)
|
|
211
|
+
|
|
212
|
+
result.unsupported.extend(
|
|
213
|
+
[
|
|
214
|
+
"hooks (unknown-blocked for repository surface)",
|
|
215
|
+
"mcp (unknown-blocked for repository surface)",
|
|
216
|
+
]
|
|
217
|
+
)
|
|
218
|
+
return result
|
|
219
|
+
|
|
220
|
+
def _emit_instructions(
|
|
221
|
+
self, graph: CanonicalGraph, product: Product, out_dir: Path, result: CompilationResult
|
|
222
|
+
) -> None:
|
|
223
|
+
"""Generate .github/copilot-instructions.md from assistant agent."""
|
|
224
|
+
# Build instructions from assistant agent + product description
|
|
225
|
+
lines = [
|
|
226
|
+
f"# {product.name}",
|
|
227
|
+
"",
|
|
228
|
+
product.description,
|
|
229
|
+
"",
|
|
230
|
+
"## Available skills",
|
|
231
|
+
"",
|
|
232
|
+
]
|
|
233
|
+
for skill_id in product.included_skills:
|
|
234
|
+
skill = graph.skills.get(skill_id)
|
|
235
|
+
if skill:
|
|
236
|
+
lines.append(f"- **{skill.name}**: {skill.description[:80]}")
|
|
237
|
+
lines.extend(["", "## Available agents", ""])
|
|
238
|
+
for agent_id in product.included_agents:
|
|
239
|
+
agent = graph.agents.get(agent_id)
|
|
240
|
+
if agent:
|
|
241
|
+
lines.append(f"- **{agent.name}**: {agent.description[:80]}")
|
|
242
|
+
|
|
243
|
+
content = "\n".join(lines) + "\n"
|
|
244
|
+
github_dir = out_dir / ".github"
|
|
245
|
+
github_dir.mkdir(parents=True, exist_ok=True)
|
|
246
|
+
self._write_file(github_dir / "copilot-instructions.md", content, result)
|
|
247
|
+
result.emitted.append("copilot-instructions.md")
|
|
248
|
+
|
|
249
|
+
def _emit_skill_repo(self, skill: Skill, out_dir: Path, result: CompilationResult) -> None:
|
|
250
|
+
if not skill.source_path.exists():
|
|
251
|
+
result.omitted.append(f"skill:{skill.id}")
|
|
252
|
+
return
|
|
253
|
+
dst = out_dir / ".github" / "skills" / skill.name
|
|
254
|
+
dst.mkdir(parents=True, exist_ok=True)
|
|
255
|
+
content = skill.source_path.read_text(encoding="utf-8", errors="replace")
|
|
256
|
+
self._write_file(dst / "SKILL.md", content, result)
|
|
257
|
+
result.emitted.append(f"skill:{skill.id}")
|
|
258
|
+
|
|
259
|
+
def _emit_agent_repo(self, agent: Agent, out_dir: Path, result: CompilationResult) -> None:
|
|
260
|
+
if not agent.source_path.exists():
|
|
261
|
+
result.omitted.append(f"agent:{agent.id}")
|
|
262
|
+
return
|
|
263
|
+
dst = out_dir / ".github" / "agents"
|
|
264
|
+
dst.mkdir(parents=True, exist_ok=True)
|
|
265
|
+
content = agent.source_path.read_text(encoding="utf-8", errors="replace")
|
|
266
|
+
self._write_file(dst / f"{agent.name}.agent.md", content, result)
|
|
267
|
+
result.emitted.append(f"agent:{agent.id}")
|
|
268
|
+
|
|
269
|
+
@staticmethod
|
|
270
|
+
def parity_notes() -> str:
|
|
271
|
+
return (
|
|
272
|
+
"Repository surface emits .github/copilot-instructions.md, "
|
|
273
|
+
".github/agents/*.agent.md, and .github/skills/*/SKILL.md. "
|
|
274
|
+
"Hooks and MCP are not generated for the repository surface."
|
|
275
|
+
)
|