@mmerterden/multi-agent-pipeline 8.6.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 +2623 -0
- package/LICENSE +21 -0
- package/README.md +852 -0
- package/docs/FIGMA_PIPELINE.md +138 -0
- package/docs/GENERICITY-REVIEW.md +277 -0
- package/docs/STABILITY-FIX-PLAN.md +168 -0
- package/docs/adr/0001-three-model-triage.md +81 -0
- package/docs/adr/0002-instruction-driven-flag.md +62 -0
- package/docs/adr/0003-unified-shared-skills.md +55 -0
- package/docs/adr/0004-zero-dependency-philosophy.md +60 -0
- package/docs/adr/0005-lazy-phase-docs.md +68 -0
- package/docs/adr/0006-skills-core-external-split.md +52 -0
- package/docs/adr/0007-multi-tool-adapter-framework.md +110 -0
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +98 -0
- package/docs/adr/README.md +33 -0
- package/docs/architecture.md +181 -0
- package/docs/best-practices.md +93 -0
- package/docs/features.md +274 -0
- package/docs/performance.md +116 -0
- package/docs/recovery-guide.md +479 -0
- package/index.js +76 -0
- package/install/_adapters.mjs +69 -0
- package/install/_common.mjs +150 -0
- package/install/_copilot-instructions.mjs +32 -0
- package/install/_dev-only-files.mjs +23 -0
- package/install/_platform-filter.mjs +132 -0
- package/install/_telemetry.mjs +79 -0
- package/install/claude.mjs +332 -0
- package/install/copilot.mjs +254 -0
- package/install/index.mjs +179 -0
- package/install/templates/copilot-instructions.md +319 -0
- package/install.js +24 -0
- package/package.json +78 -0
- package/pipeline/adapters/_base.mjs +288 -0
- package/pipeline/adapters/copilot-chat.mjs +158 -0
- package/pipeline/adapters/cursor.mjs +187 -0
- package/pipeline/agents/android-architect.md +42 -0
- package/pipeline/agents/backend-architect.md +43 -0
- package/pipeline/agents/code-reviewer.md +57 -0
- package/pipeline/agents/dev-critic.md +148 -0
- package/pipeline/agents/explorer.md +34 -0
- package/pipeline/agents/ios-architect.md +41 -0
- package/pipeline/agents/security-auditor.md +98 -0
- package/pipeline/agents/task-clarifier.md +113 -0
- package/pipeline/claude-md-template.md +55 -0
- package/pipeline/commands/archive-guard.md +45 -0
- package/pipeline/commands/deploy.md +54 -0
- package/pipeline/commands/figma-to-swiftui.md +295 -0
- package/pipeline/commands/multi-agent/_account-picker.md +90 -0
- package/pipeline/commands/multi-agent/_dev-context.md +111 -0
- package/pipeline/commands/multi-agent/_input-parser.md +43 -0
- package/pipeline/commands/multi-agent/_repo-picker.md +76 -0
- package/pipeline/commands/multi-agent/autopilot.md +116 -0
- package/pipeline/commands/multi-agent/channels.md +465 -0
- package/pipeline/commands/multi-agent/delete.md +66 -0
- package/pipeline/commands/multi-agent/dev-autopilot.md +120 -0
- package/pipeline/commands/multi-agent/dev-local-autopilot.md +110 -0
- package/pipeline/commands/multi-agent/dev-local.md +105 -0
- package/pipeline/commands/multi-agent/dev.md +246 -0
- package/pipeline/commands/multi-agent/diff-explain.md +68 -0
- package/pipeline/commands/multi-agent/help.md +422 -0
- package/pipeline/commands/multi-agent/issue.md +79 -0
- package/pipeline/commands/multi-agent/jira.md +132 -0
- package/pipeline/commands/multi-agent/kill.md +38 -0
- package/pipeline/commands/multi-agent/language.md +94 -0
- package/pipeline/commands/multi-agent/local-autopilot.md +139 -0
- package/pipeline/commands/multi-agent/local.md +117 -0
- package/pipeline/commands/multi-agent/log.md +25 -0
- package/pipeline/commands/multi-agent/manual-test.md +43 -0
- package/pipeline/commands/multi-agent/purge.md +39 -0
- package/pipeline/commands/multi-agent/refactor.md +188 -0
- package/pipeline/commands/multi-agent/refs/android-guide.md +250 -0
- package/pipeline/commands/multi-agent/refs/audit-guide.md +240 -0
- package/pipeline/commands/multi-agent/refs/backend-guide.md +135 -0
- package/pipeline/commands/multi-agent/refs/channels/confluence.md +153 -0
- package/pipeline/commands/multi-agent/refs/channels/issue-comment.md +141 -0
- package/pipeline/commands/multi-agent/refs/channels/jira.md +127 -0
- package/pipeline/commands/multi-agent/refs/channels/pr-review-actions.md +135 -0
- package/pipeline/commands/multi-agent/refs/channels/pr.md +139 -0
- package/pipeline/commands/multi-agent/refs/channels/wiki.md +66 -0
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +92 -0
- package/pipeline/commands/multi-agent/refs/cross-cli-contract.md +326 -0
- package/pipeline/commands/multi-agent/refs/frontend-guide.md +136 -0
- package/pipeline/commands/multi-agent/refs/issue-jira-triad.md +104 -0
- package/pipeline/commands/multi-agent/refs/keychain.md +80 -0
- package/pipeline/commands/multi-agent/refs/knowledge.md +112 -0
- package/pipeline/commands/multi-agent/refs/multi-repo-integration-build.md +207 -0
- package/pipeline/commands/multi-agent/refs/phases/log-format.md +89 -0
- package/pipeline/commands/multi-agent/refs/phases/modes.md +156 -0
- package/pipeline/commands/multi-agent/refs/phases/operations.md +91 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-0-init.md +481 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-1-analysis.md +264 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-2-planning.md +278 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-3-dev.md +364 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-4-review.md +378 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-5-test.md +129 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-6-commit.md +339 -0
- package/pipeline/commands/multi-agent/refs/phases/phase-7-report.md +361 -0
- package/pipeline/commands/multi-agent/refs/phases.md +187 -0
- package/pipeline/commands/multi-agent/refs/progress-contract.md +155 -0
- package/pipeline/commands/multi-agent/refs/rules.md +189 -0
- package/pipeline/commands/multi-agent/refs/swiftui-guide.md +254 -0
- package/pipeline/commands/multi-agent/refs/tracker-contract.md +256 -0
- package/pipeline/commands/multi-agent/refs/wiki-capture.md +109 -0
- package/pipeline/commands/multi-agent/resume.md +28 -0
- package/pipeline/commands/multi-agent/review.md +228 -0
- package/pipeline/commands/multi-agent/scan.md +74 -0
- package/pipeline/commands/multi-agent/search.md +97 -0
- package/pipeline/commands/multi-agent/setup.md +767 -0
- package/pipeline/commands/multi-agent/stack.md +48 -0
- package/pipeline/commands/multi-agent/status.md +38 -0
- package/pipeline/commands/multi-agent/sync.md +319 -0
- package/pipeline/commands/multi-agent/test.md +39 -0
- package/pipeline/commands/multi-agent/update.md +88 -0
- package/pipeline/commands/multi-agent.md +293 -0
- package/pipeline/commands/security-review.md +6 -0
- package/pipeline/commands/sim-test.md +256 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-1-analysis.json +25 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-2-plan.json +30 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-review.json +20 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-triage.json +15 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/task.json +12 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-1-analysis.json +29 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-2-plan.json +43 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-review.json +35 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-triage.json +35 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/metadata.json +14 -0
- package/pipeline/eval/golden-tasks/02-android-feature-compose/task.json +12 -0
- package/pipeline/eval/golden-tasks/README.md +65 -0
- package/pipeline/eval/triage/01-empty-findings/expected.json +6 -0
- package/pipeline/eval/triage/01-empty-findings/input.json +5 -0
- package/pipeline/eval/triage/01-empty-findings/notes.md +7 -0
- package/pipeline/eval/triage/02-real-blocker/expected.json +15 -0
- package/pipeline/eval/triage/02-real-blocker/input.json +14 -0
- package/pipeline/eval/triage/02-real-blocker/notes.md +7 -0
- package/pipeline/eval/triage/03-out-of-scope-defer/expected.json +18 -0
- package/pipeline/eval/triage/03-out-of-scope-defer/input.json +14 -0
- package/pipeline/eval/triage/03-out-of-scope-defer/notes.md +10 -0
- package/pipeline/eval/triage/04-false-positive-reject/expected.json +18 -0
- package/pipeline/eval/triage/04-false-positive-reject/input.json +14 -0
- package/pipeline/eval/triage/04-false-positive-reject/notes.md +10 -0
- package/pipeline/eval/triage/05-mixed-classification/expected.json +43 -0
- package/pipeline/eval/triage/05-mixed-classification/input.json +38 -0
- package/pipeline/eval/triage/05-mixed-classification/notes.md +17 -0
- package/pipeline/eval/triage/06-severity-mismatch/expected.json +15 -0
- package/pipeline/eval/triage/06-severity-mismatch/input.json +14 -0
- package/pipeline/eval/triage/06-severity-mismatch/notes.md +9 -0
- package/pipeline/eval/triage/07-duplicate-reviewers/expected.json +27 -0
- package/pipeline/eval/triage/07-duplicate-reviewers/input.json +22 -0
- package/pipeline/eval/triage/07-duplicate-reviewers/notes.md +9 -0
- package/pipeline/eval/triage/08-style-misclassified/expected.json +18 -0
- package/pipeline/eval/triage/08-style-misclassified/input.json +14 -0
- package/pipeline/eval/triage/08-style-misclassified/notes.md +9 -0
- package/pipeline/eval/triage/09-cascading-finding/expected.json +23 -0
- package/pipeline/eval/triage/09-cascading-finding/input.json +22 -0
- package/pipeline/eval/triage/09-cascading-finding/notes.md +9 -0
- package/pipeline/eval/triage/10-deferred-crossref/expected.json +18 -0
- package/pipeline/eval/triage/10-deferred-crossref/input.json +14 -0
- package/pipeline/eval/triage/10-deferred-crossref/notes.md +9 -0
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/expected.json +27 -0
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/input.json +22 -0
- package/pipeline/eval/triage/11-vercel-token-leak-blocker/notes.md +14 -0
- package/pipeline/eval/triage/README.md +54 -0
- package/pipeline/lib/account-resolver.sh +204 -0
- package/pipeline/lib/channels-multi-repo.sh +218 -0
- package/pipeline/lib/context-link-extractor.sh +192 -0
- package/pipeline/lib/credential-store-resolver.sh +57 -0
- package/pipeline/lib/credential-store.sh +226 -0
- package/pipeline/lib/fetch-confluence.sh +358 -0
- package/pipeline/lib/fetch-crashlytics.sh +314 -0
- package/pipeline/lib/fetch-fortify.sh +321 -0
- package/pipeline/lib/fetch-swagger.sh +270 -0
- package/pipeline/lib/issue-fetcher.sh +333 -0
- package/pipeline/lib/multi-repo-pipeline.sh +252 -0
- package/pipeline/lib/plan-todos.sh +284 -0
- package/pipeline/lib/post-pr-review.sh +374 -0
- package/pipeline/lib/repo-cache.sh +231 -0
- package/pipeline/lib/review-watch.sh +244 -0
- package/pipeline/lib/shadow-git.sh +222 -0
- package/pipeline/lib/submodule-detector.sh +177 -0
- package/pipeline/lib/vercel-deploy.sh +170 -0
- package/pipeline/preferences-template.json +132 -0
- package/pipeline/rules/app-store-guidelines.md +59 -0
- package/pipeline/rules/code-review.md +27 -0
- package/pipeline/rules/code-style.md +37 -0
- package/pipeline/rules/debugging.md +24 -0
- package/pipeline/rules/figma-pipeline.md +190 -0
- package/pipeline/rules/git-conventions.md +29 -0
- package/pipeline/rules/kotlin-android.md +92 -0
- package/pipeline/rules/performance.md +23 -0
- package/pipeline/rules/security.md +39 -0
- package/pipeline/rules/swiftui-qa.md +32 -0
- package/pipeline/rules/tdd.md +25 -0
- package/pipeline/rules/testing.md +37 -0
- package/pipeline/schemas/agent-state.schema.json +273 -0
- package/pipeline/schemas/analysis-output.schema.json +59 -0
- package/pipeline/schemas/clarify-output.schema.json +74 -0
- package/pipeline/schemas/dev-critic-output.schema.json +104 -0
- package/pipeline/schemas/diff-risk.schema.json +78 -0
- package/pipeline/schemas/figma-project-config.schema.json +372 -0
- package/pipeline/schemas/migrations/README.md +73 -0
- package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +112 -0
- package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +75 -0
- package/pipeline/schemas/migrations/prefs-2.1.0-to-2.2.0.mjs +64 -0
- package/pipeline/schemas/migrations/prefs-2.2.0-to-2.3.0.mjs +36 -0
- package/pipeline/schemas/migrations/state-2.0.0-to-2.1.0.mjs +34 -0
- package/pipeline/schemas/plan-todos.schema.json +62 -0
- package/pipeline/schemas/planning-output.schema.json +57 -0
- package/pipeline/schemas/prefs.schema.json +1137 -0
- package/pipeline/schemas/reviewer-output.schema.json +55 -0
- package/pipeline/schemas/test-gap.schema.json +64 -0
- package/pipeline/schemas/token-budget.json +17 -0
- package/pipeline/schemas/triage-corpus.schema.json +31 -0
- package/pipeline/schemas/triage-output.schema.json +115 -0
- package/pipeline/scripts/.last-figma-sync-plan.json +23 -0
- package/pipeline/scripts/README-figma-smokes.md +34 -0
- package/pipeline/scripts/README.md +104 -0
- package/pipeline/scripts/aggregate-metrics.mjs +310 -0
- package/pipeline/scripts/audit-log-rotate.sh +61 -0
- package/pipeline/scripts/audit-log.sh +69 -0
- package/pipeline/scripts/benchmark-phase-0.sh +128 -0
- package/pipeline/scripts/build-skills-index.mjs +139 -0
- package/pipeline/scripts/classify-plan-safety.mjs +177 -0
- package/pipeline/scripts/cost-table.json +27 -0
- package/pipeline/scripts/diff-explain.mjs +276 -0
- package/pipeline/scripts/diff-risk-score.mjs +328 -0
- package/pipeline/scripts/eval-golden-tasks-live.mjs +294 -0
- package/pipeline/scripts/eval-golden-tasks.mjs +223 -0
- package/pipeline/scripts/eval-triage.mjs +171 -0
- package/pipeline/scripts/figma-placeholder-map.json +191 -0
- package/pipeline/scripts/fixtures/diff-risk-android.diff +40 -0
- package/pipeline/scripts/fixtures/diff-risk-ios.diff +48 -0
- package/pipeline/scripts/fixtures/install-layout.tsv +16 -0
- package/pipeline/scripts/fixtures/test-gap-node.diff +30 -0
- package/pipeline/scripts/fixtures/test-gap-python.diff +32 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +170 -0
- package/pipeline/scripts/gen-skills-index.mjs +90 -0
- package/pipeline/scripts/github-ssh-setup.sh +103 -0
- package/pipeline/scripts/import-figma-skills.sh +253 -0
- package/pipeline/scripts/keychain-save.sh +74 -0
- package/pipeline/scripts/keychain.py +294 -0
- package/pipeline/scripts/log-metric.sh +98 -0
- package/pipeline/scripts/match-skills.mjs +167 -0
- package/pipeline/scripts/memory-load.sh +46 -0
- package/pipeline/scripts/memory-save.sh +76 -0
- package/pipeline/scripts/migrate-prefs.mjs +390 -0
- package/pipeline/scripts/migrate-state.mjs +215 -0
- package/pipeline/scripts/output-quality-check.sh +125 -0
- package/pipeline/scripts/phase-banner.sh +158 -0
- package/pipeline/scripts/phase-tracker.sh +548 -0
- package/pipeline/scripts/pre-commit-check.sh +69 -0
- package/pipeline/scripts/pre-push-check.sh +77 -0
- package/pipeline/scripts/render-agent-log-cost.sh +149 -0
- package/pipeline/scripts/render-cost-summary.sh +137 -0
- package/pipeline/scripts/render-work-summary.sh +195 -0
- package/pipeline/scripts/repo-map.mjs +367 -0
- package/pipeline/scripts/run-aggregator.mjs +298 -0
- package/pipeline/scripts/scan-skills.sh +332 -0
- package/pipeline/scripts/search-logs.sh +291 -0
- package/pipeline/scripts/sign-skills.sh +67 -0
- package/pipeline/scripts/smoke-adapters.sh +207 -0
- package/pipeline/scripts/smoke-add-detail.sh +137 -0
- package/pipeline/scripts/smoke-agent-log-cost.sh +183 -0
- package/pipeline/scripts/smoke-agent-model-routing.sh +87 -0
- package/pipeline/scripts/smoke-bitbucket-contract.sh +223 -0
- package/pipeline/scripts/smoke-channels-flow.sh +130 -0
- package/pipeline/scripts/smoke-ci-workflows.sh +88 -0
- package/pipeline/scripts/smoke-clarify.sh +148 -0
- package/pipeline/scripts/smoke-commands-skills-parity.sh +87 -0
- package/pipeline/scripts/smoke-compliance-skills.sh +119 -0
- package/pipeline/scripts/smoke-cost-summary.sh +139 -0
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +198 -0
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +128 -0
- package/pipeline/scripts/smoke-delete-flow.sh +151 -0
- package/pipeline/scripts/smoke-dev-critic.sh +144 -0
- package/pipeline/scripts/smoke-diff-explain.sh +128 -0
- package/pipeline/scripts/smoke-diff-risk.sh +161 -0
- package/pipeline/scripts/smoke-dynamic-skill-loading.sh +160 -0
- package/pipeline/scripts/smoke-eval-live.sh +136 -0
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +71 -0
- package/pipeline/scripts/smoke-figma-android-parity.sh +148 -0
- package/pipeline/scripts/smoke-figma-config-schema.sh +144 -0
- package/pipeline/scripts/smoke-figma-credential-store.sh +105 -0
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +177 -0
- package/pipeline/scripts/smoke-figma-dispatch.sh +123 -0
- package/pipeline/scripts/smoke-figma-skill-import.sh +174 -0
- package/pipeline/scripts/smoke-figma-sync.sh +149 -0
- package/pipeline/scripts/smoke-identity-isolation.sh +70 -0
- package/pipeline/scripts/smoke-install-layout.sh +241 -0
- package/pipeline/scripts/smoke-install-leak-gate.sh +125 -0
- package/pipeline/scripts/smoke-issue-comment-template.sh +86 -0
- package/pipeline/scripts/smoke-issue-jira-triad.sh +120 -0
- package/pipeline/scripts/smoke-keychain.sh +158 -0
- package/pipeline/scripts/smoke-language-axis.sh +109 -0
- package/pipeline/scripts/smoke-lib-scripts.sh +395 -0
- package/pipeline/scripts/smoke-migrate-state.sh +102 -0
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +158 -0
- package/pipeline/scripts/smoke-multi-repo-integration.sh +116 -0
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +61 -0
- package/pipeline/scripts/smoke-no-token-prompt.sh +69 -0
- package/pipeline/scripts/smoke-pat-audit.sh +107 -0
- package/pipeline/scripts/smoke-per-repo-memory.sh +156 -0
- package/pipeline/scripts/smoke-personal-data.sh +82 -0
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +170 -0
- package/pipeline/scripts/smoke-phase-6-multi.sh +79 -0
- package/pipeline/scripts/smoke-phase-banner.sh +101 -0
- package/pipeline/scripts/smoke-phase-tracker.sh +255 -0
- package/pipeline/scripts/smoke-phase0-bridge-contract.sh +241 -0
- package/pipeline/scripts/smoke-phase4-triage.sh +142 -0
- package/pipeline/scripts/smoke-plan-approval-gate.sh +71 -0
- package/pipeline/scripts/smoke-plan-safety.sh +139 -0
- package/pipeline/scripts/smoke-plan-todos.sh +193 -0
- package/pipeline/scripts/smoke-pr-review-actions.sh +152 -0
- package/pipeline/scripts/smoke-pre-commit.sh +138 -0
- package/pipeline/scripts/smoke-pref-migration.sh +224 -0
- package/pipeline/scripts/smoke-prefs-language.sh +134 -0
- package/pipeline/scripts/smoke-progress-contract.sh +118 -0
- package/pipeline/scripts/smoke-push-retry.sh +75 -0
- package/pipeline/scripts/smoke-readme-counts.sh +120 -0
- package/pipeline/scripts/smoke-repo-map.sh +300 -0
- package/pipeline/scripts/smoke-review-watch.sh +134 -0
- package/pipeline/scripts/smoke-run-aggregator.sh +216 -0
- package/pipeline/scripts/smoke-schema-validation.sh +173 -0
- package/pipeline/scripts/smoke-search.sh +187 -0
- package/pipeline/scripts/smoke-shadow-git.sh +175 -0
- package/pipeline/scripts/smoke-skill-authoring.sh +142 -0
- package/pipeline/scripts/smoke-skill-language.sh +83 -0
- package/pipeline/scripts/smoke-skill-manifest.sh +138 -0
- package/pipeline/scripts/smoke-skill-scan.sh +198 -0
- package/pipeline/scripts/smoke-stack-swap.sh +132 -0
- package/pipeline/scripts/smoke-subagent-validators.sh +105 -0
- package/pipeline/scripts/smoke-sync-delegation.sh +74 -0
- package/pipeline/scripts/smoke-sync-parity.sh +92 -0
- package/pipeline/scripts/smoke-tasklist-ordering.sh +111 -0
- package/pipeline/scripts/smoke-telemetry.sh +147 -0
- package/pipeline/scripts/smoke-test-gap.sh +183 -0
- package/pipeline/scripts/smoke-token-budget.sh +67 -0
- package/pipeline/scripts/smoke-tracker-contract.sh +129 -0
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +65 -0
- package/pipeline/scripts/smoke-triage-memory.sh +174 -0
- package/pipeline/scripts/smoke-url-enrichment.sh +70 -0
- package/pipeline/scripts/smoke-validator-contradiction.sh +67 -0
- package/pipeline/scripts/smoke-vercel-deploy-redact.sh +129 -0
- package/pipeline/scripts/smoke-wiki-integration.sh +146 -0
- package/pipeline/scripts/smoke-work-summary.sh +163 -0
- package/pipeline/scripts/smoke-worktree-path-convention.sh +86 -0
- package/pipeline/scripts/smoke-write-state.sh +115 -0
- package/pipeline/scripts/stack-swap.sh +182 -0
- package/pipeline/scripts/sync-figma-source.sh +228 -0
- package/pipeline/scripts/sync-parity-check.sh +135 -0
- package/pipeline/scripts/test-gap-rules/android.json +25 -0
- package/pipeline/scripts/test-gap-rules/ios.json +29 -0
- package/pipeline/scripts/test-gap-rules/node.json +17 -0
- package/pipeline/scripts/test-gap-rules/python.json +19 -0
- package/pipeline/scripts/test-gap-scan.mjs +343 -0
- package/pipeline/scripts/token-budget-report.mjs +145 -0
- package/pipeline/scripts/triage-memory.mjs +258 -0
- package/pipeline/scripts/ui-tree-dumper.swift +122 -0
- package/pipeline/scripts/uninstall.mjs +331 -0
- package/pipeline/scripts/update-issue-progress.sh +146 -0
- package/pipeline/scripts/validate-analysis.mjs +132 -0
- package/pipeline/scripts/validate-diff-risk.mjs +117 -0
- package/pipeline/scripts/validate-planning.mjs +180 -0
- package/pipeline/scripts/validate-reviewer.mjs +131 -0
- package/pipeline/scripts/validate-schemas.mjs +88 -0
- package/pipeline/scripts/validate-test-gap.mjs +90 -0
- package/pipeline/scripts/validate-triage.mjs +175 -0
- package/pipeline/scripts/verify-skills.sh +126 -0
- package/pipeline/scripts/write-state.mjs +175 -0
- package/pipeline/skills/.skill-manifest.json +779 -0
- package/pipeline/skills/.skills-index.json +1771 -0
- package/pipeline/skills/figma-android/README.md +36 -0
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +62 -0
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +158 -0
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +120 -0
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +35 -0
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +124 -0
- package/pipeline/skills/figma-common/README.md +57 -0
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +277 -0
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +498 -0
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +283 -0
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +362 -0
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +206 -0
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +337 -0
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +211 -0
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +218 -0
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +246 -0
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +73 -0
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +316 -0
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +542 -0
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +745 -0
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +203 -0
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +1015 -0
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +331 -0
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +398 -0
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +104 -0
- package/pipeline/skills/figma-common/figma-review/SKILL.md +395 -0
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +514 -0
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +592 -0
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +129 -0
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +104 -0
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +274 -0
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +808 -0
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +633 -0
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +711 -0
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +233 -0
- package/pipeline/skills/figma-common/performance-start/SKILL.md +425 -0
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +706 -0
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +418 -0
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +67 -0
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +178 -0
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +184 -0
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +219 -0
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +274 -0
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +401 -0
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +57 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +307 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +119 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +174 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +333 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +368 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +393 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +617 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +352 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +337 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +206 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +235 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +214 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +871 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +156 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +175 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +176 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +333 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +412 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +336 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +695 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +332 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +380 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +262 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +482 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +274 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +636 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +142 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +547 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +39 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +659 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +580 -0
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +51 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +129 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +64 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +531 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +89 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +155 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +196 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +57 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +89 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +227 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +157 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +90 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +116 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +153 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +130 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +218 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +188 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +93 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +98 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +261 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +147 -0
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +182 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +185 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +609 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +332 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +261 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +184 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +188 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +768 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +191 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +420 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.json +94 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +336 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +391 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +292 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +1 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +93 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +299 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +343 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +206 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +149 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +281 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +332 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +176 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +98 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +298 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +195 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +1298 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +228 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +1089 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +141 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +106 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +162 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +105 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +179 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +260 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +260 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +86 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +321 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +1470 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +176 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +147 -0
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +629 -0
- package/pipeline/skills/shared/README.md +212 -0
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +315 -0
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +348 -0
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +944 -0
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +51 -0
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +300 -0
- package/pipeline/skills/shared/core/multi-agent-delete/SKILL.md +63 -0
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +64 -0
- package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +56 -0
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +36 -0
- package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +42 -0
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +66 -0
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +292 -0
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +35 -0
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +38 -0
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +41 -0
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +87 -0
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +37 -0
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +53 -0
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +28 -0
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +47 -0
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +42 -0
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +191 -0
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +31 -0
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +61 -0
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +61 -0
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +62 -0
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +309 -0
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +55 -0
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +41 -0
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +184 -0
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +44 -0
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +34 -0
- package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +45 -0
- package/pipeline/skills/shared/external/agentflow/SKILL.md +199 -0
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +438 -0
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +584 -0
- package/pipeline/skills/shared/external/android-architecture/SKILL.md +407 -0
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +153 -0
- package/pipeline/skills/shared/external/android-performance/SKILL.md +736 -0
- package/pipeline/skills/shared/external/android-security/SKILL.md +577 -0
- package/pipeline/skills/shared/external/android_ui_verification/SKILL.md +66 -0
- package/pipeline/skills/shared/external/api-patterns/SKILL.md +85 -0
- package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +910 -0
- package/pipeline/skills/shared/external/app-clips/SKILL.md +436 -0
- package/pipeline/skills/shared/external/app-intents/SKILL.md +489 -0
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +1076 -0
- package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +75 -0
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +409 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +411 -0
- package/pipeline/skills/shared/external/app-store-review/references/code-signing.md +259 -0
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +90 -0
- package/pipeline/skills/shared/external/app-store-review/references/rejection-patterns.md +152 -0
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +118 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +500 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +425 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +344 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +508 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +285 -0
- package/pipeline/skills/shared/external/architecture/SKILL.md +60 -0
- package/pipeline/skills/shared/external/authentication/SKILL.md +496 -0
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +211 -0
- package/pipeline/skills/shared/external/background-processing/SKILL.md +499 -0
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +390 -0
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +461 -0
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +425 -0
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +462 -0
- package/pipeline/skills/shared/external/clean-code/SKILL.md +94 -0
- package/pipeline/skills/shared/external/closed-loop-delivery/SKILL.md +116 -0
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +492 -0
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +461 -0
- package/pipeline/skills/shared/external/compose-components/SKILL.md +441 -0
- package/pipeline/skills/shared/external/compose-navigation/SKILL.md +436 -0
- package/pipeline/skills/shared/external/compose-testing/SKILL.md +527 -0
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +425 -0
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +409 -0
- package/pipeline/skills/shared/external/context-compression/SKILL.md +266 -0
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +491 -0
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +435 -0
- package/pipeline/skills/shared/external/core-motion/SKILL.md +388 -0
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +405 -0
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +495 -0
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +420 -0
- package/pipeline/skills/shared/external/coreml/SKILL.md +458 -0
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +765 -0
- package/pipeline/skills/shared/external/css-modern/SKILL.md +467 -0
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +335 -0
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +422 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +387 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +298 -0
- package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +37 -0
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +477 -0
- package/pipeline/skills/shared/external/docker-expert/SKILL.md +413 -0
- package/pipeline/skills/shared/external/energykit/SKILL.md +460 -0
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +541 -0
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +483 -0
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +326 -0
- package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +190 -0
- package/pipeline/skills/shared/external/firebase/SKILL.md +61 -0
- package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +348 -0
- package/pipeline/skills/shared/external/gradle-kotlin-dsl/SKILL.md +552 -0
- package/pipeline/skills/shared/external/healthkit/SKILL.md +498 -0
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +602 -0
- package/pipeline/skills/shared/external/help-skills/SKILL.md +166 -0
- package/pipeline/skills/shared/external/hig-components-content/SKILL.md +81 -0
- package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +95 -0
- package/pipeline/skills/shared/external/hig-components-status/SKILL.md +82 -0
- package/pipeline/skills/shared/external/hig-components-system/SKILL.md +101 -0
- package/pipeline/skills/shared/external/hig-foundations/SKILL.md +94 -0
- package/pipeline/skills/shared/external/hig-inputs/SKILL.md +110 -0
- package/pipeline/skills/shared/external/hig-patterns/SKILL.md +99 -0
- package/pipeline/skills/shared/external/hig-platforms/SKILL.md +81 -0
- package/pipeline/skills/shared/external/hig-technologies/SKILL.md +125 -0
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +496 -0
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +455 -0
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +301 -0
- package/pipeline/skills/shared/external/humanizer/SKILL.md +118 -0
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +301 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +140 -0
- package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +59 -0
- package/pipeline/skills/shared/external/ios-developer/SKILL.md +217 -0
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +418 -0
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +627 -0
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +462 -0
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +441 -0
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +862 -0
- package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -0
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +563 -0
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +1116 -0
- package/pipeline/skills/shared/external/ios-security/SKILL.md +496 -0
- package/pipeline/skills/shared/external/ios-security/references/app-review-guidelines.md +174 -0
- package/pipeline/skills/shared/external/ios-security/references/cryptokit-advanced.md +297 -0
- package/pipeline/skills/shared/external/ios-security/references/file-storage-patterns.md +354 -0
- package/pipeline/skills/shared/external/ios-security/references/privacy-manifest.md +117 -0
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +101 -0
- package/pipeline/skills/shared/external/live-activities/SKILL.md +500 -0
- package/pipeline/skills/shared/external/live-activities/references/live-activity-patterns.md +868 -0
- package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +109 -0
- package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +110 -0
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +485 -0
- package/pipeline/skills/shared/external/mapkit-location/references/corelocation-patterns.md +730 -0
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +748 -0
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +479 -0
- package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +64 -0
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +395 -0
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +363 -0
- package/pipeline/skills/shared/external/natural-language/SKILL.md +412 -0
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +311 -0
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +418 -0
- package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +38 -0
- package/pipeline/skills/shared/external/observability-engineer/SKILL.md +235 -0
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +398 -0
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +254 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +387 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/references/paperkit-integration.md +376 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +302 -0
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +446 -0
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +435 -0
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +501 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +701 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +774 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +869 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/photospicker-patterns.md +597 -0
- package/pipeline/skills/shared/external/play-store-review/SKILL.md +350 -0
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +501 -0
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +677 -0
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +745 -0
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +383 -0
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +290 -0
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +479 -0
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +480 -0
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +386 -0
- package/pipeline/skills/shared/external/retrofit-networking/SKILL.md +506 -0
- package/pipeline/skills/shared/external/room-database/SKILL.md +564 -0
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +483 -0
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +544 -0
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +485 -0
- package/pipeline/skills/shared/external/storekit/SKILL.md +478 -0
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +58 -0
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +755 -0
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +487 -0
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +895 -0
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +467 -0
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +408 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +80 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swift-6-2-concurrency.md +233 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +187 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +341 -0
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +113 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +124 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/actors.md +155 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/async-streams.md +67 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bridging.md +52 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/bug-patterns.md +100 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/cancellation.md +107 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/diagnostics.md +70 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/hotspots.md +47 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/interop.md +129 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/new-features.md +224 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/structured.md +101 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/testing.md +218 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/unstructured.md +61 -0
- package/pipeline/skills/shared/external/swift-language/SKILL.md +498 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +505 -0
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +462 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +504 -0
- package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +97 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/async-tests.md +252 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/core-rules.md +52 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/migrating-from-xctest.md +34 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +318 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/writing-better-tests.md +254 -0
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +334 -0
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +504 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +975 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +675 -0
- package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +102 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/class-inheritance.md +104 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/cloudkit.md +10 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/core-rules.md +20 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/indexing.md +27 -0
- package/pipeline/skills/shared/external/swiftdata-pro/references/predicates.md +73 -0
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +503 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +821 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +553 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/SKILL.md +102 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/accessibility-patterns.md +215 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-advanced.md +403 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-basics.md +284 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-transitions.md +326 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts-accessibility.md +135 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts.md +602 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/image-optimization.md +203 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/latest-apis.md +464 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/layout-best-practices.md +266 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/liquid-glass.md +416 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/list-patterns.md +394 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-scenes.md +318 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-views.md +357 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-window-styling.md +303 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/performance-patterns.md +403 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/scroll-patterns.md +293 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/sheet-navigation-patterns.md +363 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/state-management.md +417 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/view-structure.md +389 -0
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +450 -0
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +425 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +336 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +97 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +69 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +99 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +147 -0
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +98 -0
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +262 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +207 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +177 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +169 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +178 -0
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +371 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +486 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +1097 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +780 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +696 -0
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +487 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +46 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +29 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +33 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +52 -0
- package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +114 -0
- package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +108 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/accessibility.md +13 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/api.md +39 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/data.md +43 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/design.md +31 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/hygiene.md +9 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/navigation.md +14 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/performance.md +46 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/swift.md +56 -0
- package/pipeline/skills/shared/external/swiftui-pro/references/views.md +35 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +103 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +428 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +534 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +948 -0
- package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +210 -0
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +273 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +151 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +95 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +51 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +111 -0
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +309 -0
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +393 -0
- package/pipeline/skills/shared/external/tipkit/SKILL.md +494 -0
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +782 -0
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +336 -0
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +475 -0
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +736 -0
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +738 -0
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +371 -0
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +410 -0
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +567 -0
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +373 -0
- package/pipeline/skills/shared/external/web-performance/SKILL.md +345 -0
- package/pipeline/skills/shared/external/web-testing/SKILL.md +385 -0
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +497 -0
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +871 -0
- package/pipeline/skills/skills-index.md +205 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Launch any task in autopilot mode: skips every confirmation, runs end-to-end autonomously."
|
|
3
|
+
argument-hint: '"task" — issue URL, Jira ID, free-text, or #id (for resume)'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# multi-agent autopilot — Autonomous Pipeline
|
|
7
|
+
|
|
8
|
+
**Input**: $ARGUMENTS
|
|
9
|
+
|
|
10
|
+
> **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` and external payloads stay English. Full contract: `refs/rules.md` "Language Application".
|
|
11
|
+
|
|
12
|
+
Run the task end-to-end with no confirmations.
|
|
13
|
+
|
|
14
|
+
## What changes
|
|
15
|
+
|
|
16
|
+
| Phase | Normal | Autopilot |
|
|
17
|
+
|-----|--------|-----------|
|
|
18
|
+
| Phase 2 (Plan Approval Gate) | Clarification (max 2 rounds) + approval loop — user confirms / cancels / sends free text | **Gate skipped** — log the plan, jump straight to Phase 3 (autopilot contract: zero interaction) |
|
|
19
|
+
| Phase 5 (Test) | "Want to test?" → wait | Skip → Phase 6 |
|
|
20
|
+
| Phase 6 (Commit) | "Commit?" → wait | Auto-commit + push |
|
|
21
|
+
| Phase 6 (PR) | "Open PR?" → wait | Auto-create PR |
|
|
22
|
+
|
|
23
|
+
## What is NEVER skipped
|
|
24
|
+
|
|
25
|
+
- 🔴 **Review-blocking finding** → auto fix + rebuild (max 3 retries)
|
|
26
|
+
- 💥 **Build failure** → auto fix + rebuild (max 3 retries, then pause)
|
|
27
|
+
- ⚠️ **Kill / Purge** → always asks for confirmation (destructive)
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
# GitHub Issue
|
|
33
|
+
/multi-agent:autopilot https://github.com/.../issues/316
|
|
34
|
+
|
|
35
|
+
# Jira ID
|
|
36
|
+
/multi-agent:autopilot {JIRA-KEY}-12345
|
|
37
|
+
|
|
38
|
+
# Free text
|
|
39
|
+
/multi-agent:autopilot LoginView dark mode fix
|
|
40
|
+
|
|
41
|
+
# Resume a stopped task in autopilot
|
|
42
|
+
/multi-agent:autopilot resume #3
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Steps
|
|
46
|
+
|
|
47
|
+
1. **Parse input** — standard multi-agent input formats
|
|
48
|
+
2. **Set the autopilot flag** — write `"autopilot": true` to `agent-state.json`
|
|
49
|
+
3. **Launch the multi-agent pipeline** — every confirmation is skipped
|
|
50
|
+
4. **On error** — after 3 failed retries, pause and ask the user
|
|
51
|
+
## Required: Phase Tracker Contract
|
|
52
|
+
|
|
53
|
+
**The phase tracker is mandatory** — the agent cannot skip it. Full spec: [`refs/tracker-contract.md`](./refs/tracker-contract.md).
|
|
54
|
+
|
|
55
|
+
> **Autopilot mode:** user confirmations are skipped. The tracker is still mandatory — autopilot agent calls cannot skip it; skipping breaks `smoke-tracker-contract.sh`.
|
|
56
|
+
|
|
57
|
+
Two channels run in parallel at every phase boundary:
|
|
58
|
+
|
|
59
|
+
1. **State channel** (every CLI, identical): `phase-tracker.sh` writes to `tracker-state.json`. Drives `:resume`, `:log`, `:status`.
|
|
60
|
+
2. **Visual channel** (CLI-specific): native widget on Claude Code, ANSI render on every other CLI. Without it the user sees no phase progress.
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Phase 0, very first shell call (every CLI):
|
|
64
|
+
bash $HOME/.claude/scripts/phase-tracker.sh init "$TASK_ID"
|
|
65
|
+
for p in "0:Init" "1:Analysis" "2:Planning" "3:Dev" "4:Review" "5:Test" "6:Commit" "7:Report"; do
|
|
66
|
+
bash $HOME/.claude/scripts/phase-tracker.sh add "${p%%:*}" "${p#*:}"
|
|
67
|
+
done
|
|
68
|
+
bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
|
|
69
|
+
|
|
70
|
+
# Every phase boundary (every CLI):
|
|
71
|
+
bash $HOME/.claude/scripts/phase-tracker.sh update <N> in_progress|completed|failed|skipped
|
|
72
|
+
|
|
73
|
+
# After every LLM call (every CLI):
|
|
74
|
+
bash $HOME/.claude/scripts/phase-tracker.sh tokens <N> <in> <out>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Visual channel — Claude Code (native TaskList widget, required)
|
|
78
|
+
|
|
79
|
+
In Claude Code the agent MUST also drive the native TaskList widget so the user sees a sticky phase tile stack — this is the only progress signal Claude Code surfaces. Skipping these calls is the #1 source of "I don't see any phases" complaints.
|
|
80
|
+
|
|
81
|
+
**TaskCreate ordering (strict)**: All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied. The native widget renders by creation order, not by phase number — out-of-order calls produce visually scrambled tile stacks (e.g. `1 ✓ · 2 ✓ · 4 ✓ · 0 ▶ · 3 ☐`) even when the underlying state is correct. Pre-marking phases as completed/skipped before Phase 0 starts is FORBIDDEN — register the tile in order, then flip status via TaskUpdate when the phase actually short-circuits. Full contract in `refs/tracker-contract.md` § "TaskCreate ordering (strict)".
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
# Phase 0 startup — register one tile per phase (0..N), capture the taskId, persist it:
|
|
85
|
+
for each phase in 0:Init, 1:Analysis, 2:Planning, 3:Dev, 4:Review, 5:Test, 6:Commit, 7:Report:
|
|
86
|
+
TaskCreate({ subject: "Phase <N>: <Name>", activeForm: "<doing-form>" })
|
|
87
|
+
-> returns taskId
|
|
88
|
+
bash $HOME/.claude/scripts/phase-tracker.sh meta <N> tasklist_id "<taskId>"
|
|
89
|
+
|
|
90
|
+
# Phase entry — flip the tile to in_progress alongside the state update:
|
|
91
|
+
TaskUpdate({ taskId: <saved>, status: "in_progress" })
|
|
92
|
+
bash $HOME/.claude/scripts/phase-tracker.sh update <N> in_progress
|
|
93
|
+
|
|
94
|
+
# Active sub-step inside a phase — update activeForm so the spinner header reflects what's happening now:
|
|
95
|
+
TaskUpdate({ taskId: <saved>, activeForm: "Editing TopBarView.swift" })
|
|
96
|
+
|
|
97
|
+
# Phase exit — flip to completed/failed/skipped on both channels:
|
|
98
|
+
TaskUpdate({ taskId: <saved>, status: "completed" })
|
|
99
|
+
bash $HOME/.claude/scripts/phase-tracker.sh update <N> completed
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
`autopilot` mode TaskCreates all 8 phases (no phase is skipped).
|
|
103
|
+
|
|
104
|
+
#### TaskCreate ordering (strict)
|
|
105
|
+
|
|
106
|
+
**All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied.** For `autopilot` that means: Phase 0 → Phase 1 → Phase 2 → Phase 3 → Phase 4 → Phase 5 → Phase 6 → Phase 7. The native widget renders by creation order, not by phase number — out-of-order calls produce visually scrambled tile stacks. Full ordering contract in `refs/tracker-contract.md` § "TaskCreate ordering (strict)".
|
|
107
|
+
|
|
108
|
+
### Visual channel — Copilot CLI / Cursor / Windsurf / plain shell
|
|
109
|
+
|
|
110
|
+
These CLIs have no TaskList widget. After every state change the agent calls render, which prints a bordered ANSI card as the last tool result so the user sees an updated phase table:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
bash $HOME/.claude/scripts/phase-tracker.sh render
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Do NOT call TaskCreate on these CLIs — the tool does not exist and the call fails.
|
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Multi-channel reporter — Jira/Confluence/Wiki/PR description/Board status. Multi-select channels + content, humanizer pass, reviewer-preserving Bitbucket PR PUT, GitHub Projects v2 board status move. Phase 7 delegates to this skill; users can invoke post-hoc by Jira ID / PR URL / branch."
|
|
3
|
+
argument-hint: '<Jira-id | PR-url | #N | Jira-url> [--channels pr,jira,confluence,wiki,board] [--content normal,technical,test,auto-diff,note] [--message "..."] [--message-file path] [--board-status <key>] [--dry-run] [--append] [--ready]'
|
|
4
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, WebFetch, AskUserQuestion
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /multi-agent channels — Multi-Channel Reporter
|
|
8
|
+
|
|
9
|
+
> **TLDR** — Single entry point for posting task reports to external channels. Supports Jira, Confluence, Wiki (component-only), and PR description updates. Multi-select channels × multi-select content sources. Phase 7 of the pipeline delegates to this command; users can also invoke it post-hoc by Jira ID / PR URL / branch.
|
|
10
|
+
>
|
|
11
|
+
> Replaces the old `enrich` command — all enrich capabilities (diff auto-summarize, manual mode, reviewer-preserving Bitbucket PR PUT) preserved and extended with two additional channels.
|
|
12
|
+
|
|
13
|
+
**Claude Code invocation:** `/multi-agent:channels <target>`
|
|
14
|
+
**Copilot CLI invocation:** `multi-agent-channels <target>` (top-level command, dash-separated per Copilot no-namespace convention)
|
|
15
|
+
|
|
16
|
+
## Input
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
/multi-agent:channels # cwd + current branch
|
|
20
|
+
/multi-agent:channels PROJ-12345 # Jira ID
|
|
21
|
+
/multi-agent:channels #42 # GitHub issue/PR number
|
|
22
|
+
/multi-agent:channels https://github.com/<org>/<repo>/pull/N
|
|
23
|
+
/multi-agent:channels https://<bitbucket-host>/projects/.../pull-requests/N
|
|
24
|
+
/multi-agent:channels https://<jira-host>/browse/PROJ-12345
|
|
25
|
+
|
|
26
|
+
/multi-agent:channels PROJ-12345 --channels jira,confluence # non-interactive kanal
|
|
27
|
+
/multi-agent:channels PROJ-12345 --content auto-diff # non-interactive content
|
|
28
|
+
/multi-agent:channels PROJ-12345 --message "root: ..." # manual source
|
|
29
|
+
/multi-agent:channels PROJ-12345 --message-file notes.md # manual, long
|
|
30
|
+
/multi-agent:channels PROJ-12345 --dry-run # preview, no POST
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Target resolution is identical to the pre-existing enrich flow — any of the 6 forms above works.
|
|
34
|
+
|
|
35
|
+
## Flow
|
|
36
|
+
|
|
37
|
+
`resolve target → fetch context → menu (or flags) → generator → humanizer → dispatch → summary`. Channels: Jira comment, Confluence page, Wiki pages, PR description, Board status (GitHub Projects v2).
|
|
38
|
+
|
|
39
|
+
### Step 1 — Target resolution
|
|
40
|
+
|
|
41
|
+
1. Parse argument → classify as: Jira-id, Jira-url, PR-url (GitHub or Bitbucket), GitHub-issue-number, empty (cwd+branch).
|
|
42
|
+
2. Resolve linked entities:
|
|
43
|
+
- Jira ID → linked PR via dev-status API (`/rest/dev-status/latest/issue/detail`)
|
|
44
|
+
- PR URL → Jira ID extracted from branch name / title / body using `{JIRA_KEY}-XXXXX` pattern
|
|
45
|
+
- GitHub `#N` → resolved against the repo in cwd
|
|
46
|
+
- Empty → read git branch, extract Jira ID, find linked PR
|
|
47
|
+
3. Detect remote type: `github` (gh CLI) or `bitbucket` (REST).
|
|
48
|
+
4. Store in runtime state: `{jiraId, targets: [{prUrl, prNumber, remoteType, repoPath, baseBranch, headBranch, repoName, isPrimary}]}`.
|
|
49
|
+
|
|
50
|
+
**Multi-repo:** when `agent-state.json` `projects[].length > 1`, Step 1 builds **one target per project**. Each project's PR is resolved via `pr` field in its projects[] entry; if missing, the Jira/Issue link query returns multiple PRs (one per repo) — all are added to `targets[]`. The project at `projects[0]` (or whose name matches `state.project`) is marked `isPrimary: true`; others are `isPrimary: false`.
|
|
51
|
+
|
|
52
|
+
For single-repo tasks, `targets` has exactly one entry. The rest of the flow is target-aware: Step 5 generates one body, Step 6 dispatches to each target, with cross-links (see below).
|
|
53
|
+
|
|
54
|
+
### Step 2 — Context source detection
|
|
55
|
+
|
|
56
|
+
Automatic. The generator picks the best-available source:
|
|
57
|
+
|
|
58
|
+
| Source | Available when | Used for |
|
|
59
|
+
|---|---|---|
|
|
60
|
+
| **Pipeline log** | `$HOME/.claude/logs/multi-agent/<project>/<task-id>/agent-log.md` exists AND matches `jiraId` | "Normal analiz" + "Test senaryoları" content options — uses Phase 1/2/4 output verbatim |
|
|
61
|
+
| **PR diff** | PR exists, diff fetchable (`gh pr diff` or Bitbucket `/diff?contextLines=5`) | "Auto-diff özet" content option — old enrich behavior |
|
|
62
|
+
| **Manual message** | `--message` / `--message-file` provided | Replaces both sources — user text is canonical |
|
|
63
|
+
|
|
64
|
+
If both pipeline log and PR diff exist, the menu offers both. If only one, the unavailable options are greyed out with a one-line reason.
|
|
65
|
+
|
|
66
|
+
### Step 3 — Multi-select menu (normal mode)
|
|
67
|
+
|
|
68
|
+
Rendered in English (`promptLanguage` is locked to `en`). Previous selections (`prefs.global.reportChannels`, `prefs.global.reportContent`) are pre-ticked.
|
|
69
|
+
|
|
70
|
+
#### Step 3a — Work Summary preview (summary-first flow)
|
|
71
|
+
|
|
72
|
+
**Runs only when** (a) `agent-state.json` exists for the task AND (b) a Work Summary can be generated (same availability rule as the "Yapılan iş özeti" content row). Purpose: give the user an instant "what did this ship?" answer BEFORE they pick channels. They see the outcome first, then decide where to route it — instead of the reverse.
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
preview=$(bash pipeline/scripts/render-work-summary.sh "$TASK_ID" 2>/dev/null || true)
|
|
76
|
+
[ -n "$preview" ] && {
|
|
77
|
+
printf '%s\n\n' "$preview"
|
|
78
|
+
# Auto-tick workSummary content row when preview was shown.
|
|
79
|
+
# Users can still untick it in 3b if they don't want to re-send the same
|
|
80
|
+
# block to remote channels (useful when preview was enough for a look).
|
|
81
|
+
content_defaults.workSummary=true
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
When the preview renders:
|
|
86
|
+
- **workSummary** row in 3b is **auto-ticked** (user can still uncheck).
|
|
87
|
+
- Previous `prefs.global.reportContent.workSummary` value is respected — if the user had explicitly unticked in a prior run, the auto-tick is **suppressed** and the ticked state matches the pref.
|
|
88
|
+
|
|
89
|
+
When the preview does NOT render (no state, or pref explicitly off at global level with no override):
|
|
90
|
+
- Skip 3a silently, go straight to the channels picker. The workSummary row in 3b stays at its pref default (`false`).
|
|
91
|
+
|
|
92
|
+
**Visual flow (TR, pref on + state available):**
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
📋 Yapılan iş özeti — PROJ-12345
|
|
96
|
+
──────────────────────────────────────────────────────────
|
|
97
|
+
{rendered Work Summary block — header + scope + diffstat + review + phases}
|
|
98
|
+
──────────────────────────────────────────────────────────
|
|
99
|
+
|
|
100
|
+
✅ İş özetini gördün. Şimdi nereye rapor gönderelim?
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Then 3b renders:
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
┌─ Kanallar ────────────────────────────────────────────
|
|
107
|
+
│ Nereye rapor gönderilsin?
|
|
108
|
+
│ [x] PR description (replace / append)
|
|
109
|
+
│ [x] Jira comment (jiraId: PROJ-12345)
|
|
110
|
+
│ [ ] Confluence page
|
|
111
|
+
│ [ ] Wiki (taskType=component + wiki.enabled gerekli)
|
|
112
|
+
│ [ ] Board (figmaConfig.board.enabled + projectV2Id gerekli)
|
|
113
|
+
└───────────────────────────────────────────────────────
|
|
114
|
+
|
|
115
|
+
┌─ İçerik ──────────────────────────────────────────────
|
|
116
|
+
│ Ne eklensin?
|
|
117
|
+
│ [x] Normal analiz (Phase 1+2+4'ten — high-level impact + risks)
|
|
118
|
+
│ [ ] Teknik analiz (Changes · Architecture · Dependencies — PR body'deki Technical Details özeti)
|
|
119
|
+
│ [x] Test senaryoları (Phase 1+2+4'ten)
|
|
120
|
+
│ [ ] PR diff'ten auto-gen (PR varsa diff'i summarize eder)
|
|
121
|
+
│ [ ] Manuel not (--message / --message-file)
|
|
122
|
+
│ [ ] Cost özeti (per-phase token + est. USD — tracker data gerekli)
|
|
123
|
+
│ [x] Yapılan iş özeti (executive summary — yukarıda gösterilen block)
|
|
124
|
+
└───────────────────────────────────────────────────────
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Why auto-tick:** the user JUST saw the summary and is likely sending it somewhere — otherwise they would have stopped before running `/multi-agent:channels`. Auto-tick matches the 80% case; the 20% case (preview was enough, no remote post needed) is a single keystroke to uncheck.
|
|
128
|
+
|
|
129
|
+
**Autopilot interaction (Step 4):** when `state.autopilot === true`, autopilot still pauses at channels (documented exception to zero-interaction contract). The Work Summary preview renders in-line before the menu, same as normal mode.
|
|
130
|
+
|
|
131
|
+
#### Step 3b — Channel + content picker
|
|
132
|
+
|
|
133
|
+
**Greyed-out rules:**
|
|
134
|
+
- "Wiki" unselectable unless `state.taskType === "component"` AND `figmaConfig.wiki.enabled === true`. If greyed, show reason: `"(no figma-config or taskType != component)"`.
|
|
135
|
+
- "Board" unselectable unless `figmaConfig.board.enabled === true` AND `figmaConfig.board.provider === "github-projects-v2"` AND `figmaConfig.github.projectV2Id` set. If greyed, show reason: `"(no figma-config.board or projectV2Id missing)"`. Default target column: `inReview`.
|
|
136
|
+
- "Normal analiz" + "Test senaryoları" unselectable if no pipeline log found. Reason: `"(no pipeline log for PROJ-12345)"`.
|
|
137
|
+
- "Teknik analiz" unselectable if no Phase 2 planning log AND no PR diff available. Reason: `"(no technical source — need Phase 2 plan or PR diff)"`.
|
|
138
|
+
- "Auto-diff" unselectable if no PR found. Reason: `"(no PR linked to this target)"`.
|
|
139
|
+
- "Manuel not" always available.
|
|
140
|
+
- "Cost özeti" unselectable if `phase-tracker.sh status <id>` returns no token tallies AND no `otel-spans.jsonl` exists for the task. Reason: `"(no tracker data — set MULTI_AGENT_OTEL_SPANS=1 or enable token tracking)"`.
|
|
141
|
+
- "Yapılan iş özeti" unselectable if no `agent-state.json` exists for the task (post-hoc call with `--branch` + `--base-branch` flags restores partial availability). Reason: `"(no agent-state.json for {taskId})"`. **Auto-ticked** when Step 3a preview was shown — user can still uncheck before confirming the menu.
|
|
142
|
+
|
|
143
|
+
**Defaults (first run):** PR + Jira ticked, Confluence + Wiki unticked. Content: auto-diff if pipeline log missing; otherwise normal-analiz + test-senaryoları.
|
|
144
|
+
|
|
145
|
+
Saved to `prefs.global.reportChannels` and `prefs.global.reportContent` — next run uses these as defaults.
|
|
146
|
+
|
|
147
|
+
### Step 4 — Mode short-circuit
|
|
148
|
+
|
|
149
|
+
Non-interactive in three cases — menu skipped entirely, flag values or prefs used directly:
|
|
150
|
+
|
|
151
|
+
| Mode | Behavior |
|
|
152
|
+
|---|---|
|
|
153
|
+
| `--channels X,Y` + `--content A,B` flags | Exact flag values, no menu. |
|
|
154
|
+
| `autopilot` (Phase 7 delegate) | Reads `prefs.global.reportChannels` + `prefs.global.reportContent` — per Phase 7 autopilot-pause contract, Phase 7 STILL pauses before calling channels but pre-fills menu from prefs. Post-hoc `/channels` in autopilot mode uses prefs directly. |
|
|
155
|
+
| `--dry-run` | Runs menu, generates output, prints to stdout, DOES NOT post. |
|
|
156
|
+
|
|
157
|
+
### Step 5 — Generator
|
|
158
|
+
|
|
159
|
+
For each selected **content** source, produce one section body. Each section runs through the `humanizer` skill separately (Jira / Confluence / PR tones differ).
|
|
160
|
+
|
|
161
|
+
| Content option | Generated section |
|
|
162
|
+
|---|---|
|
|
163
|
+
| Normal analiz | `### Analysis` — impact summary from Phase 1, risks from Phase 4 (pipeline-log source, high-level only) |
|
|
164
|
+
| Teknik analiz | `### Technical Details` — Changes (what/why per file group), Architecture (structural decisions, pattern changes), Dependencies (new imports/frameworks/packages). Source: Phase 2 planning + Phase 3 dev log + `git diff --stat`. Same shape as PR body's Technical Details — gives Jira/Confluence readers the code-reviewer view without making them click into the PR. |
|
|
165
|
+
| Test senaryoları | `### Test Scenarios` — precondition / steps / expected table (4-8 rows), user perspective |
|
|
166
|
+
| Auto-diff | Old enrich Output Template verbatim — Root Cause / Solution / Changed Files / Test Scenarios |
|
|
167
|
+
| Manuel not | `### Notes` — user-provided paragraph, or LLM-split into subsections if `--message` is plain text and long |
|
|
168
|
+
| Cost özeti | `### Cost Summary` — per-phase token tally + est. USD table. Source: `phase-tracker.sh` phase status + optional OTel spans. See "Cost summary generation" below. |
|
|
169
|
+
| Yapılan iş özeti | `### Work Summary` — executive one-screen summary: task + branch + base + PR, scope delivered (✅/⏳ per Phase 2 task), changed files with +/- counts (capped at 20 rows), review outcome (accepted/deferred/rejected + approved), phase tick strip. Source: `agent-state.json` + `phase-tracker.json` + `git diff --numstat base...HEAD`. See "Work summary generation" below. |
|
|
170
|
+
|
|
171
|
+
**Output template (aggregated across selected content options):**
|
|
172
|
+
|
|
173
|
+
```markdown
|
|
174
|
+
### Analysis ← if "Normal analiz" selected
|
|
175
|
+
{impact summary, risks — from pipeline log, high-level}
|
|
176
|
+
|
|
177
|
+
### Technical Details ← if "Teknik analiz" selected
|
|
178
|
+
#### Changes
|
|
179
|
+
{Per changed-file-group, what changed + why — from Phase 3 dev log}
|
|
180
|
+
#### Architecture
|
|
181
|
+
{Structural decisions, pattern changes, new file layouts — from Phase 2 plan}
|
|
182
|
+
#### Dependencies
|
|
183
|
+
{New imports / frameworks / packages — from git diff --stat, or "None"}
|
|
184
|
+
|
|
185
|
+
### Root Cause ← if "Auto-diff" selected
|
|
186
|
+
{single paragraph — from diff}
|
|
187
|
+
|
|
188
|
+
- `path/to/File.ext → funcName`: {why it broke}
|
|
189
|
+
|
|
190
|
+
### Solution ← if "Auto-diff" selected
|
|
191
|
+
- `path/to/File.ext:LINE-LINE` — {change, one line}
|
|
192
|
+
|
|
193
|
+
### Changed Files ← if "Auto-diff" selected
|
|
194
|
+
| File | +/- |
|
|
195
|
+
|------|-----|
|
|
196
|
+
| `path/to/File.ext` | +N / -M |
|
|
197
|
+
|
|
198
|
+
### Test Scenarios ← if "Test senaryoları" OR "Auto-diff" selected
|
|
199
|
+
| # | Precondition | Steps | Expected | Status |
|
|
200
|
+
|---|--------------|-------|----------|--------|
|
|
201
|
+
| 1 | ... | ... | ... | To Test|
|
|
202
|
+
|
|
203
|
+
### Notes ← if "Manuel not" selected
|
|
204
|
+
{user message}
|
|
205
|
+
|
|
206
|
+
### Work Summary ← if "Yapılan iş özeti" selected
|
|
207
|
+
{executive scope + files + review + phases block — see "Work summary generation" below}
|
|
208
|
+
|
|
209
|
+
### Cost Summary ← if "Cost özeti" selected
|
|
210
|
+
{per-phase token + USD table — see "Cost summary generation" below}
|
|
211
|
+
|
|
212
|
+
### Store compliance ← auto-appended if cached compliance report exists
|
|
213
|
+
{summary line — see below}
|
|
214
|
+
|
|
215
|
+
Ref: {jiraId}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**Store compliance auto-augmentation:**
|
|
219
|
+
|
|
220
|
+
After the content-selected sections are generated, check for a recent compliance report cached from `/multi-agent:test "store-ready"`:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# Cache locations (newest wins; expire after 6h to avoid stale cross-branch reports)
|
|
224
|
+
find /tmp -maxdepth 1 -name 'archiveguard-*.json' -o -name 'play-compliance-*.json' \
|
|
225
|
+
-newermt "-6 hours" -print 2>/dev/null | head -1
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
If a cached report exists AND any of the selected channels is PR / Jira / Confluence, append an auto-summary section:
|
|
229
|
+
|
|
230
|
+
| Blocker count | Appended line |
|
|
231
|
+
|---|---|
|
|
232
|
+
| `errors > 0` | `### Store compliance` + `⚠️ {N} blocker(s), {M} warning(s) — run /multi-agent:test "store-ready" for the full report.` — per-blocker: `- \`{ruleID}\` — {Apple ITMS / Play ref}: {message}` (capped at 5 rows, rest collapsed to `+N more`) |
|
|
233
|
+
| `errors == 0, warnings > 0` | `### Store compliance` + `✅ No blockers. {M} warning(s) — see /multi-agent:test "store-ready" for detail.` |
|
|
234
|
+
| `errors == 0, warnings == 0` | Skip section entirely — don't pollute PR body |
|
|
235
|
+
|
|
236
|
+
The section references `ruleID` + policy ref from the compliance skill catalogs (`apple-archive-compliance` / `google-play-compliance`) verbatim. No translation — global identifiers stay as-is.
|
|
237
|
+
|
|
238
|
+
If no cached report exists, skip silently — this is augmentation, not a gate.
|
|
239
|
+
|
|
240
|
+
**Work summary generation:**
|
|
241
|
+
|
|
242
|
+
Emitted only when `reportContent.workSummary === true` and at least one of (`agent-state.json`, `--branch` flag) is available. The shell adapter is `pipeline/scripts/render-work-summary.sh <taskId>`:
|
|
243
|
+
|
|
244
|
+
1. **Task header** — `taskId`, `branch`, `baseBranch`, `prNumber` from `agent-state.json` (or explicit flags for post-hoc invocation).
|
|
245
|
+
2. **Scope delivered** — Phase 2 `planTodos[]` / `tasks[]` rendered as `✅` (status=done) or `⏳` (anything else) rows. Task id + title shown; `(deferred — rationale)` appended if the task's `status` is `"deferred"`.
|
|
246
|
+
3. **Changed files** — `git -C $WORKTREE diff --numstat $baseBranch...HEAD`. Shows `` `path` (+add / -del) `` per row, capped at 20 with a `_... +N more files not shown_` footer when exceeded. Total adds/dels + file count in section header.
|
|
247
|
+
4. **Review outcome** — from `reviewConsensus` (pre-v6.1) or `phases["4"].triage`: `{accepted} accepted · {deferred} deferred · {rejected} rejected · approved={bool}`. Hidden entirely when all three buckets are empty (normal for `--dev` / `dev-autopilot` runs that skip Phase 4).
|
|
248
|
+
5. **Phase tick strip** — single line from `phase-tracker.json`: `0 Init ✅ · 1 Analysis ✅ · 2 Planning ✅ · 3 Dev ✅ · 4 Review ✅ · 5 Test ⏭ · 6 Commit ✅ · 7 Report ▶`. Marks: `✅` completed · `▶` in_progress · `❌` failed · `⏭` skipped · `·` pending.
|
|
249
|
+
|
|
250
|
+
**Output template:**
|
|
251
|
+
|
|
252
|
+
```markdown
|
|
253
|
+
### Work Summary
|
|
254
|
+
**Task**: `PROJ-1099` | **Branch**: `bugfix/PROJ-1099-dark-mode` | **Base**: `develop` | **PR**: #104
|
|
255
|
+
|
|
256
|
+
#### Scope delivered
|
|
257
|
+
- ✅ T1 Add failing dark-mode snapshot test
|
|
258
|
+
- ✅ T2 Replace Color.white with design token
|
|
259
|
+
|
|
260
|
+
#### Changed files (3 files · +48 / -12)
|
|
261
|
+
- `Sources/Auth/LoginView.swift` (+24 / -8)
|
|
262
|
+
- `Sources/Auth/LoginViewTests.swift` (+22 / -4)
|
|
263
|
+
- `Sources/DesignSystem/Color+Tokens.swift` (+2 / -0)
|
|
264
|
+
|
|
265
|
+
#### Review outcome
|
|
266
|
+
- 1 accepted · 0 deferred · 0 rejected · approved=true
|
|
267
|
+
|
|
268
|
+
#### Phases
|
|
269
|
+
- 0 Init ✅ · 1 Analysis ✅ · 2 Planning ✅ · 3 Dev ✅ · 4 Review ✅ · 5 Test ⏭ · 6 Commit ✅ · 7 Report ▶
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**Post-hoc invocation** (task already finished, agent-state.json may be archived): pass `--branch` + `--base-branch` explicitly — the script still emits task header + changed-files + phases sections (scope + review outcome are state-dependent and will be absent if state is gone).
|
|
273
|
+
|
|
274
|
+
**Cost summary generation:**
|
|
275
|
+
|
|
276
|
+
Emitted only when `reportContent.costSummary === true` and tracker data is available. Source of truth is `phase-tracker.sh`:
|
|
277
|
+
|
|
278
|
+
1. **Token tallies per phase** — read `.worktrees/{taskPath}/phase-tracker.json` (written by `phase-tracker.sh update` / `tokens` actions). If present, each phase row has `{tokens_in, tokens_out}`.
|
|
279
|
+
2. **Fallback to OTel spans** — if tracker JSON has no token columns but `otel-spans.jsonl` exists (set `MULTI_AGENT_OTEL_SPANS=1` beforehand), aggregate `phase.tokens` spans by phase ID.
|
|
280
|
+
3. **USD estimate** — uses a static price table in `pipeline/scripts/cost-table.json` (model → $/Mtok_in, $/Mtok_out). Missing model → show `—` for USD, never block.
|
|
281
|
+
|
|
282
|
+
**Output template:**
|
|
283
|
+
|
|
284
|
+
```markdown
|
|
285
|
+
### Cost Summary
|
|
286
|
+
| Phase | Model | Tokens in | Tokens out | Est. USD |
|
|
287
|
+
|-------|-------|-----------|------------|----------|
|
|
288
|
+
| 1. Analysis | opus | 12,480 | 3,210 | $0.42 |
|
|
289
|
+
| 2. Planning | opus | 18,904 | 5,120 | $0.66 |
|
|
290
|
+
| 3. Dev | sonnet | 42,310 | 9,880 | $0.27 |
|
|
291
|
+
| 4. Review | opus | 21,050 | 4,720 | $0.66 |
|
|
292
|
+
| **Total** | | **94,744** | **22,930** | **$2.04** |
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Generated by `pipeline/scripts/render-cost-summary.sh <task-id>` using prices from `pipeline/scripts/cost-table.json`. The channels adapter shells out to this renderer — doc table is illustrative only, runtime is authoritative.
|
|
296
|
+
|
|
297
|
+
**Precision rules:** tokens as thousand-separated integers. USD rounded to 2 dp (`printf '$%.2f'`). Rows with zero tokens dropped. If total USD is `—` (no price for any model), replace the total row USD cell with `—` and add a one-line footnote: `*USD unavailable — add model to cost-table.json*`.
|
|
298
|
+
|
|
299
|
+
**Target length rule:** full body fits one screen on a typical laptop (< 80 lines). Auto-diff summary capped at 5 lines per section. No framework-theory paragraphs, no numbered "why this approach" lists.
|
|
300
|
+
|
|
301
|
+
### Step 6 — Channel dispatch
|
|
302
|
+
|
|
303
|
+
For each selected **channel**, call the corresponding adapter. Adapters run **in parallel** — one failure does not block others.
|
|
304
|
+
|
|
305
|
+
**Multi-repo dispatch:** When `state.projects[].length > 1`, the dispatcher delegates per-channel rendering to `~/.claude/lib/channels-multi-repo.sh`:
|
|
306
|
+
|
|
307
|
+
| Channel | Behavior | Adapter call |
|
|
308
|
+
|---------|----------|--------------|
|
|
309
|
+
| **PR description** | Posted to **every** target's PR. Primary's body lists extras as `Related: <url>`; each extra's body lists primary as `Part of: <url>`. | `channels-multi-repo.sh render-pr <state> <body> <repoName>` per target |
|
|
310
|
+
| **Jira comment** | Posted **once** (Jira ticket is shared by all repos). Body prepended with bulleted `* PR:` list — primary first, extras after. | `channels-multi-repo.sh render-jira <state> <body>` once |
|
|
311
|
+
| **Confluence page** | Posted **once** to the primary's component slug. `## Related PRs` heading block prepended. | `channels-multi-repo.sh render-conf <state> <body>` once |
|
|
312
|
+
| **Wiki** | Posted **once** to the primary repo's wiki, since wiki scope is `figma-config.wikiRepo` (single repo). | No adapter — body unchanged |
|
|
313
|
+
| **Board** | Posted **once** — board status is keyed off the GitHub Issue, not per-PR. Primary repo's issue is the target. | No adapter — single mutation |
|
|
314
|
+
|
|
315
|
+
**Target enumeration:** `channels-multi-repo.sh targets <state>` returns a JSON array `[{repoName, prUrl, prNumber, isPrimary, crossLinks}]` for the dispatch loop. Single-repo tasks return one entry with empty `crossLinks` — every render-* call falls through to the body unchanged, so the loop is uniform across single-repo and multi-repo paths.
|
|
316
|
+
|
|
317
|
+
**Logging hint:** `channels-multi-repo.sh summary <state>` produces a one-line autopilot log entry (`1 primary (foo) + 2 extras: <url> <url>` or `single-repo task`).
|
|
318
|
+
|
|
319
|
+
#### Adapter: PR description
|
|
320
|
+
Aggregated Markdown from Step 5 → PR description. GitHub uses `gh pr edit --body-file`; Bitbucket uses a **reviewer-preserving (required)** `PUT /pull-requests/{id}` payload (must re-send `reviewers`, `fromRef`, `toRef`, `draft`, `version` — omitting any one resets that field server-side). Default is **replace**; `--append` opt-in. Multi-repo cross-links handled by `channels-multi-repo.sh render-pr`.
|
|
321
|
+
|
|
322
|
+
Full contract: [`refs/channels/pr.md`](refs/channels/pr.md) — Bitbucket payload assembly snippet, version-mismatch retry, `--ready` promotion, multi-repo cross-link block.
|
|
323
|
+
|
|
324
|
+
#### Adapter: Jira comment
|
|
325
|
+
Body converted to Jira wiki markup (`### ...` → `*...*`, `- [ ] ...` → `# ...`, `` `x` `` → `{{x}}`, tables to `||h||h|| |c|c|`); first line is the PR URL. POST `/rest/api/2/issue/{id}/comment` via heredoc + `jq --rawfile` + `curl --data-binary @file`. Token resolved from `keychainMapping.jira`.
|
|
326
|
+
|
|
327
|
+
Full contract: [`refs/channels/jira.md`](refs/channels/jira.md) — full conversion table, multi-repo PR-list prepend, Wiki→Jira triad interaction.
|
|
328
|
+
|
|
329
|
+
#### Adapter: Confluence page
|
|
330
|
+
Token from `keychainMapping.confluence`; missing/expired triggers the inline Save Flow from `setup.md`. Parent page picked from `prefs.projects[<project>].confluenceUrls` recents (LRU, max 5) or paste new URL. Auto-suggest title `"{jiraId} — {taskTitle}"`. Body converted to Confluence storage format (`<h3>`, `<table>`, `<ac:structured-macro>` code blocks). POST `/rest/api/content`; URL saved back to recents.
|
|
331
|
+
|
|
332
|
+
Full contract: [`refs/channels/confluence.md`](refs/channels/confluence.md) — URL parsing rules, full storage-XML conversion table, update-vs-create branch.
|
|
333
|
+
|
|
334
|
+
#### Adapter: Board (GitHub Projects v2 status move)
|
|
335
|
+
|
|
336
|
+
**Precondition gate:** `figmaConfig.board.enabled === true` AND `figmaConfig.board.provider === "github-projects-v2"` AND `figmaConfig.github.projectV2Id` non-empty. If not met, the channel is greyed in the menu (Step 3b rule) and the adapter is skipped silently in flag-mode dispatch.
|
|
337
|
+
|
|
338
|
+
**Default target column:** `inReview` — read from `figmaConfig.github.fieldOptions.status.inReview` (the option ID, e.g. `bdb0d8ef`). Other column targets (e.g. `done`, `bugfix`) overridable via flag `--board-status <key>` where `<key>` matches a key under `fieldOptions.status`.
|
|
339
|
+
|
|
340
|
+
**Token:** `prefs.global.keychainMapping.github_projects` (preferred — must include `project,read:project` scopes). Fallback chain: `keychainMapping.github` → standard key `${USER}_Github_Access_Token`. Resolve via `~/.claude/lib/credential-store.sh get <key>` (cross-platform — delegates to macOS Keychain / Linux libsecret / Windows Credential Manager). Token must NOT be passed on the CLI — export as `GH_TOKEN` env var only (per memory rule on token leakage).
|
|
341
|
+
|
|
342
|
+
**Item lookup:** the issue's project item ID is fetched via GraphQL `repository.issue(number).projectItems(first:5)` filtered to `project.id === figmaConfig.github.projectV2Id`. If the issue is not yet in the project, dispatch silently no-ops with reason `"issue not on board"` in the summary.
|
|
343
|
+
|
|
344
|
+
**Mutation:** GraphQL `updateProjectV2ItemFieldValue(input: { projectId, itemId, fieldId: figmaConfig.github.projectV2Fields.status, value: { singleSelectOptionId: <target> } })`. Verify by re-querying `fieldValueByName(name: "Status")` on the same item; assert `name === target column label` from `figmaConfig.board.columns`.
|
|
345
|
+
|
|
346
|
+
**Multi-repo:** runs **once** (board status is keyed off the GitHub Issue, not per-PR). When `state.projects[].length > 1`, the primary repo's issue is the target; extras' PRs do not trigger additional moves.
|
|
347
|
+
|
|
348
|
+
**Idempotency:** if the issue is already on the target column, the mutation is a no-op and the adapter reports `"already in <column>"` in the summary.
|
|
349
|
+
|
|
350
|
+
Full contract: [`refs/channels/board.md`](refs/channels/board.md) — token scope upgrade flow (`gh auth refresh -s project,read:project`), field-ID auto-discovery for repos missing `projectV2Fields.status` in figma-config, error-recovery (token expired vs scope insufficient).
|
|
351
|
+
|
|
352
|
+
#### Adapter: Wiki
|
|
353
|
+
**Precondition gate:** `state.taskType === "component"` AND `figmaConfig.wiki.enabled === true`. If not met, shows the Case B menu from `refs/wiki-capture.md` (setup / skip / disable / manual-note).
|
|
354
|
+
|
|
355
|
+
**Wiki → Jira comment auto-link** (triad contract, preserved from v5.6): when the Wiki adapter writes pages AND `state.jiraId` is set AND `prefs.global.wikiToJiraComment === true`, also post a humanizer-passed summary of the wiki pages (component name + variant count + wiki URL) as an additional Jira comment on the same issue. Independent of the main Jira channel's comment — both can coexist. Full contract in `refs/issue-jira-triad.md`.
|
|
356
|
+
|
|
357
|
+
**If preconditions met (Case A):** scope multi-select prompt (Ana sayfa / iOS sub-page / Screenshots / Index updates / Diğer); adapter dispatched to `pipeline/skills/figma-ios/figma-component-wiki` (or `figma-android/`).
|
|
358
|
+
|
|
359
|
+
Full contract: [`refs/channels/wiki.md`](refs/channels/wiki.md) — all four `figma-config.wiki.mode` adapters (submodule / in-repo / github-wiki / separate-repo), full Case A scope menu, screenshot quadrant gate.
|
|
360
|
+
|
|
361
|
+
### Step 7 — Summary
|
|
362
|
+
|
|
363
|
+
After all adapters complete (or fail non-blocking):
|
|
364
|
+
|
|
365
|
+
```
|
|
366
|
+
channels dispatch complete
|
|
367
|
+
PR description ✓ version 3→4, reviewers 23 preserved
|
|
368
|
+
Jira comment ✓ posted → <jira-url>?focusedCommentId=2484780
|
|
369
|
+
Confluence – skipped: user declined
|
|
370
|
+
Wiki ✓ 3 files via github-wiki adapter
|
|
371
|
+
Board ✓ In Develop → In Review (project #4)
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
Each line: status symbol (`✓` / `✗` / `–`), key metric, URL where applicable.
|
|
375
|
+
|
|
376
|
+
Persist selections to `prefs.global.reportChannels` + `prefs.global.reportContent` for next run default.
|
|
377
|
+
|
|
378
|
+
## Flags
|
|
379
|
+
|
|
380
|
+
| Flag | Effect |
|
|
381
|
+
|------|--------|
|
|
382
|
+
| `--channels pr,jira,confluence,wiki` | Non-interactive kanal selection (comma list). Skips kanal menu. |
|
|
383
|
+
| `--content normal,technical,test,auto-diff,note` | Non-interactive content selection. Skips content menu. |
|
|
384
|
+
| `--message "..."` | Manual mode — use user text as source, no diff read. Forces `content=note`. |
|
|
385
|
+
| `--message-file path` | Manual mode, long message from file. |
|
|
386
|
+
| `--append` | PR description: append instead of replace. |
|
|
387
|
+
| `--dry-run` | Generate, print to stdout, do not POST. |
|
|
388
|
+
| `--lang=tr\|en\|both` | Output language override (default: `en`; `promptLanguage` is locked to `en`). |
|
|
389
|
+
| `--ready` | If PR draft, promote to READY after channels dispatch. |
|
|
390
|
+
|
|
391
|
+
## Required rules
|
|
392
|
+
|
|
393
|
+
- **Bitbucket reviewer preservation** — every PR PUT MUST carry current `reviewers`, `fromRef`, `toRef`, `draft`. Omitting any resets that field server-side.
|
|
394
|
+
- **Default is replace, not append** for PR description. `--append` opt-in.
|
|
395
|
+
- **Real newlines + no HTML entities** in ALL bodies (Jira, Confluence, PR): heredoc + `jq --rawfile` + `curl --data-binary @file`. Never embed `\n` literally — Jira/Bitbucket save verbatim.
|
|
396
|
+
- **Humanizer per-channel** — each channel body runs humanizer independently. Tones differ (Jira informal, Confluence formal, PR technical).
|
|
397
|
+
- **No markers** — channels does a full replace each run; no `<!-- channels:start -->` bookmarks.
|
|
398
|
+
- **Every body item references a symbol/file/line** from diff or pipeline log. No generic "tested the feature" sentences.
|
|
399
|
+
- **Adapter failures are non-blocking** — one channel failing does not abort others. Final summary shows per-adapter status.
|
|
400
|
+
|
|
401
|
+
## Error handling
|
|
402
|
+
|
|
403
|
+
| Condition | Behavior |
|
|
404
|
+
|-----------|----------|
|
|
405
|
+
| No target resolvable | Error, exit 1 |
|
|
406
|
+
| PR not found + Jira selected | Proceed Jira-only, log reason |
|
|
407
|
+
| PR merged/closed | Warn, confirm continue |
|
|
408
|
+
| Author bot / dependabot | Skip entire run |
|
|
409
|
+
| Diff > 2 MB | Ask: skip / top-20-files / cancel |
|
|
410
|
+
| No pipeline log + "Normal analiz" selected | Greyed out at menu; if forced via `--content`, error |
|
|
411
|
+
| Bitbucket PR version mismatch | Refetch once, retry; fail on second mismatch |
|
|
412
|
+
| Jira token missing/expired | Token Save Flow inline; skip on user-skip |
|
|
413
|
+
| Wiki preconditions not met | Case B menu per `refs/wiki-capture.md` |
|
|
414
|
+
|
|
415
|
+
## Phase 7 delegation contract
|
|
416
|
+
|
|
417
|
+
Phase 7 invokes this command internally instead of running its own inline Jira/Confluence/Wiki logic. Responsibilities split:
|
|
418
|
+
|
|
419
|
+
| Who | What |
|
|
420
|
+
|---|---|
|
|
421
|
+
| Phase 7 | Progress tracker (sub-steps 1-3), agent-log finalization (step 4), knowledge+memory capture (step 5), telemetry emission |
|
|
422
|
+
| `channels` | All external delivery: PR description update, Jira comment, Confluence page, Wiki pages |
|
|
423
|
+
|
|
424
|
+
Phase 7 passes a runtime state bundle: `{jiraId, prUrl, remoteType, taskType, figmaConfig, agentState, pipelineLogPath}`. `channels` reads these directly, skips target-resolution Step 1.
|
|
425
|
+
|
|
426
|
+
**Autopilot contract:** Phase 7 ALWAYS pauses at the channels menu (breaks generic autopilot zero-interaction). 30-min timeout → session ends cleanly, task resumable via `/multi-agent:resume`. See `refs/phases/modes.md` for full contract.
|
|
427
|
+
|
|
428
|
+
## Cross-CLI parity
|
|
429
|
+
|
|
430
|
+
| CLI | Command name | Invocation |
|
|
431
|
+
|---|---|---|
|
|
432
|
+
| Claude Code | `/multi-agent:channels` | Slash namespace (colon) |
|
|
433
|
+
| Copilot CLI | `multi-agent-channels` | Top-level command (dash-separated, no namespace support) |
|
|
434
|
+
|
|
435
|
+
Both installations read the same source file (`pipeline/commands/multi-agent/channels.md`) — `install.js --all` copies to:
|
|
436
|
+
- `~/.claude/commands/multi-agent/channels.md`
|
|
437
|
+
- `~/.copilot/commands/multi-agent-channels.md`
|
|
438
|
+
|
|
439
|
+
Prompts MUST be byte-identical. `smoke-cross-cli-behavior.sh` asserts this — spacing, brackets, numbering, log-line format.
|
|
440
|
+
|
|
441
|
+
Progress emission on Copilot (no native TaskCreate UI): `bash ~/.copilot/scripts/phase-tracker.sh sub 7 <N> "<step>" <status>` — same shape as Phase 7.
|
|
442
|
+
|
|
443
|
+
## Examples
|
|
444
|
+
|
|
445
|
+
```
|
|
446
|
+
/multi-agent:channels
|
|
447
|
+
→ resolves from cwd+branch → PROJ-12345 + PR #3433
|
|
448
|
+
→ menu: PR ✓ Jira ✓ / Normal analiz ✓ Test senaryoları ✓
|
|
449
|
+
→ PR description replaced (v3→4, 23 reviewers preserved)
|
|
450
|
+
→ Jira comment posted (id 2484780)
|
|
451
|
+
→ Confluence – Wiki –
|
|
452
|
+
|
|
453
|
+
/multi-agent:channels PROJ-12345 --channels confluence --content note --message-file notes.md
|
|
454
|
+
→ non-interactive: only Confluence, content from notes.md
|
|
455
|
+
→ asks: parent page URL (or recent [1] / [2])
|
|
456
|
+
→ page created → https://<host>/pages/12345
|
|
457
|
+
|
|
458
|
+
/multi-agent:channels https://<bitbucket>/.../pull-requests/42 --dry-run
|
|
459
|
+
→ resolves → PROJ-67890
|
|
460
|
+
→ prints Jira + PR body preview to stdout, no POST
|
|
461
|
+
|
|
462
|
+
/multi-agent:channels --message "root: PNR empty, UI silent. fix: length>0 guard in HomeVC.m"
|
|
463
|
+
→ auto-diff from cwd+branch PR + user note combined
|
|
464
|
+
→ posts to default kanals (PR + Jira)
|
|
465
|
+
```
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Uninstall the pipeline from every CLI (Claude / Copilot / Cursor / Windsurf / Cline). Keychain access tokens are left untouched. Asks for double confirmation."
|
|
3
|
+
argument-hint: "[--dry-run] [--claude] [--copilot] [--cursor] [--windsurf] [--cline] [--target=<path>]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# multi-agent delete — Token-Preserving Uninstall
|
|
7
|
+
|
|
8
|
+
Uninstalls the pipeline itself from the system. **This is different from `:purge`:**
|
|
9
|
+
|
|
10
|
+
| Command | What it removes |
|
|
11
|
+
|---|---|
|
|
12
|
+
| `:purge` | Active tasks' worktrees / branches / logs / state (development data) |
|
|
13
|
+
| `:delete` | The pipeline itself: skills, commands, agents, scripts, rules — from every CLI |
|
|
14
|
+
|
|
15
|
+
## Never deleted
|
|
16
|
+
|
|
17
|
+
- **Keychain / Credential Manager / libsecret** personal access tokens (GitHub, Jira, Bitbucket, Confluence, Telegram, Vercel, Firebase, etc.)
|
|
18
|
+
- `~/.claude/CLAUDE.md` (user customisations)
|
|
19
|
+
- `~/.claude/multi-agent-preferences.json` (user settings)
|
|
20
|
+
- User content OUTSIDE the `<!-- multi-agent-pipeline:begin/end -->` markers (`.windsurfrules`, `copilot-instructions.md`)
|
|
21
|
+
|
|
22
|
+
## Steps
|
|
23
|
+
|
|
24
|
+
1. **Determine scope** — parse `$ARGUMENTS`:
|
|
25
|
+
- No target flag: every installed target (default)
|
|
26
|
+
- `--claude / --copilot / --cursor / --windsurf / --cline`: selective
|
|
27
|
+
- `--target=<path>`: adapter target (default: cwd)
|
|
28
|
+
- `--dry-run`: report only, delete nothing
|
|
29
|
+
|
|
30
|
+
2. **Show a preview** (run the script with `--dry-run`):
|
|
31
|
+
```bash
|
|
32
|
+
node "$HOME/.claude/scripts/uninstall.mjs" --dry-run --yes <flags>
|
|
33
|
+
```
|
|
34
|
+
Show the output raw to the user.
|
|
35
|
+
|
|
36
|
+
3. **First confirmation**:
|
|
37
|
+
> "The above will be deleted. Tokens will NOT be touched. Continue? (y/N)"
|
|
38
|
+
- `n` → cancel, exit.
|
|
39
|
+
|
|
40
|
+
4. **Second confirmation** (paranoia gate, same pattern as `:purge`):
|
|
41
|
+
> "Irreversible. Type 'delete' to confirm:"
|
|
42
|
+
- Anything other than `delete` → cancel.
|
|
43
|
+
|
|
44
|
+
5. **Delete** — run the real script with `--yes`:
|
|
45
|
+
```bash
|
|
46
|
+
node "$HOME/.claude/scripts/uninstall.mjs" --yes <flags>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
6. **Confirm**:
|
|
50
|
+
```
|
|
51
|
+
✓ multi-agent-pipeline removed.
|
|
52
|
+
ℹ Personal access tokens preserved in Keychain.
|
|
53
|
+
```
|
|
54
|
+
Remind the user how to inspect the tokens (cross-platform — same command on every backend):
|
|
55
|
+
- `~/.claude/lib/credential-store.sh get "<service>"`
|
|
56
|
+
|
|
57
|
+
7. **Reinstall** (if the user wants to):
|
|
58
|
+
```bash
|
|
59
|
+
npx @mmerterden/multi-agent-pipeline install
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Notes
|
|
63
|
+
|
|
64
|
+
- This command does NOT remove the *installed copy* of the npm package. It only removes the distributed files. `npm uninstall -g @mmerterden/multi-agent-pipeline` is a separate step.
|
|
65
|
+
- `--dry-run` is always safe — zero side effects.
|
|
66
|
+
- The adapter target (Cursor / Windsurf / Cline) is the cwd. For another repo, pass `--target=<path>`.
|