@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,206 @@
|
|
|
1
|
+
# Common Submodule — Rebase, Resolve, Validate & Push
|
|
2
|
+
|
|
3
|
+
Handles `{project.slug}-common` branch creation, conflict resolution, regeneration, validation, and PR flow.
|
|
4
|
+
|
|
5
|
+
Called from `/figma-commit` SKILL.md after code review passes.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Inputs (from parent skill)
|
|
10
|
+
|
|
11
|
+
| Variable | Source |
|
|
12
|
+
|----------|--------|
|
|
13
|
+
| `REPO_ROOT` | git repo root |
|
|
14
|
+
| `COMMON_PATH` | `${REPO_ROOT}/{repos.common.path}` |
|
|
15
|
+
| `BRANCH_NAME` | `feature/${JIRA_ISSUE}-${COMPONENT_KEBAB}-implementation` |
|
|
16
|
+
| `JIRA_ISSUE` | Jira ticket |
|
|
17
|
+
| `COMPONENT_PASCAL` | Component name |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## STEP 1 — Stash
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
cd "${COMMON_PATH}"
|
|
25
|
+
git stash push -u -m "figma-commit: ${COMPONENT_PASCAL} pre-branch stash"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Skip if `git status --porcelain` is empty.
|
|
29
|
+
|
|
30
|
+
## STEP 2 — Fetch & Branch from develop
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cd "${COMMON_PATH}"
|
|
34
|
+
git fetch origin develop
|
|
35
|
+
git checkout develop
|
|
36
|
+
git pull origin develop
|
|
37
|
+
git checkout -b "${BRANCH_NAME}"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
If branch already exists → append `-v2`, `-v3`, etc.
|
|
41
|
+
|
|
42
|
+
## STEP 3 — Pop Stash
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
cd "${COMMON_PATH}"
|
|
46
|
+
git stash pop
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
If pop succeeds cleanly → skip to STEP 5.
|
|
50
|
+
If pop fails with conflicts → proceed to STEP 4.
|
|
51
|
+
|
|
52
|
+
## STEP 4 — Conflict Resolution
|
|
53
|
+
|
|
54
|
+
### 4A — Classify conflicted files
|
|
55
|
+
|
|
56
|
+
| File Pattern | Strategy |
|
|
57
|
+
|-------------|----------|
|
|
58
|
+
| `iOS/Sources/*/Generated/*` | Accept either side (will regenerate) |
|
|
59
|
+
| `Shared/Figma/Generated/*` | Accept either side (gitignored, will regenerate) |
|
|
60
|
+
| `iOS/Sources/LocalizationAssets/Resources/*.xcstrings` | Accept either side (will regenerate) |
|
|
61
|
+
| `iOS/Sources/AccessibilityAssets/Resources/*.xcstrings` | Accept either side (will regenerate) |
|
|
62
|
+
| `Shared/Localization/*/Metadata/*` | Accept either side (gitignored, will regenerate) |
|
|
63
|
+
| `Shared/UITestingIdentifiers/Metadata/*` | Accept either side (gitignored, will regenerate) |
|
|
64
|
+
| `Sources/Suggested/*.json` | Our version wins (per-key files, we created them) |
|
|
65
|
+
| Source JSONs (see below) | **Union merge** |
|
|
66
|
+
| `Shared/Figma/Components/*.json` | Our version wins (we created/modified it) |
|
|
67
|
+
|
|
68
|
+
### 4B — Union merge for source JSONs
|
|
69
|
+
|
|
70
|
+
For each conflicted source JSON:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
a. Accept OURS (develop) version: git checkout --ours <file> && git add <file>
|
|
74
|
+
b. Manually insert only the NEW keys from the branch (use Edit tool, match existing format exactly)
|
|
75
|
+
c. NEVER use Python json.dump or any JSON serializer — it reformats the entire file
|
|
76
|
+
d. After manual edits, normalize with the Swift tool:
|
|
77
|
+
.build/debug/UITestingIdentifierTool format
|
|
78
|
+
e. Verify: key count >= develop's count — no key lost
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Source files requiring union merge:**
|
|
82
|
+
|
|
83
|
+
| File | Resolution | Format Tool |
|
|
84
|
+
|------|-----------|-------------|
|
|
85
|
+
| `Shared/UITestingIdentifiers/ui-testing-identifiers.json` | Accept ours + insert new keys | `UITestingIdentifierTool format` |
|
|
86
|
+
| `Shared/UIAssets/Colors/*.json` | Accept ours + insert new entries | (manual — match existing format) |
|
|
87
|
+
|
|
88
|
+
**Files that NO LONGER need union merge** (per-key files or gitignored):
|
|
89
|
+
- `*-data-suggested.json` → replaced by `Sources/Suggested/*.json` (per-key files, never conflict)
|
|
90
|
+
- `*-data-merged.json` → gitignored (derived artifact, regenerated in §5)
|
|
91
|
+
- `*-metadata.json` → gitignored (derived artifact, regenerated in §5)
|
|
92
|
+
- `Metadata/identifier-keys.json` → gitignored (derived artifact, regenerated in §5)
|
|
93
|
+
|
|
94
|
+
### 4C — Text file union merge
|
|
95
|
+
|
|
96
|
+
**No longer needed.** `localization-keys.txt` and `accessibility-keys.txt` are gitignored (regenerated in §5).
|
|
97
|
+
|
|
98
|
+
### 4D — Verify no conflict markers remain
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
grep -r "<<<<<<" . --include="*.json" --include="*.swift" --include="*.txt" | head -5
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## STEP 5 — Rebuild Derived Artifacts
|
|
105
|
+
|
|
106
|
+
All derived artifacts (merged data, metadata, keys.txt, registries, catalogs) are gitignored. Always rebuild them after conflict resolution to guarantee fresh data.
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
bash "${REPO_ROOT}/.instructions/common/scripts/common-rebuild-derived-artifacts.sh"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
This script rebuilds everything: merge translations from per-key `Sources/Suggested/` files, regenerate metadata, keys indexes, UI assets, token registries, and Figma catalogs.
|
|
113
|
+
|
|
114
|
+
If the script fails → source JSON likely has invalid syntax from merge. Fix and retry.
|
|
115
|
+
|
|
116
|
+
## STEP 6 — Validate Integrity
|
|
117
|
+
|
|
118
|
+
Always fetch develop first so the non-destruction check compares against the latest:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
cd "${COMMON_PATH}"
|
|
122
|
+
git fetch origin develop
|
|
123
|
+
|
|
124
|
+
python3 "${REPO_ROOT}/.instructions/figma/figma-commit/validate-localization-sync.py" \
|
|
125
|
+
--common-path "${COMMON_PATH}"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Must exit 0.** Validates:
|
|
129
|
+
1. Suggested covers merged — every merged key has a corresponding per-key file in `Sources/Suggested/`
|
|
130
|
+
2. All 8 languages present per key — no missing translations
|
|
131
|
+
3. No empty suggested values
|
|
132
|
+
4. keys.txt and metadata in sync with merged
|
|
133
|
+
5. Key count non-decreasing vs develop
|
|
134
|
+
6. Non-destruction — no key removed vs develop
|
|
135
|
+
7. Testing identifiers JSON ↔ keys JSON match
|
|
136
|
+
|
|
137
|
+
If validation fails → fix before committing. Common fixes:
|
|
138
|
+
- **Keys in merged not in suggested**: Add missing per-key file via `TranslationManagerTool add`
|
|
139
|
+
- **Key count decreased**: Key lost during merge — find and restore the per-key file
|
|
140
|
+
- **Empty values**: Translation added without content — provide it
|
|
141
|
+
- **Non-destruction violation**: Intentional rename → re-add old key as alias
|
|
142
|
+
|
|
143
|
+
## STEP 7 — Commit
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
cd "${COMMON_PATH}"
|
|
147
|
+
git add -A
|
|
148
|
+
git commit -m "$(cat <<'EOF'
|
|
149
|
+
feat(common): [${JIRA_ISSUE}] add ${COMPONENT_PASCAL} tokens and keys
|
|
150
|
+
|
|
151
|
+
- Add testing identifiers, localization, and accessibility keys
|
|
152
|
+
- Add design tokens and component registry entry
|
|
153
|
+
- Regenerate all platform code and catalogs
|
|
154
|
+
|
|
155
|
+
Refs: ${JIRA_ISSUE}
|
|
156
|
+
EOF
|
|
157
|
+
)"
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## STEP 8 — Push
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
cd "${COMMON_PATH}"
|
|
164
|
+
git push -u origin "${BRANCH_NAME}"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## STEP 9 — Create PR (do NOT merge)
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
cd "${COMMON_PATH}"
|
|
171
|
+
gh pr create --base develop \
|
|
172
|
+
--title "feat(common): [${JIRA_ISSUE}] add ${COMPONENT_PASCAL} tokens" \
|
|
173
|
+
--body "$(cat <<'EOF'
|
|
174
|
+
## Summary
|
|
175
|
+
- Add testing identifiers, localization, and accessibility keys
|
|
176
|
+
- Add design tokens and component registry entry
|
|
177
|
+
- Regenerate all platform code and catalogs
|
|
178
|
+
|
|
179
|
+
## Visual Reference
|
|
180
|
+
- **Figma:** ${FIGMA_URL}
|
|
181
|
+
- **Confluence iOS:** ${CONFLUENCE_IOS_URL}
|
|
182
|
+
|
|
183
|
+
## Validation
|
|
184
|
+
- [ ] validate-localization-sync.py passes
|
|
185
|
+
- [ ] No key count decrease vs develop
|
|
186
|
+
- [ ] All 8 languages present
|
|
187
|
+
|
|
188
|
+
Refs: ${JIRA_ISSUE}
|
|
189
|
+
EOF
|
|
190
|
+
)"
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Do NOT merge** — PR is created for review. Merging is a separate manual action.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Error Handling
|
|
198
|
+
|
|
199
|
+
- **Stash conflict on pop**: Follow §4 conflict resolution
|
|
200
|
+
- **Branch already exists**: Append `-v2`, `-v3`
|
|
201
|
+
- **Push rejected**: Report error, do NOT force-push
|
|
202
|
+
- **Not on develop**: Warn user, ask confirmation
|
|
203
|
+
- **Rebuild script fails**: Source JSON likely invalid from merge — fix and retry
|
|
204
|
+
- **Validation fails**: Fix before committing — NEVER skip validation
|
|
205
|
+
- **Key count decreased**: STOP — per-key file was lost, check `Sources/Suggested/` for missing files
|
|
206
|
+
- **Same-key conflict in union merge**: Ask user which version to keep — do NOT silently overwrite (only applies to UIAssets Colors and UITestingIdentifiers now)
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
# Figma Component Code Review
|
|
2
|
+
|
|
3
|
+
Pre-commit review checklist for components implemented via the `/figma` workflow.
|
|
4
|
+
Run this review after all phases complete, before committing.
|
|
5
|
+
|
|
6
|
+
**Input:** Component name and source location from `IMPLEMENTATION_HISTORY.md`.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## How To Use
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
Review the {ComponentName} component at {componentLocation} using the checklist in .instructions/figma/figma-commit/REVIEW.md
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. File Completeness
|
|
19
|
+
|
|
20
|
+
Verify all expected files exist at `{componentLocation}/`:
|
|
21
|
+
|
|
22
|
+
| File | Required | Condition |
|
|
23
|
+
|------|----------|-----------|
|
|
24
|
+
| `{ComponentName}.swift` | Always | Main View |
|
|
25
|
+
| `{ComponentName}Configuration.swift` | COMPLEX only | Configuration struct |
|
|
26
|
+
| `{ComponentName}+Modifiers.swift` | COMPLEX only | View-level chain modifiers |
|
|
27
|
+
| `{ComponentName}.figma.swift` | Always | Code Connect |
|
|
28
|
+
| `FIGMA.md` | Always | Component documentation |
|
|
29
|
+
|
|
30
|
+
Verify test files exist:
|
|
31
|
+
|
|
32
|
+
| File | Required | Location |
|
|
33
|
+
|------|----------|----------|
|
|
34
|
+
| `{ComponentName}ViewInspectorTests.swift` | Always | `Tests/UIComponentsTests/ViewInspector/Components/.../` |
|
|
35
|
+
| `{ComponentName}SnapshotTests.swift` | Always | `Tests/UIComponentsTests/Snapshot/Components/.../` |
|
|
36
|
+
| Snapshot reference images | Never committed | `__Snapshots__/` is gitignored — generated on-demand via `record: .missing` |
|
|
37
|
+
|
|
38
|
+
**FAIL if:** ViewInspector or Snapshot test file is missing. **FAIL if:** `__Snapshots__/` directory is tracked by git (should be gitignored).
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 2. No Magic Numbers
|
|
43
|
+
|
|
44
|
+
Scan ALL production Swift files (NOT test files) for hardcoded values.
|
|
45
|
+
|
|
46
|
+
### 2.1 Dimensions — Must Use Tokens or Named Constants
|
|
47
|
+
|
|
48
|
+
Every numeric `CGFloat` in production code must come from a design token OR a named constant in a `private enum Constants`. Component-specific sizes that don't map to an existing design token (e.g., icon sizes from Figma specs) are valid in `Constants`:
|
|
49
|
+
|
|
50
|
+
| Bad (magic number) | Good (token) |
|
|
51
|
+
|--------------------|--------------|
|
|
52
|
+
| `frame(height: 56)` | `frame(minHeight: .Size.size56)` |
|
|
53
|
+
| `padding(20)` | `padding(.horizontal, .Spacing.spacing20)` |
|
|
54
|
+
| `cornerRadius(8)` | `cornerRadius: .Radius.radius8` |
|
|
55
|
+
| `lineWidth: 1` | `lineWidth: .BorderWidth.borderWidth1` |
|
|
56
|
+
| `spacing: 4` | `spacing: .Spacing.spacing4` |
|
|
57
|
+
| `width: 24, height: 24` | `width: .Size.size24, height: .Size.size24` |
|
|
58
|
+
|
|
59
|
+
**How to check:**
|
|
60
|
+
```
|
|
61
|
+
Grep for raw numeric CGFloat values in {ComponentName}.swift and {ComponentName}+Modifiers.swift:
|
|
62
|
+
- Pattern: \b\d+\.?\d*\b in frame/padding/spacing/cornerRadius/lineWidth/width/height contexts
|
|
63
|
+
- Exclude: 0, 1 (only if used as multiplier/boolean, NOT as dimension)
|
|
64
|
+
- Exclude: .infinity (SwiftUI constant)
|
|
65
|
+
- Exclude: Values referenced via Constants.propertyName (named constants are NOT magic numbers)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**FAIL if:** Any raw inline dimension value found (e.g., `frame(height: 56)`). Named constants in `Constants` enum are PASS.
|
|
69
|
+
|
|
70
|
+
### 2.2 Colors — Must Use Semantic Tokens
|
|
71
|
+
|
|
72
|
+
Prefer design tokens. No `Color(red:green:blue:)`, no `UIColor` literals, no SwiftUI named colors (`.red`, `.white`).
|
|
73
|
+
|
|
74
|
+
| Bad | Good |
|
|
75
|
+
|-----|------|
|
|
76
|
+
| `Color(red: 0.9, green: 0, blue: 0)` | `Color.Primary.primary` |
|
|
77
|
+
| `Color.red` | `Color.Primary.primary` |
|
|
78
|
+
| `Color.white` | `Color.Text.textWhite` or `Color.Button.buttonPrimaryWhite` |
|
|
79
|
+
| `Color.clear` | `Color.clear` is ALLOWED (SwiftUI built-in, not a design token gap) |
|
|
80
|
+
|
|
81
|
+
When a color has no matching design token and must be hardcoded in `Constants`, use the `Color(hex:)` initializer from UIExtensions (NOT `Color(red:green:blue:)`):
|
|
82
|
+
|
|
83
|
+
| Bad (raw RGB) | Good (hex constant) |
|
|
84
|
+
|---------------|---------------------|
|
|
85
|
+
| `Color(red: 0.9, green: 0, blue: 0)` | `Color(hex: "#E50914")` |
|
|
86
|
+
| `Color(.sRGB, red: 0.15, green: 0.68, blue: 0.38)` | `Color(hex: "#25AD61")` |
|
|
87
|
+
|
|
88
|
+
**FAIL if:** `Color(red:green:blue:)`, `Color(.sRGB, ...)`, or SwiftUI named colors (`.red`, `.blue`, `.white`, etc.) found in production code.
|
|
89
|
+
|
|
90
|
+
### 2.3 Typography — Must Use TypographyStyle
|
|
91
|
+
|
|
92
|
+
No raw `.font()` calls. All text styling via `.typographyStyle()`.
|
|
93
|
+
|
|
94
|
+
| Bad | Good |
|
|
95
|
+
|-----|------|
|
|
96
|
+
| `.font(.system(size: 18, weight: .bold))` | `.typographyStyle(.h6)` |
|
|
97
|
+
| `.font(.headline)` | `.typographyStyle(.bodyBold)` |
|
|
98
|
+
|
|
99
|
+
**FAIL if:** Any `.font()` call found in production code.
|
|
100
|
+
|
|
101
|
+
### 2.4 Allowed Exceptions
|
|
102
|
+
|
|
103
|
+
These raw values are acceptable and should NOT be flagged:
|
|
104
|
+
|
|
105
|
+
- `0` as zero padding/offset
|
|
106
|
+
- `.infinity` in `frame(maxWidth: .infinity)`
|
|
107
|
+
- Named constants in `private enum Constants` — these are NOT magic numbers
|
|
108
|
+
- Numeric values in test files (snapshot frame sizes, assertion values)
|
|
109
|
+
- Numeric values in `#Preview` section labels (e.g., section divider count)
|
|
110
|
+
- Opacity values (`0.0` to `1.0`) — no token system for opacity
|
|
111
|
+
- `lineLimit(1)` — SwiftUI view modifier, not a dimension
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 3. Configuration Purity (COMPLEX only)
|
|
116
|
+
|
|
117
|
+
Read `{ComponentName}Configuration.swift` and verify:
|
|
118
|
+
|
|
119
|
+
| Rule | Check |
|
|
120
|
+
|------|-------|
|
|
121
|
+
| No closures | No `() -> Void`, `(T) -> Void`, `@escaping` in Configuration properties |
|
|
122
|
+
| No bindings | No `Binding<T>`, `@Binding` in Configuration properties |
|
|
123
|
+
| No state | No `@State`, `@ObservedObject`, `@StateObject`, `@EnvironmentObject` |
|
|
124
|
+
| No view builders | No `AnyView`, `@ViewBuilder`, `some View` as properties |
|
|
125
|
+
| Value types only | All properties should be `let` with value/enum/optional types |
|
|
126
|
+
| `@GenerateChainModifiers` | Macro is applied to the struct |
|
|
127
|
+
| `Sendable` conformance | Struct conforms to `Sendable` |
|
|
128
|
+
|
|
129
|
+
**FAIL if:** Any non-value-type property found in Configuration.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 4. +Modifiers Correctness (COMPLEX only)
|
|
134
|
+
|
|
135
|
+
Read `{ComponentName}+Modifiers.swift` and verify:
|
|
136
|
+
|
|
137
|
+
| Rule | Check |
|
|
138
|
+
|------|-------|
|
|
139
|
+
| One method per Configuration property | Count matches (excluding `@IgnoreChainModifier` properties) |
|
|
140
|
+
| Localized overloads for String props | `func title(localized value: LocalizationStringKey)` exists for each String property |
|
|
141
|
+
| Delegates to `configured { }` | Every method body is `configured { $0.propertyName(value) }` |
|
|
142
|
+
| Return type is concrete | Returns `{ComponentName}`, not `Self` or `some View` |
|
|
143
|
+
| Correct nested type paths | Enum parameters use `{ComponentName}Configuration.EnumType` |
|
|
144
|
+
| `import CoreLocalization` | Present if any localized overload exists |
|
|
145
|
+
|
|
146
|
+
**FAIL if:** Method count mismatch or incorrect delegation pattern.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 5. Accessibility
|
|
151
|
+
|
|
152
|
+
Read `{ComponentName}.swift` and verify:
|
|
153
|
+
|
|
154
|
+
| Rule | Check |
|
|
155
|
+
|------|-------|
|
|
156
|
+
| Interactive elements have identifiers | `.accessibilityIdentifier(.{ComponentName}.elementName)` on buttons, taps |
|
|
157
|
+
| Uses type-safe keys | `.accessibilityIdentifier(.ComponentName.key)` NOT `.accessibilityIdentifier("raw_string")` |
|
|
158
|
+
| Container combining | `.accessibilityElement(children: .combine)` on composite interactive elements |
|
|
159
|
+
| Icons are decorative | `.accessibilityHidden(true)` on decorative icons within labeled buttons |
|
|
160
|
+
| No redundant labels | Don't add `.accessibilityLabel` if SwiftUI `Button` + `Text` already provides it |
|
|
161
|
+
|
|
162
|
+
**FAIL if:** Interactive elements lack identifiers, or raw strings used instead of type-safe keys.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 6. Analytics
|
|
167
|
+
|
|
168
|
+
Read `{ComponentName}.swift` and verify:
|
|
169
|
+
|
|
170
|
+
| Rule | Check |
|
|
171
|
+
|------|-------|
|
|
172
|
+
| Tappable elements tracked | `.analyticsButton(id:label:type:)` on buttons |
|
|
173
|
+
| ID uses testing identifier | `id: UITestingIdentifierKey.{ComponentName}.element.identifier` |
|
|
174
|
+
| Type mapping correct | Style/variant maps to correct `ButtonType` (primary/secondary/ghost/tertiary) |
|
|
175
|
+
| No duplicate tracking | One analytics modifier per user action, not per sub-view |
|
|
176
|
+
|
|
177
|
+
**WARN if:** Missing analytics on tappable elements. Not always a hard fail (some components are purely presentational).
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## 7. Testing Identifiers
|
|
182
|
+
|
|
183
|
+
Verify the identifier pipeline is complete:
|
|
184
|
+
|
|
185
|
+
| Step | Check |
|
|
186
|
+
|------|-------|
|
|
187
|
+
| Registered | `UITestingIdentifierTool check --key '{ComponentName}.element'` returns `✅ Key exists` for all identifiers |
|
|
188
|
+
| Generated keys | `UITestingIdentifierKeys.swift` has `enum {ComponentName}` with static keys |
|
|
189
|
+
| View usage | `{ComponentName}.swift` uses `.accessibilityIdentifier(.{ComponentName}.key)` |
|
|
190
|
+
| Test assertions | ViewInspector tests assert identifier presence |
|
|
191
|
+
|
|
192
|
+
**FAIL if:** Any step in the pipeline is missing or inconsistent.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## 8. Preview Quality
|
|
197
|
+
|
|
198
|
+
Read the Preview section at the bottom of `{ComponentName}.swift`:
|
|
199
|
+
|
|
200
|
+
| Rule | Check |
|
|
201
|
+
|------|-------|
|
|
202
|
+
| LTR preview exists | `{ComponentName}Preview: View` struct + `#Preview` |
|
|
203
|
+
| RTL preview exists | `{ComponentName}RTLPreview: View` struct + `#Preview("RTL")` |
|
|
204
|
+
| +Modifiers style | Uses `{ComponentName} { }.prop(val)` NOT `{ config in config.prop(val) }` |
|
|
205
|
+
| All variants shown | Every enum `allCases` iterated via `ForEach` |
|
|
206
|
+
| RTL has Arabic text | Localized text props use Arabic placeholders |
|
|
207
|
+
| RTL environment set | `.environment(\.layoutDirection, .rightToLeft)` + `.environment(\.locale, Locale(identifier: "ar"))` |
|
|
208
|
+
| Preview structs are plain | No macros on preview structs (workaround for `#Preview` + macro conflict) |
|
|
209
|
+
| Disabled state shown | If component supports disabled, shown with `.disabled(true)` |
|
|
210
|
+
|
|
211
|
+
**FAIL if:** Missing LTR or RTL preview, or using old configure-closure style.
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## 9. Code Connect
|
|
216
|
+
|
|
217
|
+
Read `{ComponentName}.figma.swift`:
|
|
218
|
+
|
|
219
|
+
| Rule | Check |
|
|
220
|
+
|------|-------|
|
|
221
|
+
| `import Figma` | Present |
|
|
222
|
+
| Correct `figmaNodeUrl` | Contains correct fileKey and nodeId |
|
|
223
|
+
| +Modifiers style | Body uses `.prop(val)` chain, NOT `{ config in ... }` |
|
|
224
|
+
| All variant groups covered | Separate `FigmaConnect` struct per variant group |
|
|
225
|
+
| `@FigmaEnum` uses shorthand | `.enumCase` NOT `Type.enumCase` |
|
|
226
|
+
| `#Preview` at bottom | At least one preview for compile validation |
|
|
227
|
+
|
|
228
|
+
**FAIL if:** Wrong node URL, missing variant coverage, or old closure style.
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## 10. View Implementation Quality
|
|
233
|
+
|
|
234
|
+
Read `{ComponentName}.swift` (the View, excluding Preview section):
|
|
235
|
+
|
|
236
|
+
| Rule | Check |
|
|
237
|
+
|------|-------|
|
|
238
|
+
| `@GenerateConfiguredInit` | Applied to the View struct |
|
|
239
|
+
| `public struct` | View is public |
|
|
240
|
+
| `public let configuration` | Configuration property is public let |
|
|
241
|
+
| `@Environment(\.isEnabled)` | Used for disabled state (NOT a config boolean) |
|
|
242
|
+
| No force unwraps | No `!` on optionals in production code |
|
|
243
|
+
| No `print`/`debugPrint` | No debug logging in production code |
|
|
244
|
+
| Correct MARK sections | `// MARK: - Properties`, `// MARK: - Body`, `// MARK: - Subviews`, `// MARK: - Computed Properties` |
|
|
245
|
+
| `@ViewBuilder` on conditional views | Optional subviews use `@ViewBuilder` |
|
|
246
|
+
| No unused imports | Every `import` is actually used |
|
|
247
|
+
|
|
248
|
+
**FAIL if:** Missing macro annotation, force unwraps, or debug logging.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 11. FIGMA.md Documentation
|
|
253
|
+
|
|
254
|
+
Read `{componentLocation}/FIGMA.md`:
|
|
255
|
+
|
|
256
|
+
| Rule | Check |
|
|
257
|
+
|------|-------|
|
|
258
|
+
| Figma link present | Contains `https://www.figma.com/design/{fileKey}/?node-id={nodeId}` |
|
|
259
|
+
| Variant mapping table | Maps Figma property values to Swift enum cases |
|
|
260
|
+
| Usage example | Shows basic instantiation |
|
|
261
|
+
| Code Connect section | Lists strategy and property mappings |
|
|
262
|
+
|
|
263
|
+
**FAIL if:** Missing Figma link or variant mapping table.
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## 12. Build Verification
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
xcodebuild build -project {build.xcodeproj} -scheme {build.scheme} \
|
|
271
|
+
-destination 'generic/platform=iOS' CODE_SIGNING_ALLOWED=NO -quiet
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
**FAIL if:** Build errors. Warnings on component files should be investigated.
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## 13. Test Verification
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
REPO_ROOT=$(git rev-parse --show-toplevel)
|
|
282
|
+
bash "${REPO_ROOT}/.instructions/figma/figma-to-swiftui/scripts/run-uicomponents-tests.sh" --filter "{ComponentName}ViewInspectorTests"
|
|
283
|
+
bash "${REPO_ROOT}/.instructions/figma/figma-to-swiftui/scripts/run-uicomponents-tests.sh" --filter "{ComponentName}SnapshotTests"
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
**FAIL if:** Any test fails or test count is zero.
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Review Output Format
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
## Code Review: {ComponentName}
|
|
294
|
+
|
|
295
|
+
### Status: PASS / FAIL / WARN
|
|
296
|
+
|
|
297
|
+
### Checklist
|
|
298
|
+
|
|
299
|
+
| # | Check | Status | Notes |
|
|
300
|
+
|---|-------|--------|-------|
|
|
301
|
+
| 1 | File completeness | PASS/FAIL | {missing files if any} |
|
|
302
|
+
| 2 | No magic numbers | PASS/FAIL | {violations if any} |
|
|
303
|
+
| 3 | Configuration purity | PASS/FAIL/N/A | {violations if any} |
|
|
304
|
+
| 4 | +Modifiers correctness | PASS/FAIL/N/A | {violations if any} |
|
|
305
|
+
| 5 | Accessibility | PASS/FAIL | {missing identifiers if any} |
|
|
306
|
+
| 6 | Analytics | PASS/WARN | {missing tracking if any} |
|
|
307
|
+
| 7 | Testing identifiers | PASS/FAIL | {pipeline gaps if any} |
|
|
308
|
+
| 8 | Preview quality | PASS/FAIL | {issues if any} |
|
|
309
|
+
| 9 | Code Connect | PASS/FAIL | {issues if any} |
|
|
310
|
+
| 10 | View implementation | PASS/FAIL | {issues if any} |
|
|
311
|
+
| 11 | FIGMA.md docs | PASS/FAIL | {issues if any} |
|
|
312
|
+
| 12 | Build | PASS/FAIL | {errors if any} |
|
|
313
|
+
| 13 | Tests | PASS/FAIL | {failures if any} |
|
|
314
|
+
|
|
315
|
+
### Violations (if any)
|
|
316
|
+
|
|
317
|
+
{Detailed list of each violation with file:line, what's wrong, and suggested fix}
|
|
318
|
+
|
|
319
|
+
### Summary
|
|
320
|
+
|
|
321
|
+
{One paragraph: overall assessment, blocking issues, suggestions}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Severity Levels
|
|
327
|
+
|
|
328
|
+
| Level | Meaning | Action |
|
|
329
|
+
|-------|---------|--------|
|
|
330
|
+
| **FAIL** | Blocking — must fix before commit | Fix all FAIL items |
|
|
331
|
+
| **WARN** | Non-blocking — should fix but can commit | Document in PR description |
|
|
332
|
+
| **PASS** | Compliant | No action needed |
|
|
333
|
+
| **N/A** | Not applicable | SIMPLE components skip Configuration/+Modifiers checks |
|
|
334
|
+
|
|
335
|
+
**Overall status:**
|
|
336
|
+
- Any FAIL → overall FAIL (do not commit)
|
|
337
|
+
- All PASS/WARN/N/A → overall PASS (safe to commit)
|