@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,482 @@
|
|
|
1
|
+
# PHASE 5 — Testing Orchestrator
|
|
2
|
+
|
|
3
|
+
Orchestrates Phase 5 sub-phases: dispatches sub-agents to write test files, collects results.
|
|
4
|
+
PREV: Phase 4 (Implementation)
|
|
5
|
+
NEXT: Phase 6 (Code Connect Publish)
|
|
6
|
+
|
|
7
|
+
**Date Format:** Use `DD.MM.YYYY` format (e.g., `23.02.2026`) for file headers.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## PURPOSE
|
|
12
|
+
|
|
13
|
+
Phase 5 generates tests for the implemented component.
|
|
14
|
+
Each sub-phase writes test files in a specific testing category.
|
|
15
|
+
Phase 6 (Code Connect) consumes the verified component.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## PRE-CHECK: Phase 4 Complete
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Read: {artifactPath}/IMPLEMENTATION_HISTORY.md
|
|
23
|
+
Read: {artifactPath}/pass3/_index.md
|
|
24
|
+
Read: {artifactPath}/pass3/04b_component_architecture.md
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
EXTRACT:
|
|
28
|
+
- `componentName`
|
|
29
|
+
- `artifactPath`
|
|
30
|
+
- `sourceModule` (e.g., `UIComponents`)
|
|
31
|
+
- `sourceLocation` (full path to component Swift file)
|
|
32
|
+
- `componentPath` (path after `Sources/<Module>/`, e.g., `Components/MobileAppComponents/Components/Badges/LabelBadge`)
|
|
33
|
+
|
|
34
|
+
Verify the component Swift file exists at `sourceLocation`.
|
|
35
|
+
|
|
36
|
+
| Result | Action |
|
|
37
|
+
|--------|--------|
|
|
38
|
+
| All files exist + component Swift file exists | Proceed to CREATE_TEST_INDEX |
|
|
39
|
+
| Missing | HALT |
|
|
40
|
+
|
|
41
|
+
FAIL →
|
|
42
|
+
```
|
|
43
|
+
STATUS: HALT
|
|
44
|
+
PHASE: phase-5
|
|
45
|
+
GATE: PRE_CHECK
|
|
46
|
+
REASON: Phase 4 artifacts or component Swift file not found.
|
|
47
|
+
COMPLETED_GATES: []
|
|
48
|
+
ARTIFACTS_CREATED: none
|
|
49
|
+
USER_ACTION_REQUIRED: Run Phase 4 first.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## GATE 1: CREATE_TEST_INDEX
|
|
55
|
+
|
|
56
|
+
Create a single index file that maps to all artifact paths used by test sub-phases.
|
|
57
|
+
This is the ONLY file that knows where artifacts live — sub-phases read this index.
|
|
58
|
+
|
|
59
|
+
### 1.1 Write `{artifactPath}/pass5/_test_index.md`
|
|
60
|
+
|
|
61
|
+
```markdown
|
|
62
|
+
# Test Index
|
|
63
|
+
|
|
64
|
+
Component: {componentName}
|
|
65
|
+
Generated: {DD.MM.YYYY}
|
|
66
|
+
|
|
67
|
+
## Component Source
|
|
68
|
+
|
|
69
|
+
| Field | Value |
|
|
70
|
+
|-------|-------|
|
|
71
|
+
| Module | {sourceModule} |
|
|
72
|
+
| Source File | {sourceLocation}/{componentName}.swift |
|
|
73
|
+
| Configuration File | {sourceLocation}/{componentName}Configuration.swift |
|
|
74
|
+
| Component Path | {componentPath} |
|
|
75
|
+
|
|
76
|
+
## Artifact Paths
|
|
77
|
+
|
|
78
|
+
| Artifact | Path | Used By |
|
|
79
|
+
|----------|------|---------|
|
|
80
|
+
| Component Properties | {artifactPath}/pass1/component_properties.json | 5A, 5B |
|
|
81
|
+
| Testing Identifiers | {artifactPath}/pass2/utility_identifiers.md | 5A |
|
|
82
|
+
| Component Architecture | {artifactPath}/pass3/04b_component_architecture.md | 5B |
|
|
83
|
+
| Patterns | {artifactPath}/pass3/04_patterns.md | 5B |
|
|
84
|
+
| Complexity | {artifactPath}/pass3/05_complexity.md | 5A |
|
|
85
|
+
| Utility Integration | {artifactPath}/pass3/08_utility_integration.md | 5A |
|
|
86
|
+
|
|
87
|
+
## Test Targets
|
|
88
|
+
|
|
89
|
+
| Category | Target | Base Path |
|
|
90
|
+
|----------|--------|-----------|
|
|
91
|
+
| ViewInspector | {sourceModule}Tests | Tests/{sourceModule}Tests/ViewInspector/{componentPath}/ |
|
|
92
|
+
| Snapshot | {sourceModule}Tests | Tests/{sourceModule}Tests/Snapshot/{componentPath}/ |
|
|
93
|
+
| Unit | {sourceModule}Tests | Tests/{sourceModule}Tests/Unit/{componentPath}/ |
|
|
94
|
+
|
|
95
|
+
## Test Files (populated by sub-phases)
|
|
96
|
+
|
|
97
|
+
| Sub-Phase | File | Status |
|
|
98
|
+
|-----------|------|--------|
|
|
99
|
+
| 5A ViewInspector | {componentName}ViewInspectorTests.swift | pending |
|
|
100
|
+
| 5B Snapshot | {componentName}SnapshotTests.swift | pending |
|
|
101
|
+
| 5C Unit | {componentName}Tests.swift | pending / N/A |
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## ROUTING
|
|
107
|
+
|
|
108
|
+
### Sub-Phase Inventory
|
|
109
|
+
|
|
110
|
+
| Sub-Phase | File | Purpose | Required |
|
|
111
|
+
|-----------|------|---------|----------|
|
|
112
|
+
| 5A | `phase-5a-viewinspector.md` | ViewInspector structure + accessibility tests | **ALWAYS** |
|
|
113
|
+
| 5B | `phase-5b-snapshot.md` | Snapshot tests for ALL Figma variants | **ALWAYS** |
|
|
114
|
+
| 5C | `phase-5c-unit.md` | Unit tests for ViewModel/model logic | **CONDITIONAL** — only if testable logic exists |
|
|
115
|
+
|
|
116
|
+
### Execution Flow
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
GATE 1: CREATE_TEST_INDEX
|
|
120
|
+
↓
|
|
121
|
+
Wave 1 (parallel):
|
|
122
|
+
5A — ViewInspector structure tests
|
|
123
|
+
5B — Snapshot visual tests
|
|
124
|
+
↓
|
|
125
|
+
Wave 2 (conditional):
|
|
126
|
+
5C — Unit tests (ONLY if component has ViewModel/model logic)
|
|
127
|
+
↓
|
|
128
|
+
GATE 2: UPDATE_TEST_INDEX
|
|
129
|
+
↓
|
|
130
|
+
GATE 3: TEST_EXECUTION (xcodebuild test — builds + runs, zero warnings, all tests pass)
|
|
131
|
+
↓
|
|
132
|
+
GATE 4: TEST_FILE_VALIDATION
|
|
133
|
+
↓
|
|
134
|
+
GATE 5: UPDATE_REGISTRY (phase5-finalize.py)
|
|
135
|
+
↓
|
|
136
|
+
PHASE OUTPUT
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Sub-Phase Inputs
|
|
140
|
+
|
|
141
|
+
All sub-phases read from `{artifactPath}/pass5/_test_index.md` for paths.
|
|
142
|
+
They then read the actual artifact files listed in the index — no data duplication.
|
|
143
|
+
|
|
144
|
+
| Sub-Phase | Reads From (via index) |
|
|
145
|
+
|-----------|----------------------|
|
|
146
|
+
| 5A | component_properties.json, utility_identifiers.md, utility_integration.md |
|
|
147
|
+
| 5B | component_properties.json, 04b_component_architecture.md, 04_patterns.md |
|
|
148
|
+
| 5C | Component source file (scan for ViewModel/models) |
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## GATE 2: UPDATE_TEST_INDEX
|
|
153
|
+
|
|
154
|
+
After all sub-phases complete, update `pass5/_test_index.md`:
|
|
155
|
+
- Set each sub-phase status to `complete` or `N/A`
|
|
156
|
+
- Record test counts
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## GATE 3: TEST_EXECUTION
|
|
161
|
+
|
|
162
|
+
Build and run tests using the `run-uicomponents-tests.sh` script. The script uses `xcodebuild test` which builds before testing — no separate build gate is needed. This gate requires **zero build warnings** and **all tests passing**.
|
|
163
|
+
|
|
164
|
+
### How it works
|
|
165
|
+
|
|
166
|
+
The script runs tests via the `UIComponents-Package` scheme inside the SPM package directory (`{repos.components.path}/`). This uses the package's own umbrella scheme, avoiding the need for any one-time Xcode setup. The `xcodebuild test` command compiles first (catching build errors with exit code 65) then runs the tests.
|
|
167
|
+
|
|
168
|
+
### Switch to local common dependency
|
|
169
|
+
|
|
170
|
+
The UIComponents SPM package resolves `{project.slug}-common` from remote git, but Phase 2 adds identifiers/keys to the local editable copy. Before running tests, in `{repos.components.path}/Package.swift`, comment out the `.package(url: "...{project.slug}-common...", ...)` line and add `.package(path: "../{project.slug}-common"),` below it.
|
|
171
|
+
|
|
172
|
+
### Run tests
|
|
173
|
+
|
|
174
|
+
Run each test class separately to isolate failures:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
REPO_ROOT=$(git rev-parse --show-toplevel)
|
|
178
|
+
bash "${REPO_ROOT}/.instructions/figma/figma-to-swiftui/scripts/run-uicomponents-tests.sh" \
|
|
179
|
+
--filter "{ComponentName}ViewInspectorTests"
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
bash "${REPO_ROOT}/.instructions/figma/figma-to-swiftui/scripts/run-uicomponents-tests.sh" \
|
|
184
|
+
--filter "{ComponentName}SnapshotTests"
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
For unit tests (if 5C was generated):
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
bash "${REPO_ROOT}/.instructions/figma/figma-to-swiftui/scripts/run-uicomponents-tests.sh" \
|
|
191
|
+
--filter "{ComponentName}Tests"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Revert to remote dependency
|
|
195
|
+
|
|
196
|
+
After all tests pass, uncomment the original `.package(url: ...)` line and remove the `.package(path: ...)` line in `Package.swift`.
|
|
197
|
+
|
|
198
|
+
**Important:** Do NOT run multiple test filters in parallel — they share the same DerivedData build database and will fail with a database lock error. Run them sequentially.
|
|
199
|
+
|
|
200
|
+
**Note on first-run snapshots:** When snapshot tests run for the first time, `record: .missing` mode will **record** reference images (not fail). The test passes but creates new `__Snapshots__/` directories with `.png` files. These reference images are **gitignored** and must NOT be committed — they are re-recorded automatically on each machine. The wiki/Confluence skill copies them from disk for documentation before they are discarded.
|
|
201
|
+
|
|
202
|
+
### required GATE — SNAPSHOT_DESIGN_FIDELITY
|
|
203
|
+
|
|
204
|
+
Snapshot tests passing does NOT mean the rendered component matches the Figma design. It only means "the pixels we recorded match the pixels we recorded". A broken test scaffold (missing image prefetch per `phase-5b-snapshot.md § GATE 3.0.1`, wrong hosting frame, clipped layout, misapplied modifier) records a broken render as "ground truth" and every subsequent run compares broken-vs-broken and reports PASS. The test infrastructure CANNOT catch this class of failure by itself.
|
|
205
|
+
|
|
206
|
+
This gate runs automatically after `TEST_EXECUTION` succeeds, every time Phase 5B recorded or re-recorded snapshots (first run or after a test-file change). It is performed by the orchestrator itself — no user involvement, no pause for confirmation.
|
|
207
|
+
|
|
208
|
+
**Procedure** (automated fix-and-retry loop, up to 4 attempts):
|
|
209
|
+
|
|
210
|
+
1. Read `{artifactPath}/pass1/screenshot.png` — the Figma reference captured in Phase 1. (Claude is multimodal and sees images via the Read tool.)
|
|
211
|
+
2. Read the LTR light variant from `__Snapshots__/{componentName}SnapshotTests/test_snapshot_light_default.light_default.png` (or the equivalent default-variant filename).
|
|
212
|
+
3. Compare them directly in the orchestrator's own visual judgement — layout, proportions, hierarchy, typography, colors, gradients, background content, text legibility.
|
|
213
|
+
4. **If match** (all match criteria hold): proceed to Phase 6.
|
|
214
|
+
5. **If mismatch** (any non-match criterion triggers): do NOT halt on the first failure. Instead enter the fix-and-retry loop:
|
|
215
|
+
|
|
216
|
+
a. **Diagnose the specific mismatch**: what differs, where, and the most likely cause (component layout bug, wrong token, test scaffold issue, etc.). Write the diagnosis to `{artifactPath}/pass5/fidelity_attempt_{N}.md`.
|
|
217
|
+
|
|
218
|
+
b. **Apply a fix**:
|
|
219
|
+
- If the fault is in the component source (wrong modifier order, wrong token, missing effect, clipped layout), edit `{sourceLocation}/{componentName}.swift` (and/or Configuration file) to correct it.
|
|
220
|
+
- If the fault is in the test scaffold (missing image prefetch, wrong hosting frame, padding outside the frame), edit the snapshot test file.
|
|
221
|
+
- Do NOT edit Figma or claim the Figma reference is wrong.
|
|
222
|
+
|
|
223
|
+
c. **Delete stale snapshots** at `__Snapshots__/{componentName}SnapshotTests/` so the next test run re-records against the fixed component/scaffold.
|
|
224
|
+
|
|
225
|
+
d. **Re-run Phase 5B** via `run-uicomponents-tests.sh --filter "{componentName}SnapshotTests"`. The first run records; if you need a clean compare, run again.
|
|
226
|
+
|
|
227
|
+
e. **Re-compare** the new snapshot against `pass1/screenshot.png`. Go back to step 3.
|
|
228
|
+
|
|
229
|
+
6. **Attempt budget**: up to 4 fix attempts total. After the 4th failed attempt, HALT with:
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
STATUS: HALT
|
|
233
|
+
PHASE: phase-5
|
|
234
|
+
GATE: SNAPSHOT_DESIGN_FIDELITY
|
|
235
|
+
REASON: Rendered snapshot does not match Figma after 4 fix attempts.
|
|
236
|
+
ATTEMPTS:
|
|
237
|
+
1. {diagnosis and fix summary from fidelity_attempt_1.md}
|
|
238
|
+
2. {diagnosis and fix summary from fidelity_attempt_2.md}
|
|
239
|
+
3. {diagnosis and fix summary from fidelity_attempt_3.md}
|
|
240
|
+
4. {diagnosis and fix summary from fidelity_attempt_4.md}
|
|
241
|
+
CURRENT_MISMATCH: {description of the remaining delta}
|
|
242
|
+
USER_ACTION_REQUIRED: The mismatch is beyond automated repair. Review pass5/fidelity_attempt_*.md to see what was tried, then inspect the component manually.
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
7. **Counter tracking**: the attempt counter lives in the orchestrator's own task state — do NOT rely on grepping files. Increment after every mismatch-driven fix. Reset only on successful match.
|
|
246
|
+
|
|
247
|
+
**Match criteria** (all must hold):
|
|
248
|
+
- Overall layout, proportions, and hierarchy match Figma
|
|
249
|
+
- Typography sizes, weights, and colors are correct
|
|
250
|
+
- Background images (remote or local) actually render content, not placeholders / spinners / blank areas
|
|
251
|
+
- Gradients, shadows, blur effects are visible at roughly the intensity shown in Figma
|
|
252
|
+
- Text is legible and positioned where Figma shows it
|
|
253
|
+
|
|
254
|
+
**Non-match criteria** (any one triggers HALT):
|
|
255
|
+
- Loading spinner instead of the image
|
|
256
|
+
- Text clipped or overflowing the container
|
|
257
|
+
- Gradient baked in but invisible because of layout bugs
|
|
258
|
+
- Wrong typography weight / size
|
|
259
|
+
- Colors that look "close enough" but don't match Figma tokens
|
|
260
|
+
- Any case where the recorded snapshot is visibly different from `pass1/screenshot.png` beyond expected aspect-ratio or sample-data differences
|
|
261
|
+
|
|
262
|
+
**Never ask the user to confirm the match**. The orchestrator is multimodal and has direct visual access to both images. Surfacing the images to the user and asking for confirmation is forbidden — it wastes a round-trip and makes the gate advisory instead of blocking. The orchestrator makes the judgement itself, enters the fix loop on mismatch, and only HALTs after the 4-attempt budget is exhausted.
|
|
263
|
+
|
|
264
|
+
**Never explain away a mismatch**. If the visual comparison shows a clear difference, enter the fix loop — do not rationalise that the snapshot is "close enough" or that the difference is "just the sample image". Ambiguous cases also enter the fix loop and surface the specific concern in the `fidelity_attempt_{N}.md` diagnosis.
|
|
265
|
+
|
|
266
|
+
### Pass criteria
|
|
267
|
+
|
|
268
|
+
Both conditions must be met:
|
|
269
|
+
|
|
270
|
+
1. **All tests pass** — exit code 0, no test failures
|
|
271
|
+
2. **Zero build warnings** — review xcodebuild output for warnings in the component's test files. Fix any warnings before proceeding.
|
|
272
|
+
|
|
273
|
+
### Exit codes
|
|
274
|
+
|
|
275
|
+
| Exit Code | Meaning | Action |
|
|
276
|
+
|-----------|---------|--------|
|
|
277
|
+
| 0 (PASS) | Build clean + all tests passed | Check output for warnings, then proceed to GATE 4 |
|
|
278
|
+
| 2 (PACKAGE_NOT_FOUND) | UIComponents package directory missing | Verify package path exists |
|
|
279
|
+
| 3 (NO_SIMULATOR) | No available iPhone simulator | Install an iOS Simulator runtime via Xcode > Settings > Platforms |
|
|
280
|
+
| 65 (BUILD_FAIL) | Compilation failed | Read error output, fix build errors, re-run |
|
|
281
|
+
| 1 (TEST_FAIL) | One or more tests failed | Read test output, fix failing tests, re-run |
|
|
282
|
+
|
|
283
|
+
### Common build errors and fixes
|
|
284
|
+
|
|
285
|
+
| Error | Fix |
|
|
286
|
+
|-------|-----|
|
|
287
|
+
| Missing import | Add `import SnapshotTesting`, `import ViewInspector`, or `@testable import UIComponents` |
|
|
288
|
+
| `@MainActor` missing | Add `@MainActor` on the test class (Swift 6 strict concurrency requires this for classes using SwiftUI views or UIHostingController) |
|
|
289
|
+
| Unknown helper method | Ensure `assertSnapshot`/`assertSnapshotDarkMode`/`assertSnapshotRTL`/`assertSnapshotRTLDarkMode` are defined in the test file |
|
|
290
|
+
|
|
291
|
+
### Warning policy
|
|
292
|
+
|
|
293
|
+
After tests pass (exit 0), review the output for any warnings in the component's test files. Common warnings to fix:
|
|
294
|
+
|
|
295
|
+
| Warning | Fix |
|
|
296
|
+
|---------|-----|
|
|
297
|
+
| `'Inspectable' is deprecated` | Remove the `extension {ComponentName}: Inspectable {}` line — no longer required by ViewInspector |
|
|
298
|
+
| `main actor-isolated property` | Add `@MainActor` to the test class |
|
|
299
|
+
| Unused variable | Remove or use the variable |
|
|
300
|
+
|
|
301
|
+
If warnings are found: fix them, re-run tests, confirm exit 0 with clean output.
|
|
302
|
+
|
|
303
|
+
If tests fail:
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
STATUS: HALT
|
|
307
|
+
PHASE: phase-5
|
|
308
|
+
GATE: TEST_EXECUTION
|
|
309
|
+
REASON: Test execution failed.
|
|
310
|
+
TEST_ERRORS: {error output from xcodebuild test}
|
|
311
|
+
COMPLETED_GATES: [PRE_CHECK, CREATE_TEST_INDEX, ROUTING, UPDATE_TEST_INDEX]
|
|
312
|
+
USER_ACTION_REQUIRED: Fix the failing tests and re-run.
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## GATE 4: TEST_FILE_VALIDATION
|
|
318
|
+
|
|
319
|
+
Validate that all generated test files follow the required patterns and that no tests are skipped.
|
|
320
|
+
|
|
321
|
+
### 5.1 Structural validation — ViewInspector test file
|
|
322
|
+
|
|
323
|
+
Check the ViewInspector test file at `Tests/{sourceModule}Tests/ViewInspector/{componentPath}/{componentName}ViewInspectorTests.swift`:
|
|
324
|
+
|
|
325
|
+
```
|
|
326
|
+
[ ] File exists
|
|
327
|
+
[ ] Has `import ViewInspector`
|
|
328
|
+
[ ] Has `import XCTest`
|
|
329
|
+
[ ] Has `@testable import UIComponents`
|
|
330
|
+
[ ] Does NOT have `extension {ComponentName}: Inspectable {}` (deprecated since ViewInspector 0.10+)
|
|
331
|
+
[ ] Class is `@MainActor final class {ComponentName}ViewInspectorTests: XCTestCase`
|
|
332
|
+
[ ] Has `makeSUT()` helper method
|
|
333
|
+
[ ] Has `test_viewExists()` test
|
|
334
|
+
[ ] Has `test_containsExpectedSubviews()` test
|
|
335
|
+
[ ] Has variant rendering tests (e.g., `test_allStatesRender`)
|
|
336
|
+
[ ] Has accessibility identifier tests for each testing ID
|
|
337
|
+
[ ] No `XCTSkip` — all tests must execute
|
|
338
|
+
[ ] No `throw XCTSkip` — no conditional skipping
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### 5.2 Structural validation — Snapshot test file
|
|
342
|
+
|
|
343
|
+
Check the Snapshot test file at `Tests/{sourceModule}Tests/Snapshot/{componentPath}/{componentName}SnapshotTests.swift`:
|
|
344
|
+
|
|
345
|
+
```
|
|
346
|
+
[ ] File exists
|
|
347
|
+
[ ] Has `import SnapshotTesting`
|
|
348
|
+
[ ] Has `import XCTest`
|
|
349
|
+
[ ] Has `@testable import UIComponents`
|
|
350
|
+
[ ] Class is `@MainActor final class {ComponentName}SnapshotTests: XCTestCase`
|
|
351
|
+
[ ] Has `override func invokeTest()` with `withSnapshotTesting(record: .missing)`
|
|
352
|
+
[ ] Has light + dark variants for EVERY Figma variant dimension
|
|
353
|
+
[ ] Has RTL variants if component has text/localized content
|
|
354
|
+
[ ] Has 4 snapshot helpers: assertSnapshot, assertSnapshotDarkMode, assertSnapshotRTL, assertSnapshotRTLDarkMode
|
|
355
|
+
[ ] Each helper uses UIHostingController wrapping
|
|
356
|
+
[ ] Each helper uses `.image(precision: 0.99, perceptualPrecision: 0.98)`
|
|
357
|
+
[ ] RTL helpers set `.semanticContentAttribute = .forceRightToLeft`
|
|
358
|
+
[ ] Dark helpers set `.overrideUserInterfaceStyle = .dark`
|
|
359
|
+
[ ] No `XCTSkip` — all tests must execute
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
### 5.3 Test naming convention
|
|
363
|
+
|
|
364
|
+
All test methods must follow the naming pattern:
|
|
365
|
+
|
|
366
|
+
| Test type | Pattern | Example |
|
|
367
|
+
|-----------|---------|---------|
|
|
368
|
+
| ViewInspector | `test_{description}` | `test_viewExists`, `test_containsText` |
|
|
369
|
+
| Snapshot Light | `test_snapshot_light_{variant}` | `test_snapshot_light_success` |
|
|
370
|
+
| Snapshot Dark | `test_snapshot_dark_{variant}` | `test_snapshot_dark_success` |
|
|
371
|
+
| Snapshot RTL Light | `test_snapshot_rtl_light_{variant}` | `test_snapshot_rtl_light_success` |
|
|
372
|
+
| Snapshot RTL Dark | `test_snapshot_rtl_dark_{variant}` | `test_snapshot_rtl_dark_success` |
|
|
373
|
+
|
|
374
|
+
### 5.4 Variant coverage check
|
|
375
|
+
|
|
376
|
+
Cross-reference test methods against `pass3/04_patterns.md` variant list:
|
|
377
|
+
|
|
378
|
+
- Every variant dimension from Figma must have a corresponding **light** snapshot test
|
|
379
|
+
- Every variant dimension must have a corresponding **dark** snapshot test
|
|
380
|
+
- If component has text/localized content: every key variant must have **RTL light** + **RTL dark** tests
|
|
381
|
+
- Boolean toggle variants (e.g., with/without icon) must have separate test methods
|
|
382
|
+
|
|
383
|
+
| Result | Action |
|
|
384
|
+
|--------|--------|
|
|
385
|
+
| All checks pass | Proceed to PHASE OUTPUT |
|
|
386
|
+
| Any check fails | Fix the violation and re-validate |
|
|
387
|
+
|
|
388
|
+
If validation fails:
|
|
389
|
+
|
|
390
|
+
```
|
|
391
|
+
STATUS: HALT
|
|
392
|
+
PHASE: phase-5
|
|
393
|
+
GATE: TEST_FILE_VALIDATION
|
|
394
|
+
REASON: Test file validation failed.
|
|
395
|
+
VIOLATIONS: {list of violations}
|
|
396
|
+
COMPLETED_GATES: [PRE_CHECK, CREATE_TEST_INDEX, ROUTING, UPDATE_TEST_INDEX, TEST_EXECUTION]
|
|
397
|
+
USER_ACTION_REQUIRED: Fix the violations listed above.
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
## GATE 5: UPDATE_REGISTRY
|
|
403
|
+
|
|
404
|
+
Run the Phase 5 finalize script to mark `tested` in the component registry:
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
python3 .instructions/figma/figma-to-swiftui/scripts/phase5-finalize.py \
|
|
408
|
+
--node-id "{nodeId}" \
|
|
409
|
+
--platform ios
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
| Result | Action |
|
|
413
|
+
|--------|--------|
|
|
414
|
+
| Exit 0, `"action": "updated"` | `status.ios.tested` set green, `against = implemented.version` — proceed |
|
|
415
|
+
| Exit 0, `"action": "already_current"` | Already marked against current implemented.version — proceed |
|
|
416
|
+
| Exit 0, `"action": "created"` | New registry file created — proceed |
|
|
417
|
+
| Exit 1 | HALT — registry update failed |
|
|
418
|
+
|
|
419
|
+
**Why this matters:** This is the single source of truth for `status.ios.tested`. The script records `against = status.ios.implemented.version` so when the next Phase 4 bumps `implemented.version`, this flag automatically drops to yellow until tests are re-run. `figma-iteration-commit` reads this and syncs the GitHub issue via `update-issue-from-registry.py`.
|
|
420
|
+
|
|
421
|
+
FAIL →
|
|
422
|
+
```
|
|
423
|
+
STATUS: HALT
|
|
424
|
+
PHASE: phase-5
|
|
425
|
+
GATE: UPDATE_REGISTRY
|
|
426
|
+
REASON: phase5-finalize.py failed.
|
|
427
|
+
COMPLETED_GATES: [PRE_CHECK, CREATE_TEST_INDEX, ROUTING, UPDATE_TEST_INDEX, TEST_EXECUTION, TEST_FILE_VALIDATION]
|
|
428
|
+
USER_ACTION_REQUIRED: Check script error output; verify node-id matches the registry.
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## PHASE OUTPUT
|
|
434
|
+
|
|
435
|
+
```
|
|
436
|
+
STATUS: COMPLETE
|
|
437
|
+
PHASE: phase-5
|
|
438
|
+
GATES_PASSED: [PRE_CHECK, CREATE_TEST_INDEX, ROUTING, UPDATE_TEST_INDEX, TEST_EXECUTION, TEST_FILE_VALIDATION, UPDATE_REGISTRY]
|
|
439
|
+
ARTIFACTS_CREATED:
|
|
440
|
+
- {artifactPath}/pass5/_test_index.md
|
|
441
|
+
SUB_PHASES:
|
|
442
|
+
- 5A ViewInspector: {COUNT} tests — {testFilePath}
|
|
443
|
+
- 5B Snapshot: {COUNT} tests ({LIGHT} light + {DARK} dark + {RTL} RTL) — {testFilePath}
|
|
444
|
+
- 5C Unit: {COUNT} tests or N/A — {testFilePath or N/A}
|
|
445
|
+
TESTS: ✅ PASS (xcodebuild test — zero warnings, all tests green)
|
|
446
|
+
VALIDATION: ✅ PASS (structure + naming + variant coverage)
|
|
447
|
+
SUMMARY: Phase 5 testing complete. {TOTAL} tests across {FILE_COUNT} test files. Zero warnings. All tests passing.
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
## VALIDATION CHECKLIST
|
|
453
|
+
|
|
454
|
+
```
|
|
455
|
+
[ ] pass5/_test_index.md created with all artifact paths
|
|
456
|
+
[ ] 5A ViewInspector test file created — structure, accessibility, variant rendering tests
|
|
457
|
+
[ ] 5B Snapshot test file created — light/dark/RTL variants, snapshot helpers
|
|
458
|
+
[ ] 5C Unit tests created OR marked N/A (no testable logic)
|
|
459
|
+
[ ] Test index updated with final status
|
|
460
|
+
[ ] All test files follow existing project patterns (XCTest, makeSUT, closure init)
|
|
461
|
+
[ ] xcodebuild test passed (exit 0, all tests green)
|
|
462
|
+
[ ] Zero build warnings in component test files
|
|
463
|
+
[ ] No XCTSkip in any test file — all tests must execute
|
|
464
|
+
[ ] Snapshot test naming follows test_snapshot_{mode}_{variant} convention
|
|
465
|
+
[ ] ViewInspector tests cover all accessibility identifiers
|
|
466
|
+
[ ] Snapshot tests cover ALL Figma variant dimensions (light + dark minimum)
|
|
467
|
+
[ ] RTL snapshot tests present for components with text/localized content
|
|
468
|
+
[ ] Snapshot reference images generated locally (NOT committed — gitignored)
|
|
469
|
+
[ ] phase5-finalize.py passed (status.ios.tested updated)
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
## REFERENCES
|
|
475
|
+
|
|
476
|
+
| Topic | File |
|
|
477
|
+
|-------|------|
|
|
478
|
+
| Phase 5A | `phase-5a-viewinspector.md` |
|
|
479
|
+
| Phase 5B | `phase-5b-snapshot.md` |
|
|
480
|
+
| Phase 5C | `phase-5c-unit.md` |
|
|
481
|
+
| ViewInspector API | `reference/viewinspector.md` |
|
|
482
|
+
| Snapshot Testing | `reference/snapshot-testing.md` |
|