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,207 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Cursor IDE/CLI target adapter.
|
|
3
|
+
|
|
4
|
+
Compiles canonical IR into Cursor plugin bundles:
|
|
5
|
+
plugins/<product-id>/.cursor-plugin/plugin.json — marketplace manifest
|
|
6
|
+
plugins/<product-id>/skills/<name>/SKILL.md — on-demand procedures
|
|
7
|
+
plugins/<product-id>/agents/<name>/AGENT.md — agent personas
|
|
8
|
+
|
|
9
|
+
Key differences from Claude Code:
|
|
10
|
+
- Manifest key is `.cursor-plugin/`, not `.claude-plugin/`
|
|
11
|
+
- Rules (.mdc) are a separate surface from skills:
|
|
12
|
+
* Rules = persistent behavioral constraints (always-on in session)
|
|
13
|
+
* Skills = on-demand procedures with resources (invoked explicitly)
|
|
14
|
+
Rules are generated from agent/assistant instructions; they are NOT
|
|
15
|
+
a substitute for skills in the plugin bundle.
|
|
16
|
+
- Hook event names differ (workspaceOpen, sessionStart vs session.start)
|
|
17
|
+
- MCP config goes in .cursor/mcp.json, not .mcp.json
|
|
18
|
+
|
|
19
|
+
Official docs: https://cursor.com/docs/plugins
|
|
20
|
+
Research: docs/research/platform-capability-matrix.md (2026-08-04)
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
from __future__ import annotations
|
|
24
|
+
|
|
25
|
+
import json
|
|
26
|
+
from pathlib import Path
|
|
27
|
+
|
|
28
|
+
from agent_toolkit.compiler.model import (
|
|
29
|
+
Agent,
|
|
30
|
+
CanonicalGraph,
|
|
31
|
+
CompilationResult,
|
|
32
|
+
Product,
|
|
33
|
+
Skill,
|
|
34
|
+
)
|
|
35
|
+
from agent_toolkit.compiler.targets.base import TargetAdapter
|
|
36
|
+
|
|
37
|
+
# Cursor supports these .mdc rule frontmatter fields.
|
|
38
|
+
# We generate rules only from skill/agent behavioral constraints —
|
|
39
|
+
# NOT as a substitute for skills in the plugin bundle.
|
|
40
|
+
_CURSOR_RULE_HEADER = """\
|
|
41
|
+
---
|
|
42
|
+
description: {description}
|
|
43
|
+
alwaysApply: {always_apply}
|
|
44
|
+
---
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class CursorAdapter(TargetAdapter):
|
|
49
|
+
"""Compiles agent-toolkit products into Cursor plugin bundles.
|
|
50
|
+
|
|
51
|
+
Cursor reads both IDE and CLI from the same plugin bundle.
|
|
52
|
+
The generated bundle is installable via the Cursor marketplace or
|
|
53
|
+
local plugin development linking.
|
|
54
|
+
|
|
55
|
+
Capability parity:
|
|
56
|
+
native: skills, agents, plugin manifest
|
|
57
|
+
native-experimental: hooks (not yet implemented — pending hook model)
|
|
58
|
+
manual: MCP (user configures ~/.cursor/mcp.json separately)
|
|
59
|
+
unsupported: Windsurf-style always-on global rules
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
target_id = "cursor"
|
|
63
|
+
package_type = "plugin"
|
|
64
|
+
maturity = "stable"
|
|
65
|
+
|
|
66
|
+
def compile(self, graph: CanonicalGraph, product: Product) -> CompilationResult:
|
|
67
|
+
result = CompilationResult(target=self.target_id, product=product.id)
|
|
68
|
+
out_dir = self.output_root / product.id
|
|
69
|
+
|
|
70
|
+
# 1. Emit .cursor-plugin/plugin.json
|
|
71
|
+
plugin_json = self._build_plugin_json(product)
|
|
72
|
+
self._write_file(
|
|
73
|
+
out_dir / ".cursor-plugin" / "plugin.json",
|
|
74
|
+
json.dumps(plugin_json, indent=2) + "\n",
|
|
75
|
+
result,
|
|
76
|
+
)
|
|
77
|
+
result.emitted.append("plugin-manifest")
|
|
78
|
+
|
|
79
|
+
# 2. Emit skills (same Agent Skills SKILL.md format as Claude Code)
|
|
80
|
+
for skill_id in product.included_skills:
|
|
81
|
+
skill = graph.skills.get(skill_id)
|
|
82
|
+
if skill is None:
|
|
83
|
+
result.warnings.append(f"Skill '{skill_id}' not found — skipping")
|
|
84
|
+
result.omitted.append(f"skill:{skill_id}")
|
|
85
|
+
continue
|
|
86
|
+
self._emit_skill(skill, out_dir, result)
|
|
87
|
+
|
|
88
|
+
# 3. Emit agents (AGENT.md format)
|
|
89
|
+
for agent_id in product.included_agents:
|
|
90
|
+
agent = graph.agents.get(agent_id)
|
|
91
|
+
if agent is None:
|
|
92
|
+
result.warnings.append(f"Agent '{agent_id}' not found — skipping")
|
|
93
|
+
result.omitted.append(f"agent:{agent_id}")
|
|
94
|
+
continue
|
|
95
|
+
self._emit_agent(agent, out_dir, result)
|
|
96
|
+
|
|
97
|
+
# 4. Explicitly document unsupported/pending capabilities
|
|
98
|
+
# (never silently drop — always report)
|
|
99
|
+
result.unsupported.extend(
|
|
100
|
+
[
|
|
101
|
+
"hooks (pending canonical hook model — Cursor uses workspaceOpen/sessionStart events)",
|
|
102
|
+
"mcp (.cursor/mcp.json — user configures manually; not bundled in plugin)",
|
|
103
|
+
"cursor-rules (.mdc) — generated as a separate profile surface, not in plugin bundle",
|
|
104
|
+
]
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
return result
|
|
108
|
+
|
|
109
|
+
# ── manifest ──────────────────────────────────────────────────────────────
|
|
110
|
+
|
|
111
|
+
def _build_plugin_json(self, product: Product) -> dict:
|
|
112
|
+
"""Build the .cursor-plugin/plugin.json manifest.
|
|
113
|
+
|
|
114
|
+
Schema matches Claude Code plugin.json (both platforms share this format),
|
|
115
|
+
but Cursor resolves plugin root from .cursor-plugin/ not .claude-plugin/.
|
|
116
|
+
"""
|
|
117
|
+
try:
|
|
118
|
+
from agent_toolkit import __version__
|
|
119
|
+
|
|
120
|
+
version = __version__
|
|
121
|
+
except ImportError:
|
|
122
|
+
version = "1.0.0"
|
|
123
|
+
|
|
124
|
+
return {
|
|
125
|
+
"name": product.id,
|
|
126
|
+
"version": version,
|
|
127
|
+
"description": product.description,
|
|
128
|
+
"author": {
|
|
129
|
+
"name": "ulises-jeremias",
|
|
130
|
+
"email": "ulisescf.24@gmail.com",
|
|
131
|
+
},
|
|
132
|
+
"homepage": "https://github.com/ulises-jeremias/agent-toolkit",
|
|
133
|
+
"repository": "https://github.com/ulises-jeremias/agent-toolkit",
|
|
134
|
+
"license": "MIT",
|
|
135
|
+
"keywords": [
|
|
136
|
+
"agent-toolkit",
|
|
137
|
+
product.id.replace("agent-toolkit-", ""),
|
|
138
|
+
"cursor",
|
|
139
|
+
"skills",
|
|
140
|
+
"agents",
|
|
141
|
+
],
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
# ── skills ────────────────────────────────────────────────────────────────
|
|
145
|
+
|
|
146
|
+
def _emit_skill(self, skill: Skill, out_dir: Path, result: CompilationResult) -> None:
|
|
147
|
+
"""Copy SKILL.md (and references/) into plugin skills/ directory.
|
|
148
|
+
|
|
149
|
+
Cursor discovers skills at <plugin-root>/skills/<name>/SKILL.md —
|
|
150
|
+
the same path as Claude Code. No transformation needed.
|
|
151
|
+
"""
|
|
152
|
+
if not skill.source_path.exists():
|
|
153
|
+
result.warnings.append(f"Skill source missing: {skill.source_path}")
|
|
154
|
+
result.omitted.append(f"skill:{skill.id}")
|
|
155
|
+
return
|
|
156
|
+
|
|
157
|
+
dst = out_dir / "skills" / skill.name
|
|
158
|
+
dst.mkdir(parents=True, exist_ok=True)
|
|
159
|
+
|
|
160
|
+
content = skill.source_path.read_text(encoding="utf-8", errors="replace")
|
|
161
|
+
self._write_file(dst / "SKILL.md", content, result)
|
|
162
|
+
|
|
163
|
+
# Copy references/ (progressive disclosure)
|
|
164
|
+
self._copy_skill_references(skill, dst, result)
|
|
165
|
+
|
|
166
|
+
result.emitted.append(f"skill:{skill.id}")
|
|
167
|
+
|
|
168
|
+
# ── agents ────────────────────────────────────────────────────────────────
|
|
169
|
+
|
|
170
|
+
def _emit_agent(self, agent: Agent, out_dir: Path, result: CompilationResult) -> None:
|
|
171
|
+
"""Copy AGENT.md into plugin agents/ directory.
|
|
172
|
+
|
|
173
|
+
Cursor discovers agents at <plugin-root>/agents/<name>/AGENT.md.
|
|
174
|
+
"""
|
|
175
|
+
if not agent.source_path.exists():
|
|
176
|
+
result.warnings.append(f"Agent source missing: {agent.source_path}")
|
|
177
|
+
result.omitted.append(f"agent:{agent.id}")
|
|
178
|
+
return
|
|
179
|
+
|
|
180
|
+
dst = out_dir / "agents" / agent.name
|
|
181
|
+
dst.mkdir(parents=True, exist_ok=True)
|
|
182
|
+
|
|
183
|
+
content = agent.source_path.read_text(encoding="utf-8", errors="replace")
|
|
184
|
+
self._write_file(dst / "AGENT.md", content, result)
|
|
185
|
+
result.emitted.append(f"agent:{agent.id}")
|
|
186
|
+
|
|
187
|
+
# ── parity document ───────────────────────────────────────────────────────
|
|
188
|
+
|
|
189
|
+
@staticmethod
|
|
190
|
+
def parity_notes() -> str:
|
|
191
|
+
"""Return honest parity notes for documentation generation."""
|
|
192
|
+
return (
|
|
193
|
+
"Cursor IDE and Cursor CLI both read from the same plugin bundle and "
|
|
194
|
+
"the same ~/.cursor/rules/ directory. No separate surface needed.\n"
|
|
195
|
+
"\n"
|
|
196
|
+
"Rules (.mdc files) are generated separately as a profile surface "
|
|
197
|
+
"(`profiles/cursor/rules/`) for users who install profiles manually. "
|
|
198
|
+
"They are NOT duplicated inside the plugin bundle because rules represent "
|
|
199
|
+
"persistent behavioral constraints, not the same semantic as on-demand skills.\n"
|
|
200
|
+
"\n"
|
|
201
|
+
"MCP: user configures ~/.cursor/mcp.json independently. The plugin does "
|
|
202
|
+
"not bundle MCP server configuration (pending MCP registry implementation).\n"
|
|
203
|
+
"\n"
|
|
204
|
+
"Hooks: Cursor supports workspaceOpen, sessionStart, sessionEnd, and other "
|
|
205
|
+
"lifecycle events. These require the canonical hook model to be defined first "
|
|
206
|
+
"(see issue #16)."
|
|
207
|
+
)
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Gemini CLI extension adapter.
|
|
3
|
+
|
|
4
|
+
Generates a Gemini CLI extension bundle from the canonical IR.
|
|
5
|
+
|
|
6
|
+
Official docs:
|
|
7
|
+
https://github.com/google-gemini/gemini-cli/blob/main/docs/extensions/index.md
|
|
8
|
+
https://github.com/google-gemini/gemini-cli/blob/main/docs/extensions/reference.md
|
|
9
|
+
Gallery:
|
|
10
|
+
https://geminicli.com/extensions/
|
|
11
|
+
Research:
|
|
12
|
+
docs/research/platform-capability-matrix.md (2026-08-04)
|
|
13
|
+
|
|
14
|
+
Key differences from Claude Code / Cursor:
|
|
15
|
+
- Manifest: gemini-extension.json (at extension root)
|
|
16
|
+
- Commands: TOML format (not YAML frontmatter or Markdown)
|
|
17
|
+
Skills map to Gemini commands via TOML definitions
|
|
18
|
+
- MCP: native (mcpServers array in gemini-extension.json)
|
|
19
|
+
- Hooks: native (hooks/hooks.json, 8+ events: SessionStart, BeforeTool, etc.)
|
|
20
|
+
- Distribution: GitHub repo or geminicli.com gallery
|
|
21
|
+
- Path variables: use ${extensionPath} (not absolute paths)
|
|
22
|
+
- Context files: NOT a large always-on GEMINI.md — prefer minimal context
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from __future__ import annotations
|
|
26
|
+
|
|
27
|
+
import json
|
|
28
|
+
from pathlib import Path
|
|
29
|
+
|
|
30
|
+
from agent_toolkit.compiler.model import (
|
|
31
|
+
Agent,
|
|
32
|
+
CanonicalGraph,
|
|
33
|
+
CompilationResult,
|
|
34
|
+
Product,
|
|
35
|
+
Skill,
|
|
36
|
+
)
|
|
37
|
+
from agent_toolkit.compiler.targets.base import TargetAdapter
|
|
38
|
+
|
|
39
|
+
# Minimum Gemini CLI version supporting the extension system
|
|
40
|
+
MIN_GEMINI_CLI_VERSION = "0.1.0"
|
|
41
|
+
|
|
42
|
+
# Gemini uses TOML for commands — we generate a TOML block per skill
|
|
43
|
+
_TOML_COMMAND_TEMPLATE = """\
|
|
44
|
+
[[commands]]
|
|
45
|
+
name = "{name}"
|
|
46
|
+
description = "{description}"
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class GeminiCLIAdapter(TargetAdapter):
|
|
51
|
+
"""Compiles agent-toolkit products into Gemini CLI extension bundles.
|
|
52
|
+
|
|
53
|
+
Extension is installable via:
|
|
54
|
+
gemini extensions add ulises-jeremias/agent-toolkit-gemini
|
|
55
|
+
|
|
56
|
+
Or linked for local development:
|
|
57
|
+
gemini extensions link /path/to/extension
|
|
58
|
+
|
|
59
|
+
Capability parity:
|
|
60
|
+
native: skills (as TOML commands), agents, plugin manifest
|
|
61
|
+
native: MCP (mcpServers in gemini-extension.json — pending MCP registry #15)
|
|
62
|
+
native-experimental: hooks (hooks/hooks.json — pending canonical hook model #16)
|
|
63
|
+
unsupported: always-on GEMINI.md (prefer minimal context + commands)
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
target_id = "gemini-cli"
|
|
67
|
+
package_type = "extension"
|
|
68
|
+
maturity = "stable"
|
|
69
|
+
|
|
70
|
+
def compile(self, graph: CanonicalGraph, product: Product) -> CompilationResult:
|
|
71
|
+
result = CompilationResult(target=self.target_id, product=product.id)
|
|
72
|
+
out_dir = self.output_root / product.id
|
|
73
|
+
|
|
74
|
+
# 1. gemini-extension.json manifest
|
|
75
|
+
manifest = self._build_manifest(product, graph)
|
|
76
|
+
self._write_file(
|
|
77
|
+
out_dir / "gemini-extension.json",
|
|
78
|
+
json.dumps(manifest, indent=2) + "\n",
|
|
79
|
+
result,
|
|
80
|
+
)
|
|
81
|
+
result.emitted.append("extension-manifest")
|
|
82
|
+
|
|
83
|
+
# 2. Skills → bundled SKILL.md + TOML commands that inject the body via @{…}
|
|
84
|
+
commands_toml_lines: list[str] = []
|
|
85
|
+
for skill_id in product.included_skills:
|
|
86
|
+
skill = graph.skills.get(skill_id)
|
|
87
|
+
if skill is None:
|
|
88
|
+
result.warnings.append(f"Skill '{skill_id}' not found — skipping")
|
|
89
|
+
result.omitted.append(f"skill:{skill_id}")
|
|
90
|
+
continue
|
|
91
|
+
rel_skill = self._emit_skill_file(skill, out_dir, result)
|
|
92
|
+
if rel_skill is None:
|
|
93
|
+
continue
|
|
94
|
+
commands_toml_lines.extend(self._skill_to_toml_command(skill, rel_skill))
|
|
95
|
+
result.emitted.append(f"skill:{skill_id}")
|
|
96
|
+
|
|
97
|
+
if commands_toml_lines:
|
|
98
|
+
self._write_file(
|
|
99
|
+
out_dir / "commands.toml",
|
|
100
|
+
"\n".join(commands_toml_lines) + "\n",
|
|
101
|
+
result,
|
|
102
|
+
)
|
|
103
|
+
result.emitted.append("commands.toml")
|
|
104
|
+
|
|
105
|
+
# 3. Agent context files (minimal — not large always-on context)
|
|
106
|
+
for agent_id in product.included_agents:
|
|
107
|
+
agent = graph.agents.get(agent_id)
|
|
108
|
+
if agent is None:
|
|
109
|
+
result.warnings.append(f"Agent '{agent_id}' not found — skipping")
|
|
110
|
+
result.omitted.append(f"agent:{agent_id}")
|
|
111
|
+
continue
|
|
112
|
+
self._emit_agent_context(agent, out_dir, result)
|
|
113
|
+
|
|
114
|
+
# 4. Explicitly document pending capabilities
|
|
115
|
+
result.unsupported.extend(
|
|
116
|
+
[
|
|
117
|
+
"hooks (hooks/hooks.json — pending canonical hook model #16)",
|
|
118
|
+
"mcp (mcpServers — pending MCP registry #15; field reserved in manifest)",
|
|
119
|
+
"excludeTools (tool restrictions — pending agent model with abstract tools)",
|
|
120
|
+
]
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
return result
|
|
124
|
+
|
|
125
|
+
def _build_manifest(self, product: Product, graph: CanonicalGraph) -> dict:
|
|
126
|
+
"""Build gemini-extension.json manifest.
|
|
127
|
+
|
|
128
|
+
Uses ${extensionPath} variable for bundled resource references.
|
|
129
|
+
Never uses absolute machine paths.
|
|
130
|
+
"""
|
|
131
|
+
try:
|
|
132
|
+
from agent_toolkit import __version__
|
|
133
|
+
|
|
134
|
+
version = __version__
|
|
135
|
+
except ImportError:
|
|
136
|
+
version = "1.0.0"
|
|
137
|
+
|
|
138
|
+
manifest: dict = {
|
|
139
|
+
"name": product.id,
|
|
140
|
+
"version": version,
|
|
141
|
+
"description": product.description,
|
|
142
|
+
"author": "ulises-jeremias",
|
|
143
|
+
"repository": "https://github.com/ulises-jeremias/agent-toolkit",
|
|
144
|
+
"license": "MIT",
|
|
145
|
+
"geminiCliVersion": f">={MIN_GEMINI_CLI_VERSION}",
|
|
146
|
+
"contextFiles": [], # Minimal context — no large always-on files
|
|
147
|
+
"commands": "${extensionPath}/commands.toml",
|
|
148
|
+
# MCP servers placeholder — populated by MCP registry (issue #15)
|
|
149
|
+
# "mcpServers": [],
|
|
150
|
+
# Hooks placeholder — populated by hook model (issue #16)
|
|
151
|
+
# "hooks": "${extensionPath}/hooks/hooks.json",
|
|
152
|
+
}
|
|
153
|
+
return manifest
|
|
154
|
+
|
|
155
|
+
def _emit_skill_file(
|
|
156
|
+
self, skill: Skill, out_dir: Path, result: CompilationResult
|
|
157
|
+
) -> str | None:
|
|
158
|
+
"""Copy SKILL.md into the extension bundle; return path relative to out_dir."""
|
|
159
|
+
if not skill.source_path.exists():
|
|
160
|
+
result.warnings.append(f"Skill source missing: {skill.source_path}")
|
|
161
|
+
result.omitted.append(f"skill:{skill.id}")
|
|
162
|
+
return None
|
|
163
|
+
|
|
164
|
+
dst = out_dir / "skills" / skill.name
|
|
165
|
+
dst.mkdir(parents=True, exist_ok=True)
|
|
166
|
+
content = skill.source_path.read_text(encoding="utf-8", errors="replace")
|
|
167
|
+
self._write_file(dst / "SKILL.md", content, result)
|
|
168
|
+
|
|
169
|
+
self._copy_skill_references(skill, dst, result, text_mode=True)
|
|
170
|
+
|
|
171
|
+
return f"skills/{skill.name}/SKILL.md"
|
|
172
|
+
|
|
173
|
+
def _skill_to_toml_command(self, skill: Skill, skill_relpath: str) -> list[str]:
|
|
174
|
+
"""Convert a canonical skill to a Gemini TOML command block.
|
|
175
|
+
|
|
176
|
+
Gemini CLI uses TOML for command definitions. The prompt injects the
|
|
177
|
+
bundled SKILL.md via ``@{path}`` so maturity=stable ships real body
|
|
178
|
+
content (not a stub pointer).
|
|
179
|
+
"""
|
|
180
|
+
safe_name = skill.name.replace("-", "_").replace(" ", "_")
|
|
181
|
+
desc = (skill.description or "").replace('"', "'")[:200]
|
|
182
|
+
|
|
183
|
+
lines = [
|
|
184
|
+
"[[commands]]",
|
|
185
|
+
f'name = "{safe_name}"',
|
|
186
|
+
f'description = "{desc}"',
|
|
187
|
+
'prompt = """',
|
|
188
|
+
f"Follow the `{skill.name}` skill instructions for {{{{args}}}}.",
|
|
189
|
+
"",
|
|
190
|
+
f"@{{{skill_relpath}}}",
|
|
191
|
+
'"""',
|
|
192
|
+
"",
|
|
193
|
+
]
|
|
194
|
+
return lines
|
|
195
|
+
|
|
196
|
+
def _emit_agent_context(self, agent: Agent, out_dir: Path, result: CompilationResult) -> None:
|
|
197
|
+
"""Emit a minimal agent context file.
|
|
198
|
+
|
|
199
|
+
Gemini prefers on-demand commands over large always-on context.
|
|
200
|
+
We emit a compact context file, not the full AGENT.md.
|
|
201
|
+
"""
|
|
202
|
+
if not agent.source_path.exists():
|
|
203
|
+
result.warnings.append(f"Agent source missing: {agent.source_path}")
|
|
204
|
+
result.omitted.append(f"agent:{agent.id}")
|
|
205
|
+
return
|
|
206
|
+
|
|
207
|
+
ctx_dir = out_dir / "context"
|
|
208
|
+
ctx_dir.mkdir(parents=True, exist_ok=True)
|
|
209
|
+
|
|
210
|
+
# Copy full AGENT.md for reference — context is opt-in
|
|
211
|
+
content = agent.source_path.read_text(encoding="utf-8", errors="replace")
|
|
212
|
+
self._write_file(ctx_dir / f"{agent.name}.md", content, result)
|
|
213
|
+
result.emitted.append(f"agent:{agent.id}")
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Muse Code target adapter (Meta).
|
|
3
|
+
|
|
4
|
+
Muse Code (https://developer.meta.com/ai/products/muse-code/) is Meta's agentic CLI for complex coding
|
|
5
|
+
workstreams. It follows the Agent Skills specification:
|
|
6
|
+
|
|
7
|
+
Project scope: .agents/skills/<name>/SKILL.md
|
|
8
|
+
User scope: ~/.config/muse/skills/<name>/SKILL.md (XDG: $XDG_CONFIG_HOME/muse)
|
|
9
|
+
|
|
10
|
+
Muse also supports `muse skills import --from claude|codex` to migrate
|
|
11
|
+
existing skills, and project-local `.agents/skills` which is the primary
|
|
12
|
+
portable contract (AGENTS.md as primary agent contract, .agents/skills
|
|
13
|
+
for skills).
|
|
14
|
+
|
|
15
|
+
This adapter generates static companion assets for Muse Code:
|
|
16
|
+
|
|
17
|
+
skills/<name>/SKILL.md — on-demand procedures (native SKILL.md format)
|
|
18
|
+
agents/<name>/AGENT.md — agent personas (for future muse agent support)
|
|
19
|
+
|
|
20
|
+
No plugin marketplace exists yet for Muse Code; install is via
|
|
21
|
+
`muse skills install` (personal scope) or git-tracked `.agents/skills`
|
|
22
|
+
(project scope). The adapter therefore uses package_type "skills" and
|
|
23
|
+
maturity "stable".
|
|
24
|
+
|
|
25
|
+
Install path: `agent-toolkit install --target muse-code` copies skills to
|
|
26
|
+
~/.config/muse/skills/ and/or .agents/skills/ via the installer.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
from __future__ import annotations
|
|
30
|
+
|
|
31
|
+
from pathlib import Path
|
|
32
|
+
|
|
33
|
+
from agent_toolkit.compiler.model import (
|
|
34
|
+
Agent,
|
|
35
|
+
CanonicalGraph,
|
|
36
|
+
CompilationResult,
|
|
37
|
+
Product,
|
|
38
|
+
Skill,
|
|
39
|
+
)
|
|
40
|
+
from agent_toolkit.compiler.targets.base import TargetAdapter
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class MuseCodeAdapter(TargetAdapter):
|
|
44
|
+
"""Compiles agent-toolkit products into Muse Code skills."""
|
|
45
|
+
|
|
46
|
+
target_id = "muse-code"
|
|
47
|
+
package_type = "skills"
|
|
48
|
+
maturity = "stable"
|
|
49
|
+
|
|
50
|
+
def compile(
|
|
51
|
+
self,
|
|
52
|
+
graph: CanonicalGraph,
|
|
53
|
+
product: Product,
|
|
54
|
+
*,
|
|
55
|
+
emit_registries: bool = False,
|
|
56
|
+
) -> CompilationResult:
|
|
57
|
+
result = CompilationResult(target=self.target_id, product=product.id)
|
|
58
|
+
out_dir = self.output_root / product.id
|
|
59
|
+
|
|
60
|
+
# Emit skills — Muse uses the universal SKILL.md format (Agent Skills spec)
|
|
61
|
+
for skill_id in product.included_skills:
|
|
62
|
+
skill = graph.skills.get(skill_id)
|
|
63
|
+
if skill is None:
|
|
64
|
+
result.warnings.append(f"Skill '{skill_id}' not found — skipping")
|
|
65
|
+
result.omitted.append(f"skill:{skill_id}")
|
|
66
|
+
continue
|
|
67
|
+
self._emit_skill(skill, out_dir, result)
|
|
68
|
+
|
|
69
|
+
# Emit agents as .agents compatible markdown (future Muse agent support)
|
|
70
|
+
for agent_id in product.included_agents:
|
|
71
|
+
agent = graph.agents.get(agent_id)
|
|
72
|
+
if agent is None:
|
|
73
|
+
result.warnings.append(f"Agent '{agent_id}' not found — skipping")
|
|
74
|
+
result.omitted.append(f"agent:{agent_id}")
|
|
75
|
+
continue
|
|
76
|
+
self._emit_agent(agent, out_dir, result)
|
|
77
|
+
|
|
78
|
+
self._finalize_provenance(product, result)
|
|
79
|
+
return result
|
|
80
|
+
|
|
81
|
+
def _emit_skill(self, skill: Skill, out_dir: Path, result: CompilationResult) -> None:
|
|
82
|
+
# Muse prefers `.agents/skills/<name>/SKILL.md` (project) and
|
|
83
|
+
# `~/.config/muse/skills/<name>/SKILL.md` (user). We emit to `skills/`
|
|
84
|
+
# which the installer maps to both locations.
|
|
85
|
+
src = skill.source_path
|
|
86
|
+
if src and src.is_file():
|
|
87
|
+
content = src.read_text(encoding="utf-8")
|
|
88
|
+
else:
|
|
89
|
+
# Fallback: minimal frontmatter + description
|
|
90
|
+
content = f"---\nname: {skill.name}\ndescription: {skill.description}\n---\n\n# {skill.name}\n\n{skill.description}\n"
|
|
91
|
+
dest = out_dir / "skills" / skill.name / "SKILL.md"
|
|
92
|
+
self._write_file(dest, content, result, source_file=src)
|
|
93
|
+
result.emitted.append(f"skill:{skill.name}")
|
|
94
|
+
|
|
95
|
+
def _emit_agent(self, agent: Agent, out_dir: Path, result: CompilationResult) -> None:
|
|
96
|
+
src = getattr(agent, "source_path", None)
|
|
97
|
+
if src and Path(src).is_file():
|
|
98
|
+
content = Path(src).read_text(encoding="utf-8")
|
|
99
|
+
else:
|
|
100
|
+
content = f"---\nname: {agent.name}\ndescription: {getattr(agent, 'description', '')}\n---\n\n# {agent.name}\n"
|
|
101
|
+
dest = out_dir / "agents" / agent.name / "AGENT.md"
|
|
102
|
+
self._write_file(dest, content, result, source_file=src)
|
|
103
|
+
result.emitted.append(f"agent:{agent.name}")
|
|
104
|
+
|
|
105
|
+
def _build_plugin_json(self, product: Product, graph: CanonicalGraph | None = None) -> dict: # noqa: ARG002
|
|
106
|
+
return {
|
|
107
|
+
"name": product.id,
|
|
108
|
+
"version": getattr(product, "version", "0.0.0"),
|
|
109
|
+
"description": getattr(product, "description", ""),
|
|
110
|
+
"skills": list(product.included_skills),
|
|
111
|
+
"agents": list(product.included_agents),
|
|
112
|
+
"target": self.target_id,
|
|
113
|
+
}
|