@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,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Structured deployment checklist for iOS App Store submission
|
|
3
|
+
allowed-tools: Read, Bash, Glob, Grep, Agent
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Run through the iOS deployment checklist before App Store submission.
|
|
7
|
+
|
|
8
|
+
## Pre-Deployment Checklist
|
|
9
|
+
|
|
10
|
+
### 1. Version & Build
|
|
11
|
+
|
|
12
|
+
- [ ] `CFBundleShortVersionString` incremented
|
|
13
|
+
- [ ] `CFBundleVersion` incremented
|
|
14
|
+
- [ ] Version matches App Store Connect
|
|
15
|
+
|
|
16
|
+
### 2. Code Quality
|
|
17
|
+
|
|
18
|
+
- [ ] No `print()`, `debugPrint()`, `NSLog()` in production code
|
|
19
|
+
- [ ] No debug tools (Netfox, FLEX, CocoaDebug) in Release config
|
|
20
|
+
- [ ] No `#if DEBUG` blocks leaking into Release
|
|
21
|
+
- [ ] No hardcoded test/staging URLs
|
|
22
|
+
|
|
23
|
+
### 3. Signing & Provisioning
|
|
24
|
+
|
|
25
|
+
- [ ] Correct distribution certificate
|
|
26
|
+
- [ ] App Store provisioning profile (not Ad Hoc/Dev)
|
|
27
|
+
- [ ] All extensions signed with same team
|
|
28
|
+
- [ ] Push notification entitlement = production
|
|
29
|
+
|
|
30
|
+
### 4. Privacy & Compliance
|
|
31
|
+
|
|
32
|
+
- [ ] PrivacyInfo.xcprivacy present and complete
|
|
33
|
+
- [ ] All Required Reason APIs declared with valid codes
|
|
34
|
+
- [ ] Purpose strings meaningful (not vague)
|
|
35
|
+
- [ ] ATT prompt only if tracking
|
|
36
|
+
|
|
37
|
+
### 5. Assets
|
|
38
|
+
|
|
39
|
+
- [ ] All app icon sizes present
|
|
40
|
+
- [ ] Launch storyboard configured
|
|
41
|
+
- [ ] No placeholder/test images
|
|
42
|
+
|
|
43
|
+
### 6. Archive & Upload
|
|
44
|
+
|
|
45
|
+
- [ ] Archive with Release configuration
|
|
46
|
+
- [ ] Run App Store compliance scan: `/archive-guard <archive>` (uses `ios_app_store_audit` MCP tool)
|
|
47
|
+
- [ ] Upload via Xcode Organizer or `xcrun altool`
|
|
48
|
+
- [ ] Verify in App Store Connect
|
|
49
|
+
|
|
50
|
+
## Steps
|
|
51
|
+
|
|
52
|
+
1. Check each item by reading relevant project files.
|
|
53
|
+
2. Report status for each item (PASS/FAIL/SKIP).
|
|
54
|
+
3. Block deployment if any critical item fails.
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Figma URL -> SwiftUI component generation (full 8-phase pipeline with SubPhases)"
|
|
3
|
+
allowed-tools: Read, Write, Edit, Glob, Grep, Bash, Agent, WebFetch, TaskCreate, TaskUpdate
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Figma -> SwiftUI Component Generator
|
|
7
|
+
|
|
8
|
+
Generate a production-ready SwiftUI component from a Figma design URL.
|
|
9
|
+
|
|
10
|
+
**Input**: $ARGUMENTS (Figma URL, or component name if already gathered)
|
|
11
|
+
|
|
12
|
+
## Phase Order
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
0-Init -> 1-Gather -> 2A-TestingIDs -> 2B-Localization -> 2C-Accessibility -> 2D-Analytics
|
|
16
|
+
-> 3-TokenMapping -> 4A-Configuration -> 4B-View -> 4C-Docs -> 4D-Preview -> 4E-Modifiers
|
|
17
|
+
-> 4F-Wiki -> 5A-ViewInspector -> 5B-Snapshot -> 5C-Unit -> 6-CodeConnect
|
|
18
|
+
-> 7-IssueBodyUpdate -> 8-Cleanup
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
When invoked from `/multi-agent` with `instructionDriven == true` (figma instruction file detected), this skill takes over Phase 3 of the main pipeline. Progress is reported as SubPhases under the main pipeline's Phase 3:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
* Phase 3: Dev (figma) in progress
|
|
25
|
+
■ SubPhase 3.0: Init completed
|
|
26
|
+
■ SubPhase 3.1: Gather completed
|
|
27
|
+
* SubPhase 3.4F: Wiki writing wiki pages...
|
|
28
|
+
□ SubPhase 3.5C: Unit Tests pending
|
|
29
|
+
...
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Phase 0: Init
|
|
33
|
+
|
|
34
|
+
1. Parse Figma URL — extract fileKey and nodeId
|
|
35
|
+
2. Detect component name from Figma metadata or user input
|
|
36
|
+
3. Create branch: `feature/{JIRA_KEY}-{component-name}`
|
|
37
|
+
4. Create task list for all phases
|
|
38
|
+
|
|
39
|
+
## Phase 1: Gather
|
|
40
|
+
|
|
41
|
+
1. Fetch design context from Figma (use `get_design_context` if Figma MCP available, or screenshot)
|
|
42
|
+
2. Identify: variants, states, properties, design tokens
|
|
43
|
+
3. Document in a gathering summary
|
|
44
|
+
|
|
45
|
+
## Phase 2: Preparation (parallel sub-phases)
|
|
46
|
+
|
|
47
|
+
### 2A: Testing Identifiers
|
|
48
|
+
- Define `UITestingIdentifiers` enum for every interactive element
|
|
49
|
+
- Pattern: `{ComponentName}_{elementName}` (e.g., `Button_title`, `Button_icon`)
|
|
50
|
+
|
|
51
|
+
### 2B: Localization
|
|
52
|
+
- Extract all user-facing strings
|
|
53
|
+
- Create localization keys: `{componentName}.{element}` (e.g., `button.title`)
|
|
54
|
+
|
|
55
|
+
### 2C: Accessibility
|
|
56
|
+
- Define VoiceOver labels, hints, traits for each element
|
|
57
|
+
- Minimum tap target: 44x44pt
|
|
58
|
+
- Dynamic Type support plan
|
|
59
|
+
|
|
60
|
+
### 2D: Analytics
|
|
61
|
+
- Define analytics events per interaction
|
|
62
|
+
- Pattern: `{componentName}_{action}` (e.g., `button_tapped`)
|
|
63
|
+
|
|
64
|
+
## Phase 3: Token Mapping
|
|
65
|
+
|
|
66
|
+
Map Figma design values to project design tokens:
|
|
67
|
+
|
|
68
|
+
| Figma Value | Token |
|
|
69
|
+
|-------------|-------|
|
|
70
|
+
| Padding 16 | `.Spacing.spacing16` |
|
|
71
|
+
| Color #E31837 | `Color.Primary.primary` |
|
|
72
|
+
| Font 16/semibold | `.typographyStyle(.body1)` |
|
|
73
|
+
| Corner 8 | `.CornerRadius.radius8` |
|
|
74
|
+
|
|
75
|
+
**Rules**:
|
|
76
|
+
- No magic numbers — all values reference design tokens
|
|
77
|
+
- No raw hex colors — use semantic color tokens
|
|
78
|
+
- No raw `.font()` — use typography tokens
|
|
79
|
+
- Token hierarchy: Spacing > Size > Radius > BorderWidth > Color > Typography
|
|
80
|
+
|
|
81
|
+
## Phase 4: Implementation (sequential sub-phases)
|
|
82
|
+
|
|
83
|
+
### 4A: Configuration
|
|
84
|
+
```swift
|
|
85
|
+
// {Name}Configuration.swift
|
|
86
|
+
struct {Name}Configuration {
|
|
87
|
+
var title: String = ""
|
|
88
|
+
var style: {Name}Style = .primary
|
|
89
|
+
var isEnabled: Bool = true
|
|
90
|
+
// ... all properties from Figma variants
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
- Pure value type, no side effects, no view logic
|
|
94
|
+
- Every Figma variant maps to a property
|
|
95
|
+
- Sensible defaults for all properties
|
|
96
|
+
|
|
97
|
+
### 4B: View
|
|
98
|
+
```swift
|
|
99
|
+
// {Name}View.swift
|
|
100
|
+
struct {Name}View: View {
|
|
101
|
+
let configuration: {Name}Configuration
|
|
102
|
+
|
|
103
|
+
var body: some View {
|
|
104
|
+
// Render using configuration + design tokens
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
- Renders Configuration only
|
|
109
|
+
- Uses design tokens (no magic numbers)
|
|
110
|
+
- Accessibility identifiers on every interactive element
|
|
111
|
+
|
|
112
|
+
### 4C: Documentation
|
|
113
|
+
```markdown
|
|
114
|
+
// FIGMA.md
|
|
115
|
+
## {Name} Component
|
|
116
|
+
| Variant | Property | Values |
|
|
117
|
+
|---------|----------|--------|
|
|
118
|
+
| Style | style | primary, secondary, ghost |
|
|
119
|
+
| Size | size | small, medium, large |
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 4D: Preview
|
|
123
|
+
```swift
|
|
124
|
+
#Preview("{Name} - All Variants") {
|
|
125
|
+
VStack {
|
|
126
|
+
// Every meaningful variant combination
|
|
127
|
+
// Light + Dark
|
|
128
|
+
// LTR + RTL
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 4E: Modifiers
|
|
134
|
+
```swift
|
|
135
|
+
// {Name}+Modifiers.swift
|
|
136
|
+
extension {Name}View {
|
|
137
|
+
func title(_ value: String) -> {Name}View {
|
|
138
|
+
var config = configuration
|
|
139
|
+
config.title = value
|
|
140
|
+
return {Name}View(configuration: config)
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
- Fluent API chain for every configuration property
|
|
145
|
+
|
|
146
|
+
### 4F: Wiki (auto-detected, auto-skipped if no wiki submodule)
|
|
147
|
+
|
|
148
|
+
Generate and push wiki documentation pages to the wiki submodule.
|
|
149
|
+
|
|
150
|
+
**Prerequisites check** (deterministic, no prompt):
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# 1. Wiki submodule — auto-detect from .gitmodules
|
|
154
|
+
WIKI_REL=$(git -C "$PROJECT_ROOT" config -f .gitmodules --get-regexp 'submodule\..*\.path' 2>/dev/null \
|
|
155
|
+
| awk '{print $2}' | grep -i 'wiki' | head -1)
|
|
156
|
+
|
|
157
|
+
# Preference override
|
|
158
|
+
WIKI_PATH_PREF=$(jq -r ".projects[\"$PROJECT\"].wikiPath // empty" "$PREFS_FILE")
|
|
159
|
+
[ -n "$WIKI_PATH_PREF" ] && WIKI_REL_ABS="$WIKI_PATH_PREF"
|
|
160
|
+
[ -n "$WIKI_REL" ] && WIKI_REL_ABS="$PROJECT_ROOT/$WIKI_REL"
|
|
161
|
+
|
|
162
|
+
# User preference: disabled?
|
|
163
|
+
WIKI_PREF=$(jq -r ".projects[\"$PROJECT\"].wikiPhase // empty" "$PREFS_FILE")
|
|
164
|
+
[ "$WIKI_PREF" = "disabled" ] && { log "4F-Wiki disabled for $PROJECT — skipping"; exit 0; }
|
|
165
|
+
|
|
166
|
+
# No wiki found
|
|
167
|
+
[ -z "$WIKI_REL_ABS" ] && {
|
|
168
|
+
if autopilot; then exit 0; fi # autopilot: silent skip
|
|
169
|
+
ask_user "No wiki submodule. (1) add submodule (2) use custom path (3) skip once (4) disable permanently"
|
|
170
|
+
# Persist user choice to prefs
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
# Figma token
|
|
174
|
+
DESIGN_TOKEN_KEY=$(jq -r '.global.keychainMapping.figma // empty' "$PREFS_FILE")
|
|
175
|
+
[ -z "$DESIGN_TOKEN_KEY" ] && DESIGN_TOKEN_KEY="${USER}_Figma_Access_Token"
|
|
176
|
+
DESIGN_TOKEN=$(~/.claude/lib/credential-store.sh get "$DESIGN_TOKEN_KEY" 2>/dev/null)
|
|
177
|
+
|
|
178
|
+
# Default branch
|
|
179
|
+
WIKI_BRANCH=$(git -C "$WIKI_REL_ABS" symbolic-ref refs/remotes/origin/HEAD 2>/dev/null \
|
|
180
|
+
| sed 's|refs/remotes/origin/||')
|
|
181
|
+
[ -z "$WIKI_BRANCH" ] && WIKI_BRANCH=$(git -C "$WIKI_REL_ABS" branch --show-current)
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Steps**:
|
|
185
|
+
|
|
186
|
+
1. **Create wiki component dir**:
|
|
187
|
+
```bash
|
|
188
|
+
mkdir -p "$WIKI_REL_ABS/{wikiCategory}/{ComponentName}/assets"
|
|
189
|
+
```
|
|
190
|
+
`wikiCategory` mirrors the component's folder layout inside the product repo.
|
|
191
|
+
|
|
192
|
+
2. **Fetch design-source screenshot** (Figma by default; other sources swap the fetch call):
|
|
193
|
+
```bash
|
|
194
|
+
RESPONSE=$(curl -s "https://api.figma.com/v1/images/{fileKey}?ids={nodeId}&format=png&scale=2" \
|
|
195
|
+
-H "X-Figma-Token: $DESIGN_TOKEN")
|
|
196
|
+
IMAGE_URL=$(echo "$RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['images']['{nodeId}'])")
|
|
197
|
+
curl -s -o "$WIKI_REL_ABS/{wikiCategory}/{ComponentName}/assets/screenshot.png" "$IMAGE_URL"
|
|
198
|
+
```
|
|
199
|
+
If `DESIGN_TOKEN` missing: leave a `TODO: add screenshot` placeholder, continue.
|
|
200
|
+
|
|
201
|
+
3. **Generate main wiki page** (`{ComponentName}.md`) — sections:
|
|
202
|
+
Title · screenshot embed · Figma link · Screen/Section/Size metadata · Overview · Testing Identifiers · Localization Keys · Accessibility · Analytics Events · Sub-Components · Platform Implementations (iOS/Android/Web status) · Changelog.
|
|
203
|
+
|
|
204
|
+
4. **Generate platform-specific page** (`{ComponentName}-iOS.md`) — sections:
|
|
205
|
+
Initializer · Parameters · Modifiers · Usage · Design Tokens · Testing Identifiers iOS · Code Connect · Snapshot Tests (image embeds) · Test Coverage · Changelog.
|
|
206
|
+
|
|
207
|
+
5. **Commit and push**:
|
|
208
|
+
```bash
|
|
209
|
+
cd "$WIKI_REL_ABS"
|
|
210
|
+
git add "{wikiCategory}/{ComponentName}/"
|
|
211
|
+
git -c user.name="{identity.name}" -c user.email="{identity.email}" \
|
|
212
|
+
commit -m "docs({scope}): add {ComponentName} wiki pages [{jiraId}]"
|
|
213
|
+
git fetch origin && git rebase "origin/$WIKI_BRANCH"
|
|
214
|
+
git push origin "HEAD:$WIKI_BRANCH"
|
|
215
|
+
```
|
|
216
|
+
Retry rebase up to 3 times on reject; never force-push.
|
|
217
|
+
|
|
218
|
+
## Phase 5: Testing (3-layer strategy)
|
|
219
|
+
|
|
220
|
+
### 5A: ViewInspector (Structural)
|
|
221
|
+
- Verify subview hierarchy
|
|
222
|
+
- Verify modifiers applied correctly
|
|
223
|
+
- Verify accessibility identifiers present
|
|
224
|
+
|
|
225
|
+
### 5B: Snapshot Tests (Visual)
|
|
226
|
+
- Light mode + Dark mode
|
|
227
|
+
- LTR + RTL
|
|
228
|
+
- All variant combinations
|
|
229
|
+
|
|
230
|
+
### 5C: Unit Tests (Behavioral)
|
|
231
|
+
- Configuration mutations
|
|
232
|
+
- Modifier chain correctness
|
|
233
|
+
- Default values
|
|
234
|
+
|
|
235
|
+
## Phase 6: Code Connect
|
|
236
|
+
|
|
237
|
+
```swift
|
|
238
|
+
// {Name}.figma.swift
|
|
239
|
+
import FigmaConnect
|
|
240
|
+
|
|
241
|
+
@FigmaConnect("{fileKey}", "{nodeId}")
|
|
242
|
+
struct {Name}CodeConnect {
|
|
243
|
+
// Map Figma variants to Configuration properties
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
## Phase 7: Issue Body Update (GitHub Issue only)
|
|
248
|
+
|
|
249
|
+
If a GitHub Issue tracks this component, update its body after commit + PR:
|
|
250
|
+
- Fill the `### Pull Requests` section with PR URL(s), one row per submodule touched
|
|
251
|
+
- Flip Implementation / Testing / Code Connect flags from Pending to Done using whatever marker the template uses (match in place, don't introduce new markers)
|
|
252
|
+
- Flip the Wiki flag to Done (SubPhase 4F already pushed the wiki pages)
|
|
253
|
+
- Apply with `gh issue edit {issueNo} --body "{updated body}"` — preserve every other section unchanged
|
|
254
|
+
- NEVER use `Closes:` / `Fixes:` / `Resolves:` keywords — use `Ref:` or `Related:` instead
|
|
255
|
+
|
|
256
|
+
Skip this phase if the task has no GitHub Issue (Jira-only or free-text runs).
|
|
257
|
+
|
|
258
|
+
## Phase 8: Cleanup & Review
|
|
259
|
+
|
|
260
|
+
Run the 14-item checklist:
|
|
261
|
+
1. File completeness (Configuration, View, Modifiers, .figma.swift, FIGMA.md)
|
|
262
|
+
2. No magic numbers (design tokens required)
|
|
263
|
+
3. Configuration purity (no side effects)
|
|
264
|
+
4. Modifier correctness (fluent API)
|
|
265
|
+
5. Accessibility identifiers on every interactive element
|
|
266
|
+
6. Analytics events tracked
|
|
267
|
+
7. Testing identifier pipeline
|
|
268
|
+
8. Preview quality (LTR + RTL, Light + Dark)
|
|
269
|
+
9. Code Connect mapping
|
|
270
|
+
10. View implementation quality
|
|
271
|
+
11. FIGMA.md documentation complete
|
|
272
|
+
12. Artifact cleanup
|
|
273
|
+
13. Build verification (`xcodebuild`)
|
|
274
|
+
14. Test verification (ViewInspector + Snapshot + Unit)
|
|
275
|
+
|
|
276
|
+
## Output Files
|
|
277
|
+
|
|
278
|
+
| File | Content |
|
|
279
|
+
|------|---------|
|
|
280
|
+
| `{Name}Configuration.swift` | Pure value type: all properties |
|
|
281
|
+
| `{Name}View.swift` | SwiftUI view, renders Configuration |
|
|
282
|
+
| `{Name}+Modifiers.swift` | Fluent modifier API chain |
|
|
283
|
+
| `{Name}.figma.swift` | Code Connect registration |
|
|
284
|
+
| `FIGMA.md` | Variant matrix, usage examples |
|
|
285
|
+
| `{Name}Tests.swift` | ViewInspector structural tests |
|
|
286
|
+
| `{Name}SnapshotTests.swift` | Snapshot visual tests |
|
|
287
|
+
| `{Name}UnitTests.swift` | Unit behavioral tests |
|
|
288
|
+
|
|
289
|
+
## Sub-Commands
|
|
290
|
+
|
|
291
|
+
| Command | What It Does |
|
|
292
|
+
|---------|-------------|
|
|
293
|
+
| `/figma-to-swiftui <url>` | Full pipeline (this command) |
|
|
294
|
+
| `/figma-to-swiftui commit <Name>` | 14-item review + commit + PR |
|
|
295
|
+
| `/figma-to-swiftui review <Name>` | Interactive review (approve/request changes) |
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Internal — interactive account picker for multi-agent."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# _account-picker — Account Selection
|
|
6
|
+
|
|
7
|
+
First step of every `multi-agent` flow **that touches a remote provider**.
|
|
8
|
+
|
|
9
|
+
> **Skip rule (local-only flow)**: When the input is `freetext` AND the user's
|
|
10
|
+
> repo selection will end up being entirely local (no github/bitbucket account
|
|
11
|
+
> needed for any selected primary), this step is **skipped entirely** — no
|
|
12
|
+
> question, no token lookup. Detection: `freetext` flow first fetches local
|
|
13
|
+
> repos (`repo-cache.sh local "$HOME"`); if the picker resolves to local-only
|
|
14
|
+
> repos, account-picker is bypassed and the state file's `accountId` is left
|
|
15
|
+
> `null` with `tokens={}`. Phases 6/7 read these as "local-only" signals.
|
|
16
|
+
|
|
17
|
+
> **Language**: User-facing prompt strings always render in English (`promptLanguage` is locked to `"en"`). Commit/PR/Jira payloads always English.
|
|
18
|
+
|
|
19
|
+
## Steps
|
|
20
|
+
|
|
21
|
+
1. **Fetch account inventory**:
|
|
22
|
+
```bash
|
|
23
|
+
~/.claude/lib/account-resolver.sh > /tmp/multi-agent-accounts.json
|
|
24
|
+
```
|
|
25
|
+
2. **Filter** when needed:
|
|
26
|
+
- Jira-based flow → `--providers jira`
|
|
27
|
+
- GitHub-based flow → `--providers github`
|
|
28
|
+
- Bitbucket-based flow → `--providers bitbucket`
|
|
29
|
+
|
|
30
|
+
3. **Picker UI** — show via AskUserQuestion:
|
|
31
|
+
```
|
|
32
|
+
[1/N] Select account:
|
|
33
|
+
> {label} ({providers})
|
|
34
|
+
...
|
|
35
|
+
```
|
|
36
|
+
- Single account → auto-select, show info only
|
|
37
|
+
- Multiple → multiSelect=false picker
|
|
38
|
+
|
|
39
|
+
4. **Persist selection to state**:
|
|
40
|
+
- `accountId`, `accountPrefix`, `tokens.{github,jira,bitbucket,confluence}`,
|
|
41
|
+
`jiraHost`, `bitbucketHost`, `isWork`
|
|
42
|
+
|
|
43
|
+
## Autopilot Behavior
|
|
44
|
+
|
|
45
|
+
When `MULTI_AGENT_AUTOPILOT=1`:
|
|
46
|
+
- Single account → auto-select
|
|
47
|
+
- Multiple → default selection priority:
|
|
48
|
+
1. account whose remote matches the cwd repo
|
|
49
|
+
2. `prefs.global.recentAccounts[0]` (most recently used)
|
|
50
|
+
3. first account with `isWork=true`
|
|
51
|
+
4. first account in the list
|
|
52
|
+
- Selection logged: `auto-selected account: {label}`
|
|
53
|
+
|
|
54
|
+
## Recent-accounts write
|
|
55
|
+
|
|
56
|
+
After confirmation (interactive) or auto-selection (autopilot), update
|
|
57
|
+
`prefs.global.recentAccounts[]` LRU-style:
|
|
58
|
+
|
|
59
|
+
1. If selected `id` already in `recentAccounts`, increment its `count`,
|
|
60
|
+
refresh `lastUsed` (ISO 8601 UTC), and move it to position 0.
|
|
61
|
+
2. Otherwise prepend `{id, prefix, lastUsed, count: 1}` and trim to 10 entries.
|
|
62
|
+
3. Atomic write via `prefs.json.tmp` + rename.
|
|
63
|
+
|
|
64
|
+
This is what makes priority rule #2 work — the picker remembers which account
|
|
65
|
+
was used last and surfaces it first on the next autopilot invocation.
|
|
66
|
+
|
|
67
|
+
## Error Cases
|
|
68
|
+
|
|
69
|
+
- No accounts → if the input is `freetext` and at least one local repo exists,
|
|
70
|
+
fall through to local-only flow (skip this step). Otherwise prompt user to
|
|
71
|
+
run `setup` and halt.
|
|
72
|
+
- Filter unmet → "No matching account for this flow ({provider} token required)" → halt.
|
|
73
|
+
|
|
74
|
+
## Output (example)
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"accountId": "m-erden3",
|
|
79
|
+
"accountPrefix": "${USER}",
|
|
80
|
+
"tokens": {
|
|
81
|
+
"github": "${USER}_Github_Access_Token",
|
|
82
|
+
"jira": "${USER}_Jira_Access_Token",
|
|
83
|
+
"bitbucket": "${USER}_Bitbucket_Access_Token",
|
|
84
|
+
"confluence": "${USER}_Confluence_Access_Token"
|
|
85
|
+
},
|
|
86
|
+
"jiraHost": "jira.example.com",
|
|
87
|
+
"bitbucketHost": "bitbucket.example.com",
|
|
88
|
+
"isWork": true
|
|
89
|
+
}
|
|
90
|
+
```
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Internal — dev context (extra repos) picker for multi-agent."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# _dev-context — Extra Dev Repo Selection
|
|
6
|
+
|
|
7
|
+
Selects extra repos the pipeline may touch beyond the primary repo(s) — typically submodules (e.g. SDKs vendored inside an app repo) or sibling libraries. Each candidate is enriched with a `canPush` flag so the picker can pre-select repos that the active account is allowed to edit, and surface read-only ones as advisory context the pipeline will not modify.
|
|
8
|
+
|
|
9
|
+
> **Language**: Per `refs/rules.md` Language Application matrix — `AskUserQuestion.label` and `header` stay English (UI button + chip contract); `question` and `description` follow `outputLanguage`. Commit/PR/Jira/Wiki payloads: subject + branch names + code identifiers stay English; body text follows `outputLanguage`.
|
|
10
|
+
|
|
11
|
+
## Steps
|
|
12
|
+
|
|
13
|
+
1. **Submodule detection (with push-access enrichment)** — when the primary repo is checked out locally:
|
|
14
|
+
```bash
|
|
15
|
+
ACCOUNT_GH_OWNER="$ACCOUNT_GH_OWNER" \
|
|
16
|
+
ACCOUNT_BB_PROJECT_KEY="$ACCOUNT_BB_PROJECT_KEY" \
|
|
17
|
+
PROJECT_PREF_KEY="$PRIMARY_REPO_NAME" \
|
|
18
|
+
~/.claude/lib/submodule-detector.sh "$REPO_PATH"
|
|
19
|
+
```
|
|
20
|
+
Remote fallback (when not cloned):
|
|
21
|
+
```bash
|
|
22
|
+
ACCOUNT_GH_OWNER="$ACCOUNT_GH_OWNER" \
|
|
23
|
+
PROJECT_PREF_KEY="$PRIMARY_REPO_NAME" \
|
|
24
|
+
~/.claude/lib/submodule-detector.sh --remote "<owner>/<repo>"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
`canPush` resolution order (first hit wins):
|
|
28
|
+
1. **prefs override** — `prefs.projects[<key>].editableRelatedRepos[]` matches `<owner>/<repo>` or bare `<name>`
|
|
29
|
+
2. **repo-cache hit** — submodule URL matches a cached repo with `viewerPermission ∈ {ADMIN, MAINTAIN, WRITE}`
|
|
30
|
+
3. **owner-match** — submodule owner equals `ACCOUNT_GH_OWNER`
|
|
31
|
+
4. else `canPush=false` (read-only)
|
|
32
|
+
|
|
33
|
+
2. **Partition results**:
|
|
34
|
+
- `editable` — `canPush=true` → picker options, pre-selected
|
|
35
|
+
- `readonly` — `canPush=false` → printed as an advisory note; not selectable
|
|
36
|
+
|
|
37
|
+
3. **AskUserQuestion (multiSelect=true)**:
|
|
38
|
+
```
|
|
39
|
+
[N/N] Extra editable dev repos (multi):
|
|
40
|
+
[x] <submodule-a> (suggestion: from .gitmodules)
|
|
41
|
+
[x] <submodule-b> (cache hit: write access)
|
|
42
|
+
[ ] <sibling-lib>
|
|
43
|
+
[ ] (none)
|
|
44
|
+
|
|
45
|
+
Read-only siblings (pipeline will NOT modify):
|
|
46
|
+
- <vendored-sdk> (no push access — pipeline works around)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
4. **Empty submit** — user picks nothing → `extras=[]`, primary repo(s) only.
|
|
50
|
+
|
|
51
|
+
## Pref override — `editableRelatedRepos`
|
|
52
|
+
|
|
53
|
+
For repos that aren't on a remote provider (local-only checkout) or to explicitly grant edit rights regardless of provider state, add to `~/.claude/multi-agent-preferences.json`:
|
|
54
|
+
|
|
55
|
+
```jsonc
|
|
56
|
+
"projects": {
|
|
57
|
+
"<project-key>": {
|
|
58
|
+
"remoteType": "github",
|
|
59
|
+
"editableRelatedRepos": [
|
|
60
|
+
"<owner>/<repo>", // owner/repo form
|
|
61
|
+
"<repo-name>" // bare name also matched
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Entries here force `canPush=true` regardless of cache state.
|
|
68
|
+
|
|
69
|
+
## Output
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"extras": [
|
|
74
|
+
{
|
|
75
|
+
"name": "<submodule-name>",
|
|
76
|
+
"cloneUrl": "https://<host>/<owner>/<submodule>.git",
|
|
77
|
+
"provider": "github",
|
|
78
|
+
"source": "submodule",
|
|
79
|
+
"canPush": true,
|
|
80
|
+
"reason": "owner-match"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"readonlySiblings": [
|
|
84
|
+
{
|
|
85
|
+
"name": "<vendored-sdk>",
|
|
86
|
+
"cloneUrl": "https://<host>/<vendor>/<sdk>.git",
|
|
87
|
+
"provider": "github",
|
|
88
|
+
"canPush": false,
|
|
89
|
+
"reason": "unknown"
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Rule
|
|
96
|
+
|
|
97
|
+
This step **always runs**, even in direct-ID mode. Empty submit is allowed → primary repo(s) only.
|
|
98
|
+
|
|
99
|
+
## Autopilot Behavior
|
|
100
|
+
|
|
101
|
+
When `MULTI_AGENT_AUTOPILOT=1`:
|
|
102
|
+
- Auto-select all editable submodules (`canPush=true`).
|
|
103
|
+
- Read-only siblings logged to `agent-log.md` as `readonly-context: [<name>, ...]` but not selected.
|
|
104
|
+
- Selection logged: `auto-selected extras: [<name>, ...]`.
|
|
105
|
+
|
|
106
|
+
## Pipeline contract for read-only siblings
|
|
107
|
+
|
|
108
|
+
When a read-only sibling is present (e.g. a vendored SDK checkout), Phase 3 (Dev) MUST:
|
|
109
|
+
- Treat it as **read-only context** — code may be read for understanding, never edited or committed.
|
|
110
|
+
- Prefer solving the task in the primary repo(s) (e.g. by wrapping/extending in consumer code) rather than patching the sibling.
|
|
111
|
+
- Surface this constraint in the Phase 3 plan output so reviewers know why a workaround was chosen.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Internal — input type detection for multi-agent dispatcher."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# _input-parser — Multi-Agent Input Type Classification
|
|
6
|
+
|
|
7
|
+
The top-level `multi-agent` command classifies user arguments per the rules below.
|
|
8
|
+
|
|
9
|
+
> **Language**: Schema reference only — no user-facing text. Picker UI strings always English (`promptLanguage` is locked to `"en"`). Commit/PR/Jira payloads stay English.
|
|
10
|
+
|
|
11
|
+
## Type Table
|
|
12
|
+
|
|
13
|
+
| # | Pattern | Type | Example |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| 1 | `^[A-Z]+-[0-9]+$` | `jira-id` | `PROJ-1` |
|
|
16
|
+
| 2 | `https?://.*atlassian\.net/browse/.*` or `https?://jira\..*/browse/.*` | `jira-url` | `https://jira.example.com/browse/PROJ-1` |
|
|
17
|
+
| 3 | `https?://github\.com/.*/issues/[0-9]+` | `gh-url` | `https://github.com/o/r/issues/316` |
|
|
18
|
+
| 4 | `^[a-z0-9_-]+#[0-9]+$` | `gh-short` | `my-ios-app#316` |
|
|
19
|
+
| 5 | `^#?[0-9]+$` | `gh-num` | `316`, `#316` |
|
|
20
|
+
| 6 | `^jira$` | `picker-jira` | `jira` |
|
|
21
|
+
| 7 | `^issue$` | `picker-issue` | `issue` |
|
|
22
|
+
| 8 | (none of the above) | `freetext` | `"LoginView dark mode fix"` |
|
|
23
|
+
|
|
24
|
+
## Flow Effect
|
|
25
|
+
|
|
26
|
+
| Type | Account picker | Repo picker | Issue picker | Dev-context picker |
|
|
27
|
+
|---|---|---|---|---|
|
|
28
|
+
| `jira-id` / `jira-url` | ✅ (always) | ❌ | ❌ | ✅ |
|
|
29
|
+
| `gh-url` | ✅ | ❌ (URL implies repo) | ❌ | ✅ |
|
|
30
|
+
| `gh-short` | ✅ | ❌ (input implies repo) | ❌ | ✅ |
|
|
31
|
+
| `gh-num` | ✅ | ✅ (single-select) | ❌ | ✅ |
|
|
32
|
+
| `picker-jira` | ✅ | ✅ project (multi) | ✅ aggregate | ✅ |
|
|
33
|
+
| `picker-issue` | ✅ | ✅ repo (multi) | ✅ aggregate | ✅ |
|
|
34
|
+
| `freetext` | conditional¹ | ✅ (single-select, sources merged²) | ❌ | ✅ |
|
|
35
|
+
|
|
36
|
+
¹ Account picker is **skipped** when the resolved primary repo is local-only
|
|
37
|
+
(`provider="local"`). No token lookup, no provider auth — the pipeline
|
|
38
|
+
proceeds with `accountId=null` and Phases 6/7 honor the local-only mode.
|
|
39
|
+
|
|
40
|
+
² Free-text flow merges `github`+`bitbucket`+`local` repo caches into a
|
|
41
|
+
single picker list; `(local)` rows come from `repo-cache.sh local "$HOME"`.
|
|
42
|
+
|
|
43
|
+
> **Rule**: Dev-context picker **always** runs (empty submit allowed → primary repo only).
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Internal — multi-select repo picker for multi-agent."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# _repo-picker — Repo Selection (Multi-Select)
|
|
6
|
+
|
|
7
|
+
Used by `picker-issue`, `picker-jira`, `gh-num`, and `freetext` flows.
|
|
8
|
+
|
|
9
|
+
> **Language**: Per `refs/rules.md` Language Application matrix — `AskUserQuestion.label` and `header` stay English (UI button + chip contract); `question` and `description` follow `outputLanguage`. Commit/PR/Jira/Wiki payloads: subject + branch names + code identifiers stay English; body text follows `outputLanguage`.
|
|
10
|
+
|
|
11
|
+
## Steps
|
|
12
|
+
|
|
13
|
+
1. **Fetch repo list** per provider/account, then optionally merge local checkouts:
|
|
14
|
+
```bash
|
|
15
|
+
# GitHub (only when an account was selected — see _account-picker)
|
|
16
|
+
~/.claude/lib/repo-cache.sh github "$ACCOUNT_GH_OWNER"
|
|
17
|
+
|
|
18
|
+
# Bitbucket (work — only when an account was selected)
|
|
19
|
+
BB_TOKEN_KEY="$ACCOUNT_BB_TOKEN_KEY" \
|
|
20
|
+
BB_USER_KEY="$ACCOUNT_BB_USER_KEY" \
|
|
21
|
+
BB_HOST="$ACCOUNT_BB_HOST" \
|
|
22
|
+
~/.claude/lib/repo-cache.sh bitbucket "$BB_PROJECT_KEY"
|
|
23
|
+
|
|
24
|
+
# Local — for freetext/no-tracker flows, scan $HOME for .git checkouts so a
|
|
25
|
+
# user with no provider account can still pick a repo and run the pipeline.
|
|
26
|
+
~/.claude/lib/repo-cache.sh local "$HOME"
|
|
27
|
+
```
|
|
28
|
+
Provider sources are concatenated into one picker list; each row carries a
|
|
29
|
+
`(github)` / `(bitbucket)` / `(local)` suffix so the choice is unambiguous.
|
|
30
|
+
Local rows expose `localPath` (filesystem path) and a redacted `remoteUrl`
|
|
31
|
+
(credentials stripped at cache time).
|
|
32
|
+
|
|
33
|
+
2. **Show list** via AskUserQuestion (multiSelect=true):
|
|
34
|
+
```
|
|
35
|
+
[2/N] Select repos (multi):
|
|
36
|
+
[ ] <repo-a> (github)
|
|
37
|
+
[ ] <repo-b> (bitbucket)
|
|
38
|
+
[ ] <repo-c> (local)
|
|
39
|
+
...
|
|
40
|
+
```
|
|
41
|
+
- cwd repo, when present, defaults to `[x]`
|
|
42
|
+
- forks fall to the bottom
|
|
43
|
+
- local-only rows show `(local)` and the trimmed `$HOME`-relative path
|
|
44
|
+
|
|
45
|
+
3. **Single-repo mode** — used for `gh-num`/`freetext` (multiSelect=false)
|
|
46
|
+
|
|
47
|
+
4. **All-local selection** — when every selected repo has `provider="local"`,
|
|
48
|
+
downstream phases switch to local-only behavior: no remote push, no PR, no
|
|
49
|
+
Jira/Wiki/Confluence channels. Mixed selections (some local, some provider)
|
|
50
|
+
apply per-repo: the local repos stay offline, the provider repos use their
|
|
51
|
+
normal remote flow.
|
|
52
|
+
|
|
53
|
+
## Output
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"selectedRepos": [
|
|
58
|
+
{"fullName":"<owner>/<repo-a>","name":"<repo-a>","provider":"github"},
|
|
59
|
+
{"fullName":"<owner>/<repo-b>","name":"<repo-b>","provider":"github"},
|
|
60
|
+
{"fullName":"local/<repo-c>","name":"<repo-c>","provider":"local","localPath":"<absolute-path>"}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Autopilot Behavior
|
|
66
|
+
|
|
67
|
+
When `MULTI_AGENT_AUTOPILOT=1`:
|
|
68
|
+
- **Multi-select mode** (issue picker flow): pick **only** cwd repo if present; otherwise fall back to most-recent repo from `prefs.projects[*].lastUsed`
|
|
69
|
+
- **Single-select mode** (gh-num/freetext): pick cwd repo automatically; if none, halt with error (autopilot can't prompt)
|
|
70
|
+
- Selection logged: `auto-selected repos: [name1, name2]`
|
|
71
|
+
|
|
72
|
+
## Error Cases
|
|
73
|
+
|
|
74
|
+
- No repos for the account: prompt user for manual `owner/repo`
|
|
75
|
+
- Cache fails (gh CLI missing): prompt user manually
|
|
76
|
+
- Autopilot + no cwd repo: halt with "autopilot single-repo mode requires cwd to be a git repository"
|