@mmerterden/multi-agent-pipeline 20.2.0 → 20.3.0
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.
- package/CHANGELOG.md +923 -1
- package/README.md +104 -81
- package/README.tr.md +103 -62
- package/docs/FIGMA_PIPELINE.md +35 -35
- package/docs/adr/0006-skills-core-external-split.md +1 -1
- package/docs/adr/0007-multi-tool-adapter-framework.md +6 -0
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +7 -0
- package/docs/architecture.md +50 -14
- package/docs/best-practices.md +1 -1
- package/docs/ecosystem.md +56 -32
- package/docs/facts.json +10 -10
- package/docs/features.md +97 -5
- package/docs/recovery-guide.md +7 -14
- package/docs/server-readiness.md +31 -24
- package/index.js +1 -1
- package/install/_common.mjs +3 -5
- package/install/_platform-filter.mjs +23 -1
- package/install/_unattended-profile.mjs +321 -75
- package/install/claude.mjs +51 -10
- package/install/codex.mjs +2 -0
- package/install/copilot.mjs +2 -0
- package/install/index.mjs +30 -17
- package/install/templates/claude-hooks.json +16 -5
- package/install/templates/copilot-instructions.md +1 -1
- package/install/templates/multi-agent-autopilot-awake.plist.template +48 -0
- package/install/templates/multi-agent-autopilot.plist.template +12 -5
- package/install/unattended-profile-legacy.json +80 -0
- package/manifest.json +616 -483
- package/package.json +8 -3
- package/pipeline/agents/code-reviewer.md +10 -0
- package/pipeline/agents/plan-critic.md +98 -0
- package/pipeline/agents/security-auditor.md +10 -0
- package/pipeline/agents/task-clarifier.md +10 -0
- package/pipeline/commands/multi-agent/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/analysis/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/analysis-jira/SKILL.md +12 -1
- package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/autopilot-off/SKILL.md +36 -6
- package/pipeline/commands/multi-agent/autopilot-on/SKILL.md +77 -12
- package/pipeline/commands/multi-agent/autopilot-status/SKILL.md +29 -8
- package/pipeline/commands/multi-agent/build-optimize/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/channels/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/complaint-analysis/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/create-jira/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/design-check/SKILL.md +16 -11
- package/pipeline/commands/multi-agent/diff-explain/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/doctor/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/feedback/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/forget/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/graph/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/help/SKILL.md +37 -39
- package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/issue/SKILL.md +7 -1
- package/pipeline/commands/multi-agent/jira/SKILL.md +7 -1
- package/pipeline/commands/multi-agent/kill/SKILL.md +9 -3
- package/pipeline/commands/multi-agent/language/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/log/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/manual-test/SKILL.md +5 -0
- package/pipeline/commands/multi-agent/model/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/prune-logs/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/prune-prompts/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/purge/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/refactor/SKILL.md +5 -0
- package/pipeline/commands/multi-agent/research/SKILL.md +49 -0
- package/pipeline/commands/multi-agent/resume/SKILL.md +29 -6
- package/pipeline/commands/multi-agent/review/SKILL.md +28 -9
- package/pipeline/commands/multi-agent/review-analysis/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/review-issue/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/review-jira/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/route-off/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/route-on/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/route-status/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/routines/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/save/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/scaffold/SKILL.md +47 -0
- package/pipeline/commands/multi-agent/scan/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/search/SKILL.md +12 -8
- package/pipeline/commands/multi-agent/security-review/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/serve/SKILL.md +62 -0
- package/pipeline/commands/multi-agent/setup/SKILL.md +27 -36
- package/pipeline/commands/multi-agent/stack/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/status/SKILL.md +10 -9
- package/pipeline/commands/multi-agent/steer/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/store-ready/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/sync/SKILL.md +13 -13
- package/pipeline/commands/multi-agent/test/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/test-accessibility/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/test-dark-mode/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/test-dynamic-type/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/test-screenshots/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/testflight-validation/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/uninstall/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/update/SKILL.md +4 -0
- package/pipeline/contract/CHANGELOG.md +74 -0
- package/pipeline/contract/README.md +126 -0
- package/pipeline/contract/build.mjs +427 -0
- package/pipeline/contract/fixtures/answer-result.json +11 -0
- package/pipeline/contract/fixtures/error-invalid-request.json +8 -0
- package/pipeline/contract/fixtures/error-unauthorized.json +5 -0
- package/pipeline/contract/fixtures/error-unsigned.json +5 -0
- package/pipeline/contract/fixtures/issues-empty.json +18 -0
- package/pipeline/contract/fixtures/launch-plan.json +31 -0
- package/pipeline/contract/fixtures/runs-awaiting-question.json +70 -0
- package/pipeline/contract/fixtures/runs-empty.json +6 -0
- package/pipeline/contract/fixtures/runs-failed.json +84 -0
- package/pipeline/contract/fixtures/runs-old-schema.json +70 -0
- package/pipeline/contract/fixtures/runs-pr-opened-redacted.json +101 -0
- package/pipeline/contract/fixtures/runs-pr-opened.json +106 -0
- package/pipeline/contract/fixtures/runs-running.json +84 -0
- package/pipeline/contract/fixtures/worktrees-empty.json +4 -0
- package/pipeline/contract/frozen/toolbox.json +107 -0
- package/pipeline/contract/manifest.json +263 -0
- package/pipeline/contract/types/index.d.ts +343 -0
- package/pipeline/lib/_jira-auth.sh +6 -2
- package/pipeline/lib/account-resolver.sh +1 -1
- package/pipeline/lib/autopilot-state.sh +19 -0
- package/pipeline/lib/context-link-extractor.sh +12 -5
- package/pipeline/lib/credential-inventory.sh +12 -5
- package/pipeline/lib/credential-store.sh +116 -185
- package/pipeline/lib/fetch-confluence.sh +44 -3
- package/pipeline/lib/fetch-document.sh +3 -4
- package/pipeline/lib/fetch-fortify.sh +1 -1
- package/pipeline/lib/figma-mcp-refresh.sh +2 -2
- package/pipeline/lib/figma-token.sh +5 -1
- package/pipeline/lib/issue-fetcher.sh +233 -16
- package/pipeline/lib/json-file-lock.mjs +172 -0
- package/pipeline/lib/model-dispatch.sh +21 -12
- package/pipeline/lib/model-rung.sh +6 -1
- package/pipeline/lib/multi-repo-pipeline.sh +1 -1
- package/pipeline/lib/outbound-gate.mjs +46 -16
- package/pipeline/lib/parse-complaints.sh +14 -7
- package/pipeline/lib/plan-todos.sh +3 -3
- package/pipeline/lib/post-pr-review.sh +9 -9
- package/pipeline/lib/pr-request-location.mjs +85 -0
- package/pipeline/lib/regular-file.mjs +153 -0
- package/pipeline/lib/repo-hygiene.sh +17 -0
- package/pipeline/lib/route-state.sh +5 -1
- package/pipeline/lib/run-paths.sh +3 -2
- package/pipeline/lib/stack-detect.sh +19 -1
- package/pipeline/lib/unattended-profile-check.mjs +178 -0
- package/pipeline/lib/unattended-settings-location.mjs +28 -0
- package/pipeline/lib/unattended.mjs +76 -0
- package/pipeline/lib/unattended.sh +32 -0
- package/pipeline/lib/untrusted.mjs +76 -0
- package/pipeline/lib/user-facing.mjs +82 -0
- package/pipeline/lib/user-facing.sh +58 -0
- package/pipeline/multi-agent-refs/_dev-context.md +1 -1
- package/pipeline/multi-agent-refs/analysis/evidence.md +4 -0
- package/pipeline/multi-agent-refs/analysis/locked.md +2 -2
- package/pipeline/multi-agent-refs/analysis/render.md +4 -3
- package/pipeline/multi-agent-refs/analysis/resolve.md +3 -1
- package/pipeline/multi-agent-refs/analysis/synthesis.md +4 -5
- package/pipeline/multi-agent-refs/analysis-template.md +10 -17
- package/pipeline/multi-agent-refs/channels/jira.md +1 -1
- package/pipeline/multi-agent-refs/component-dispatch.md +3 -3
- package/pipeline/multi-agent-refs/conventions-defaults.md +32 -32
- package/pipeline/multi-agent-refs/cross-cli-contract.md +10 -17
- package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +37 -9
- package/pipeline/multi-agent-refs/features/autopilot-operations.md +277 -0
- package/pipeline/multi-agent-refs/features/constitution.md +196 -0
- package/pipeline/multi-agent-refs/features/doctor.md +6 -3
- package/pipeline/multi-agent-refs/features/external-context-injection.md +6 -1
- package/pipeline/multi-agent-refs/features/jira-context.md +1 -1
- package/pipeline/multi-agent-refs/features/maturity-followup.md +43 -23
- package/pipeline/multi-agent-refs/features/model-fallback.md +9 -0
- package/pipeline/multi-agent-refs/features/phone-api.md +306 -0
- package/pipeline/multi-agent-refs/features/plan-critic.md +159 -0
- package/pipeline/multi-agent-refs/features/research.md +150 -0
- package/pipeline/multi-agent-refs/features/review-decision.md +185 -0
- package/pipeline/multi-agent-refs/features/scaffold.md +160 -0
- package/pipeline/multi-agent-refs/features/security-audit.md +6 -2
- package/pipeline/multi-agent-refs/features/skill-conformance.md +4 -1
- package/pipeline/multi-agent-refs/features/stack-adapters.md +116 -0
- package/pipeline/multi-agent-refs/features/unattended-gates.md +316 -0
- package/pipeline/multi-agent-refs/features/unattended-security.md +731 -0
- package/pipeline/multi-agent-refs/features/url-enrichment.md +2 -2
- package/pipeline/multi-agent-refs/features/usage-reporting.md +127 -31
- package/pipeline/multi-agent-refs/features/verify-by-test.md +1 -1
- package/pipeline/multi-agent-refs/features/visual-evidence.md +7 -7
- package/pipeline/multi-agent-refs/keychain.md +6 -11
- package/pipeline/multi-agent-refs/payload-contracts.md +2 -2
- package/pipeline/multi-agent-refs/phases/log-format.md +2 -3
- package/pipeline/multi-agent-refs/phases/modes.md +10 -12
- package/pipeline/multi-agent-refs/phases/operations.md +11 -5
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +73 -81
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +22 -22
- package/pipeline/multi-agent-refs/phases/phase-2-dev.md +42 -66
- package/pipeline/multi-agent-refs/phases/phase-3-review.md +45 -79
- package/pipeline/multi-agent-refs/phases/phase-4-commit.md +28 -38
- package/pipeline/multi-agent-refs/phases/phase-5-report.md +27 -25
- package/pipeline/multi-agent-refs/phases.md +1 -1
- package/pipeline/multi-agent-refs/picker-contract.md +1 -1
- package/pipeline/multi-agent-refs/progress-contract.md +13 -16
- package/pipeline/multi-agent-refs/readiness-review.md +1 -1
- package/pipeline/multi-agent-refs/research/engine.md +91 -0
- package/pipeline/multi-agent-refs/rules.md +6 -4
- package/pipeline/multi-agent-refs/setup/repo-discovery.md +2 -2
- package/pipeline/multi-agent-refs/tracker-contract.md +2 -2
- package/pipeline/multi-agent-refs/unattended-contract.md +68 -16
- package/pipeline/rules/figma-pipeline.md +12 -12
- package/pipeline/schemas/agent-state.schema.json +480 -18
- package/pipeline/schemas/analysis-spec.schema.json +4 -4
- package/pipeline/schemas/answer-request.schema.json +24 -0
- package/pipeline/schemas/answer-result.schema.json +28 -0
- package/pipeline/schemas/autopilot-config.schema.json +111 -13
- package/pipeline/schemas/command-parameters.schema.json +99 -0
- package/pipeline/schemas/constitution.schema.json +56 -0
- package/pipeline/schemas/contract-error.schema.json +52 -0
- package/pipeline/schemas/design-check-config.schema.json +5 -1
- package/pipeline/schemas/issues.schema.json +61 -0
- package/pipeline/schemas/launch-plan.schema.json +46 -0
- package/pipeline/schemas/launch-request.schema.json +45 -0
- package/pipeline/schemas/launch.json +61 -0
- package/pipeline/schemas/launch.schema.json +84 -0
- package/pipeline/schemas/phases.json +2 -2
- package/pipeline/schemas/phases.schema.json +68 -0
- package/pipeline/schemas/phone-devices.schema.json +61 -0
- package/pipeline/schemas/phone-signed-request.schema.json +67 -0
- package/pipeline/schemas/plan-critique.schema.json +99 -0
- package/pipeline/schemas/plan-todos.schema.json +7 -7
- package/pipeline/schemas/planning-output.schema.json +5 -0
- package/pipeline/schemas/pr-request.schema.json +46 -0
- package/pipeline/schemas/prefs.schema.json +82 -7
- package/pipeline/schemas/research-output.schema.json +118 -0
- package/pipeline/schemas/review-file-exclusions.schema.json +25 -0
- package/pipeline/schemas/reviewer-output.schema.json +40 -4
- package/pipeline/schemas/run-questions.json +392 -0
- package/pipeline/schemas/run-questions.schema.json +118 -0
- package/pipeline/schemas/runs-index.schema.json +189 -0
- package/pipeline/schemas/scaffold-manifest.schema.json +43 -0
- package/pipeline/schemas/secret-patterns.schema.json +28 -0
- package/pipeline/schemas/stack-adapters.json +527 -0
- package/pipeline/schemas/stack-adapters.schema.json +184 -0
- package/pipeline/schemas/token-budget.json +1 -1
- package/pipeline/schemas/token-budget.schema.json +26 -0
- package/pipeline/schemas/triage-output.schema.json +64 -3
- package/pipeline/schemas/unattended-policy.json +139 -0
- package/pipeline/schemas/unattended-policy.schema.json +73 -0
- package/pipeline/schemas/unattended-profile.json +248 -0
- package/pipeline/schemas/unattended-profile.schema.json +198 -0
- package/pipeline/schemas/worktrees.schema.json +51 -0
- package/pipeline/scripts/README.md +1 -0
- package/pipeline/scripts/_autopilot-config.mjs +130 -0
- package/pipeline/scripts/_autopilot-ops.mjs +567 -0
- package/pipeline/scripts/_autopilot-outcomes.mjs +174 -0
- package/pipeline/scripts/_command-contract.mjs +384 -0
- package/pipeline/scripts/_cost.mjs +40 -0
- package/pipeline/scripts/_notices.mjs +160 -0
- package/pipeline/scripts/_phone-auth.mjs +485 -0
- package/pipeline/scripts/_pre-existing.mjs +294 -0
- package/pipeline/scripts/_redact.mjs +77 -0
- package/pipeline/scripts/_run-paths.mjs +4 -2
- package/pipeline/scripts/_stack-adapter.mjs +678 -0
- package/pipeline/scripts/_stack-routing.mjs +1 -1
- package/pipeline/scripts/agent-guard.py +348 -37
- package/pipeline/scripts/agent-guard.sh +41 -13
- package/pipeline/scripts/analysis-story-tree.mjs +79 -3
- package/pipeline/scripts/answer-question.mjs +181 -0
- package/pipeline/scripts/audit-log-rotate.sh +1 -4
- package/pipeline/scripts/audit-log.sh +4 -4
- package/pipeline/scripts/autopilot-arming.mjs +389 -21
- package/pipeline/scripts/autopilot-awake.mjs +255 -0
- package/pipeline/scripts/autopilot-intake.mjs +137 -36
- package/pipeline/scripts/autopilot-menubar.swift +156 -44
- package/pipeline/scripts/autopilot-publish.mjs +1625 -0
- package/pipeline/scripts/autopilot-runner.mjs +1678 -222
- package/pipeline/scripts/autopilot-status.sh +198 -33
- package/pipeline/scripts/build-lock.sh +120 -0
- package/pipeline/scripts/build-references.mjs +4 -1
- package/pipeline/scripts/build-stack-plugins.mjs +59 -22
- package/pipeline/scripts/capture-flush.sh +1 -1
- package/pipeline/scripts/capture-resume.sh +13 -9
- package/pipeline/scripts/check-derived-drift.mjs +52 -11
- package/pipeline/scripts/commands.mjs +88 -0
- package/pipeline/scripts/constitution.mjs +362 -0
- package/pipeline/scripts/contract-server.mjs +776 -0
- package/pipeline/scripts/cost-analyze.mjs +89 -39
- package/pipeline/scripts/diff-explain.mjs +12 -1
- package/pipeline/scripts/doctor.mjs +77 -28
- package/pipeline/scripts/evidence-gate.mjs +192 -12
- package/pipeline/scripts/feedback-send.mjs +4 -2
- package/pipeline/scripts/gate-ledger.mjs +449 -0
- package/pipeline/scripts/gc-abandoned.sh +132 -13
- package/pipeline/scripts/gen-facts.mjs +31 -15
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
- package/pipeline/scripts/github-ssh-setup.sh +140 -29
- package/pipeline/scripts/graph-mermaid.mjs +4 -1
- package/pipeline/scripts/issues.mjs +236 -0
- package/pipeline/scripts/jira-attach.sh +6 -2
- package/pipeline/scripts/jira-search.sh +4 -3
- package/pipeline/scripts/keychain-save.sh +125 -24
- package/pipeline/scripts/keychain.py +63 -93
- package/pipeline/scripts/launch-request.mjs +747 -0
- package/pipeline/scripts/localize-commands.mjs +4 -10
- package/pipeline/scripts/log-metric.sh +6 -5
- package/pipeline/scripts/maturity-followup.mjs +13 -4
- package/pipeline/scripts/memory-save.sh +25 -0
- package/pipeline/scripts/migrate-prefs.mjs +4 -3
- package/pipeline/scripts/open-questions-gate.mjs +276 -0
- package/pipeline/scripts/phase-tracker.sh +41 -27
- package/pipeline/scripts/phase0-exit-gate.mjs +22 -4
- package/pipeline/scripts/phone-devices.mjs +224 -0
- package/pipeline/scripts/plan-coverage-gate.mjs +200 -66
- package/pipeline/scripts/plan-critique-gate.mjs +591 -0
- package/pipeline/scripts/pr-request.mjs +188 -0
- package/pipeline/scripts/pre-commit-check.sh +115 -4
- package/pipeline/scripts/probe-evidence-capability.sh +44 -5
- package/pipeline/scripts/record-phase.mjs +71 -0
- package/pipeline/scripts/render-agent-log-cost.sh +17 -2
- package/pipeline/scripts/render-cost-summary.sh +1 -1
- package/pipeline/scripts/render-work-summary.sh +1 -1
- package/pipeline/scripts/require-supported-version.sh +4 -1
- package/pipeline/scripts/research-gate.mjs +704 -0
- package/pipeline/scripts/review-decision-gate.mjs +403 -0
- package/pipeline/scripts/routine-registry.mjs +5 -2
- package/pipeline/scripts/runs-index.mjs +135 -27
- package/pipeline/scripts/scaffold-gate.mjs +393 -0
- package/pipeline/scripts/skill-conformance.mjs +25 -8
- package/pipeline/scripts/skill-siblings.mjs +2 -1
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +32 -6
- package/pipeline/scripts/smoke-schema-validation.sh +6 -2
- package/pipeline/scripts/spec-consistency-gate.mjs +469 -0
- package/pipeline/scripts/symbol-existence-gate.mjs +450 -0
- package/pipeline/scripts/test-gap-scan.mjs +40 -2
- package/pipeline/scripts/test-integrity-gate.mjs +20 -4
- package/pipeline/scripts/test-strength.mjs +484 -0
- package/pipeline/scripts/test-summary.mjs +651 -0
- package/pipeline/scripts/triage-memory.mjs +49 -9
- package/pipeline/scripts/unattended_policy.py +2786 -0
- package/pipeline/scripts/uninstall.mjs +10 -10
- package/pipeline/scripts/update-issue-progress.sh +1 -1
- package/pipeline/scripts/usage-identity.mjs +288 -0
- package/pipeline/scripts/usage-register.mjs +185 -63
- package/pipeline/scripts/usage-report.mjs +230 -66
- package/pipeline/scripts/validate-complaint-doc.mjs +28 -10
- package/pipeline/scripts/validate-planning.mjs +6 -0
- package/pipeline/scripts/verify-citations.mjs +151 -38
- package/pipeline/scripts/verify.mjs +58 -18
- package/pipeline/scripts/worktree-prepare.sh +126 -0
- package/pipeline/scripts/worktrees.mjs +124 -0
- package/pipeline/scripts/write-state.mjs +48 -17
- package/pipeline/skills/.skill-manifest.json +222 -226
- package/pipeline/skills/.skills-index.json +77 -88
- package/pipeline/skills/shared/README.md +44 -45
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +3 -2
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +10 -9
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +6 -5
- package/pipeline/skills/shared/core/multi-agent-analysis-jira/SKILL.md +11 -3
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +4 -3
- package/pipeline/skills/shared/core/multi-agent-autopilot-off/SKILL.md +32 -6
- package/pipeline/skills/shared/core/multi-agent-autopilot-on/SKILL.md +66 -8
- package/pipeline/skills/shared/core/multi-agent-autopilot-status/SKILL.md +27 -9
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +7 -4
- package/pipeline/skills/shared/core/multi-agent-complaint-analysis/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +7 -5
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-doctor/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-feedback/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-forget/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +7 -4
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-model/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-prune-prompts/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-research/SKILL.md +35 -0
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +7 -3
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +7 -5
- package/pipeline/skills/shared/core/multi-agent-review-analysis/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-review-issue/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-route-off/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-route-on/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-route-status/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-routines/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-save/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-scaffold/SKILL.md +30 -0
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +4 -3
- package/pipeline/skills/shared/core/multi-agent-security-review/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-serve/SKILL.md +60 -0
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +8 -8
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +7 -8
- package/pipeline/skills/shared/core/multi-agent-steer/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-store-ready/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +10 -10
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-test-accessibility/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-test-dark-mode/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-test-dynamic-type/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-test-screenshots/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +2 -1
- package/pipeline/skills/shared/external/NOTICE-avdlee-swiftui-agent-skill.md +46 -0
- package/pipeline/skills/shared/external/NOTICE-dimillian-skills.md +9 -3
- package/pipeline/skills/shared/external/NOTICE-paul-hudson-skills.md +54 -0
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +9 -11
- package/pipeline/skills/shared/external/NOTICE-vibeship-spawner-skills.md +203 -0
- package/pipeline/skills/shared/external/NOTICE-xcode-build-skills.md +10 -3
- package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +131 -25
- package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +4 -3
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +2 -1
- package/pipeline/skills/shared/external/android-architecture/SKILL.md +85 -76
- package/pipeline/skills/shared/external/android-build-quality-gates/SKILL.md +51 -3
- package/pipeline/skills/shared/external/android-build-quality-gates/references/patterns.md +9 -0
- package/pipeline/skills/shared/external/android-datastore/SKILL.md +4 -3
- package/pipeline/skills/shared/external/android-design-tokens-codegen/SKILL.md +4 -3
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +106 -181
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/references/patterns.md +147 -0
- package/pipeline/skills/shared/external/android-mvi-viewmodel/SKILL.md +45 -4
- package/pipeline/skills/shared/external/android-performance/SKILL.md +27 -2
- package/pipeline/skills/shared/external/android-performance/references/patterns.md +37 -37
- package/pipeline/skills/shared/external/api-patterns/SKILL.md +111 -67
- package/pipeline/skills/shared/external/api-patterns/references/contract-details.md +128 -0
- package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +136 -186
- package/pipeline/skills/shared/external/api-security-best-practices/references/abuse-controls.md +140 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/identity-and-access.md +207 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/operations.md +66 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/request-handling.md +175 -0
- package/pipeline/skills/shared/external/app-clips/SKILL.md +2 -0
- package/pipeline/skills/shared/external/app-intents/SKILL.md +2 -0
- package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +4 -3
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +2 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +2 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +2 -0
- package/pipeline/skills/shared/external/architecture/SKILL.md +106 -39
- package/pipeline/skills/shared/external/architecture/references/adr-and-review.md +76 -0
- package/pipeline/skills/shared/external/authentication/SKILL.md +2 -0
- package/pipeline/skills/shared/external/avkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/background-processing/SKILL.md +2 -1
- package/pipeline/skills/shared/external/backlog/SKILL.md +3 -2
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +2 -0
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +3 -2
- package/pipeline/skills/shared/external/clean-code/SKILL.md +192 -90
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +2 -1
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/compose-components/SKILL.md +4 -4
- package/pipeline/skills/shared/external/compose-navigation/SKILL.md +22 -22
- package/pipeline/skills/shared/external/compose-navigation/references/patterns.md +10 -10
- package/pipeline/skills/shared/external/compose-testing/SKILL.md +13 -6
- package/pipeline/skills/shared/external/compose-testing/references/patterns.md +59 -59
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +2 -0
- package/pipeline/skills/shared/external/context-compression/SKILL.md +118 -250
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +2 -0
- package/pipeline/skills/shared/external/core-data/SKILL.md +2 -0
- package/pipeline/skills/shared/external/core-motion/SKILL.md +2 -0
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +2 -0
- package/pipeline/skills/shared/external/coreml/SKILL.md +2 -1
- package/pipeline/skills/shared/external/council/SKILL.md +2 -1
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/css-modern/SKILL.md +3 -2
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +3 -2
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +2 -0
- package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +130 -20
- package/pipeline/skills/shared/external/debugging-strategies/references/hard-cases.md +54 -0
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +2 -0
- package/pipeline/skills/shared/external/docker-expert/SKILL.md +137 -381
- package/pipeline/skills/shared/external/docker-expert/references/patterns.md +98 -0
- package/pipeline/skills/shared/external/energykit/SKILL.md +2 -1
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +3 -1
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +2 -2
- package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +116 -185
- package/pipeline/skills/shared/external/fastapi-pro/references/app-structure.md +235 -0
- package/pipeline/skills/shared/external/fastapi-pro/references/testing-and-deployment.md +69 -0
- package/pipeline/skills/shared/external/firebase/SKILL.md +4 -3
- package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +151 -293
- package/pipeline/skills/shared/external/github-actions-templates/references/patterns.md +96 -0
- package/pipeline/skills/shared/external/healthkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/hig-components-content/SKILL.md +69 -72
- package/pipeline/skills/shared/external/hig-components-content/references/content-views.md +111 -0
- package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +77 -86
- package/pipeline/skills/shared/external/hig-components-layout/references/containers.md +98 -0
- package/pipeline/skills/shared/external/hig-components-status/SKILL.md +150 -78
- package/pipeline/skills/shared/external/hig-components-system/SKILL.md +76 -97
- package/pipeline/skills/shared/external/hig-components-system/references/surfaces.md +98 -0
- package/pipeline/skills/shared/external/hig-foundations/SKILL.md +48 -76
- package/pipeline/skills/shared/external/hig-foundations/references/foundations-detail.md +132 -0
- package/pipeline/skills/shared/external/hig-inputs/SKILL.md +147 -106
- package/pipeline/skills/shared/external/hig-patterns/SKILL.md +61 -77
- package/pipeline/skills/shared/external/hig-patterns/references/patterns.md +92 -0
- package/pipeline/skills/shared/external/hig-platforms/SKILL.md +147 -77
- package/pipeline/skills/shared/external/hig-technologies/SKILL.md +61 -121
- package/pipeline/skills/shared/external/hig-technologies/references/technologies.md +108 -0
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +2 -0
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +3 -2
- package/pipeline/skills/shared/external/humanizer/SKILL.md +2 -1
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +2 -0
- package/pipeline/skills/shared/external/ios-coding-standard/SKILL.md +2 -1
- package/pipeline/skills/shared/external/ios-coding-standard/references/STANDARD.md +14 -2
- package/pipeline/skills/shared/external/ios-coding-standard/references/rules.yml +2 -2
- package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +4 -3
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +8 -6
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +2 -2
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +11 -11
- package/pipeline/skills/shared/external/ios-module-structure/SKILL.md +2 -1
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +2 -0
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +2 -0
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +102 -193
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/references/patterns.md +103 -0
- package/pipeline/skills/shared/external/live-activities/SKILL.md +4 -2
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +2 -2
- package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +7 -9
- package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +3 -3
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-new-values.py +2 -2
- package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +4 -3
- package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +5 -3
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +2 -0
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +2 -0
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +149 -46
- package/pipeline/skills/shared/external/monorepo-architect/references/patterns.md +70 -0
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +2 -0
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/natural-language/SKILL.md +2 -0
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +3 -2
- package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +91 -21
- package/pipeline/skills/shared/external/nodejs-backend-patterns/references/runtime-patterns.md +247 -0
- package/pipeline/skills/shared/external/nodejs-backend-patterns/references/testing-and-frameworks.md +57 -0
- package/pipeline/skills/shared/external/observability-engineer/SKILL.md +155 -232
- package/pipeline/skills/shared/external/observability-engineer/references/patterns.md +75 -0
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +2 -0
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +2 -2
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +18 -18
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +2 -1
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +2 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +2 -1
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +2 -0
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +3 -2
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +3 -2
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +2 -2
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +3 -2
- package/pipeline/skills/shared/external/retrofit-networking/SKILL.md +7 -7
- package/pipeline/skills/shared/external/retrofit-networking/references/patterns.md +69 -69
- package/pipeline/skills/shared/external/room-database/references/patterns.md +126 -126
- package/pipeline/skills/shared/external/search-first/SKILL.md +2 -1
- package/pipeline/skills/shared/external/security-review/SKILL.md +4 -3
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +2 -2
- package/pipeline/skills/shared/external/signal-community/SKILL.md +1 -1
- package/pipeline/skills/shared/external/skill-creator/SKILL.md +2 -1
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +2 -1
- package/pipeline/skills/shared/external/spm-build-analysis/SKILL.md +2 -0
- package/pipeline/skills/shared/external/storekit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +5 -4
- package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-language/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swift-security/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +10 -0
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +5 -4
- package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +5 -4
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +4 -3
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +3 -2
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +3 -2
- package/pipeline/skills/shared/external/tipkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +3 -2
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +2 -0
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +3 -2
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +3 -2
- package/pipeline/skills/shared/external/web-performance/SKILL.md +3 -2
- package/pipeline/skills/shared/external/web-testing/SKILL.md +3 -2
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +1 -1
- package/pipeline/skills/shared/external/xcode-build-benchmark/SKILL.md +2 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/SKILL.md +2 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/SKILL.md +2 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/SKILL.md +2 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/SKILL.md +2 -0
- package/pipeline/skills/skills-index.md +40 -41
- package/docs/token-budget-history.md +0 -24
- package/pipeline/skills/shared/external/agentflow/SKILL.md +0 -199
- package/pipeline/skills/shared/external/android-ui-verification/SKILL.md +0 -66
- package/pipeline/skills/shared/external/api-security-best-practices/references/auth.md +0 -299
- package/pipeline/skills/shared/external/api-security-best-practices/references/input-validation.md +0 -255
- package/pipeline/skills/shared/external/api-security-best-practices/references/rate-limiting.md +0 -167
- package/pipeline/skills/shared/external/closed-loop-delivery/SKILL.md +0 -116
- package/pipeline/skills/shared/external/ios-developer/SKILL.md +0 -216
package/install/claude.mjs
CHANGED
|
@@ -47,6 +47,22 @@ import { registerMcpServer } from "./_mcp-register.mjs";
|
|
|
47
47
|
* Kept so installs can migrate it and uninstall can clean it.
|
|
48
48
|
*/
|
|
49
49
|
export const LEGACY_PRE_COMMIT_MATCHER = "Bash(git commit:*)";
|
|
50
|
+
export const AGENT_GUARD_FILE_MATCHER = "Edit|Write|NotebookEdit";
|
|
51
|
+
// WebFetch and the toolkit's tools reach hosts with no Bash hook to see them:
|
|
52
|
+
// the web_* tools directly, agent_run_steps by dispatching them, and the
|
|
53
|
+
// ios_/android_open_url tools through the device browser. The guard registers
|
|
54
|
+
// on every toolkit tool name and applies the network host policy. A matcher
|
|
55
|
+
// with `_` and `*` in it is a regex over the tool name.
|
|
56
|
+
export const AGENT_GUARD_WEB_MATCHER = "WebFetch|mcp__multi-agent-toolkit__.*";
|
|
57
|
+
// The web-tools-only matcher an older install wrote; migrated in place.
|
|
58
|
+
export const LEGACY_AGENT_GUARD_WEB_MATCHER = "WebFetch|mcp__multi-agent-toolkit__web_.*";
|
|
59
|
+
// The guard's internal deadline is 5 s; the hook timeout must exceed it so the
|
|
60
|
+
// guard prints its verdict rather than the harness cutting it off first.
|
|
61
|
+
const AGENT_GUARD_TIMEOUT = 10;
|
|
62
|
+
// A Bash guard entry must match the tool name "Bash" (or a whole-Bash glob), not
|
|
63
|
+
// a `Bash(...)` command filter - that only ever matches the command string a
|
|
64
|
+
// hook never sees, so the guard would never fire.
|
|
65
|
+
const isBareBashMatcher = (m) => ["Bash", "Bash(*)", "Bash(:*)", "Bash(**)"].includes(String(m));
|
|
50
66
|
|
|
51
67
|
/**
|
|
52
68
|
* The only skills installed locally on Claude Code. Everything else reaches
|
|
@@ -723,25 +739,50 @@ export function configureSettings(home) {
|
|
|
723
739
|
}
|
|
724
740
|
|
|
725
741
|
// agent-guard.sh: the second load-bearing gate - blocks AI/assistant
|
|
726
|
-
// attribution in commit messages and force-push to a protected branch
|
|
727
|
-
//
|
|
728
|
-
//
|
|
729
|
-
//
|
|
730
|
-
//
|
|
731
|
-
|
|
742
|
+
// attribution in commit messages and force-push to a protected branch,
|
|
743
|
+
// and, only under MULTI_AGENT_UNATTENDED=1, outward writes, installs and
|
|
744
|
+
// writes into protected paths. It reads the tool name from stdin, so one
|
|
745
|
+
// script serves two matchers: "Bash" for commands and
|
|
746
|
+
// "Edit|Write|NotebookEdit" for file edits. Without the variable the
|
|
747
|
+
// file-edit entry allows every call.
|
|
748
|
+
const isGuardEntry = (h) =>
|
|
732
749
|
Array.isArray(h.hooks) &&
|
|
733
750
|
h.hooks.some(
|
|
734
751
|
(sub) => typeof sub.command === "string" && sub.command.includes("agent-guard.sh"),
|
|
735
752
|
);
|
|
736
|
-
|
|
753
|
+
// Migrate a guard entry written under a `Bash(...)` command filter (which
|
|
754
|
+
// never fires) to the bare "Bash" tool-name matcher, in place.
|
|
755
|
+
for (const h of settings.hooks.PreToolUse) {
|
|
756
|
+
if (!isGuardEntry(h)) continue;
|
|
757
|
+
const m = String(h.matcher || "");
|
|
758
|
+
if (m !== "Bash" && (isBareBashMatcher(m) || m.startsWith("Bash("))) {
|
|
759
|
+
h.matcher = "Bash";
|
|
760
|
+
settingsChanged = true;
|
|
761
|
+
}
|
|
762
|
+
if (m === LEGACY_AGENT_GUARD_WEB_MATCHER) {
|
|
763
|
+
h.matcher = AGENT_GUARD_WEB_MATCHER;
|
|
764
|
+
settingsChanged = true;
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
const guardMatchers = [
|
|
768
|
+
["Bash", "Checking commit/push safety (attribution + force-push)..."],
|
|
769
|
+
[AGENT_GUARD_FILE_MATCHER, "Checking the edit target..."],
|
|
770
|
+
[AGENT_GUARD_WEB_MATCHER, "Checking the fetch host..."],
|
|
771
|
+
];
|
|
772
|
+
for (const [matcher, statusMessage] of guardMatchers) {
|
|
773
|
+
const present = settings.hooks.PreToolUse.some(
|
|
774
|
+
(h) =>
|
|
775
|
+
(matcher === "Bash" ? h.matcher === "Bash" : h.matcher === matcher) && isGuardEntry(h),
|
|
776
|
+
);
|
|
777
|
+
if (present) continue;
|
|
737
778
|
settings.hooks.PreToolUse.push({
|
|
738
|
-
matcher
|
|
779
|
+
matcher,
|
|
739
780
|
hooks: [
|
|
740
781
|
{
|
|
741
782
|
type: "command",
|
|
742
783
|
command: "bash $HOME/.claude/scripts/agent-guard.sh",
|
|
743
|
-
timeout:
|
|
744
|
-
statusMessage
|
|
784
|
+
timeout: AGENT_GUARD_TIMEOUT,
|
|
785
|
+
statusMessage,
|
|
745
786
|
},
|
|
746
787
|
],
|
|
747
788
|
});
|
package/install/codex.mjs
CHANGED
|
@@ -40,6 +40,7 @@ import {
|
|
|
40
40
|
pluginsToDeliver,
|
|
41
41
|
} from "./_plugin-skills.mjs";
|
|
42
42
|
import {
|
|
43
|
+
copyExternalNotices,
|
|
43
44
|
partitionExternalSkillsByPlugins,
|
|
44
45
|
writeExternalSkillsManifest,
|
|
45
46
|
} from "./_platform-filter.mjs";
|
|
@@ -426,6 +427,7 @@ function installSkillRefs(pipelineSrc, dest, home, platformFlag) {
|
|
|
426
427
|
for (const name of keep) {
|
|
427
428
|
count += copyTreeRewritten(join(externalSrc, name), join(dest, name));
|
|
428
429
|
}
|
|
430
|
+
count += copyExternalNotices(externalSrc, dest);
|
|
429
431
|
writeExternalSkillsManifest(dest, keep);
|
|
430
432
|
console.log(
|
|
431
433
|
` -> stack filter (${selectionSource}): ${keep.length} kept, ${skipped.length} skipped`,
|
package/install/copilot.mjs
CHANGED
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
} from "./_common.mjs";
|
|
29
29
|
import {
|
|
30
30
|
EXTERNAL_SKILLS_MANIFEST,
|
|
31
|
+
copyExternalNotices,
|
|
31
32
|
partitionExternalSkillsByPlugins,
|
|
32
33
|
writeExternalSkillsManifest,
|
|
33
34
|
} from "./_platform-filter.mjs";
|
|
@@ -428,6 +429,7 @@ function installSkills(opts) {
|
|
|
428
429
|
copyDir(src, dst, { useSymlinks });
|
|
429
430
|
copilotSkillCount += countFiles(src);
|
|
430
431
|
}
|
|
432
|
+
copilotSkillCount += copyExternalNotices(sharedExternalSrc, dest);
|
|
431
433
|
// Stale prune: a skill delivered by a previous, wider stack selection must
|
|
432
434
|
// leave when the selection narrows, or the old stack lingers forever. Scope:
|
|
433
435
|
// only dirs the previous manifest names (delivered by us), or - on a
|
package/install/index.mjs
CHANGED
|
@@ -21,6 +21,7 @@ import { installCodex } from "./codex.mjs";
|
|
|
21
21
|
import { setDryRun, writeFile } from "./_common.mjs";
|
|
22
22
|
import { sendInstallTelemetry } from "./_telemetry.mjs";
|
|
23
23
|
import { applyUnattendedProfile, describeUnattendedProfile } from "./_unattended-profile.mjs";
|
|
24
|
+
import { unattendedSettingsPath } from "../pipeline/lib/unattended-settings-location.mjs";
|
|
24
25
|
|
|
25
26
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
26
27
|
/** Repository root (one level above install/). */
|
|
@@ -44,11 +45,9 @@ export async function runInstall(argv) {
|
|
|
44
45
|
process.exit(3);
|
|
45
46
|
}
|
|
46
47
|
|
|
47
|
-
const HOME = process.env.HOME
|
|
48
|
+
const HOME = process.env.HOME;
|
|
48
49
|
if (!HOME) {
|
|
49
|
-
console.error(
|
|
50
|
-
"Error: $HOME (or $USERPROFILE on Windows) is not set. Cannot determine installation directory.",
|
|
51
|
-
);
|
|
50
|
+
console.error("Error: $HOME is not set. Cannot determine installation directory.");
|
|
52
51
|
process.exit(1);
|
|
53
52
|
}
|
|
54
53
|
|
|
@@ -65,6 +64,7 @@ export async function runInstall(argv) {
|
|
|
65
64
|
"--dry-run",
|
|
66
65
|
"--prune-external",
|
|
67
66
|
"--unattended",
|
|
67
|
+
"--unattended-sandbox",
|
|
68
68
|
];
|
|
69
69
|
const KNOWN_PREFIXES = ["--platform="];
|
|
70
70
|
const unknown = flags.filter(
|
|
@@ -93,7 +93,7 @@ export async function runInstall(argv) {
|
|
|
93
93
|
const useSymlinks = flags.includes("--link");
|
|
94
94
|
const indexOnly = flags.includes("--index-only");
|
|
95
95
|
const pruneExternal = flags.includes("--prune-external");
|
|
96
|
-
const unattended = flags.includes("--unattended");
|
|
96
|
+
const unattended = flags.includes("--unattended") || flags.includes("--unattended-sandbox");
|
|
97
97
|
const platformFlag = parsePlatformFlag(flags);
|
|
98
98
|
|
|
99
99
|
const installerCtx = {
|
|
@@ -146,9 +146,9 @@ export async function runInstall(argv) {
|
|
|
146
146
|
* contract: an installer that widens a permission set has to say what it is
|
|
147
147
|
* about to allow while the person can still stop it, not report it afterwards.
|
|
148
148
|
*
|
|
149
|
-
* Claude Code only. The profile is a
|
|
150
|
-
*
|
|
151
|
-
* nothing acts on.
|
|
149
|
+
* Claude Code only. The profile is a Claude Code settings file that the
|
|
150
|
+
* autopilot runner passes with `claude --settings`; writing it for a host that
|
|
151
|
+
* does not read it would be a line in a report that nothing acts on.
|
|
152
152
|
*
|
|
153
153
|
* @param {{home:string, forClaude:boolean, dryRun?:boolean}} opts
|
|
154
154
|
*/
|
|
@@ -158,23 +158,36 @@ function applyUnattended({ home, forClaude, dryRun = false }) {
|
|
|
158
158
|
console.log(" --unattended applies to Claude Code only; nothing written.");
|
|
159
159
|
return;
|
|
160
160
|
}
|
|
161
|
-
let
|
|
161
|
+
let current = {};
|
|
162
162
|
try {
|
|
163
|
-
|
|
164
|
-
existing = (settings?.permissions?.allow ?? []).map(String);
|
|
163
|
+
current = JSON.parse(readFileSync(unattendedSettingsPath(home), "utf-8")) || {};
|
|
165
164
|
} catch {
|
|
166
|
-
// No
|
|
165
|
+
// No profile file yet, or one that does not parse. Either way there is
|
|
167
166
|
// nothing to mark as "already there"; applyUnattendedProfile decides what
|
|
168
167
|
// to do about the unparseable case.
|
|
169
168
|
}
|
|
170
169
|
console.log("");
|
|
171
|
-
console.log(describeUnattendedProfile(existing));
|
|
172
170
|
try {
|
|
171
|
+
console.log(describeUnattendedProfile(current, { home }));
|
|
173
172
|
const res = applyUnattendedProfile({ home, dryRun });
|
|
174
173
|
console.log("");
|
|
175
|
-
if (dryRun)
|
|
176
|
-
|
|
177
|
-
|
|
174
|
+
if (dryRun)
|
|
175
|
+
console.log(
|
|
176
|
+
` (dry-run) would add ${res.added.length} entr(ies) to ${res.path} and move ${res.migrated.length} out of settings.json`,
|
|
177
|
+
);
|
|
178
|
+
else if (!res.added.length && !res.migrated.length)
|
|
179
|
+
console.log(` nothing to add - ${res.path} already covers it`);
|
|
180
|
+
else {
|
|
181
|
+
if (res.added.length) console.log(` added ${res.added.join(", ")} to ${res.path}`);
|
|
182
|
+
if (res.migrated.length)
|
|
183
|
+
console.log(
|
|
184
|
+
` removed ${res.migrated.length} entr(ies) an earlier install wrote into ~/.claude/settings.json`,
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
if (res.warned.length)
|
|
188
|
+
console.log(
|
|
189
|
+
` note: ~/.claude/settings.json allows ${res.warned.join(", ")}; it applies to unattended runs too`,
|
|
190
|
+
);
|
|
178
191
|
} catch (err) {
|
|
179
192
|
// A settings file we cannot parse is the user's, and rewriting it would
|
|
180
193
|
// lose whatever is in there. Refusing loudly beats a silent overwrite.
|
|
@@ -288,7 +301,7 @@ function printSummary(opts) {
|
|
|
288
301
|
console.log(" Everything installs and the pipeline runs, but a few shell");
|
|
289
302
|
console.log(" helpers degrade quietly without it: cost summaries, the phase");
|
|
290
303
|
console.log(" tracker's JSON reads, convention extraction and skill signing.");
|
|
291
|
-
console.log(" Install it (brew install jq
|
|
304
|
+
console.log(" Install it (brew install jq) to get them back.");
|
|
292
305
|
console.log("");
|
|
293
306
|
}
|
|
294
307
|
console.log(" Uninstall everything: npx @mmerterden/multi-agent-pipeline uninstall");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_readme": "Recommended Claude Code hooks for multi-agent-pipeline. Merge the `hooks` object into your ~/.claude/settings.json to make these deterministic
|
|
2
|
+
"_readme": "Recommended Claude Code hooks for multi-agent-pipeline, the same registrations `install` writes into ~/.claude/settings.json (install/claude.mjs configureSettings). Merge the `hooks` object into your ~/.claude/settings.json to make these deterministic PreToolUse gates real (exit 2 blocks the tool call). A PreToolUse matcher is a regex over the TOOL NAME, so each gate registers on a tool name and reads the command from its stdin payload. Three PreToolUse gates ship here: (1) pre-commit-check.sh on Bash, which acts only on a `git commit` and blocks a secret in the staged diff; (2) agent-guard.sh on Bash, on Edit|Write|NotebookEdit, and on WebFetch plus every multi-agent-toolkit tool (WebFetch|mcp__multi-agent-toolkit__.*). Always, it blocks AI/assistant attribution in a commit message and a force-push, delete or mirror push to a protected branch (main/master/develop), including one inside a subshell or a `bash -c` / `eval` line. With MULTI_AGENT_UNATTENDED=1 in the hook's environment it also applies the unattended policy: no push, PR or tracker write, no Keychain read, no fetch outside the host allowlist (curl, WebFetch, the toolkit's web tools, agent_run_steps and open_url), no package install, and no write into a protected path (features/unattended-security.md); (3) check-read-size.sh on Read|Bash, which inspects Read plus the shell commands that read a file whole (cat/head/tail/sed), returns immediately for everything else, and routes an oversized read to a cheap worker instead of the caller's own rung; it is inert until `prefs.global.bulkRead.mode` is set to observe or enforce. Failure behaviour: pre-commit-check.sh and check-read-size.sh fail open on an internal error. agent-guard.sh fails open when attended, so a guard bug cannot break a legitimate tool call, and fails closed under MULTI_AGENT_UNATTENDED=1, where nobody is there to notice a gap. None of the three executes the inspected command, and none needs run-specific arguments. The other deterministic gates (evidence, consensus, intent, learnings) take run-specific arguments and are phase-enforced by the pipeline instead. Three capture hooks ship alongside them and block nothing: (4) SessionEnd runs capture-flush.sh --if-stale, which writes a run's triage findings and durable learnings into the per-repo stores when the run ended before Phase 5, where those writes otherwise happen; the same hook runs note-session.sh, which records the mechanical shape of a session outside the pipeline (tools used, commands that failed, calls the user refused). (5) PreCompact runs capture-flush.sh without --if-stale: a compaction summarizes the conversation mid-phase, so it is the moment unflushed findings are at risk, and both writes are idempotent, so a finished run costs two no-op writes. The staleness test exists only so a session exit does not re-flush a run that already finished. (6) SessionStart runs capture-resume.sh, which prints at most two lines: an unfinished run and how to resume it, and a stale pipeline-observation queue. No capture hook calls a model or reads a payload - note-session.sh keeps a command's first word and an exit code, never an argument or any output - and all exit 0 on every path, because a hook that fails a session over bookkeeping costs more than the bookkeeping. multi-agent:setup offers to merge this block.",
|
|
3
3
|
"hooks": {
|
|
4
4
|
"PreToolUse": [
|
|
5
5
|
{
|
|
6
|
-
"matcher": "Bash
|
|
6
|
+
"matcher": "Bash",
|
|
7
7
|
"hooks": [
|
|
8
8
|
{
|
|
9
9
|
"type": "command",
|
|
@@ -15,18 +15,29 @@
|
|
|
15
15
|
"type": "command",
|
|
16
16
|
"command": "bash $HOME/.claude/scripts/agent-guard.sh",
|
|
17
17
|
"timeout": 10,
|
|
18
|
-
"statusMessage": "Checking commit
|
|
18
|
+
"statusMessage": "Checking commit/push safety (attribution + force-push)..."
|
|
19
19
|
}
|
|
20
20
|
]
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
-
"matcher": "
|
|
23
|
+
"matcher": "Edit|Write|NotebookEdit",
|
|
24
24
|
"hooks": [
|
|
25
25
|
{
|
|
26
26
|
"type": "command",
|
|
27
27
|
"command": "bash $HOME/.claude/scripts/agent-guard.sh",
|
|
28
28
|
"timeout": 10,
|
|
29
|
-
"statusMessage": "Checking
|
|
29
|
+
"statusMessage": "Checking the edit target..."
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"matcher": "WebFetch|mcp__multi-agent-toolkit__.*",
|
|
35
|
+
"hooks": [
|
|
36
|
+
{
|
|
37
|
+
"type": "command",
|
|
38
|
+
"command": "bash $HOME/.claude/scripts/agent-guard.sh",
|
|
39
|
+
"timeout": 10,
|
|
40
|
+
"statusMessage": "Checking the fetch host..."
|
|
30
41
|
}
|
|
31
42
|
]
|
|
32
43
|
},
|
|
@@ -345,7 +345,7 @@ prompt fatigue during long pipeline runs:
|
|
|
345
345
|
- Git: `git`, `git add`, `git commit`, `git push`, `git worktree`, `git rebase`
|
|
346
346
|
- GitHub CLI: `gh`, `gh api`, `gh issue`, `gh pr`, `gh repo`, `gh run`, `gh auth`, `gh auth switch`
|
|
347
347
|
- Node/npm: `node`, `npm`, `npx`, `pnpm`
|
|
348
|
-
- Keychain: `~/.copilot/lib/credential-store.sh` (canonical
|
|
348
|
+
- Keychain: `~/.copilot/lib/credential-store.sh` (canonical), `~/.copilot/scripts/keychain.py` (deterministic Python helper); `security` is the macOS Keychain backend the helper wraps
|
|
349
349
|
- Pipeline scripts: `bash` (invokes phase-tracker.sh, phase-banner.sh, etc.)
|
|
350
350
|
|
|
351
351
|
Destructive commands (`rm -rf /`, `git push --force` to main, `chmod 777`) remain in `deny`
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
multi-agent autopilot - keep the Mac awake for as long as the mode is on.
|
|
4
|
+
|
|
5
|
+
Rendered and installed ONLY by /multi-agent:autopilot-on (through
|
|
6
|
+
scripts/autopilot-awake.mjs) and removed by /multi-agent:autopilot-off. A
|
|
7
|
+
clean install writes nothing here.
|
|
8
|
+
|
|
9
|
+
A separate job from the schedule on purpose. The schedule's StartInterval does
|
|
10
|
+
not wake a sleeping Mac, so a machine that sleeps between ticks stops taking
|
|
11
|
+
work with nothing to say so. This job holds one assertion for as long as it is
|
|
12
|
+
loaded, and loading it is the same decision as turning the mode on.
|
|
13
|
+
|
|
14
|
+
-s no system sleep; macOS honours it on AC power only
|
|
15
|
+
-i no idle sleep; this one holds on battery as well
|
|
16
|
+
-d the display stays on too - added only with awake.display: true
|
|
17
|
+
|
|
18
|
+
KeepAlive restarts caffeinate if anything ends it, so "on" cannot quietly
|
|
19
|
+
become "on, but sleeping".
|
|
20
|
+
|
|
21
|
+
autopilot-awake.mjs substitutes the two placeholders, LABEL and ARGS.
|
|
22
|
+
-->
|
|
23
|
+
<plist version="1.0">
|
|
24
|
+
<dict>
|
|
25
|
+
<key>Label</key>
|
|
26
|
+
<string>{{LABEL}}</string>
|
|
27
|
+
|
|
28
|
+
<key>ProgramArguments</key>
|
|
29
|
+
<array>
|
|
30
|
+
{{ARGS}}
|
|
31
|
+
</array>
|
|
32
|
+
|
|
33
|
+
<key>RunAtLoad</key>
|
|
34
|
+
<true/>
|
|
35
|
+
|
|
36
|
+
<key>KeepAlive</key>
|
|
37
|
+
<true/>
|
|
38
|
+
|
|
39
|
+
<key>ProcessType</key>
|
|
40
|
+
<string>Background</string>
|
|
41
|
+
|
|
42
|
+
<!-- caffeinate prints nothing; there is no log worth keeping. -->
|
|
43
|
+
<key>StandardOutPath</key>
|
|
44
|
+
<string>/dev/null</string>
|
|
45
|
+
<key>StandardErrorPath</key>
|
|
46
|
+
<string>/dev/null</string>
|
|
47
|
+
</dict>
|
|
48
|
+
</plist>
|
|
@@ -11,12 +11,13 @@
|
|
|
11
11
|
that fired at boot could not read a single token - it would take items it could
|
|
12
12
|
not work on and burn them. Automatic login means nothing to do after a restart.
|
|
13
13
|
|
|
14
|
-
StartInterval does NOT wake a sleeping Mac; it fires on the next wake. The
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
StartInterval does NOT wake a sleeping Mac; it fires on the next wake. The
|
|
15
|
+
awake agent (multi-agent-autopilot-awake.plist.template), installed and
|
|
16
|
+
removed with this one, keeps the Mac awake for as long as the mode is on, and
|
|
17
|
+
a tick also holds `caffeinate -s -w <pid>` while its session is in flight.
|
|
17
18
|
|
|
18
19
|
{{PLACEHOLDERS}} are substituted by autopilot-on: NODE, TICK, LABEL, ROOT,
|
|
19
|
-
INTERVAL.
|
|
20
|
+
INTERVAL, HOME, CLAUDE.
|
|
20
21
|
-->
|
|
21
22
|
<plist version="1.0">
|
|
22
23
|
<dict>
|
|
@@ -65,8 +66,14 @@
|
|
|
65
66
|
|
|
66
67
|
<key>EnvironmentVariables</key>
|
|
67
68
|
<dict>
|
|
69
|
+
<!-- launchd reads no login shell, so this is the whole PATH a tick sees.
|
|
70
|
+
~/.local/bin is where the native installer puts `claude`. -->
|
|
68
71
|
<key>PATH</key>
|
|
69
|
-
<string
|
|
72
|
+
<string>{{HOME}}/.local/bin:/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
|
|
73
|
+
<!-- The absolute `claude` autopilot-on resolved in your shell, tried before
|
|
74
|
+
PATH. Empty when none was found, and then PATH decides. -->
|
|
75
|
+
<key>MA_AP_CLAUDE_INSTALLED_BIN</key>
|
|
76
|
+
<string>{{CLAUDE}}</string>
|
|
70
77
|
<!-- No token is set here, deliberately. launchd plists are world-readable
|
|
71
78
|
and get backed up; credentials are read from the keychain at tick time
|
|
72
79
|
through credential-store.sh, which streams them over stdin so they never
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "The unattended profile as v20.2.1 wrote it into ~/.claude/settings.json, frozen: the signature install --unattended uses to recognise and remove those entries from the attended settings file. Rules only; the reasons are in that release's schema.",
|
|
3
|
+
"version": "20.2.1",
|
|
4
|
+
"defaultMode": "dontAsk",
|
|
5
|
+
"allow": [
|
|
6
|
+
"Read",
|
|
7
|
+
"Glob",
|
|
8
|
+
"Grep",
|
|
9
|
+
"Edit",
|
|
10
|
+
"Write",
|
|
11
|
+
"NotebookEdit",
|
|
12
|
+
"Agent",
|
|
13
|
+
"Skill",
|
|
14
|
+
"WebFetch",
|
|
15
|
+
"TaskCreate",
|
|
16
|
+
"TaskUpdate",
|
|
17
|
+
"TaskList",
|
|
18
|
+
"TaskGet",
|
|
19
|
+
"mcp__multi-agent-toolkit__*",
|
|
20
|
+
"Bash(git *)",
|
|
21
|
+
"Bash(gh *)",
|
|
22
|
+
"Bash(bash *)",
|
|
23
|
+
"Bash(node *)",
|
|
24
|
+
"Bash(python3 *)",
|
|
25
|
+
"Bash(jq *)",
|
|
26
|
+
"Bash(npm run *)",
|
|
27
|
+
"Bash(npm test *)",
|
|
28
|
+
"Bash(npm ci *)",
|
|
29
|
+
"Bash(npx *)",
|
|
30
|
+
"Bash(xcodebuild *)",
|
|
31
|
+
"Bash(xcrun *)",
|
|
32
|
+
"Bash(swift *)",
|
|
33
|
+
"Bash(./gradlew *)",
|
|
34
|
+
"Bash(pod install *)",
|
|
35
|
+
"Bash(pytest *)",
|
|
36
|
+
"Bash(go test *)",
|
|
37
|
+
"Bash(go build *)",
|
|
38
|
+
"Bash(cargo test *)",
|
|
39
|
+
"Bash(cargo build *)",
|
|
40
|
+
"Bash(make *)",
|
|
41
|
+
"Bash(ls *)",
|
|
42
|
+
"Bash(cat *)",
|
|
43
|
+
"Bash(head *)",
|
|
44
|
+
"Bash(tail *)",
|
|
45
|
+
"Bash(wc *)",
|
|
46
|
+
"Bash(find *)",
|
|
47
|
+
"Bash(grep *)",
|
|
48
|
+
"Bash(rg *)",
|
|
49
|
+
"Bash(sed *)",
|
|
50
|
+
"Bash(awk *)",
|
|
51
|
+
"Bash(sort *)",
|
|
52
|
+
"Bash(diff *)",
|
|
53
|
+
"Bash(mkdir *)",
|
|
54
|
+
"Bash(cp *)",
|
|
55
|
+
"Bash(mv *)",
|
|
56
|
+
"Bash(echo *)",
|
|
57
|
+
"Bash(printf *)",
|
|
58
|
+
"Bash(date *)",
|
|
59
|
+
"Bash(cd *)"
|
|
60
|
+
],
|
|
61
|
+
"deny": [
|
|
62
|
+
"Bash(gh pr merge *)",
|
|
63
|
+
"Bash(git push *)",
|
|
64
|
+
"Bash(git push)",
|
|
65
|
+
"Read(~/.ssh/**)",
|
|
66
|
+
"Read(~/.aws/**)",
|
|
67
|
+
"Read(~/.gnupg/**)",
|
|
68
|
+
"Read(~/Library/Keychains/**)",
|
|
69
|
+
"Edit(~/.claude/settings.json)",
|
|
70
|
+
"Edit(~/.claude/scripts/**)",
|
|
71
|
+
"Edit(~/.claude/lib/**)",
|
|
72
|
+
"Edit(~/.claude/autopilot/**)",
|
|
73
|
+
"Edit(**/.github/workflows/**)",
|
|
74
|
+
"mcp__multi-agent-toolkit__research_*"
|
|
75
|
+
],
|
|
76
|
+
"env": [
|
|
77
|
+
["MCP_TOOLKIT_URL_POLICY", "strict"],
|
|
78
|
+
["MCP_TOOLKIT_INDEX_DENY", "~/.ssh,~/.aws,~/.gnupg,~/Library/Keychains"]
|
|
79
|
+
]
|
|
80
|
+
}
|