@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,233 @@
|
|
|
1
|
+
# /performance-review-next — Interactive Component Review Session
|
|
2
|
+
|
|
3
|
+
> Reads `_tour_tracker.json`, presents a dashboard of produced components,
|
|
4
|
+
> and guides the user through reviewing each one. Fix commits are separate.
|
|
5
|
+
> Halted components can be retried or dropped.
|
|
6
|
+
|
|
7
|
+
## Parameters
|
|
8
|
+
|
|
9
|
+
| Parameter | Required | Default | Description |
|
|
10
|
+
|-----------|----------|---------|-------------|
|
|
11
|
+
| `--status` | No | — | Show dashboard only, don't start review loop |
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/performance-review-next
|
|
15
|
+
/performance-review-next --status
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Constants
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
REPO_ROOT = git repo root (auto-detect)
|
|
24
|
+
TRACKER_FILE = ${REPO_ROOT}/_tour_tracker.json
|
|
25
|
+
UICOMPONENTS = ${REPO_ROOT}/{repos.components.path}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## STEP 0 — Read Tracker & Show Dashboard
|
|
31
|
+
|
|
32
|
+
Read `_tour_tracker.json`. If not found → HALT: "No tour in progress."
|
|
33
|
+
|
|
34
|
+
Detect lean mode:
|
|
35
|
+
```python
|
|
36
|
+
lean_mode = tracker.get("lean_mode", False)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Dashboard
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
43
|
+
║ TOUR REVIEW DASHBOARD ║
|
|
44
|
+
╠══════════════════════════════════════════════════════════════╣
|
|
45
|
+
║ ║
|
|
46
|
+
║ # │ Issue │ Component │ Status ║
|
|
47
|
+
║ ──┼────────┼──────────────┼──────────────────────────────── ║
|
|
48
|
+
║ 1 │ #1000 │ ComponentA │ ✅ Produced — ready for review ║
|
|
49
|
+
║ 2 │ #1002 │ ComponentC │ ✅ Produced — ready for review ║
|
|
50
|
+
║ 3 │ #1001 │ ComponentB │ ❌ Halted (Phase 4) ║
|
|
51
|
+
║ ║
|
|
52
|
+
║ Reviewed: 0/2 produced ║
|
|
53
|
+
║ ║
|
|
54
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
If `lean_mode` is `true`, add a warning banner after the dashboard:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
⚠️ LEAN MODE — Tests & wiki were NOT generated.
|
|
61
|
+
Review covers: implementation (Phase 4) + Code Connect (Phase 6) only.
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
If `--status` → print dashboard and exit.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## STEP 1 — Build All (One Time)
|
|
69
|
+
|
|
70
|
+
Before any review, run a single build to verify the current state:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
xcodebuild build -project "${REPO_ROOT}/{build.xcodeproj}" \
|
|
74
|
+
-scheme {build.scheme} -destination 'generic/platform=iOS' \
|
|
75
|
+
CODE_SIGNING_ALLOWED=NO -quiet
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**If build fails:**
|
|
79
|
+
|
|
80
|
+
Identify which component's files caused the failure from the error output.
|
|
81
|
+
Print:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
⚠️ Build failed. Error in: Sources/.../ComponentA/ComponentAView.swift:42
|
|
85
|
+
Likely component: ComponentA (#1000)
|
|
86
|
+
|
|
87
|
+
Fix the issue, then run /performance-review-next to continue.
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Do NOT proceed until build passes.
|
|
91
|
+
|
|
92
|
+
**If build passes:** Print "Build ✅ — all components compile" and proceed to STEP 2.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## STEP 2 — Review Loop
|
|
97
|
+
|
|
98
|
+
Ask user which component to review:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Which component would you like to review?
|
|
102
|
+
[1] ComponentA (#1000) — ready for review
|
|
103
|
+
[2] ComponentC (#1002) — ready for review
|
|
104
|
+
[3] ComponentB (#1001) — halted (retry/drop)
|
|
105
|
+
[done] All reviews complete → proceed to commit
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 2a. Reviewing a Produced Component
|
|
109
|
+
|
|
110
|
+
When user selects a produced component:
|
|
111
|
+
|
|
112
|
+
1. **Show component files:**
|
|
113
|
+
```bash
|
|
114
|
+
# List files created by this component
|
|
115
|
+
find "${UICOMPONENTS}/Sources" -path "*/${COMPONENT_NAME}/*" -type f
|
|
116
|
+
find "${UICOMPONENTS}/Tests" -path "*/${COMPONENT_NAME}*" -type f
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
2. **Run component tests:**
|
|
120
|
+
|
|
121
|
+
> **LEAN MODE:** If `lean_mode` is `true`, **SKIP this substep.** Print `Tests: ⏭ skipped (lean mode)` instead.
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
xcodebuild test -project "${REPO_ROOT}/{build.xcodeproj}" \
|
|
125
|
+
-scheme {build.scheme} \
|
|
126
|
+
-destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
|
|
127
|
+
-only-testing:"UIComponentsTests/${COMPONENT_NAME}ViewInspectorTests" \
|
|
128
|
+
-only-testing:"UIComponentsTests/${COMPONENT_NAME}SnapshotTests" \
|
|
129
|
+
CODE_SIGNING_ALLOWED=NO -quiet
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
3. **Present review options:**
|
|
133
|
+
```
|
|
134
|
+
ComponentA (#1000) — Review
|
|
135
|
+
Files: 8 files (view, config, tests, snapshots, wiki, code-connect) # lean: fewer files
|
|
136
|
+
Tests: ✅ 12 passed # lean: ⏭ skipped (lean mode)
|
|
137
|
+
|
|
138
|
+
Actions:
|
|
139
|
+
[approve] Mark as reviewed ✅
|
|
140
|
+
[fix] I see an issue — let me fix it
|
|
141
|
+
[back] Back to dashboard
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
4. **If user selects "fix":**
|
|
145
|
+
- User makes changes manually or describes the fix
|
|
146
|
+
- Agent applies the fix
|
|
147
|
+
- Agent commits the fix:
|
|
148
|
+
```bash
|
|
149
|
+
cd ${UICOMPONENTS}
|
|
150
|
+
git add -A
|
|
151
|
+
git commit -m "fix(uicomponents): [${JIRA_KEY}] fix ${COMPONENT_NAME} review feedback
|
|
152
|
+
|
|
153
|
+
Refs: ${JIRA_KEY}
|
|
154
|
+
Tour: performance-tour review fix"
|
|
155
|
+
```
|
|
156
|
+
- Re-run tests to verify fix
|
|
157
|
+
- Return to review options for this component
|
|
158
|
+
|
|
159
|
+
5. **If user selects "approve":**
|
|
160
|
+
- Update tracker: add to `reviewed_components`
|
|
161
|
+
- Print: "✅ ComponentA marked as reviewed"
|
|
162
|
+
- Return to dashboard
|
|
163
|
+
|
|
164
|
+
### 2b. Reviewing a Halted Component
|
|
165
|
+
|
|
166
|
+
When user selects a halted component:
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
ComponentB (#1001) — Halted at Phase 4
|
|
170
|
+
Reason: Build failure — missing dependency protocol
|
|
171
|
+
|
|
172
|
+
Actions:
|
|
173
|
+
[retry] Re-produce this component from scratch
|
|
174
|
+
[drop] Remove from tour (issue stays open)
|
|
175
|
+
[back] Back to dashboard
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**If "retry":**
|
|
179
|
+
1. Run `/performance-start <issue> --tour` + `/performance-swiftui <figma-url>` (add `--lean` if `lean_mode` is `true`)
|
|
180
|
+
2. If successful → commit locally, update tracker to `"produced"`
|
|
181
|
+
3. Return to dashboard (component now reviewable)
|
|
182
|
+
|
|
183
|
+
**If "drop":**
|
|
184
|
+
1. Update tracker: move from `halted_components` to `dropped_components`
|
|
185
|
+
2. Print: "ComponentB dropped from tour. Issue #1001 remains open."
|
|
186
|
+
3. Return to dashboard
|
|
187
|
+
|
|
188
|
+
### 2c. All Reviews Complete
|
|
189
|
+
|
|
190
|
+
When user selects "done" or all produced components are reviewed:
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
194
|
+
║ REVIEW COMPLETE ║
|
|
195
|
+
╠══════════════════════════════════════════════════════════════╣
|
|
196
|
+
║ ║
|
|
197
|
+
║ Reviewed: 2 components ║
|
|
198
|
+
║ Dropped: 1 component (ComponentB) ║
|
|
199
|
+
║ ║
|
|
200
|
+
║ Ready to commit: ║
|
|
201
|
+
║ ✅ #1000 — ComponentA ║
|
|
202
|
+
║ ✅ #1002 — ComponentC ║
|
|
203
|
+
║ ║
|
|
204
|
+
║ Next: /performance-iteration-commit-all ║
|
|
205
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Update tracker: `current_step = "STEP_3"`.
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Error Handling
|
|
213
|
+
|
|
214
|
+
| Error | Action |
|
|
215
|
+
|-------|--------|
|
|
216
|
+
| Tracker not found | HALT: "No tour in progress" |
|
|
217
|
+
| No produced components | HALT: "No components to review. All halted." |
|
|
218
|
+
| Build fails during review | Show error, let user fix, re-build |
|
|
219
|
+
| Test fails after fix | Show failure, let user decide (fix again or approve anyway) |
|
|
220
|
+
| Retry fails again | Mark as halted again, ask user to drop or try later |
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Guardrails
|
|
225
|
+
|
|
226
|
+
> **NEVER push during review.** All commits (including fixes) are local only.
|
|
227
|
+
|
|
228
|
+
> **Fix commits are ALWAYS separate.** Never amend, squash, or rebase existing commits.
|
|
229
|
+
> New fix commit with descriptive message.
|
|
230
|
+
|
|
231
|
+
> **ALWAYS update tracker after every action** (approve, fix commit, retry, drop).
|
|
232
|
+
|
|
233
|
+
> **ALWAYS re-run build after any fix** to ensure project still compiles.
|
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
# /performance-start — Start + Auto-Launch Performance Pipeline
|
|
2
|
+
|
|
3
|
+
> Identical to `/figma-to-swift-ui-start` for Steps 0–5. After printing the summary (Step 6),
|
|
4
|
+
> automatically invokes `/performance-swiftui <figma-url>` to begin the implementation pipeline
|
|
5
|
+
> without waiting for user input.
|
|
6
|
+
|
|
7
|
+
## Parameters
|
|
8
|
+
|
|
9
|
+
| Parameter | Required | Default | Description |
|
|
10
|
+
|-----------|----------|---------|-------------|
|
|
11
|
+
| `<issue-number>` | Yes | — | GitHub issue number from uicomponents repo |
|
|
12
|
+
| `jira id <KEY>` | No | — | Jira issue key (e.g., `{jira.projectKey}-129850`). If provided, updates GitHub issue body and populates Jira task. |
|
|
13
|
+
| `--tour` | No | — | Tour mode: skips fetch/pull (STEP 1) and branch creation (STEP 2). Used by `/performance-tour` when producing multiple components on `iteration/develop`. |
|
|
14
|
+
| `--lean` | No | — | Lean mode: forwarded to `/performance-swiftui` to skip Phase 5 (testing) and Phase 7 (wiki). Can be combined with `--tour`. |
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/performance-start #107
|
|
18
|
+
/performance-start 107
|
|
19
|
+
/performance-start 160, jira id {jira.projectKey}-129850
|
|
20
|
+
/performance-start #107 --tour
|
|
21
|
+
/performance-start #107 --lean
|
|
22
|
+
/performance-start #107 --tour --lean
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Tour Mode (`--tour`)
|
|
26
|
+
|
|
27
|
+
When `--tour` is passed, the following steps are **SKIPPED**:
|
|
28
|
+
|
|
29
|
+
| Step | Normal Mode | Tour Mode |
|
|
30
|
+
|------|------------|:---------:|
|
|
31
|
+
| STEP 0 — Parse Issue | ✅ | ✅ |
|
|
32
|
+
| STEP 0.5 — Confirm Pipeline Mode | ✅ | **SKIP** |
|
|
33
|
+
| STEP 1 — Fetch Latest | ✅ | **SKIP** |
|
|
34
|
+
| STEP 2 — Create Feature Branches | ✅ | **SKIP** |
|
|
35
|
+
| STEP 3 — Registry Lookup | ✅ | ✅ |
|
|
36
|
+
| STEP 3.5 — Save Specs Artifact | ✅ | ✅ |
|
|
37
|
+
| STEP 4 — Assign to Me | ✅ | ✅ |
|
|
38
|
+
| STEP 5 — Update Issue Status | ✅ | ✅ |
|
|
39
|
+
| STEP 6 — Summary + Auto-Launch | ✅ | ✅ |
|
|
40
|
+
|
|
41
|
+
**Rationale:** In tour mode, `/performance-tour` has already fetched latest and
|
|
42
|
+
all submodules are on `iteration/develop`. Creating feature branches would conflict
|
|
43
|
+
with the tour's single-branch local commit strategy.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Constants
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
REPO_ROOT = git repo root (auto-detect)
|
|
51
|
+
GH_REPO = {github.componentsRepo}
|
|
52
|
+
DEFAULT_JIRA = {jira.projectKey}-124692
|
|
53
|
+
BASE_BRANCH = develop # main repo; submodules use iteration/develop
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Submodule Paths
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
MAIN_REPO = ${REPO_ROOT}
|
|
60
|
+
COMMON = ${REPO_ROOT}/{repos.common.path}
|
|
61
|
+
UICOMPONENTS = ${REPO_ROOT}/{repos.components.path}
|
|
62
|
+
WIKI = ${REPO_ROOT}/{repos.wiki.path}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## STEP 0 — Parse Issue
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
gh issue view <N> --repo ${GH_REPO} --json number,title,body,labels,assignees
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Extract from the issue body:
|
|
74
|
+
- **Component Name** — from `### Component Name (PascalCase)` section
|
|
75
|
+
- **Figma URL** — from `### Figma URL` section
|
|
76
|
+
- **Node ID** — from `### Node ID` section
|
|
77
|
+
- **Registry Name** — from `### Registry Name` section
|
|
78
|
+
- **Figma Page** — from `### Figma Page` section
|
|
79
|
+
- **Jira Key** — from `### Jira Issue` section (if not `_No response_`)
|
|
80
|
+
- **Acceptance Criteria** — from `### Acceptance Criteria` section (if not `_No response_`)
|
|
81
|
+
|
|
82
|
+
If Jira key is `_No response_` or empty **and** user provided a `jira id` parameter:
|
|
83
|
+
1. Use the user-provided key as `JIRA_ISSUE`.
|
|
84
|
+
2. Update the GitHub issue body — replace `_No response_` under `### Jira Issue` with a Jira link:
|
|
85
|
+
```bash
|
|
86
|
+
# Read current body, replace the Jira section, update via gh
|
|
87
|
+
CURRENT_BODY=$(gh issue view <N> --repo ${GH_REPO} --json body --jq '.body')
|
|
88
|
+
# Replace '_No response_' in the Jira Issue section with the link
|
|
89
|
+
NEW_BODY=$(echo "$CURRENT_BODY" | sed 's|### Jira Issue\n\n_No response_|### Jira Issue\n\n[<JIRA_KEY>]({jira.baseUrl}/browse/<JIRA_KEY>)|')
|
|
90
|
+
gh issue edit <N> --repo ${GH_REPO} --body "$NEW_BODY"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
If Jira key is `_No response_` or empty **and** no `jira id` parameter, use `DEFAULT_JIRA`.
|
|
94
|
+
|
|
95
|
+
Derive:
|
|
96
|
+
- `COMPONENT_PASCAL` = Component Name (e.g., `ModalsTitle`)
|
|
97
|
+
- `COMPONENT_KEBAB` = kebab-case (e.g., `modals-title`)
|
|
98
|
+
- `JIRA_ISSUE` = extracted key or default
|
|
99
|
+
- `NODE_UNDERSCORE` = node-id with `-` replaced by `_` (e.g., `2820-25995` → `2820_25995`)
|
|
100
|
+
- `BRANCH_NAME` = `feature/${JIRA_ISSUE}-GH${N}-N${NODE_UNDERSCORE}-${COMPONENT_KEBAB}`
|
|
101
|
+
|
|
102
|
+
Print:
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
-------------------------------------------
|
|
106
|
+
Issue: #<N>
|
|
107
|
+
Component: <COMPONENT_PASCAL>
|
|
108
|
+
Jira: <JIRA_ISSUE>
|
|
109
|
+
Node ID: <NODE_ID>
|
|
110
|
+
Branch: feature/<JIRA_ISSUE>-GH<N>-N<NODE_UNDERSCORE>-<COMPONENT_KEBAB>
|
|
111
|
+
Base: develop (main repo) / iteration/develop (submodules)
|
|
112
|
+
-------------------------------------------
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## STEP 0.5 — Confirm Pipeline Mode
|
|
118
|
+
|
|
119
|
+
> **If `--tour` is set → SKIP this step.** Tour mode delegates mode selection to `/performance-tour`.
|
|
120
|
+
|
|
121
|
+
After parsing the issue, **always ask the user** to confirm which pipeline mode to use — regardless of whether `--lean` was passed as a parameter. This prevents accidental full-pipeline runs when lean was intended, or vice versa.
|
|
122
|
+
|
|
123
|
+
**Use the ask-questions tool** with these options:
|
|
124
|
+
|
|
125
|
+
| Header | Question | Options |
|
|
126
|
+
|--------|----------|---------|
|
|
127
|
+
| Pipeline Mode | `<COMPONENT_PASCAL>` implementation — which pipeline mode? | **Lean** (skip testing & wiki — Phases 5, 7) · **Full** (all 8 phases) |
|
|
128
|
+
|
|
129
|
+
- If `--lean` was passed in the original command, pre-select **Lean** as the recommended option.
|
|
130
|
+
- If no flag was passed, pre-select **Full** as the recommended option.
|
|
131
|
+
|
|
132
|
+
**After user responds:**
|
|
133
|
+
- If user picks **Lean** → set internal `LEAN_FLAG = true` (forward `--lean` to `/performance-swiftui`).
|
|
134
|
+
- If user picks **Full** → set internal `LEAN_FLAG = false` (no `--lean` forwarded).
|
|
135
|
+
|
|
136
|
+
This confirmation overrides whatever was passed on the command line.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## STEP 1 — Fetch Latest
|
|
141
|
+
|
|
142
|
+
> **If `--tour` is set → SKIP this entire step.** Tour mode assumes
|
|
143
|
+
> `/performance-tour` STEP 0e has already fetched and checked out the correct branches.
|
|
144
|
+
|
|
145
|
+
Ensure all repos are up to date with remote:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
cd ${MAIN_REPO}
|
|
149
|
+
git fetch origin
|
|
150
|
+
git checkout develop
|
|
151
|
+
git pull --no-recurse-submodules origin develop
|
|
152
|
+
|
|
153
|
+
cd ${COMMON}
|
|
154
|
+
git fetch origin
|
|
155
|
+
git checkout iteration/develop
|
|
156
|
+
git pull origin iteration/develop
|
|
157
|
+
|
|
158
|
+
cd ${UICOMPONENTS}
|
|
159
|
+
git fetch origin
|
|
160
|
+
git checkout iteration/develop
|
|
161
|
+
git pull origin iteration/develop
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## STEP 2 — Create Feature Branches
|
|
167
|
+
|
|
168
|
+
> **If `--tour` is set → SKIP this entire step.** Tour mode stays on
|
|
169
|
+
> `iteration/develop` with local commits. No feature branches are created.
|
|
170
|
+
|
|
171
|
+
Create feature branches on **submodules only**. Do NOT create branches on the main repo — it stays on `develop`. The main repo never receives commits from this workflow; submodule refs are updated separately.
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# Common (tokens, localization, accessibility, testing identifiers)
|
|
175
|
+
cd ${COMMON}
|
|
176
|
+
git checkout -b ${BRANCH_NAME}
|
|
177
|
+
|
|
178
|
+
# UIComponents (SwiftUI views, tests, snapshots)
|
|
179
|
+
cd ${UICOMPONENTS}
|
|
180
|
+
git checkout -b ${BRANCH_NAME}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Wiki submodule stays on `master` — wiki changes are committed directly.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## STEP 3 — Registry Lookup
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
cd ${COMMON}
|
|
191
|
+
.build/debug/FigmaRegistryUtility lookup --node-id <NODE_ID>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Collect:
|
|
195
|
+
- `suggestedComponentLocation` — where the Swift files will go
|
|
196
|
+
- `suggestedArtifactPath` — where implementation artifacts go
|
|
197
|
+
|
|
198
|
+
Print:
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
Component Location: <suggestedComponentLocation>
|
|
202
|
+
Artifact Path: <suggestedArtifactPath>
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## STEP 3.5 — Save Specs Artifact
|
|
208
|
+
|
|
209
|
+
If the issue has acceptance criteria (not `_No response_`), save them as an artifact that the implementation pipeline can consume.
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
mkdir -p ${REPO_ROOT}/${suggestedArtifactPath}/pass0
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Write `${suggestedArtifactPath}/pass0/specs.md`:
|
|
216
|
+
|
|
217
|
+
```markdown
|
|
218
|
+
# Implementation Specs: {ComponentName}
|
|
219
|
+
|
|
220
|
+
## Source
|
|
221
|
+
- Issue: #{N}
|
|
222
|
+
- Figma: {FIGMA_URL}
|
|
223
|
+
|
|
224
|
+
## Acceptance Criteria
|
|
225
|
+
|
|
226
|
+
{ACCEPTANCE_CRITERIA from issue body — verbatim}
|
|
227
|
+
|
|
228
|
+
## Implementation Guidance
|
|
229
|
+
|
|
230
|
+
{Convert the acceptance criteria into actionable implementation instructions for the AI agent:
|
|
231
|
+
- Rephrase checkbox items as concrete requirements
|
|
232
|
+
- Add technical context where the criteria imply Swift/SwiftUI patterns
|
|
233
|
+
- Preserve the user's intent exactly — don't add or remove requirements}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
If no acceptance criteria → skip this step. No file created.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## STEP 4 — Assign to Me
|
|
241
|
+
|
|
242
|
+
Assign the GitHub issue and linked Jira task (if any) to the current user. Same logic as `/figma-issue assign`:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
gh issue edit <N> --repo ${GH_REPO} --add-assignee @me
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
If Jira key exists (from issue body or user-provided `jira id` parameter — not `_No response_` and not `DEFAULT_JIRA`):
|
|
249
|
+
|
|
250
|
+
Use **Python urllib** for all Jira API calls (curl is blocked by terminal auto-approval policy):
|
|
251
|
+
|
|
252
|
+
```python
|
|
253
|
+
# /tmp/jira_start_<JIRA_KEY>.py
|
|
254
|
+
import subprocess, urllib.request, json
|
|
255
|
+
|
|
256
|
+
token = subprocess.check_output(
|
|
257
|
+
["security", "find-generic-password", "-a",
|
|
258
|
+
subprocess.check_output(["whoami"]).decode().strip(),
|
|
259
|
+
"-s", "JIRA_TOKEN", "-w"],
|
|
260
|
+
stderr=subprocess.DEVNULL
|
|
261
|
+
).decode().strip()
|
|
262
|
+
|
|
263
|
+
JIRA_KEY = "<JIRA_KEY>"
|
|
264
|
+
FIGMA_URL = "<FIGMA_URL>"
|
|
265
|
+
GITHUB_URL = "https://github.com/{github.componentsRepo}/issues/<N>"
|
|
266
|
+
REGISTRY_NAME = "<REGISTRY_NAME>"
|
|
267
|
+
COMPONENT_NAME = "<COMPONENT_PASCAL>"
|
|
268
|
+
PAGE_NAME = "<FIGMA_PAGE>"
|
|
269
|
+
|
|
270
|
+
# 1. Get current user
|
|
271
|
+
req = urllib.request.Request(
|
|
272
|
+
"{jira.baseUrl}/rest/api/2/myself",
|
|
273
|
+
headers={"Authorization": f"Bearer {token}"}
|
|
274
|
+
)
|
|
275
|
+
resp = urllib.request.urlopen(req, timeout=15)
|
|
276
|
+
username = json.loads(resp.read().decode())["name"]
|
|
277
|
+
print(f"Username: {username}")
|
|
278
|
+
|
|
279
|
+
# 2. Assign to current user
|
|
280
|
+
data = json.dumps({"name": username}).encode()
|
|
281
|
+
req2 = urllib.request.Request(
|
|
282
|
+
f"{jira.baseUrl}/rest/api/2/issue/{JIRA_KEY}/assignee",
|
|
283
|
+
data=data,
|
|
284
|
+
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
|
|
285
|
+
method="PUT"
|
|
286
|
+
)
|
|
287
|
+
try:
|
|
288
|
+
resp2 = urllib.request.urlopen(req2, timeout=15)
|
|
289
|
+
print(f"Assigned {JIRA_KEY} to {username} (HTTP {resp2.status})")
|
|
290
|
+
except urllib.error.HTTPError as e:
|
|
291
|
+
print(f"Assign failed — HTTP {e.code}: {e.read().decode()[:200]}")
|
|
292
|
+
|
|
293
|
+
# 3. Update Jira summary, description, and labels
|
|
294
|
+
description = (
|
|
295
|
+
"h3. Figma\n"
|
|
296
|
+
f"[{COMPONENT_NAME}|{FIGMA_URL}]\n\n"
|
|
297
|
+
"h3. GitHub Issue\n"
|
|
298
|
+
f"[#{<N>}|{GITHUB_URL}]\n\n"
|
|
299
|
+
"h3. Component\n"
|
|
300
|
+
f"* *Registry Name:* {REGISTRY_NAME}\n"
|
|
301
|
+
f"* *Component Name:* {COMPONENT_NAME}\n"
|
|
302
|
+
f"* *Page:* {PAGE_NAME}\n\n"
|
|
303
|
+
"h3. Status\n"
|
|
304
|
+
"* (x) Implementation\n"
|
|
305
|
+
"* (x) Testing\n"
|
|
306
|
+
"* (x) Code Connect\n"
|
|
307
|
+
"* (x) Documentation"
|
|
308
|
+
)
|
|
309
|
+
summary = f"Implement {COMPONENT_NAME} iOS UI Component"
|
|
310
|
+
update_data = json.dumps({
|
|
311
|
+
"fields": {
|
|
312
|
+
"summary": summary,
|
|
313
|
+
"description": description,
|
|
314
|
+
"labels": ["redesign_ios_ui_component", "MobRedesign"],
|
|
315
|
+
"components": [{"name": "TKMOB IOS"}],
|
|
316
|
+
"fixVersions": [{"name": "no-version"}],
|
|
317
|
+
"customfield_22025": {"value": "YOK"},
|
|
318
|
+
"customfield_21400": ["no-version"]
|
|
319
|
+
}
|
|
320
|
+
}).encode()
|
|
321
|
+
req3 = urllib.request.Request(
|
|
322
|
+
f"{jira.baseUrl}/rest/api/2/issue/{JIRA_KEY}",
|
|
323
|
+
data=update_data,
|
|
324
|
+
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
|
|
325
|
+
method="PUT"
|
|
326
|
+
)
|
|
327
|
+
try:
|
|
328
|
+
resp3 = urllib.request.urlopen(req3, timeout=15)
|
|
329
|
+
print(f"Updated {JIRA_KEY} content (HTTP {resp3.status})")
|
|
330
|
+
except urllib.error.HTTPError as e:
|
|
331
|
+
print(f"Update failed — HTTP {e.code}: {e.read().decode()[:200]}")
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
Run: `python3 /tmp/jira_start_<JIRA_KEY>.py`
|
|
335
|
+
|
|
336
|
+
If Jira token not found or VPN unreachable, skip with warning:
|
|
337
|
+
|
|
338
|
+
```
|
|
339
|
+
⚠️ Jira update skipped (token missing or VPN unreachable). Update <JIRA_KEY> manually if needed.
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## STEP 5 — Update Issue Status (required)
|
|
345
|
+
|
|
346
|
+
**This step is mandatory. Do not skip it and do not defer it.** The issue
|
|
347
|
+
is on the board with Status=Todo after creation. Moving it to Status=In
|
|
348
|
+
Develop is how the board reflects that someone has started working on
|
|
349
|
+
it. If you skip this step, the issue visually stays in the Todo column
|
|
350
|
+
even though work has started.
|
|
351
|
+
|
|
352
|
+
Set the issue phase to "Implementation" and status to "In Develop" on the Projects V2 board:
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
# Get issue node ID
|
|
356
|
+
ISSUE_NODE_ID=$(gh api graphql -f query='{ repository(owner: "{github.org}", name: "{project.slug}-components") { issue(number: <N>) { id } } }' --jq '.data.repository.issue.id')
|
|
357
|
+
|
|
358
|
+
# Add to project (if not already). This mutation is idempotent — if the
|
|
359
|
+
# item already exists it returns the existing item id.
|
|
360
|
+
ITEM_ID=$(gh api graphql -f query='mutation { addProjectV2ItemById(input: { projectId: "{github.projectV2Id}", contentId: "'"$ISSUE_NODE_ID"'" }) { item { id } } }' --jq '.data.addProjectV2ItemById.item.id')
|
|
361
|
+
|
|
362
|
+
# Set Status = In Develop (option id: bc6c45f7)
|
|
363
|
+
gh api graphql -f query='mutation { updateProjectV2ItemFieldValue(input: { projectId: "{github.projectV2Id}", itemId: "'"$ITEM_ID"'", fieldId: "{github.projectV2Fields.status}", value: { singleSelectOptionId: "bc6c45f7" } }) { projectV2Item { id } } }'
|
|
364
|
+
|
|
365
|
+
# Set Phase = Implementation (option id: 0577dcda)
|
|
366
|
+
gh api graphql -f query='mutation { updateProjectV2ItemFieldValue(input: { projectId: "{github.projectV2Id}", itemId: "'"$ITEM_ID"'", fieldId: "{github.projectV2Fields.phase}", value: { singleSelectOptionId: "0577dcda" } }) { projectV2Item { id } } }'
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### Verify the move landed
|
|
370
|
+
|
|
371
|
+
After the mutations return, confirm Status=In Develop is set (this catches
|
|
372
|
+
silent VALIDATION errors from stale option IDs):
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
gh api graphql -f query='{ node(id: "'"$ITEM_ID"'") { ... on ProjectV2Item { fieldValues(first: 20) { nodes { ... on ProjectV2ItemFieldSingleSelectValue { field { ... on ProjectV2SingleSelectField { name } } name } } } } } }' \
|
|
376
|
+
--jq '.data.node.fieldValues.nodes[] | select(.field.name == "Status") | .name'
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
Expected output: `In Develop`. If you see anything else (or empty),
|
|
380
|
+
re-fetch the current option IDs and retry — do NOT proceed to implementation
|
|
381
|
+
without the Status set correctly.
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
## STEP 6 — Summary + Auto-Launch Pipeline
|
|
386
|
+
|
|
387
|
+
Print:
|
|
388
|
+
|
|
389
|
+
```markdown
|
|
390
|
+
Ready to implement:
|
|
391
|
+
|
|
392
|
+
| Field | Value |
|
|
393
|
+
|-------|-------|
|
|
394
|
+
| Issue | [#N](url) |
|
|
395
|
+
| Component | <COMPONENT_PASCAL> |
|
|
396
|
+
| Jira | <JIRA_ISSUE> |
|
|
397
|
+
| Branch | `<BRANCH_NAME>` |
|
|
398
|
+
| Base | `develop` (main repo) / `iteration/develop` (submodules) |
|
|
399
|
+
| Component Location | <suggestedComponentLocation> |
|
|
400
|
+
| Artifact Path | <suggestedArtifactPath> |
|
|
401
|
+
|
|
402
|
+
🚀 Auto-launching /performance-swiftui pipeline...
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
**Immediately after printing the summary**, invoke the `/performance-swiftui` skill with the Figma URL extracted from the issue:
|
|
406
|
+
|
|
407
|
+
```
|
|
408
|
+
/performance-swiftui <FIGMA_URL> # if LEAN_FLAG = false (Full mode confirmed in STEP 0.5)
|
|
409
|
+
/performance-swiftui <FIGMA_URL> --lean # if LEAN_FLAG = true (Lean mode confirmed in STEP 0.5)
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
Forward `--lean` based on the user's confirmed selection in **STEP 0.5** (not the raw command-line flag). This starts Phase 0 of the performance-optimized implementation pipeline.
|
|
413
|
+
|
|
414
|
+
> If any STEP (0–5) failed or was aborted, do NOT auto-launch. Print the error and stop.
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## Error Handling
|
|
419
|
+
|
|
420
|
+
- **Issue not found**: Print error and stop.
|
|
421
|
+
- **Issue body missing required fields**: Print which fields are missing, stop.
|
|
422
|
+
- **FigmaRegistryUtility not built**: Run `swift build --product FigmaRegistryUtility` in common.
|
|
423
|
+
- **Branch already exists**: Print warning — checkout existing branch instead of creating.
|
|
424
|
+
- **Main repo not on develop**: Fetch and checkout automatically.
|
|
425
|
+
- **Submodule not on iteration/develop**: Fetch and checkout automatically.
|