agent-toolkit-cli 1.0.3__py3-none-any.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 +3 -0
- agent_toolkit/_paths.py +64 -0
- agent_toolkit/cli/__init__.py +0 -0
- agent_toolkit/cli/doctor.py +453 -0
- agent_toolkit/cli/install.py +445 -0
- agent_toolkit/cli/main.py +66 -0
- agent_toolkit/cli/mcp.py +418 -0
- agent_toolkit/cli/plugin.py +213 -0
- agent_toolkit/cli/skills.py +421 -0
- agent_toolkit/loop/__init__.py +0 -0
- agent_toolkit/loop/gh_gate.py +626 -0
- agent_toolkit/loop/runner.py +1548 -0
- agent_toolkit/runner/__init__.py +0 -0
- agent_toolkit/runner/dispatcher.py +164 -0
- agent_toolkit/runner/policy.py +345 -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 +105 -0
- agent_toolkit/runner/providers/opencode_provider.py +127 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/architect/AGENT.md +30 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/assistant/AGENT.md +59 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/build-error-resolver/AGENT.md +30 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/client-workflow-bootstrap/AGENT.md +60 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/code-reviewer/AGENT.md +49 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/database-reviewer/AGENT.md +44 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/docs-lookup/AGENT.md +28 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/e2e-runner/AGENT.md +38 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/performance-optimizer/AGENT.md +52 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/planner/AGENT.md +41 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/refactor-cleaner/AGENT.md +43 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/reference-lookup/AGENT.md +33 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/security-reviewer/AGENT.md +47 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/tdd-guide/AGENT.md +58 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/tech-assistant/AGENT.md +11 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/agents/typescript-reviewer/AGENT.md +61 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/catalogs/agent-catalog.yaml +202 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/catalogs/loop-catalog.yaml +165 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/catalogs/skill-catalog.yaml +699 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/catalogs/skills-layout.json +337 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/loops/changelog-drafter/loop.yaml +40 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/loops/ci-sweeper/loop.yaml +53 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/loops/daily-triage/loop.yaml +47 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/loops/dep-sweeper/loop.yaml +46 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/loops/issue-triage/loop.yaml +40 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/loops/oss-daily-briefing/loop.yaml +65 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/loops/oss-pr-monitor/loop.yaml +85 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/loops/oss-triage/loop.yaml +67 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/loops/post-merge-cleanup/loop.yaml +44 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/loops/pr-babysitter/loop.yaml +46 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/clickup/README.md +45 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/clickup/config.template.json +7 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/clickup/wrapper.sh +23 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/figma/README.md +56 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/figma/config.template.json +9 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/github/README.md +11 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/github/config.template.json +7 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/github/wrapper.sh +23 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/linear/README.md +49 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/linear/config.template.json +10 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/notion/README.md +7 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/notion/config.template.json +7 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/notion/wrapper.sh +23 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/slack/README.md +8 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/slack/config.template.json +8 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/mcp/templates/slack/wrapper.sh +23 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/CLAUDE.md +66 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/assistant.md +59 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/build-error-resolver.md +30 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/client-workflow-bootstrap.md +60 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/contribution-planner.md +39 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/database-reviewer.md +44 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/docs-lookup.md +28 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/e2e-runner.md +38 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/performance-optimizer.md +52 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/planner.md +41 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/refactor-cleaner.md +43 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/reference-lookup.md +33 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/security-reviewer.md +47 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/tdd-guide.md +58 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/agents/typescript-reviewer.md +61 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/claude-code/settings.json +87 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/copilot/copilot-instructions.md +15 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/README.md +33 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/architect.mdc +23 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/assistant.mdc +25 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/build-error-resolver.mdc +20 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/code-reviewer.mdc +21 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/database-reviewer.mdc +29 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/docs-lookup.mdc +15 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/e2e-runner.mdc +30 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/performance-optimizer.mdc +27 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/planner.mdc +28 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/refactor-cleaner.mdc +26 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/reference-lookup.mdc +20 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/security-reviewer.mdc +20 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/tdd-guide.mdc +26 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/cursor/rules/typescript-reviewer.mdc +28 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/architect.md +30 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/assistant.md +52 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/build-error-resolver.md +31 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/client-workflow-bootstrap.md +66 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/code-reviewer.md +47 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/contribution-planner.md +44 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/database-reviewer.md +43 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/docs-lookup.md +28 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/e2e-runner.md +33 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/performance-optimizer.md +34 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/planner.md +27 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/refactor-cleaner.md +27 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/reference-lookup.md +27 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/security-reviewer.md +27 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/tdd-guide.md +27 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/agents/typescript-reviewer.md +30 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/opencode/opencode.json +37 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/pi/skills/architect/skill.md +5 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/pi/skills/assistant/skill.md +3 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/pi/skills/code-reviewer/skill.md +5 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/pi/skills/planner/skill.md +3 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/pi/skills/security-reviewer/skill.md +3 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/memories/global_rules.md +74 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/rules/architect.mdc +23 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/rules/build-error-resolver.mdc +20 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/rules/code-reviewer.mdc +21 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/rules/database-reviewer.mdc +29 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/rules/docs-lookup.mdc +15 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/rules/e2e-runner.mdc +30 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/rules/performance-optimizer.mdc +27 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/rules/planner.mdc +28 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/rules/refactor-cleaner.mdc +26 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/rules/security-reviewer.mdc +20 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/rules/tdd-guide.mdc +26 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/profiles/windsurf/rules/typescript-reviewer.mdc +28 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/core/assistant/SKILL.md +213 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/core/assistant/references/AGENTS_TEMPLATE.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/core/assistant/references/ORCHESTRATION.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/core/assistant/references/REPO_INSPECTION.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/core/dev-companion/SKILL.md +65 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/core/dev-companion/references/LOOP_GUARDRAILS.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/core/onboarding/SKILL.md +119 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/core/output-handshake/SKILL.md +24 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/core/pr-fallback/SKILL.md +33 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/core/pr-fallback/references/pr-body-default.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/core/workspace-knowledge-sync/SKILL.md +141 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/data/dbt-validation/SKILL.md +41 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/data/snowflake-validation/SKILL.md +38 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/adr/SKILL.md +46 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/adr/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/adr/references/example-001-graphql-adoption.md +66 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/agreement/SKILL.md +23 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/agreement/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/agreement/references/example-api-versioning.md +29 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/bug/SKILL.md +25 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/bug/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/bug/references/example-search-filter-bug.md +58 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/decision-log/SKILL.md +27 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/decision-log/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/decision-log/references/example-repository-pattern.md +27 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/development-workflow/SKILL.md +33 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/development-workflow/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/development-workflow/references/default-workflow-checklist.md +44 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/epic/SKILL.md +21 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/epic/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/epic/references/example-unified-dashboard.md +40 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/incident/SKILL.md +23 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/incident/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/incident/references/example-payment-outage.md +62 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/management-unit-assessment/SKILL.md +105 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/management-unit-assessment/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/management-unit-assessment/references/example-team-assessment.md +126 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/meeting-minutes/SKILL.md +24 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/meeting-minutes/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/meeting-minutes/references/example-weekly-sync.md +72 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/planning/SKILL.md +30 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/planning/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/planning/references/example-sprint-planning.md +62 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/prd/SKILL.md +44 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/prd/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/prd/references/example-unified-api.md +71 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/project-assessment/SKILL.md +90 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/project-assessment/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/project-assessment/references/example-platform-assessment.md +122 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/project-assessment-evidence/SKILL.md +88 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/project-assessment-evidence/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/project-assessment-evidence/references/example-evidence-map.md +46 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/spike/SKILL.md +23 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/spike/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/spike/references/example-graphql-federation.md +79 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/task/SKILL.md +20 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/task/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/task/references/example-nav-system.md +33 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/technical-unit-assessment/SKILL.md +58 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/technical-unit-assessment/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/technical-unit-assessment/references/example-frontend-assessment.md +112 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/technical-unit-assessment/references/indicator-groups.md +65 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/trd/SKILL.md +47 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/trd/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/trd/references/example-api-migration.md +122 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/user-story/SKILL.md +20 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/user-story/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/user-story/references/example-advanced-filtering.md +37 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/work-item/SKILL.md +30 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/work-item/references/default-template.md +0 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/work-item/references/example-routing-dashboard.md +23 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/workflow-client-bootstrap/SKILL.md +148 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/workflow-client-bootstrap/questions.yaml +165 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/delivery/workflow-generic-project/SKILL.md +78 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma/LICENSE.txt +2 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma/NOTICE.txt +25 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma/SKILL.md +95 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma/references/figma-mcp-config.md +82 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma/references/figma-tools-and-prompts.md +34 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-code-connect-components/LICENSE.txt +2 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-code-connect-components/NOTICE.txt +18 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-code-connect-components/SKILL.md +350 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-code-connect-components/references/mapping-checklist.md +7 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-code-connect-components/scripts/normalize_node_id.py +25 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-create-design-system-rules/LICENSE.txt +2 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-create-design-system-rules/NOTICE.txt +19 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-create-design-system-rules/SKILL.md +550 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-create-design-system-rules/references/rule-template.md +15 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-create-design-system-rules/scripts/check_agents_md.sh +9 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-create-new-file/LICENSE.txt +2 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-create-new-file/NOTICE.txt +17 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-create-new-file/SKILL.md +69 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-implement-design/LICENSE.txt +2 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-implement-design/NOTICE.txt +19 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/figma-implement-design/SKILL.md +264 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/SKILL.md +60 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/charts.csv +26 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/colors.csv +97 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/icons.csv +101 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/landing.csv +31 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/products.csv +97 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/react-performance.csv +45 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/react.csv +54 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/styles.csv +68 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/typography.csv +58 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/data/web-interface.csv +31 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/references/pre-delivery-checklist.md +39 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/references/search-reference.md +44 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/references/ui-rules.md +35 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/scripts/core.py +253 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/scripts/design_system.py +1067 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/design/ui-ux-pro-max/scripts/search.py +114 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/gh-address-comments/LICENSE.txt +202 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/gh-address-comments/NOTICE.txt +20 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/gh-address-comments/SKILL.md +69 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/gh-address-comments/scripts/fetch_comments.py +237 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/gh-contribution-planner/SKILL.md +157 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/gh-contribution-planner/scripts/inspect_contributions.py +800 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/gh-fix-ci/LICENSE.txt +201 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/gh-fix-ci/NOTICE.txt +20 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/gh-fix-ci/SKILL.md +71 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/gh-fix-ci/scripts/inspect_pr_checks.py +509 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/github-cli-workflow/SKILL.md +49 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/gitlab-cli-workflow/SKILL.md +44 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/workflow-client-bootstrap/SKILL.md +14 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/workflow-generic-project/SKILL.md +14 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/integrations/clickup-cli/SKILL.md +75 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/integrations/clickup-cli/references/docs-management.md +57 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/integrations/clickup-cli/references/task-management.md +131 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/integrations/clickup-cli/references/time-tracking.md +38 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/integrations/linear/LICENSE.txt +202 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/integrations/linear/NOTICE.txt +23 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/integrations/linear/SKILL.md +131 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/integrations/slack-assistant/SKILL.md +134 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/integrations/slack-cli/SKILL.md +105 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/integrations/slack-cli/references/INSTALLATION.md +42 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/loops/loop-runner/SKILL.md +90 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/ops/docs-generator/SKILL.md +81 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/ops/llm-cost-advisor/SKILL.md +83 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/ops/triage/SKILL.md +117 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/jupyter-notebook/LICENSE.txt +201 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/jupyter-notebook/NOTICE.txt +27 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/jupyter-notebook/SKILL.md +142 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/jupyter-notebook/assets/experiment-template.ipynb +110 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/jupyter-notebook/assets/tutorial-template.ipynb +107 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/jupyter-notebook/references/experiment-patterns.md +10 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/jupyter-notebook/references/notebook-structure.md +17 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/jupyter-notebook/references/quality-checklist.md +11 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/jupyter-notebook/references/tutorial-patterns.md +9 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/jupyter-notebook/scripts/new_notebook.py +130 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/playwright-cli/LICENSE.txt +201 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/playwright-cli/NOTICE.txt +29 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/playwright-cli/SKILL.md +151 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/playwright-cli/references/cli.md +116 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/playwright-cli/references/workflows.md +98 -0
- agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/tooling/playwright-cli/scripts/executable_playwright_cli.sh +25 -0
- agent_toolkit_cli-1.0.3.dist-info/METADATA +411 -0
- agent_toolkit_cli-1.0.3.dist-info/RECORD +310 -0
- agent_toolkit_cli-1.0.3.dist-info/WHEEL +4 -0
- agent_toolkit_cli-1.0.3.dist-info/entry_points.txt +2 -0
- agent_toolkit_cli-1.0.3.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import argparse
|
|
5
|
+
import json
|
|
6
|
+
import re
|
|
7
|
+
import subprocess
|
|
8
|
+
import sys
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
from shutil import which
|
|
11
|
+
from typing import Any, Iterable, Sequence
|
|
12
|
+
|
|
13
|
+
FAILURE_CONCLUSIONS = {
|
|
14
|
+
"failure",
|
|
15
|
+
"cancelled",
|
|
16
|
+
"timed_out",
|
|
17
|
+
"action_required",
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
FAILURE_STATES = {
|
|
21
|
+
"failure",
|
|
22
|
+
"error",
|
|
23
|
+
"cancelled",
|
|
24
|
+
"timed_out",
|
|
25
|
+
"action_required",
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
FAILURE_BUCKETS = {"fail"}
|
|
29
|
+
|
|
30
|
+
FAILURE_MARKERS = (
|
|
31
|
+
"error",
|
|
32
|
+
"fail",
|
|
33
|
+
"failed",
|
|
34
|
+
"traceback",
|
|
35
|
+
"exception",
|
|
36
|
+
"assert",
|
|
37
|
+
"panic",
|
|
38
|
+
"fatal",
|
|
39
|
+
"timeout",
|
|
40
|
+
"segmentation fault",
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
DEFAULT_MAX_LINES = 160
|
|
44
|
+
DEFAULT_CONTEXT_LINES = 30
|
|
45
|
+
PENDING_LOG_MARKERS = (
|
|
46
|
+
"still in progress",
|
|
47
|
+
"log will be available when it is complete",
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class GhResult:
|
|
52
|
+
def __init__(self, returncode: int, stdout: str, stderr: str):
|
|
53
|
+
self.returncode = returncode
|
|
54
|
+
self.stdout = stdout
|
|
55
|
+
self.stderr = stderr
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def run_gh_command(args: Sequence[str], cwd: Path) -> GhResult:
|
|
59
|
+
process = subprocess.run(
|
|
60
|
+
["gh", *args],
|
|
61
|
+
cwd=cwd,
|
|
62
|
+
text=True,
|
|
63
|
+
capture_output=True,
|
|
64
|
+
)
|
|
65
|
+
return GhResult(process.returncode, process.stdout, process.stderr)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def run_gh_command_raw(args: Sequence[str], cwd: Path) -> tuple[int, bytes, str]:
|
|
69
|
+
process = subprocess.run(
|
|
70
|
+
["gh", *args],
|
|
71
|
+
cwd=cwd,
|
|
72
|
+
capture_output=True,
|
|
73
|
+
)
|
|
74
|
+
stderr = process.stderr.decode(errors="replace")
|
|
75
|
+
return process.returncode, process.stdout, stderr
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def parse_args() -> argparse.Namespace:
|
|
79
|
+
parser = argparse.ArgumentParser(
|
|
80
|
+
description=(
|
|
81
|
+
"Inspect failing GitHub PR checks, fetch GitHub Actions logs, and extract a "
|
|
82
|
+
"failure snippet."
|
|
83
|
+
),
|
|
84
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
85
|
+
)
|
|
86
|
+
parser.add_argument("--repo", default=".", help="Path inside the target Git repository.")
|
|
87
|
+
parser.add_argument(
|
|
88
|
+
"--pr", default=None, help="PR number or URL (defaults to current branch PR)."
|
|
89
|
+
)
|
|
90
|
+
parser.add_argument("--max-lines", type=int, default=DEFAULT_MAX_LINES)
|
|
91
|
+
parser.add_argument("--context", type=int, default=DEFAULT_CONTEXT_LINES)
|
|
92
|
+
parser.add_argument("--json", action="store_true", help="Emit JSON instead of text output.")
|
|
93
|
+
return parser.parse_args()
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def main() -> int:
|
|
97
|
+
args = parse_args()
|
|
98
|
+
repo_root = find_git_root(Path(args.repo))
|
|
99
|
+
if repo_root is None:
|
|
100
|
+
print("Error: not inside a Git repository.", file=sys.stderr)
|
|
101
|
+
return 1
|
|
102
|
+
|
|
103
|
+
if not ensure_gh_available(repo_root):
|
|
104
|
+
return 1
|
|
105
|
+
|
|
106
|
+
pr_value = resolve_pr(args.pr, repo_root)
|
|
107
|
+
if pr_value is None:
|
|
108
|
+
return 1
|
|
109
|
+
|
|
110
|
+
checks = fetch_checks(pr_value, repo_root)
|
|
111
|
+
if checks is None:
|
|
112
|
+
return 1
|
|
113
|
+
|
|
114
|
+
failing = [c for c in checks if is_failing(c)]
|
|
115
|
+
if not failing:
|
|
116
|
+
print(f"PR #{pr_value}: no failing checks detected.")
|
|
117
|
+
return 0
|
|
118
|
+
|
|
119
|
+
results = []
|
|
120
|
+
for check in failing:
|
|
121
|
+
results.append(
|
|
122
|
+
analyze_check(
|
|
123
|
+
check,
|
|
124
|
+
repo_root=repo_root,
|
|
125
|
+
max_lines=max(1, args.max_lines),
|
|
126
|
+
context=max(1, args.context),
|
|
127
|
+
)
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
if args.json:
|
|
131
|
+
print(json.dumps({"pr": pr_value, "results": results}, indent=2))
|
|
132
|
+
else:
|
|
133
|
+
render_results(pr_value, results)
|
|
134
|
+
|
|
135
|
+
return 1
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def find_git_root(start: Path) -> Path | None:
|
|
139
|
+
result = subprocess.run(
|
|
140
|
+
["git", "rev-parse", "--show-toplevel"],
|
|
141
|
+
cwd=start,
|
|
142
|
+
text=True,
|
|
143
|
+
capture_output=True,
|
|
144
|
+
)
|
|
145
|
+
if result.returncode != 0:
|
|
146
|
+
return None
|
|
147
|
+
return Path(result.stdout.strip())
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def ensure_gh_available(repo_root: Path) -> bool:
|
|
151
|
+
if which("gh") is None:
|
|
152
|
+
print("Error: gh is not installed or not on PATH.", file=sys.stderr)
|
|
153
|
+
return False
|
|
154
|
+
result = run_gh_command(["auth", "status"], cwd=repo_root)
|
|
155
|
+
if result.returncode == 0:
|
|
156
|
+
return True
|
|
157
|
+
message = (result.stderr or result.stdout or "").strip()
|
|
158
|
+
print(message or "Error: gh not authenticated.", file=sys.stderr)
|
|
159
|
+
return False
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def resolve_pr(pr_value: str | None, repo_root: Path) -> str | None:
|
|
163
|
+
if pr_value:
|
|
164
|
+
return pr_value
|
|
165
|
+
result = run_gh_command(["pr", "view", "--json", "number"], cwd=repo_root)
|
|
166
|
+
if result.returncode != 0:
|
|
167
|
+
message = (result.stderr or result.stdout or "").strip()
|
|
168
|
+
print(message or "Error: unable to resolve PR.", file=sys.stderr)
|
|
169
|
+
return None
|
|
170
|
+
try:
|
|
171
|
+
data = json.loads(result.stdout or "{}")
|
|
172
|
+
except json.JSONDecodeError:
|
|
173
|
+
print("Error: unable to parse PR JSON.", file=sys.stderr)
|
|
174
|
+
return None
|
|
175
|
+
number = data.get("number")
|
|
176
|
+
if not number:
|
|
177
|
+
print("Error: no PR number found.", file=sys.stderr)
|
|
178
|
+
return None
|
|
179
|
+
return str(number)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
def fetch_checks(pr_value: str, repo_root: Path) -> list[dict[str, Any]] | None:
|
|
183
|
+
primary_fields = ["name", "state", "conclusion", "detailsUrl", "startedAt", "completedAt"]
|
|
184
|
+
result = run_gh_command(
|
|
185
|
+
["pr", "checks", pr_value, "--json", ",".join(primary_fields)],
|
|
186
|
+
cwd=repo_root,
|
|
187
|
+
)
|
|
188
|
+
if result.returncode != 0:
|
|
189
|
+
message = "\n".join(filter(None, [result.stderr, result.stdout])).strip()
|
|
190
|
+
available_fields = parse_available_fields(message)
|
|
191
|
+
if available_fields:
|
|
192
|
+
fallback_fields = [
|
|
193
|
+
"name",
|
|
194
|
+
"state",
|
|
195
|
+
"bucket",
|
|
196
|
+
"link",
|
|
197
|
+
"startedAt",
|
|
198
|
+
"completedAt",
|
|
199
|
+
"workflow",
|
|
200
|
+
]
|
|
201
|
+
selected_fields = [field for field in fallback_fields if field in available_fields]
|
|
202
|
+
if not selected_fields:
|
|
203
|
+
print("Error: no usable fields available for gh pr checks.", file=sys.stderr)
|
|
204
|
+
return None
|
|
205
|
+
result = run_gh_command(
|
|
206
|
+
["pr", "checks", pr_value, "--json", ",".join(selected_fields)],
|
|
207
|
+
cwd=repo_root,
|
|
208
|
+
)
|
|
209
|
+
if result.returncode != 0:
|
|
210
|
+
message = (result.stderr or result.stdout or "").strip()
|
|
211
|
+
print(message or "Error: gh pr checks failed.", file=sys.stderr)
|
|
212
|
+
return None
|
|
213
|
+
else:
|
|
214
|
+
print(message or "Error: gh pr checks failed.", file=sys.stderr)
|
|
215
|
+
return None
|
|
216
|
+
try:
|
|
217
|
+
data = json.loads(result.stdout or "[]")
|
|
218
|
+
except json.JSONDecodeError:
|
|
219
|
+
print("Error: unable to parse checks JSON.", file=sys.stderr)
|
|
220
|
+
return None
|
|
221
|
+
if not isinstance(data, list):
|
|
222
|
+
print("Error: unexpected checks JSON shape.", file=sys.stderr)
|
|
223
|
+
return None
|
|
224
|
+
return data
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
def is_failing(check: dict[str, Any]) -> bool:
|
|
228
|
+
conclusion = normalize_field(check.get("conclusion"))
|
|
229
|
+
if conclusion in FAILURE_CONCLUSIONS:
|
|
230
|
+
return True
|
|
231
|
+
state = normalize_field(check.get("state") or check.get("status"))
|
|
232
|
+
if state in FAILURE_STATES:
|
|
233
|
+
return True
|
|
234
|
+
bucket = normalize_field(check.get("bucket"))
|
|
235
|
+
return bucket in FAILURE_BUCKETS
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
def analyze_check(
|
|
239
|
+
check: dict[str, Any],
|
|
240
|
+
repo_root: Path,
|
|
241
|
+
max_lines: int,
|
|
242
|
+
context: int,
|
|
243
|
+
) -> dict[str, Any]:
|
|
244
|
+
url = check.get("detailsUrl") or check.get("link") or ""
|
|
245
|
+
run_id = extract_run_id(url)
|
|
246
|
+
job_id = extract_job_id(url)
|
|
247
|
+
base: dict[str, Any] = {
|
|
248
|
+
"name": check.get("name", ""),
|
|
249
|
+
"detailsUrl": url,
|
|
250
|
+
"runId": run_id,
|
|
251
|
+
"jobId": job_id,
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
if run_id is None:
|
|
255
|
+
base["status"] = "external"
|
|
256
|
+
base["note"] = "No GitHub Actions run id detected in detailsUrl."
|
|
257
|
+
return base
|
|
258
|
+
|
|
259
|
+
metadata = fetch_run_metadata(run_id, repo_root)
|
|
260
|
+
log_text, log_error, log_status = fetch_check_log(
|
|
261
|
+
run_id=run_id,
|
|
262
|
+
job_id=job_id,
|
|
263
|
+
repo_root=repo_root,
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
if log_status == "pending":
|
|
267
|
+
base["status"] = "log_pending"
|
|
268
|
+
base["note"] = log_error or "Logs are not available yet."
|
|
269
|
+
if metadata:
|
|
270
|
+
base["run"] = metadata
|
|
271
|
+
return base
|
|
272
|
+
|
|
273
|
+
if log_error:
|
|
274
|
+
base["status"] = "log_unavailable"
|
|
275
|
+
base["error"] = log_error
|
|
276
|
+
if metadata:
|
|
277
|
+
base["run"] = metadata
|
|
278
|
+
return base
|
|
279
|
+
|
|
280
|
+
snippet = extract_failure_snippet(log_text, max_lines=max_lines, context=context)
|
|
281
|
+
base["status"] = "ok"
|
|
282
|
+
base["run"] = metadata or {}
|
|
283
|
+
base["logSnippet"] = snippet
|
|
284
|
+
base["logTail"] = tail_lines(log_text, max_lines)
|
|
285
|
+
return base
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
def extract_run_id(url: str) -> str | None:
|
|
289
|
+
if not url:
|
|
290
|
+
return None
|
|
291
|
+
for pattern in (r"/actions/runs/(\d+)", r"/runs/(\d+)"):
|
|
292
|
+
match = re.search(pattern, url)
|
|
293
|
+
if match:
|
|
294
|
+
return match.group(1)
|
|
295
|
+
return None
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
def extract_job_id(url: str) -> str | None:
|
|
299
|
+
if not url:
|
|
300
|
+
return None
|
|
301
|
+
match = re.search(r"/actions/runs/\d+/job/(\d+)", url)
|
|
302
|
+
if match:
|
|
303
|
+
return match.group(1)
|
|
304
|
+
match = re.search(r"/job/(\d+)", url)
|
|
305
|
+
if match:
|
|
306
|
+
return match.group(1)
|
|
307
|
+
return None
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
def fetch_run_metadata(run_id: str, repo_root: Path) -> dict[str, Any] | None:
|
|
311
|
+
fields = [
|
|
312
|
+
"conclusion",
|
|
313
|
+
"status",
|
|
314
|
+
"workflowName",
|
|
315
|
+
"name",
|
|
316
|
+
"event",
|
|
317
|
+
"headBranch",
|
|
318
|
+
"headSha",
|
|
319
|
+
"url",
|
|
320
|
+
]
|
|
321
|
+
result = run_gh_command(["run", "view", run_id, "--json", ",".join(fields)], cwd=repo_root)
|
|
322
|
+
if result.returncode != 0:
|
|
323
|
+
return None
|
|
324
|
+
try:
|
|
325
|
+
data = json.loads(result.stdout or "{}")
|
|
326
|
+
except json.JSONDecodeError:
|
|
327
|
+
return None
|
|
328
|
+
if not isinstance(data, dict):
|
|
329
|
+
return None
|
|
330
|
+
return data
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
def fetch_check_log(
|
|
334
|
+
run_id: str,
|
|
335
|
+
job_id: str | None,
|
|
336
|
+
repo_root: Path,
|
|
337
|
+
) -> tuple[str, str, str]:
|
|
338
|
+
log_text, log_error = fetch_run_log(run_id, repo_root)
|
|
339
|
+
if not log_error:
|
|
340
|
+
return log_text, "", "ok"
|
|
341
|
+
|
|
342
|
+
if is_log_pending_message(log_error) and job_id:
|
|
343
|
+
job_log, job_error = fetch_job_log(job_id, repo_root)
|
|
344
|
+
if job_log:
|
|
345
|
+
return job_log, "", "ok"
|
|
346
|
+
if job_error and is_log_pending_message(job_error):
|
|
347
|
+
return "", job_error, "pending"
|
|
348
|
+
if job_error:
|
|
349
|
+
return "", job_error, "error"
|
|
350
|
+
return "", log_error, "pending"
|
|
351
|
+
|
|
352
|
+
if is_log_pending_message(log_error):
|
|
353
|
+
return "", log_error, "pending"
|
|
354
|
+
|
|
355
|
+
return "", log_error, "error"
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
def fetch_run_log(run_id: str, repo_root: Path) -> tuple[str, str]:
|
|
359
|
+
result = run_gh_command(["run", "view", run_id, "--log"], cwd=repo_root)
|
|
360
|
+
if result.returncode != 0:
|
|
361
|
+
error = (result.stderr or result.stdout or "").strip()
|
|
362
|
+
return "", error or "gh run view failed"
|
|
363
|
+
return result.stdout, ""
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
def fetch_job_log(job_id: str, repo_root: Path) -> tuple[str, str]:
|
|
367
|
+
repo_slug = fetch_repo_slug(repo_root)
|
|
368
|
+
if not repo_slug:
|
|
369
|
+
return "", "Error: unable to resolve repository name for job logs."
|
|
370
|
+
endpoint = f"/repos/{repo_slug}/actions/jobs/{job_id}/logs"
|
|
371
|
+
returncode, stdout_bytes, stderr = run_gh_command_raw(["api", endpoint], cwd=repo_root)
|
|
372
|
+
if returncode != 0:
|
|
373
|
+
message = (stderr or stdout_bytes.decode(errors="replace")).strip()
|
|
374
|
+
return "", message or "gh api job logs failed"
|
|
375
|
+
if is_zip_payload(stdout_bytes):
|
|
376
|
+
return "", "Job logs returned a zip archive; unable to parse."
|
|
377
|
+
return stdout_bytes.decode(errors="replace"), ""
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
def fetch_repo_slug(repo_root: Path) -> str | None:
|
|
381
|
+
result = run_gh_command(["repo", "view", "--json", "nameWithOwner"], cwd=repo_root)
|
|
382
|
+
if result.returncode != 0:
|
|
383
|
+
return None
|
|
384
|
+
try:
|
|
385
|
+
data = json.loads(result.stdout or "{}")
|
|
386
|
+
except json.JSONDecodeError:
|
|
387
|
+
return None
|
|
388
|
+
name_with_owner = data.get("nameWithOwner")
|
|
389
|
+
if not name_with_owner:
|
|
390
|
+
return None
|
|
391
|
+
return str(name_with_owner)
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
def normalize_field(value: Any) -> str:
|
|
395
|
+
if value is None:
|
|
396
|
+
return ""
|
|
397
|
+
return str(value).strip().lower()
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
def parse_available_fields(message: str) -> list[str]:
|
|
401
|
+
if "Available fields:" not in message:
|
|
402
|
+
return []
|
|
403
|
+
fields: list[str] = []
|
|
404
|
+
collecting = False
|
|
405
|
+
for line in message.splitlines():
|
|
406
|
+
if "Available fields:" in line:
|
|
407
|
+
collecting = True
|
|
408
|
+
continue
|
|
409
|
+
if not collecting:
|
|
410
|
+
continue
|
|
411
|
+
field = line.strip()
|
|
412
|
+
if not field:
|
|
413
|
+
continue
|
|
414
|
+
fields.append(field)
|
|
415
|
+
return fields
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
def is_log_pending_message(message: str) -> bool:
|
|
419
|
+
lowered = message.lower()
|
|
420
|
+
return any(marker in lowered for marker in PENDING_LOG_MARKERS)
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
def is_zip_payload(payload: bytes) -> bool:
|
|
424
|
+
return payload.startswith(b"PK")
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
def extract_failure_snippet(log_text: str, max_lines: int, context: int) -> str:
|
|
428
|
+
lines = log_text.splitlines()
|
|
429
|
+
if not lines:
|
|
430
|
+
return ""
|
|
431
|
+
|
|
432
|
+
marker_index = find_failure_index(lines)
|
|
433
|
+
if marker_index is None:
|
|
434
|
+
return "\n".join(lines[-max_lines:])
|
|
435
|
+
|
|
436
|
+
start = max(0, marker_index - context)
|
|
437
|
+
end = min(len(lines), marker_index + context)
|
|
438
|
+
window = lines[start:end]
|
|
439
|
+
if len(window) > max_lines:
|
|
440
|
+
window = window[-max_lines:]
|
|
441
|
+
return "\n".join(window)
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
def find_failure_index(lines: Sequence[str]) -> int | None:
|
|
445
|
+
for idx in range(len(lines) - 1, -1, -1):
|
|
446
|
+
lowered = lines[idx].lower()
|
|
447
|
+
if any(marker in lowered for marker in FAILURE_MARKERS):
|
|
448
|
+
return idx
|
|
449
|
+
return None
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
def tail_lines(text: str, max_lines: int) -> str:
|
|
453
|
+
if max_lines <= 0:
|
|
454
|
+
return ""
|
|
455
|
+
lines = text.splitlines()
|
|
456
|
+
return "\n".join(lines[-max_lines:])
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
def render_results(pr_number: str, results: Iterable[dict[str, Any]]) -> None:
|
|
460
|
+
results_list = list(results)
|
|
461
|
+
print(f"PR #{pr_number}: {len(results_list)} failing checks analyzed.")
|
|
462
|
+
for result in results_list:
|
|
463
|
+
print("-" * 60)
|
|
464
|
+
print(f"Check: {result.get('name', '')}")
|
|
465
|
+
if result.get("detailsUrl"):
|
|
466
|
+
print(f"Details: {result['detailsUrl']}")
|
|
467
|
+
run_id = result.get("runId")
|
|
468
|
+
if run_id:
|
|
469
|
+
print(f"Run ID: {run_id}")
|
|
470
|
+
job_id = result.get("jobId")
|
|
471
|
+
if job_id:
|
|
472
|
+
print(f"Job ID: {job_id}")
|
|
473
|
+
status = result.get("status", "unknown")
|
|
474
|
+
print(f"Status: {status}")
|
|
475
|
+
|
|
476
|
+
run_meta = result.get("run", {})
|
|
477
|
+
if run_meta:
|
|
478
|
+
branch = run_meta.get("headBranch", "")
|
|
479
|
+
sha = (run_meta.get("headSha") or "")[:12]
|
|
480
|
+
workflow = run_meta.get("workflowName") or run_meta.get("name") or ""
|
|
481
|
+
conclusion = run_meta.get("conclusion") or run_meta.get("status") or ""
|
|
482
|
+
print(f"Workflow: {workflow} ({conclusion})")
|
|
483
|
+
if branch or sha:
|
|
484
|
+
print(f"Branch/SHA: {branch} {sha}")
|
|
485
|
+
if run_meta.get("url"):
|
|
486
|
+
print(f"Run URL: {run_meta['url']}")
|
|
487
|
+
|
|
488
|
+
if result.get("note"):
|
|
489
|
+
print(f"Note: {result['note']}")
|
|
490
|
+
|
|
491
|
+
if result.get("error"):
|
|
492
|
+
print(f"Error fetching logs: {result['error']}")
|
|
493
|
+
continue
|
|
494
|
+
|
|
495
|
+
snippet = result.get("logSnippet") or ""
|
|
496
|
+
if snippet:
|
|
497
|
+
print("Failure snippet:")
|
|
498
|
+
print(indent_block(snippet, prefix=" "))
|
|
499
|
+
else:
|
|
500
|
+
print("No snippet available.")
|
|
501
|
+
print("-" * 60)
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
def indent_block(text: str, prefix: str = " ") -> str:
|
|
505
|
+
return "\n".join(f"{prefix}{line}" for line in text.splitlines())
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
if __name__ == "__main__":
|
|
509
|
+
raise SystemExit(main())
|
agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/github-cli-workflow/SKILL.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github-cli-workflow
|
|
3
|
+
description: >-
|
|
4
|
+
HOW — GitHub CLI (gh): push branch, create draft PR with title/body from template or file;
|
|
5
|
+
fallback untracked PR_DESCRIPTION_*.md. Use when origin is GitHub.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# GitHub CLI — draft PR (HOW)
|
|
9
|
+
|
|
10
|
+
Use this skill when the remote is **GitHub** and you need to **push** and open a **draft** pull request. Workflow skills delegate here; this skill does **not** replace Jira or ClickUp procedures.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
- `gh` authenticated (`gh auth status`).
|
|
15
|
+
- Branch pushed to `origin` (or the remote your team uses).
|
|
16
|
+
|
|
17
|
+
## Recommended flow
|
|
18
|
+
|
|
19
|
+
1. Ensure the working branch tracks the remote: push with upstream as usual for the repo.
|
|
20
|
+
2. Prefer the repository **PR template** for the body: use `--body-file` pointing at a generated file that includes template sections, or paste from `.github/pull_request_template.md` when required. If no template exists in the repo, use **`pr-fallback`** (WHAT) to build the body and **`output-handshake`** to confirm where the file lives and that a human will review before `gh pr create`.
|
|
21
|
+
3. Create a **draft** PR:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
gh pr create --draft --title "YOUR_TITLE" --body-file /path/to/body.md
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
If the repo expects a base branch other than the default:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
gh pr create --draft --base develop --title "YOUR_TITLE" --body-file /path/to/body.md
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
4. If `--draft` is rejected by `gh`, retry once without `--draft` and **state in chat** that the PR could not be created as draft via CLI.
|
|
34
|
+
|
|
35
|
+
## Title and body
|
|
36
|
+
|
|
37
|
+
- Keep titles within team conventions (often including ticket keys).
|
|
38
|
+
- Validate **title and body with the user** before calling the step complete.
|
|
39
|
+
|
|
40
|
+
## Fallback (CLI failure)
|
|
41
|
+
|
|
42
|
+
1. Write an **untracked** file `PR_DESCRIPTION_<WORK_ITEM_ID>.md` in the repo root or `/tmp` with title + body ready to paste.
|
|
43
|
+
2. **Do not** `git add` this file.
|
|
44
|
+
3. Give manual steps: open the compare URL on GitHub and create a **draft** PR from the branch, pasting from the file.
|
|
45
|
+
|
|
46
|
+
## Safety
|
|
47
|
+
|
|
48
|
+
- Do not expose tokens or paste secrets into PR bodies.
|
|
49
|
+
- Do not force-push shared default branches unless the user explicitly requests it.
|
agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/gitlab-cli-workflow/SKILL.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gitlab-cli-workflow
|
|
3
|
+
description: >-
|
|
4
|
+
HOW — GitLab CLI (glab): push branch, create draft MR with title/body; fallback untracked markdown.
|
|
5
|
+
Use when origin is GitLab.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# GitLab CLI — draft MR (HOW)
|
|
9
|
+
|
|
10
|
+
Use this skill when the remote is **GitLab** and you need to **push** and open a **draft** merge request. Workflow skills delegate here.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
- `glab` authenticated for the host (`glab auth status`).
|
|
15
|
+
- Branch pushed to the documented remote.
|
|
16
|
+
|
|
17
|
+
## Discover draft flags
|
|
18
|
+
|
|
19
|
+
Run `glab mr create --help` on the machine—subcommands and flags evolve. Prefer **draft** / **WIP** equivalents when available.
|
|
20
|
+
|
|
21
|
+
## Recommended flow
|
|
22
|
+
|
|
23
|
+
1. Push the branch and set upstream per team practice.
|
|
24
|
+
2. Create an MR body file: use the project’s **merge request template** when present. If the project has no template, you may align the **Markdown** with **`pr-fallback`** (same default sections as the org PR body) and **`output-handshake`** for where the description file lives and human review—then use that file for `--description` or the equivalent.
|
|
25
|
+
3. **Draft** MR (illustrative; confirm flags with `glab --help`):
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
glab mr create --draft --title "YOUR_TITLE" --description "$(cat /path/to/body.md)"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
If the CLI prefers a file flag, use that instead of shell substitution.
|
|
32
|
+
|
|
33
|
+
4. If draft creation fails, retry with non-draft **only** if the user accepts, and note the limitation in chat.
|
|
34
|
+
|
|
35
|
+
## Fallback (CLI failure)
|
|
36
|
+
|
|
37
|
+
1. Write **untracked** `MERGE_REQUEST_DESCRIPTION_<WORK_ITEM_ID>.md` (or `PR_DESCRIPTION_<ID>.md`) with title + body.
|
|
38
|
+
2. **Do not** `git add` it.
|
|
39
|
+
3. Instruct the user to open the GitLab **New merge request** UI from the branch and paste content, choosing **draft** if the UI offers it.
|
|
40
|
+
|
|
41
|
+
## Safety
|
|
42
|
+
|
|
43
|
+
- No secrets in MR descriptions.
|
|
44
|
+
- No force-push to shared defaults without explicit user request.
|
agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/workflow-client-bootstrap/SKILL.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-client-bootstrap
|
|
3
|
+
description: >-
|
|
4
|
+
DEPRECATED alias. Use workflow-client-bootstrap instead.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Deprecated — workflow-client-bootstrap
|
|
8
|
+
|
|
9
|
+
This skill name is kept for backward compatibility only.
|
|
10
|
+
|
|
11
|
+
Use **`workflow-client-bootstrap`** going forward:
|
|
12
|
+
|
|
13
|
+
- Path: `~/.local/share/agent-toolkit/skills/workflow-client-bootstrap/`
|
|
14
|
+
- Catalog: `skill-catalog.yaml` (preferred entry point)
|
agent_toolkit_cli-1.0.3.data/data/agent_toolkit/data/skills/forge/workflow-generic-project/SKILL.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-generic-project
|
|
3
|
+
description: >-
|
|
4
|
+
DEPRECATED alias. Use workflow-generic-project instead.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Deprecated — workflow-generic-project
|
|
8
|
+
|
|
9
|
+
This skill name is kept for backward compatibility only.
|
|
10
|
+
|
|
11
|
+
Use **`workflow-generic-project`** going forward:
|
|
12
|
+
|
|
13
|
+
- Path: `~/.local/share/agent-toolkit/skills/workflow-generic-project/`
|
|
14
|
+
- Catalog: `skill-catalog.yaml` (preferred entry point)
|