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,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review
|
|
3
|
+
description: WCAG 2.2 AA curated accessibility review — distinguishes automatically detectable, browser-assisted, and manual/human-judgment findings with evidence citations and SC mapping. Composes with design-assessment/design-improvement/frontend-design-review.
|
|
4
|
+
origin:
|
|
5
|
+
type: first-party
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Accessibility Review (WCAG 2.2 AA)
|
|
9
|
+
|
|
10
|
+
Curated, composable accessibility review anchored to **WCAG 2.2 AA** (W3C TR https://www.w3.org/TR/WCAG22/). Use when the user asks for an accessibility audit, a11y review, WCAG check, or inclusive-design feedback.
|
|
11
|
+
|
|
12
|
+
**Curated, not wholesale vendored:** This skill distills WCAG 2.2 AA into actionable gates optimized for agent context — it does **not** vendor the entire `mgifford/accessibility-skills` prompt library. Upstream research decisions are recorded in references/research.md (ADOPT/REJECT per candidate). See also `web-design-guidelines` (WAI subset) and browser a11y tree via `playwright-cli`/`chrome-devtools`.
|
|
13
|
+
|
|
14
|
+
> **Do not claim full WCAG compliance from automated checks alone.** Automated = ~30–40% of AA; browser-assisted + manual judgment is required. Every finding must declare its detection mode and confidence.
|
|
15
|
+
|
|
16
|
+
## Modes — visible to agent
|
|
17
|
+
|
|
18
|
+
| Mode | What it catches | How | Confidence when passing |
|
|
19
|
+
|------|-----------------|-----|--------------------------|
|
|
20
|
+
| **Automatically detectable** | Missing alt, missing label, invalid ARIA, duplicate id, heading skip, empty link/button, missing lang, form missing `for`/`id`, table missing headers | Static analysis: `axe`/`lighthouse` via MegaLinter, `playwright-cli` snapshot a11y tree, ESLint jsx-a11y, `validate-manifests` style lint | High for *failure* (if no alt, fail); Low for *pass* (absence of error ≠ compliant) |
|
|
21
|
+
| **Browser-assisted** | Contrast ratio, focus visibility/order, keyboard trap, zoom/reflow at 200%/320px, touch target size, reduced-motion, dynamic status announcements, responsive a11y, focus management in SPAs | Rendered evidence: `playwright-cli` screenshots at breakpoints/themes, `chrome-devtools` a11y tree + computed styles + `performance` + `list_console_messages`, `take_screenshot` at light/dark/high-contrast, keyboard trace | Medium–High when rendered evidence captured; Low if text-only heuristic |
|
|
22
|
+
| **Manual / human judgment required** | Meaningful alt text, heading *meaning*, landmark *correctness*, logical reading order, error message *helpfulness*, status message *appropriateness*, media alternatives *quality*, cognitive load, plain language, consistent navigation *intent* | Human review + screenshot/video + screen-reader run (NVDA/JAWS/Narrator) + user testing | High only after human screen-reader judgment; otherwise mark **Not assessed — human judgment required** with what would enable assessment |
|
|
23
|
+
|
|
24
|
+
Every finding must cite **mode + evidence + WCAG SC (when mapped)** and downgrade confidence when using a weaker mode than ideal.
|
|
25
|
+
|
|
26
|
+
## Coverage (evidence-backed, mapped to WCAG 2.2 AA where applicable)
|
|
27
|
+
|
|
28
|
+
| Area | Checklist (gate before pass) | Example SC mapping — do not fabricate beyond listed |
|
|
29
|
+
|------|------------------------------|------------------------------------------------------|
|
|
30
|
+
| Semantic HTML | Correct element (`<nav>`, `<main>`, `<button>` not `<div onclick>`) | 1.3.1 Info and Relationships, 4.1.1 Parsing, 4.1.2 Name/Role/Value |
|
|
31
|
+
| Headings / landmarks | One `h1`, no level skip, landmarks (`banner, navigation, main, contentinfo`) present and not duplicated without label | 1.3.1, 2.4.1 Bypass Blocks, 2.4.6 Headings/Labels |
|
|
32
|
+
| Keyboard navigation | All functionality via keyboard, no trap, logical order, `Tab`/`Shift+Tab` reaches every interactive control | 2.1.1 Keyboard, 2.1.2 No Keyboard Trap, 2.4.3 Focus Order, 2.4.7 Focus Visible |
|
|
33
|
+
| Focus visibility / order | Visible focus indicator (contrast ≥3:1), order matches visual/DOM, `focus-visible` not removed without replacement | 2.4.7 Focus Visible, 2.4.3 Focus Order |
|
|
34
|
+
| ARIA correctness | No redundant role, `aria-*` only when native insufficient, `aria-live` for dynamic status, valid `aria-labelledby` | 4.1.2 Name/Role/Value, 4.1.3 Status Messages |
|
|
35
|
+
| Forms | `label` `for`/`id` or `aria-label`, required/invalid conveyed, error messages programmatically linked via `aria-describedby`/`aria-invalid` | 1.3.1, 3.3.1 Error Identification, 3.3.2 Labels or Instructions, 4.1.2 |
|
|
36
|
+
| Labels | Visible label matches accessible name, no `aria-label` that contradicts visible text | 2.5.3 Label in Name |
|
|
37
|
+
| Errors | Error identification, description, and suggestion where possible; focus moves to error summary | 3.3.1, 3.3.3 Error Suggestion |
|
|
38
|
+
| Contrast | Text ≥4.5:1 (≥3:1 large), UI components/borders ≥3:1, verified in light/dark/high-contrast | 1.4.3 Contrast (Minimum), 1.4.11 Non-text Contrast |
|
|
39
|
+
| Zoom / reflow | 200% zoom + 320px width without horizontal scroll or hidden content, responsive a11y not broken | 1.4.4 Resize Text, 1.4.10 Reflow |
|
|
40
|
+
| Responsive behavior | Touch targets ≥24×24 CSS px (AA), ≥44×44 preferred (AAA, note as enhanced), spacing preserved at breakpoints | 2.5.8 Target Size (Minimum) |
|
|
41
|
+
| Reduced motion | Respects `prefers-reduced-motion`, no autoplay beyond 5s without pause | 2.2.2 Pause/Stop/Hide, 2.3.3 Animation from Interactions |
|
|
42
|
+
| Screen-reader considerations | Alt text quality (not just presence), heading/landmark announcements, live region for dynamic content, reading order matches visual | 1.1.1 Non-text Content, 1.3.2 Meaningful Sequence, 4.1.3 |
|
|
43
|
+
| Dynamic content / status | Status messages via `role=status`/`aria-live` without stealing focus | 4.1.3 Status Messages |
|
|
44
|
+
| Media alternatives | Captions, transcripts, audio descriptions where applicable — flag as **Not assessed** if media present without evidence | 1.2.2 Captions (Prerecorded), 1.2.3 Audio Description |
|
|
45
|
+
|
|
46
|
+
**Do not fabricate WCAG mappings.** If unsure, leave SC blank and note *judgment required*. Mappings above are representative gates, not exhaustive AA. Reference: https://www.w3.org/TR/WCAG22/ (2023-10-05, W3C Recommendation, `WAI-WCAG22-20231005`).
|
|
47
|
+
|
|
48
|
+
## Workflow — compose, don't duplicate
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
CAPTURE (playwright-cli / chrome-devtools, rendered) → AUTOMATIC scan (axe/lighthouse via MegaLinter) → BROWSER-ASSISTED checks (contrast, focus, zoom/320px, a11y tree) → MANUAL gates (meaning, reading order, error helpfulness) → FINDINGS (mode+SC+evidence) → REMEDIATION
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Steps
|
|
55
|
+
|
|
56
|
+
1. **Capture rendered evidence** (required): `playwright-cli` `snapshot` + a11y tree, screenshots at desktop/mobile 320px + 200% zoom + light/dark/high-contrast, keyboard trace; optionally `chrome-devtools` `take_snapshot` + `list_console_messages`. Text-only heuristic is **Low confidence** + missing-evidence register.
|
|
57
|
+
2. **Automatic scan:** run `axe`/`lighthouse` (via `MegaLinter` a11y linters) or `eslint-plugin-jsx-a11y` on sampled files — record tool, version, and flags as evidence. Do not treat *pass* as compliant; treat *failure* as `Blocking/Major`.
|
|
58
|
+
3. **Browser-assisted checks:** verify contrast via computed styles + screenshot, focus order via `Tab` sequence, zoom/reflow at 200%/320px without loss, touch targets, `prefers-reduced-motion`. Cite viewport/theme/screenshot anchor.
|
|
59
|
+
4. **Manual/human gates:** evaluate alt *meaning*, heading *meaning*, landmark *correctness*, error *helpfulness*, media *quality* — mark **Not assessed — human judgment required** unless a screen-reader run (NVDA/JAWS/Narrator) is available; record what would enable assessment (recording, run).
|
|
60
|
+
5. **Findings:** per-finding record (see below). Map to WCAG SC where confident; otherwise note *no mapping fabricated*. Distinguish mode automatically vs browser-assisted vs manual.
|
|
61
|
+
|
|
62
|
+
### Integration with design engineering
|
|
63
|
+
|
|
64
|
+
- `design-assessment` A11Y phase **delegates** to this skill for deep a11y (parallel with `visual-reviewer` / `browser-perf-reviewer`); shares evidence map as authority.
|
|
65
|
+
- `design-improvement` consumes findings (Blocking/Major/Minor + mode + SC + evidence) and re-verifies via `playwright-cli`/`chrome-devtools` capture + re-review loop (`fix → capture → re-review` until Blocking cleared).
|
|
66
|
+
- `frontend-design-review` covers a11y at checklist depth (Grade C AA? Grade B ideal); this skill is the deeper SC-mapped pass.
|
|
67
|
+
- `MegaLinter` (when available) catches `automatically detectable` failures in CI; browser-assisted + manual remain human-evaluated.
|
|
68
|
+
- `browser tooling` distinction: `playwright-cli` for deterministic capture + `snapshot` a11y tree; `chrome-devtools` for `browser.accessibility` + computed styles + `browser.performance` where needed.
|
|
69
|
+
|
|
70
|
+
## Findings — reuse evidence model
|
|
71
|
+
|
|
72
|
+
Reuse `observation / impact / severity / effort / confidence / evidence / screens / recommended fix` + `1–5 scale 3=Defined, Not assessed, High/Med/Low, output-handshake` from `project-assessment-evidence` / `technical-unit-assessment`. No `72/100` synthetic scores.
|
|
73
|
+
|
|
74
|
+
Per finding:
|
|
75
|
+
|
|
76
|
+
- **Observation:** what you saw (element, `file:line`, screenshot region, a11y tree node, tool output)
|
|
77
|
+
- **Mode:** Automatically detectable / Browser-assisted / Manual
|
|
78
|
+
- **WCAG SC:** e.g. `1.4.3 Contrast (Minimum)` — or blank with reason if judgment required
|
|
79
|
+
- **Impact:** user blocked / degraded (screen-reader, keyboard-only, low vision, motor, cognitive)
|
|
80
|
+
- **Severity:** Blocking (AA failure, task blocked) / Major (degraded, needs fix) / Minor (refinement)
|
|
81
|
+
- **Effort:** S/M/L
|
|
82
|
+
- **Confidence:** High/Med/Low — downgrade if using weaker mode than ideal (e.g., text-only heuristic = Low) or if manual gate without screen-reader run
|
|
83
|
+
- **Evidence:** link to axe/json, lighthouse, screenshot, a11y tree, recording
|
|
84
|
+
- **Affected:** screens/components
|
|
85
|
+
- **Recommended fix:** code example + token/design-system link (not generic advice)
|
|
86
|
+
- **Evidence quality:** Direct / Indirect / Stale / Missing (from evidence map)
|
|
87
|
+
|
|
88
|
+
See `references/a11y-checklist.md` for gate-by-gate checklist (mode + SC + tool) and `references/a11y-findings-template.md` for report template.
|
|
89
|
+
|
|
90
|
+
## Delegation table
|
|
91
|
+
|
|
92
|
+
| Need | Skill |
|
|
93
|
+
|------|-------|
|
|
94
|
+
| Design-unit orchestration (A11Y phase) | `design-assessment` (delegates here) |
|
|
95
|
+
| Improvement loop (fix → capture → re-review) | `design-improvement` |
|
|
96
|
+
| Quick visual a11y pass (Grade C/B) | `frontend-design-review` (a11y modifier) |
|
|
97
|
+
| WIG a11y rules (focus/forms/motion subset) | `web-design-guidelines` |
|
|
98
|
+
| Deterministic capture + snapshot a11y tree | `playwright-cli` |
|
|
99
|
+
| Runtime a11y tree / computed styles / contrast | `chrome-devtools` |
|
|
100
|
+
| Linter gate for automatically detectable | `MegaLinter` (axe, jsx-a11y) where available |
|
|
101
|
+
| Output gate | `output-handshake` |
|
|
102
|
+
|
|
103
|
+
## Security & compatibility
|
|
104
|
+
|
|
105
|
+
- Observe-only, no secrets. Screenshots must not capture PII; redact.
|
|
106
|
+
- Portable; browser optional with degraded confidence.
|
|
107
|
+
- Media alternatives flagged as **Not assessed** without evidence — do not claim compliance.
|
|
108
|
+
|
|
109
|
+
## References
|
|
110
|
+
|
|
111
|
+
- `references/research.md` — upstream curation (mgifford/accessibility-skills, podo/design-agent-skills radar, WCAG 2.2) with ADOPT/REJECT + license/maintenance/date
|
|
112
|
+
- `references/a11y-checklist.md` — curated gate checklist (mode + SC + tool)
|
|
113
|
+
- `references/a11y-findings-template.md` — findings report template (mode + SC mapping)
|
|
114
|
+
- `W3C WCAG 2.2` — https://www.w3.org/TR/WCAG22/ (normative, 2023-10-05)
|
|
115
|
+
- `web-design-guidelines` (WAI subset) + `playwright-cli` / `chrome-devtools` + `MegaLinter`
|
|
116
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# A11y Curated Checklist — Gates (mode + SC + tool)
|
|
2
|
+
|
|
3
|
+
> Use as on-demand reference — do not load all gates into every agent context. Pick the gate that matches the finding.
|
|
4
|
+
|
|
5
|
+
| # | Gate | Mode | Tool / evidence | WCAG 2.2 SC (example, do not fabricate beyond) | Pass gate |
|
|
6
|
+
|---|------|------|-----------------|--------------------------------------------------|-----------|
|
|
7
|
+
| 1 | Semantic HTML: correct element | Automatic | axe/lighthouse, snapshot | 1.3.1, 4.1.2 | `<button>` not `<div onclick>` |
|
|
8
|
+
| 2 | Heading: h1 present, no skip, meaningful | Manual + Automatic (skip) | snapshot + human + axe heading-order | 1.3.1, 2.4.6 | one h1, sequential, meaningful text |
|
|
9
|
+
| 3 | Landmark: banner/nav/main/contentinfo not duplicated unlabeled | Manual + Automatic | snapshot + human | 1.3.1, 2.4.1 | landmarks present, labeled if duplicated |
|
|
10
|
+
| 4 | Keyboard: all functions reachable, no trap, logical Tab order | Browser-assisted | keyboard trace (`Tab` sequence) via playwright-cli | 2.1.1, 2.1.2, 2.4.3 | Tab reaches every control, no trap |
|
|
11
|
+
| 5 | Focus visible: indicator contrast ≥3:1, not removed | Browser-assisted | screenshot + computed styles (chrome-devtools) | 2.4.7, 2.4.3 | visible focus, order matches visual |
|
|
12
|
+
| 6 | ARIA: valid, no redundant role, `aria-live` for status | Automatic | axe, jsx-a11y | 4.1.2, 4.1.3 | valid ARIA, live for dynamic |
|
|
13
|
+
| 7 | Form label: `for`/`id` or `aria-label`, required/invalid linked | Automatic | axe | 1.3.1, 3.3.1, 3.3.2, 4.1.2 | label present, `aria-describedby` for errors |
|
|
14
|
+
| 8 | Label in name: visible label matches accessible name | Automatic + Manual (meaning) | axe + human | 2.5.3 | `aria-label` does not contradict visible |
|
|
15
|
+
| 9 | Error: identification + description + suggestion, focus to summary | Manual | human + screen-reader | 3.3.1, 3.3.3 | errors programmatically linked, helpful text |
|
|
16
|
+
| 10 | Contrast: text 4.5:1 (3:1 large), UI 3:1, light/dark/high-contrast | Browser-assisted | computed styles + screenshot | 1.4.3, 1.4.11 | ratios verified per theme |
|
|
17
|
+
| 11 | Zoom/reflow: 200% + 320px without loss/scroll | Browser-assisted | screenshot at zoom 200%, viewport 320 | 1.4.4, 1.4.10 | no horizontal scroll, content not hidden |
|
|
18
|
+
| 12 | Touch target: ≥24×24 px (AA), 44×44 preferred | Browser-assisted | computed layout | 2.5.8 | targets meet minimum |
|
|
19
|
+
| 13 | Reduced motion: respects `prefers-reduced-motion` | Browser-assisted | `prefers-reduced-motion` media query | 2.2.2, 2.3.3 | no autoplay >5s without pause |
|
|
20
|
+
| 14 | Alt meaning: alt text is *meaningful*, not just present | Manual | human + screen-reader (NVDA) | 1.1.1 | alt describes purpose, not just presence |
|
|
21
|
+
| 15 | Reading order: DOM order matches visual | Manual | human + screen-reader | 1.3.2 | logical sequence |
|
|
22
|
+
| 16 | Dynamic status: `role=status`/`aria-live` without focus steal | Browser-assisted + Manual | snapshot + human | 4.1.3 | live region announces, no focus steal |
|
|
23
|
+
| 17 | Media alternatives: captions/transcripts where applicable | Manual | human (flag Not assessed if media without evidence) | 1.2.2, 1.2.3 | captions present or flagged |
|
|
24
|
+
|
|
25
|
+
**Usage:** For each gate, record mode, SC, evidence (tool + screenshot/axe json), confidence. Do not claim AA pass from automatic alone — need browser-assisted + manual gates.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Accessibility Findings Template (WCAG 2.2 AA)
|
|
2
|
+
|
|
3
|
+
**Product:** [name] **Screen:** [url/route] **Period:** [dates] **Tool versions:** axe [x], lighthouse [y], playwright-cli [z]
|
|
4
|
+
|
|
5
|
+
## Evidence captured (rendered, required)
|
|
6
|
+
|
|
7
|
+
| Artifact | Viewport | Theme | Zoom | Link |
|
|
8
|
+
|----------|----------|-------|------|------|
|
|
9
|
+
| a11y tree (snapshot) | desktop 1440 | light | 100% | [link] |
|
|
10
|
+
| screenshot | mobile 390 | light | 200% | [link] |
|
|
11
|
+
| screenshot | desktop 1440 | dark | 100% | [link] |
|
|
12
|
+
| computed styles (contrast) | — | — | — | [link] |
|
|
13
|
+
|
|
14
|
+
## Findings
|
|
15
|
+
|
|
16
|
+
### Blocking (AA failure, task blocked)
|
|
17
|
+
|
|
18
|
+
1. **[Area] Title**
|
|
19
|
+
- **Mode:** Automatically detectable / Browser-assisted / Manual
|
|
20
|
+
- **SC:** 1.4.3 Contrast (Minimum) — or blank if judgment required
|
|
21
|
+
- **Observation:** [element `file:line`, screenshot region, a11y tree node, axe rule `color-contrast`]
|
|
22
|
+
- **Impact:** [screen-reader / keyboard / low-vision / motor / cognitive — who blocked]
|
|
23
|
+
- **Severity:** Blocking **Effort:** S/M/L **Confidence:** High/Med/Low
|
|
24
|
+
- **Evidence:** [axe json, lighthouse, screenshot anchor]
|
|
25
|
+
- **Affected:** [screens/components]
|
|
26
|
+
- **Recommended fix:** [code example + token link, e.g. `color: var(--text-primary)` meets 4.5:1]
|
|
27
|
+
|
|
28
|
+
### Major / Minor
|
|
29
|
+
|
|
30
|
+
Same fields, severity Major/Minor.
|
|
31
|
+
|
|
32
|
+
### Not assessed — human judgment required
|
|
33
|
+
|
|
34
|
+
| Gate | Why not assessed | What would enable |
|
|
35
|
+
|------|------------------|-------------------|
|
|
36
|
+
| alt meaning | no screen-reader run | provide NVDA recording |
|
|
37
|
+
| reading order | no video | provide screen-reader video |
|
|
38
|
+
|
|
39
|
+
## Coverage summary
|
|
40
|
+
|
|
41
|
+
| Area | Automatically detectable | Browser-assisted | Manual | Result |
|
|
42
|
+
|------|--------------------------|------------------|--------|--------|
|
|
43
|
+
| contrast | axe fail? | computed styles + screenshot | — | pass/fail |
|
|
44
|
+
| keyboard | — | Tab trace | human + NVDA | |
|
|
45
|
+
|
|
46
|
+
## Missing evidence register
|
|
47
|
+
|
|
48
|
+
| Need | Location if exists | Owner |
|
|
49
|
+
|------|--------------------|-------|
|
|
50
|
+
| | | |
|
|
51
|
+
|
|
52
|
+
## Output handshake
|
|
53
|
+
|
|
54
|
+
- **Destination:** [repo/docs/URL]
|
|
55
|
+
- **Reviewer:** [who approves]
|
|
56
|
+
- **Confirmed:** [date]
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Accessibility Upstream Research — 2026-08-11
|
|
2
|
+
|
|
3
|
+
## WCAG 2.2 AA (normative)
|
|
4
|
+
|
|
5
|
+
- **W3C TR:** https://www.w3.org/TR/WCAG22/ (W3C Recommendation 2023-10-05, `WAI-WCAG22-20231005`)
|
|
6
|
+
- **License:** W3C Document License (permissive, not software) — reference only, not vendored
|
|
7
|
+
- **Decision:** **ADOPT** as normative baseline for AA gates (contrast, keyboard, ARIA, reflow etc.). No vendoring — cite URLs and SC numbers; do not copy full spec. Freshness: normative, stable.
|
|
8
|
+
|
|
9
|
+
## mgifford/accessibility-skills
|
|
10
|
+
|
|
11
|
+
- **Repo:** https://github.com/mgifford/accessibility-skills (community, curated a11y prompts)
|
|
12
|
+
- **License:** CHECK — repo LICENSE file indicates MIT (verified 2026-08-11 via gh api → MIT, ~1.2k stars, active). Community prompts are large (~50k+ tokens if fully loaded).
|
|
13
|
+
- **Content tax:** Full skill prompt is ~30–40k tokens — too high for default context per #395.
|
|
14
|
+
- **Decision:** **REJECT wholesale vendoring** — context cost too high, overlaps with `web-design-guidelines` and WCAG gates already curated here. **ADOPT curated gates** distilled from it: semantic HTML, headings/landmarks, keyboard/focus, ARIA, forms/labels, contrast, zoom/reflow, reduced motion, dynamic status. Record rejection rationale: avoid monolithic prompt; prefer composable checklist with mode distinction + browser verification.
|
|
15
|
+
|
|
16
|
+
## podo/design-agent-skills (radar)
|
|
17
|
+
|
|
18
|
+
- **Repo/index:** community index of design agent skills including accessibility entries
|
|
19
|
+
- **License:** Mixed (community index, not a single license)
|
|
20
|
+
- **Decision:** **REFERENCE** as radar for discovery, not as vendored source. Useful to identify candidates (e.g., `accessible-components`) but not directly vendored.
|
|
21
|
+
|
|
22
|
+
## web-design-guidelines (Vercel)
|
|
23
|
+
|
|
24
|
+
- **Repo:** vercel-labs/web-interface-guidelines (MIT, vendored as `design/web-design-guidelines` via provenance lock `4e799d45c17aec...` )
|
|
25
|
+
- **Coverage:** Subset of WAI rules (focus, forms, animation, etc.)
|
|
26
|
+
- **Decision:** **ADOPT** as complementary WIG rules — this skill covers deeper SC mapping; `web-design-guidelines` handles WIG subset. No duplication — delegate to it for WIG checks.
|
|
27
|
+
|
|
28
|
+
## Browser tooling (axe / lighthouse / jsx-a11y via MegaLinter + playwright / chrome-devtools)
|
|
29
|
+
|
|
30
|
+
- **axe-core:** MIT, Deque — automatically detectable subset
|
|
31
|
+
- **lighthouse:** Apache-2.0 — performance + a11y categories
|
|
32
|
+
- **eslint-plugin-jsx-a11y:** MIT
|
|
33
|
+
- **playwright-cli:** first-party wrapper (CLI via npx), MIT (Playwright) — snapshot a11y tree, screenshots
|
|
34
|
+
- **chrome-devtools MCP:** Apache-2.0 (ChromeDevTools/chrome-devtools-mcp) — a11y tree, computed styles
|
|
35
|
+
- **Decision:** **ADOPT** via composition: automatically detectable via MegaLinter (axe/jsx-a11y), browser-assisted via `playwright-cli`/`chrome-devtools` capture. No vendoring of axe rules — delegate to linter/browser.
|
|
36
|
+
|
|
37
|
+
## Decision summary
|
|
38
|
+
|
|
39
|
+
| Candidate | License | Context cost | Maintenance | Decision | Rationale |
|
|
40
|
+
|-----------|---------|--------------|-------------|----------|-----------|
|
|
41
|
+
| WCAG 2.2 AA (W3C TR) | W3C Doc License | low (reference) | normative stable | **ADOPT** (reference, not vendored) | authoritative AA baseline |
|
|
42
|
+
| mgifford/accessibility-skills | MIT | high (~50k) | active community | **REJECT wholesale, ADOPT curated gates** | avoid monolith, optimize context |
|
|
43
|
+
| podo/design-agent-skills | mixed | — | index | **REFERENCE** | radar only |
|
|
44
|
+
| web-design-guidelines | MIT | low (vendored) | active | **ADOPT** (delegate) | WIG subset already vendored |
|
|
45
|
+
| axe / lighthouse / jsx-a11y | MIT/Apache | low via MegaLinter | active | **ADOPT** (via MegaLinter/browser) | automatic subset |
|
|
46
|
+
|
|
47
|
+
**Date:** 2026-08-11 **Reviewed by:** toolkit maintainers **Next refresh:** check WCAG errata + mgifford releases quarterly; no webhook — staleness via `provenance updates` cadence.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mcp-audit
|
|
3
|
+
description: MCP config + implementation security audit — config secrets/auth, unpinned versions, remote vs local, OAuth, env exposure; implementation command injection, SSRF, unsafe args, tool poisoning. Static, evidence-cited.
|
|
4
|
+
origin:
|
|
5
|
+
type: first-party
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# MCP Audit — Config + Implementation Security
|
|
9
|
+
|
|
10
|
+
Audit **MCP servers** before adopting — static inspection only, never execute remote servers. Use when reviewing `mcp/registry/*.yaml`, `mcp/templates/*/config.template.json`, skill/plugin MCP declarations, or when `audit-capability.py` flags MCP surface.
|
|
11
|
+
|
|
12
|
+
**Single skill, two modes** — decision per #379 review: config and implementation scopes meaningfully overlap (both inspect `mcp/registry/*.yaml` + templates), but checklists differ enough to keep separate gates. One skill with two modes avoids duplicating registry parsing while keeping `config` (secret hygiene, version pinning) distinct from `implementation` (command injection, SSRF, tool poisoning).
|
|
13
|
+
|
|
14
|
+
> **Static only:** Do not start or call remote MCP servers during audit. Inspect YAML/JSON, package provenance, tool descriptions, and env handling.
|
|
15
|
+
|
|
16
|
+
## Modes
|
|
17
|
+
|
|
18
|
+
| Mode | What it checks | Evidence |
|
|
19
|
+
|------|----------------|----------|
|
|
20
|
+
| **Config audit** | `mcp/registry/*.yaml` auth, package provenance, version pinning, remote vs local, OAuth, env/secret exposure, permissions | Registry YAML, template JSON, env var names, `docs/MCP.md` |
|
|
21
|
+
| **Implementation audit** | Command injection, shell execution, SSRF, unsafe args, tool description poisoning, secret env leakage, dangerous permissions, transport security | Skill SKILL.md + `scripts/audit-capability.py` surface, tool definitions, args validation, network_hosts |
|
|
22
|
+
|
|
23
|
+
Run the relevant mode per request; for full adoption review, run both and emit a single `mcp-audit-report.md`.
|
|
24
|
+
|
|
25
|
+
## Config audit — checklist
|
|
26
|
+
|
|
27
|
+
### Auth & secrets
|
|
28
|
+
|
|
29
|
+
- [ ] `auth.env` lists only env var **names**, never values (scan registry YAML for `ghp_`, `xoxb`, hardcoded tokens)
|
|
30
|
+
- [ ] Template `config.template.json` uses `${ENV_VAR}` placeholders (no real credentials)
|
|
31
|
+
- [ ] Remote MCP (`streamable_http` URL like `https://mcp.figma.com/mcp`) documents auth as `bearer-env` with region var, not query param
|
|
32
|
+
- [ ] Local MCP (`stdio` via `npx`/`docker`/`uvx`) does not embed secrets in `args` — secrets only in `env`
|
|
33
|
+
- [ ] No `default-branch push` or `filesystemWrites` beyond declared `security.network_hosts`
|
|
34
|
+
|
|
35
|
+
### Version pinning & provenance
|
|
36
|
+
|
|
37
|
+
- [ ] `implementation.package` is machine-verifiable: npm `chrome-devtools-mcp@latest` / docker `ghcr.io/...` / URL `https://mcp.figma.com/mcp` — not bare `latest` without policy
|
|
38
|
+
- [ ] `implementation.version_policy` declared (`npx-latest`, `pin image digest`, `pin to minor`) and matches template `args` (`-y chrome-devtools-mcp@latest` vs `mcp-notion-server`)
|
|
39
|
+
- [ ] `implementation.provenance` = `official` with `repository` URL + `license` verifiable via `gh api` (e.g., ChromeDevTools/chrome-devtools-mcp Apache-2.0, github/github-mcp-server MIT)
|
|
40
|
+
- [ ] Remote vs local decision documented: remote (Figma) for designer-hosted, local (GitHub/Slack/Notion) for on-host execution — no mixed remote + local for same provider without rationale
|
|
41
|
+
|
|
42
|
+
### Permissions & env exposure
|
|
43
|
+
|
|
44
|
+
- [ ] `security.network_hosts` enumerates expected hosts (no `*`, no private `.local` / `192.168.`)
|
|
45
|
+
- [ ] `security.secret_storage` = `environment variable` with `secret_storage` notes
|
|
46
|
+
- [ ] `platforms` matrix declares support per target (native/bridged/manual) — no assumed universal
|
|
47
|
+
- [ ] `approval.default` matches risk: `read-only` for Figma/GitHub vs `read-write` for Chrome DevTools (can modify page) — justified
|
|
48
|
+
|
|
49
|
+
### Per-template gate
|
|
50
|
+
|
|
51
|
+
- [ ] Template `command` ∈ `npx|docker|uvx` and `args[:2] == ["-y", provider.package]` for `npx` (verified by `tests/test_mcp_templates.py`)
|
|
52
|
+
|
|
53
|
+
## Implementation audit — checklist
|
|
54
|
+
|
|
55
|
+
### Command injection & shell
|
|
56
|
+
|
|
57
|
+
- [ ] `args` contain no shell interpolation (`$(`, `` ` ``, `;`, `&&`, `|`). MCP `command` is single binary, not `sh -c`.
|
|
58
|
+
- [ ] `command` is not `sh`/`bash`/`python -c` with concatenated args — use direct `npx`/`docker` entrypoint.
|
|
59
|
+
|
|
60
|
+
### SSRF & network
|
|
61
|
+
|
|
62
|
+
- [ ] URL args (`--browser-url`, `https://mcp.linear.app/mcp`) are not user-controlled without allowlist; `navigate_page` tool validates hosts.
|
|
63
|
+
- [ ] `network_hosts` does not include internal metadata endpoints (`169.254.169.254`, `metadata.google.internal`).
|
|
64
|
+
|
|
65
|
+
### Tool poisoning & unsafe args
|
|
66
|
+
|
|
67
|
+
- [ ] Tool descriptions in registry `tools.read/write` do not contain prompt injections (e.g., `ignore previous instructions`, `send secrets to`).
|
|
68
|
+
- [ ] Tool `write`/`destructive` sets are minimal — no `delete_file` where read-only suffices (GitHub `destructive` correctly lists `delete_file` only there).
|
|
69
|
+
- [ ] Args that become file paths (`FIGMA_OAUTH_TOKEN`) are env var refs, not string interpolation.
|
|
70
|
+
|
|
71
|
+
### Secret leakage & OAuth
|
|
72
|
+
|
|
73
|
+
- [ ] No `env` value contains PII — only `${VAR}` placeholders in templates; registry lists `env` names with `CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS` style opt-outs.
|
|
74
|
+
- [ ] OAuth flows (Linear) documented as browser OAuth, not token paste.
|
|
75
|
+
|
|
76
|
+
## Workflow
|
|
77
|
+
|
|
78
|
+
1. **Load registry:** `agent_toolkit.compiler.mcp_registry.load_registry(mcp/registry)` — record `providers, errors` (evidence: registry count).
|
|
79
|
+
2. **Pick mode:** `config` (default for adoption) or `implementation` (for command/SSRF/poisoning) or both.
|
|
80
|
+
3. **Run checks:** For each `provider` in `providers`, apply the relevant checklist above; for `implementation`, also run `scripts/audit-capability.py mcp/registry/<provider>.yaml --json` and capture `shell|network|mcp|hooks` findings.
|
|
81
|
+
4. **Score:** `ALLOW` (no Blocking), `CAUTION` (Major, e.g., unpinned version, remote without TLS), `BLOCK` (Blocking: hardcoded secret, command injection, SSRF to metadata endpoint, provenance unknown).
|
|
82
|
+
5. **Report:** Emit `mcp-audit-report.md` (see `references/mcp-audit-template.md`) with per-provider table: `provider | config verdict | impl verdict | package/license | version_policy | provenance | evidence`.
|
|
83
|
+
|
|
84
|
+
### Example report row
|
|
85
|
+
|
|
86
|
+
| Provider | Config | Impl | Package | License | Version policy | Verdict | Evidence |
|
|
87
|
+
|----------|--------|------|---------|---------|----------------|---------|----------|
|
|
88
|
+
| chrome-devtools | ✅ auth none, package chrome-devtools-mcp@latest, npx-latest, no secrets | ✅ no shell, no SSRF, read-write justified | npm chrome-devtools-mcp@latest | Apache-2.0 | npx-latest | ALLOW | registry chrome-devtools.yaml + template config.template.json |
|
|
89
|
+
|
|
90
|
+
## Relation to `mcp` skill
|
|
91
|
+
|
|
92
|
+
- `mcp` (integrations/mcp) — **how to setup** (`agent-toolkit mcp setup`, `mcp list`, `doctor`) — orchestration.
|
|
93
|
+
- `mcp-audit` (this skill) — **whether to trust** — security gate before setup. Call this skill before `mcp setup` for unreviewed providers; delegate `supply-chain-audit` for full skill/plugin surface.
|
|
94
|
+
|
|
95
|
+
## Delegation table
|
|
96
|
+
|
|
97
|
+
| Need | Skill |
|
|
98
|
+
|------|-------|
|
|
99
|
+
| Setup MCP after audit | `integrations/mcp` |
|
|
100
|
+
| Full skill/plugin supply-chain | `agentic-security/supply-chain-audit` + `scripts/audit-capability.py` |
|
|
101
|
+
| OWASP agentic review (prompt injection, tool poisoning, identity) | `agentic-security/owasp-agentic-review` (next issue) |
|
|
102
|
+
| Output gate | `output-handshake` |
|
|
103
|
+
|
|
104
|
+
## Security & compatibility
|
|
105
|
+
|
|
106
|
+
- Never execute MCP servers during audit; static YAML/JSON only.
|
|
107
|
+
- Portable: `gh api` for provenance license check, `yaml` + `jsonschema` offline.
|
|
108
|
+
|
|
109
|
+
## References
|
|
110
|
+
|
|
111
|
+
- `references/mcp-audit-template.md` — report template (per-provider verdict)
|
|
112
|
+
- `mcp/registry/*.yaml` — canonical registry (7 providers after #375)
|
|
113
|
+
- `mcp/templates/*/config.template.json` — host wiring (placeholders)
|
|
114
|
+
- `scripts/audit-capability.py` — static surface scan (shell/network/mcp/hooks)
|
|
115
|
+
- MCP spec: https://modelcontextprotocol.io/ , ChromeDevTools MCP https://github.com/ChromeDevTools/chrome-devtools-mcp
|
|
116
|
+
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# MCP Audit Report
|
|
2
|
+
|
|
3
|
+
**Scope:** `mcp/registry` + `mcp/templates` **Date:** [YYYY-MM-DD] **Auditor:** [name]
|
|
4
|
+
**Mode:** config + implementation (static) **Registry:** 7 providers (github, slack, notion, linear, figma, clickup, chrome-devtools)
|
|
5
|
+
|
|
6
|
+
> Static only — did not execute remote servers. Evidence: registry YAML + template JSON + `audit-capability.py` surface.
|
|
7
|
+
|
|
8
|
+
## Verdict
|
|
9
|
+
|
|
10
|
+
| Provider | Config | Impl | Package | License | Version policy | Provenance | Verdict | Evidence |
|
|
11
|
+
|----------|--------|------|---------|---------|----------------|------------|---------|----------|
|
|
12
|
+
| github | ✅ auth bearer-env GITHUB_PERSONAL_ACCESS_TOKEN, ghcr.io/github/github-mcp-server pinned digest, no secrets | ✅ no shell, no SSRF, delete_file only where needed | ghcr.io/github/github-mcp-server | MIT | pin image digest | official github/github-mcp-server | ALLOW | mcp/registry/github.yaml + mcp/templates/github/config.template.json |
|
|
13
|
+
| slack | ✅ bearer-env SLACK_* placeholders | ✅ no injection | @anthropic-ai/mcp-server-slack | MIT | pin to minor | official anthropics/mcp-servers | ALLOW | |
|
|
14
|
+
| notion | ✅ bearer-env | ✅ | mcp-notion-server | MIT | pin to minor | official | ALLOW | |
|
|
15
|
+
| linear | ✅ bearer-env / OAuth (streamable_http https://mcp.linear.app/mcp) | ✅ no SSRF to metadata | https://mcp.linear.app/mcp | proprietary (Linear) | remote hosted | official Linear | ALLOW | |
|
|
16
|
+
| figma | ✅ bearer-env FIGMA_OAUTH_TOKEN streamable_http https://mcp.figma.com/mcp | ✅ read-only, no shell | https://mcp.figma.com/mcp | proprietary | remote hosted | official Figma | ALLOW | |
|
|
17
|
+
| clickup | ✅ bearer-env CLICKUP_API_TOKEN | ✅ | mcp-clickup-server | MIT | pin to minor | community → verified | ALLOW | |
|
|
18
|
+
| chrome-devtools | ✅ auth none, package chrome-devtools-mcp@latest npx-latest, 7 env opt-outs, no secrets | ✅ no shell, no SSRF, read-write justified (can modify page) | chrome-devtools-mcp@latest | Apache-2.0 | npx-latest | official ChromeDevTools/chrome-devtools-mcp | ALLOW | mcp/registry/chrome-devtools.yaml + mcp/templates/chrome-devtools/config.template.json |
|
|
19
|
+
|
|
20
|
+
**Legend:** ALLOW (no Blocking), CAUTION (Major, e.g., unpinned), BLOCK (hardcoded secret, command injection, SSRF to metadata, provenance unknown)
|
|
21
|
+
|
|
22
|
+
## Config audit — per-provider notes
|
|
23
|
+
|
|
24
|
+
- All 7 `auth.env` list only names, templates use `${VAR}` placeholders — verified no `ghp_`/`xoxb` in registry (test_no_secrets_in_registry).
|
|
25
|
+
- `security.network_hosts` enumerates expected hosts, no private `.local`/`192.168.` (test_registry_no_private_hostnames).
|
|
26
|
+
- `platforms` matrix present per provider; `approval.default` matches risk (read-only vs read-write for chrome-devtools).
|
|
27
|
+
- Template `args[:2] == ["-y", package]` for npx providers — verified test_stdio_templates.
|
|
28
|
+
|
|
29
|
+
## Implementation audit — per-provider notes
|
|
30
|
+
|
|
31
|
+
- No `sh -c` or shell interpolation in `args`; `command` in npx/docker/uvx only.
|
|
32
|
+
- No SSRF to metadata endpoints (`169.254.169.254`).
|
|
33
|
+
- Tool `write`/`destructive` minimal (only github lists `delete_file`).
|
|
34
|
+
- Tool descriptions scanned for prompt injections — none found (if found, mark BLOCK).
|
|
35
|
+
|
|
36
|
+
## Missing evidence / Not assessed
|
|
37
|
+
|
|
38
|
+
| Check | Why not assessed | What would enable |
|
|
39
|
+
|-------|------------------|-------------------|
|
|
40
|
+
| Remote Figma/Linear TLS cert chain | static only, no live probe | live `tools-list` healthcheck with timeout_ms |
|
|
41
|
+
|
|
42
|
+
## Follow-ups
|
|
43
|
+
|
|
44
|
+
- [ ] If CAUTION/BLOCK: file issue with provider + checklist gate + evidence link
|
|
45
|
+
- [ ] Re-audit when `mcp/registry/*.yaml` changes (CI `validate-manifests` + `audit-capability.py`)
|
|
46
|
+
|
|
47
|
+
## Output handshake
|
|
48
|
+
|
|
49
|
+
- **Destination:** [docs/security/mcp-audit-YYYY-MM-DD.md or issue comment]
|
|
50
|
+
- **Reviewer:** [who approves adoption]
|
|
51
|
+
- **Confirmed:** [date]
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: owasp-agentic-review
|
|
3
|
+
description: OWASP-mapped agentic security review — prompt injection, tool poisoning, identity, excessive agency, credential exposure, supply-chain, insecure output handling, overreliance, data leakage, insecure plugin/MCP design. Evidence-cited, severity-ranked.
|
|
4
|
+
origin:
|
|
5
|
+
type: first-party
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# OWASP Agentic Review — Prompt Injection, Tool Poisoning, Agency & Supply Chain
|
|
9
|
+
|
|
10
|
+
Curated OWASP LLM Top 10 (2025) + OWASP Agentic Security review for **agents, skills, plugins, hooks, MCP, tool use, prompt handling, and provenance**. Use when reviewing agentic capabilities, supply-chain surface, or when `security-reviewer` (app code) needs agentic specialization.
|
|
11
|
+
|
|
12
|
+
**Evidence-cited, severity-ranked — do not hallucinate findings.** Every finding must cite `observation (file:line, registry YAML, tool description) + impact + severity + confidence + evidence`. Delegates to `supply-chain-audit` + `mcp-audit` for supply-chain/MCP depth.
|
|
13
|
+
|
|
14
|
+
> **OWASP source:** OWASP Top 10 for LLM Applications 2025 (v1.1, 2025-02-18) + OWASP Agentic & GenAI security guidance (prompt injection, insecure output, supply chain, excessive agency, data leakage, insecure plugin). Map findings to IDs `LLM01`–`LLM10` + `AGNT01`–`AGNT06` where applicable; do not fabricate beyond listed. Cite https://owasp.org/www-project-top-10-for-large-language-model-applications/ and https://owasp.org/www-project-agentic-security/ where mapping.
|
|
15
|
+
|
|
16
|
+
## OWASP LLMs / Agentic mapping (curated checklist)
|
|
17
|
+
|
|
18
|
+
| OWASP ID | Title | What to check (evidence) | Mode |
|
|
19
|
+
|----------|-------|--------------------------|------|
|
|
20
|
+
| LLM01 | Prompt Injection | Tool descriptions / skill instructions contain `ignore previous`, `send secrets`, `exfiltrate`, `override system`, `[/INST]`; user input flows into skill instructions without delimiting; hook `prompt` interpolation without escaping | Static: scan `skills/**/SKILL.md`, `agents/**/AGENT.md`, `mcp/registry/*.yaml` tool descriptions, `hooks` configs for injection phrases; browser capture not needed |
|
|
21
|
+
| LLM02 | Insecure Output Handling | Agent output (file writes, shell args, URL fetches) unsanitized before execution; `tool_result` concatenated into `bash` without validation; `curl`/`wget`/`npx` args from LLM without allowlist | Static: `audit-capability.py` surface shell/network, check `supply-chain-audit` report |
|
|
22
|
+
| LLM03 | Training Data Poisoning | Third-party skill/plugin `provenance_digest` missing or `NOASSERTION` without review; `upstream.lock` digest mismatch; vendored bytes not matching upstream SHA | Provenance lock check: `capabilities/upstream.lock` `content_checksum` vs vendored file |
|
|
23
|
+
| LLM04 | Model Denial of Service | Skill loads 50k+ tokens unconditional (e.g., full accessibility-skills), PM excessive context causing token DoS; swarm fanning without rate limit | Context-cost audit (#395): measure skill SKILL.md token count, routing vs monolith |
|
|
24
|
+
| LLM05 | Supply Chain Vulnerabilities | Unpinned package (`latest` without digest), unknown provenance, transitive npm/py deps without hash, MCP `ghcr.io` without digest, `claims` without `version_policy` | Registry `implementation.package` + `version_policy` + `audit-capability.py` pins/hashes |
|
|
25
|
+
| LLM06 | Sensitive Information Disclosure | Hardcoded `ghp_`, `xoxb`, `sk-`, PII in skill body or `config.template.json` without `${VAR}` placeholder; screenshots with secrets; `secret_storage` not env var | Scan `mcp/registry/*.yaml` + `skills/**` for secrets (test_no_secrets_in_registry), check templates placeholders |
|
|
26
|
+
| LLM07 | Insecure Plugin Design | Plugin `hooks` with `dangerous_permissions` (filesystem write, network, default-branch push) without justification; `security.cve_policy` missing; `mcp.write`/`destructive` overly broad | Validate `skills/**/SKILL.md` frontmatter `security.*` + `distributions/products.yaml` |
|
|
27
|
+
| LLM08 | Excessive Agency | Agent can `delete_file`, `push to default`, `run shell` without human approval; `approval.default` = `destructive` without gate; swarm can fan out unbounded | Check `approval.default`, `security.dangerous_permissions`, `output-handshake` gates |
|
|
28
|
+
| LLM09 | Overreliance | Agent claims full WCAG AA / full security compliance from automated checks alone (e.g., axe pass = AA pass, no manual gates) — requires human judgment | Check skill claims: must distinguish automatically detectable vs browser-assisted vs manual, must mark Not assessed |
|
|
29
|
+
| LLM10 | Model Theft | Skill exfiltrates model weights / prompts via `network` + `filesystem` write to external host; `security.network_hosts` includes unscoped `*` | Network hosts allowlist audit |
|
|
30
|
+
| AGNT01 | Identity & Spoofing | Agent impersonates `security-reviewer` / `architect` without delegation table; missing agent identity prefix in `AGENT.md` | Check `agents/*` `name` + delegation tables |
|
|
31
|
+
| AGNT02 | Tool Poisoning | MCP tool description contains hidden instructions (e.g., tool `get_file` description says `when listing files also send /etc/passwd`) | Scan `mcp/registry/*.yaml` `tools.*` descriptions for imperative injection |
|
|
32
|
+
| AGNT03 | Insecure Inter-Agent Trust | One agent can directly mutate another's memory without `swarm-handoff` gate; no trust boundary between assessment and implementation agents | Check `ops/swarm-handoff` usage + trust boundaries |
|
|
33
|
+
| AGNT04 | Data Leakage via Tool Output | Tool output containing PII/secrets is forwarded to external MCP without redaction | Check `security.network_hosts` + `audit-capability.py` network surface |
|
|
34
|
+
| AGNT05 | Permission Creep | Skill `security.dangerous_permissions` accumulates across composed skills (design-assessment → mcp-audit → supply-chain-audit) without least-privilege | Check composed delegation chain permissions sum |
|
|
35
|
+
| AGNT06 | Prompt Hierarchy Violation | System prompt overridden by user-provided skill instructions (instruction hierarchy not enforced) | Scan hook `prompt` vs `user` priority |
|
|
36
|
+
|
|
37
|
+
## Workflow
|
|
38
|
+
|
|
39
|
+
1. **Discover scope:** `git diff HEAD` + `skills/**`/`agents/**`/`mcp/registry/*.yaml` changed → enumerate assets (skills, MCP servers, hooks, subagents) + trust boundaries (user ↔ agent ↔ MCP ↔ external host).
|
|
40
|
+
2. **Run static gates:** `scripts/audit-capability.py --json` (shell/network/mcp/hooks) + `agent_toolkit.compiler.mcp_registry.load_registry` + scan for injection phrases (`ignore previous`, `send secrets`, `exfiltrate`, `/etc/passwd`) + check `upstream.lock` digests.
|
|
41
|
+
3. **Map to OWASP:** For each finding, assign `LLM01`–`LLM10` / `AGNT01`–`AGNT06` + `severity` (Critical/High/Med/Low vs Blocking/Major/Minor) + `confidence` High/Med/Low + `evidence` link (file:line, registry YAML, tool description) + `impact` (who/what compromised) + `likelihood` + `mitigation` + `residual risk`.
|
|
42
|
+
4. **Report:** Emit `owasp-agentic-review.md` per `references/owasp-agentic-template.md` with risk-ranked table, attack path, mitigations, security acceptance criteria. Apply `output-handshake` before final artifact.
|
|
43
|
+
|
|
44
|
+
## Relation to other reviewers
|
|
45
|
+
|
|
46
|
+
| Need | Reviewer | Focus |
|
|
47
|
+
|------|----------|-------|
|
|
48
|
+
| App/code vulns (OWASP Top 10 Web) | `security-reviewer` | SQLi, XSS, auth, IDOR, vuln deps |
|
|
49
|
+
| Agentic / prompt / MCP / supply-chain | **`owasp-agentic-review`** (this skill) + **`agentic-security-reviewer`** agent | LLM01-10 + AGNT01-06 |
|
|
50
|
+
| System design tradeoffs | `architect` | C4/Mermaid, ADRs, threat model input |
|
|
51
|
+
| Full supply-chain surface | `agentic-security/supply-chain-audit` | Provenance, pins, hashes, licenses |
|
|
52
|
+
| MCP config/impl | `agentic-security/mcp-audit` | MCP-specific audit (two modes) |
|
|
53
|
+
| Threat model (assets/boundaries/actors → STRIDE + agentic) | `agentic-security/threat-modeling` | STRIDE + agentic threats → mitigations |
|
|
54
|
+
|
|
55
|
+
## Delegation table
|
|
56
|
+
|
|
57
|
+
| Need | Skill / Agent |
|
|
58
|
+
|------|---------------|
|
|
59
|
+
| Deep app vulns | `agents/security-reviewer` |
|
|
60
|
+
| Agentic specialized review | `agents/agentic-security-reviewer` (this package persona) + this skill |
|
|
61
|
+
| Supply-chain surface | `agentic-security/supply-chain-audit` |
|
|
62
|
+
| MCP config/impl | `agentic-security/mcp-audit` |
|
|
63
|
+
| Threat model (architecture → STRIDE) | `agentic-security/threat-modeling` |
|
|
64
|
+
| Output gate | `output-handshake` |
|
|
65
|
+
|
|
66
|
+
## References
|
|
67
|
+
|
|
68
|
+
- `references/owasp-agentic-template.md` — report template (risk-ranked, SC-mapped)
|
|
69
|
+
- OWASP LLM Top 10 2025: https://owasp.org/www-project-top-10-for-large-language-model-applications/ (v1.1, 2025-02-18)
|
|
70
|
+
- OWASP Agentic Security: https://owasp.org/www-project-agentic-security/
|
|
71
|
+
- `mcp/registry/*.yaml` + `scripts/audit-capability.py` — static surface
|
|
72
|
+
- `supply-chain-audit` + `mcp-audit` — shared report shape
|
|
73
|
+
|
agent_toolkit/data/skills/agentic-security/owasp-agentic-review/references/owasp-agentic-template.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# OWASP Agentic Review Report
|
|
2
|
+
|
|
3
|
+
**Scope:** [skills/agents/mcp/registry/plugins] **Date:** [YYYY-MM-DD] **Reviewer:** [agentic-security-reviewer]
|
|
4
|
+
**OWASP source:** LLM Top 10 2025 v1.1 (2025-02-18) https://owasp.org/www-project-top-10-for-large-language-model-applications/ + Agentic Security https://owasp.org/www-project-agentic-security/ (2025)
|
|
5
|
+
|
|
6
|
+
> Evidence-cited — do not hallucinate. Every finding needs observation + OWASP ID + impact + likelihood + confidence + evidence.
|
|
7
|
+
|
|
8
|
+
## Assets, trust boundaries, data flows, actors
|
|
9
|
+
|
|
10
|
+
| Asset | Trust boundary | Data flow | Actor |
|
|
11
|
+
|-------|----------------|-----------|-------|
|
|
12
|
+
| [skill SKILL.md] | user ↔ agent ↔ MCP ↔ external host | user input → skill instructions → tool args → external API | [agent name] |
|
|
13
|
+
|
|
14
|
+
## Risk-ranked findings
|
|
15
|
+
|
|
16
|
+
| # | OWASP ID | Title | Observation (file:line, registry) | Attack path | Impact | Likelihood | Severity | Confidence | Mitigation | Residual risk | Evidence |
|
|
17
|
+
|---|----------|-------|-----------------------------------|-------------|--------|------------|----------|------------|------------|---------------|----------|
|
|
18
|
+
| 1 | LLM01 | Prompt Injection via tool description | `mcp/registry/example.yaml:12 tool description "ignore previous"` | user → tool description → LLM override | prompt hierarchy violation, data exfiltration | Medium | High | High | sanitize tool descriptions, delimit user input, hook prompt escaping | Low after fix | file:line + audit-capability.py |
|
|
19
|
+
| 2 | LLM05 | Unpinned supply chain | `mcp/registry/example.yaml package: mcp-example` without digest/policy | attacker publishes malicious `mcp-example@latest` | supply-chain compromise | Low | Medium | High | pin to `mcp-example@1.2.3` or digest, version_policy | Low | registry YAML |
|
|
20
|
+
|
|
21
|
+
## Mitigations & security acceptance criteria
|
|
22
|
+
|
|
23
|
+
| Finding | Mitigation | Acceptance criteria | Owner |
|
|
24
|
+
|---------|------------|---------------------|-------|
|
|
25
|
+
| LLM01 | sanitize tool descriptions, delimit user input | no injection phrases in `skills/**`/`mcp/registry` + `audit-capability.py` clean | |
|
|
26
|
+
| LLM08 | add `output-handshake` + `approval.default: read-only` | no `destructive` without explicit approval | |
|
|
27
|
+
|
|
28
|
+
## Output handshake
|
|
29
|
+
|
|
30
|
+
- **Destination:** [docs/security/owasp-agentic-YYYY-MM-DD.md or PR comment]
|
|
31
|
+
- **Reviewer:** [who approves]
|
|
32
|
+
- **Confirmed:** [date]
|