@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,59 @@
|
|
|
1
|
+
## App Store Review Guidelines
|
|
2
|
+
|
|
3
|
+
### Before You Submit (Checklist)
|
|
4
|
+
|
|
5
|
+
- Test your app for crashes and bugs on-device
|
|
6
|
+
- Ensure all metadata, screenshots, and previews are complete and accurate
|
|
7
|
+
- Provide a demo account if your app requires login
|
|
8
|
+
- Enable backend services during review
|
|
9
|
+
- Use TestFlight for beta distribution — not the App Store
|
|
10
|
+
- Include detailed App Review notes for non-obvious features or IAPs
|
|
11
|
+
|
|
12
|
+
### 1. Safety
|
|
13
|
+
|
|
14
|
+
- No offensive, discriminatory, or mean-spirited content
|
|
15
|
+
- UGC apps: filtering + reporting + blocking + contact info
|
|
16
|
+
- Kids Category: no links out, COPPA/GDPR compliant
|
|
17
|
+
- Medical apps: disclose methodology, no unvalidated claims
|
|
18
|
+
|
|
19
|
+
### 2. Performance
|
|
20
|
+
|
|
21
|
+
- Submit only final builds — no placeholder content
|
|
22
|
+
- Screenshots must show app in use; name limit 30 chars
|
|
23
|
+
- No battery drain, no crypto mining, no unrelated background processes
|
|
24
|
+
- Use only public APIs; must function on IPv6-only networks
|
|
25
|
+
|
|
26
|
+
### 3. Business
|
|
27
|
+
|
|
28
|
+
- IAP required for unlocking features (no license keys, QR codes, crypto)
|
|
29
|
+
- Subscriptions: 7-day minimum, clear description, retain existing paid users
|
|
30
|
+
- Exceptions: reader apps, multiplatform services, person-to-person, physical goods
|
|
31
|
+
|
|
32
|
+
### 4. Design
|
|
33
|
+
|
|
34
|
+
- No copycats; app must go beyond repackaged website
|
|
35
|
+
- No spam (multiple Bundle IDs for same app)
|
|
36
|
+
- Must also offer Sign in with Apple if using third-party social login
|
|
37
|
+
|
|
38
|
+
### 5. Legal
|
|
39
|
+
|
|
40
|
+
- Privacy Policy required (in App Store Connect + in-app)
|
|
41
|
+
- Account deletion required if account creation supported
|
|
42
|
+
- ATT required before tracking
|
|
43
|
+
- No unauthorized IP use
|
|
44
|
+
|
|
45
|
+
### Common Rejection Reasons
|
|
46
|
+
|
|
47
|
+
| Category | Reason |
|
|
48
|
+
| ----------- | ---------------------------------------------- |
|
|
49
|
+
| Safety | Offensive content, false device features |
|
|
50
|
+
| Performance | Crashes, incomplete metadata, no demo account |
|
|
51
|
+
| Business | Features without IAP, misleading subscriptions |
|
|
52
|
+
| Design | Copied UI, insufficient functionality, spam |
|
|
53
|
+
| Legal | Missing privacy policy, no account deletion |
|
|
54
|
+
|
|
55
|
+
### After Submission
|
|
56
|
+
|
|
57
|
+
- Monitor in App Store Connect
|
|
58
|
+
- Expedited review for critical timing (use sparingly)
|
|
59
|
+
- Appeal via App Store appeal form if disagreement
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
## Code Review Excellence
|
|
2
|
+
|
|
3
|
+
### Review Priority Order
|
|
4
|
+
|
|
5
|
+
1. **Correctness**: Does code do what it claims? Edge cases?
|
|
6
|
+
2. **Security**: Input validation, auth/authz, keychain usage
|
|
7
|
+
3. **Performance**: Re-renders, memory leaks, lazy loading
|
|
8
|
+
4. **Maintainability**: Naming, function size, SRP
|
|
9
|
+
5. **Architecture**: Module boundaries, patterns, coupling
|
|
10
|
+
|
|
11
|
+
### Finding Severity
|
|
12
|
+
|
|
13
|
+
- Blocking: bugs, security holes, data loss, architecture violations
|
|
14
|
+
- Important: quality impact, performance issues
|
|
15
|
+
- Suggestion: style improvements, minor refactoring
|
|
16
|
+
|
|
17
|
+
### Feedback Formula: [What] + [Why] + [How]
|
|
18
|
+
|
|
19
|
+
### iOS Security Checklist
|
|
20
|
+
|
|
21
|
+
- [ ] No hardcoded secrets or API keys
|
|
22
|
+
- [ ] Sensitive data in Keychain, not UserDefaults
|
|
23
|
+
- [ ] All inputs validated and sanitized
|
|
24
|
+
- [ ] HTTPS only (ATS compliant)
|
|
25
|
+
- [ ] No logging of sensitive data
|
|
26
|
+
- [ ] Auth tokens not in plain text
|
|
27
|
+
- [ ] Permission strings accurate
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Swift/iOS code style and naming conventions
|
|
3
|
+
globs: "**/*.swift"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Swift Code Style Rules
|
|
7
|
+
|
|
8
|
+
### Naming
|
|
9
|
+
|
|
10
|
+
- Types: UpperCamelCase (`FlightSearchViewModel`)
|
|
11
|
+
- Functions/Properties: lowerCamelCase (`fetchFlightData()`)
|
|
12
|
+
- Constants: lowerCamelCase (`let maxRetryCount = 3`)
|
|
13
|
+
- Protocols: adjective or noun (`Configurable`, `DataSource`)
|
|
14
|
+
- Boolean: prefix with is/has/should (`isLoading`, `hasData`)
|
|
15
|
+
|
|
16
|
+
### Structure
|
|
17
|
+
|
|
18
|
+
- MARK comments to organize: `// MARK: - Properties`, `// MARK: - Lifecycle`
|
|
19
|
+
- Extension per protocol conformance
|
|
20
|
+
- Max function length: ~40 lines — split if longer
|
|
21
|
+
- Max file length: ~400 lines — split into extensions
|
|
22
|
+
|
|
23
|
+
### Patterns
|
|
24
|
+
|
|
25
|
+
- Guard early, return early — avoid deep nesting
|
|
26
|
+
- Use `[weak self]` in escaping closures, then `guard let self` inside
|
|
27
|
+
- Prefer `let` over `var`
|
|
28
|
+
- Prefer value types (struct/enum) over reference types (class) when possible
|
|
29
|
+
- Use `Result` type or async/await for error handling, not optional returns
|
|
30
|
+
|
|
31
|
+
### Don'ts
|
|
32
|
+
|
|
33
|
+
- No force unwraps (`!`) except IBOutlets
|
|
34
|
+
- No force casts (`as!`) — use `as?` with guard
|
|
35
|
+
- No implicitly unwrapped optionals except IBOutlets and test setup
|
|
36
|
+
- No magic numbers — use named constants
|
|
37
|
+
- No `print()` — use `os_log` or `Logger`
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
## Systematic Debugging
|
|
2
|
+
|
|
3
|
+
### The Scientific Method for Bugs
|
|
4
|
+
|
|
5
|
+
1. **Observe**: Reproduce, capture logs/traces/environment
|
|
6
|
+
2. **Hypothesize**: Form 2-3 testable hypotheses
|
|
7
|
+
3. **Experiment**: Change ONE thing at a time
|
|
8
|
+
4. **Analyze**: Binary search, targeted instrumentation
|
|
9
|
+
5. **Conclude**: Document, verify fix, prevent regression
|
|
10
|
+
|
|
11
|
+
### Common Root Cause Categories
|
|
12
|
+
|
|
13
|
+
| Category | Signs | Approach |
|
|
14
|
+
| ---------------- | ------------------------------ | -------------------------------------- |
|
|
15
|
+
| Race Condition | Intermittent, timing-dependent | Instrumentation, concurrent tests |
|
|
16
|
+
| State Corruption | Works initially, fails later | Trace state changes, invariant checks |
|
|
17
|
+
| Resource Leak | Degrades over time | Monitor memory, check cleanup |
|
|
18
|
+
| Off-by-One | Edge cases fail | Test boundaries: 0, 1, N-1, N, N+1 |
|
|
19
|
+
| Nil/Crash | Crashes in production | Guard external data, trace from source |
|
|
20
|
+
|
|
21
|
+
### Rules
|
|
22
|
+
|
|
23
|
+
- Never fix a bug without a test that reproduces it first
|
|
24
|
+
- Stack traces: read bottom-up for chain, top for crash location
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
## Figma -> Component Generation
|
|
2
|
+
|
|
3
|
+
Skill set under `pipeline/skills/figma-ios/` (iOS), `pipeline/skills/figma-android/` (Android), and `pipeline/skills/figma-common/` (shared). Activated when the task contains a Figma URL and target files are `.swift` (iOS) or `.kt` (Android).
|
|
4
|
+
|
|
5
|
+
### Phase Order (platform-agnostic)
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
0-Init -> 1-Gather -> 2A-TestingIDs -> 2B-Localization -> 2C-Accessibility -> 2D-Analytics
|
|
9
|
+
-> 3-TokenMapping -> 4A-Configuration -> 4B-View -> 4C-Docs -> 4D-Preview -> 4E-Modifiers
|
|
10
|
+
-> 5A-Structural -> 5B-Snapshot -> 5C-Unit -> 6-CodeConnect -> 7-Wiki -> 8-Cleanup
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Configuration
|
|
14
|
+
|
|
15
|
+
Per-project config at `~/.claude/projects/{slug}/figma-config.json`.
|
|
16
|
+
Schema: `pipeline/schemas/figma-project-config.schema.json`.
|
|
17
|
+
Template: `preferences-template.json` → `_figmaConfigTemplate` section.
|
|
18
|
+
|
|
19
|
+
### Variable System
|
|
20
|
+
|
|
21
|
+
All skill files use `{variableName}` placeholders — no hardcoded project values.
|
|
22
|
+
Variables resolved from `figma-config.json` by the orchestrator at Phase 0.
|
|
23
|
+
Placeholder catalog ships alongside each skill's `SKILL.md`.
|
|
24
|
+
|
|
25
|
+
### Target File Structure
|
|
26
|
+
|
|
27
|
+
| File | Content |
|
|
28
|
+
| ------------------------- | ----------------------------------- |
|
|
29
|
+
| {Name}Configuration.swift | Pure value type: all properties |
|
|
30
|
+
| {Name}View.swift | SwiftUI view, renders Configuration |
|
|
31
|
+
| {Name}+Modifiers.swift | Fluent modifier API chain |
|
|
32
|
+
| {Name}.figma.swift | Code Connect registration |
|
|
33
|
+
| FIGMA.md | Variant matrix, usage examples |
|
|
34
|
+
|
|
35
|
+
### Component Architecture
|
|
36
|
+
|
|
37
|
+
```swift
|
|
38
|
+
struct ButtonConfiguration {
|
|
39
|
+
var title: String = ""
|
|
40
|
+
var style: ButtonStyle = .primary
|
|
41
|
+
var isEnabled: Bool = true
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
struct ButtonView: View {
|
|
45
|
+
let configuration: ButtonConfiguration
|
|
46
|
+
var body: some View { ... }
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
extension ButtonView {
|
|
50
|
+
func title(_ value: String) -> ButtonView {
|
|
51
|
+
var c = configuration; c.title = value; return ButtonView(configuration: c)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Mandatory Token Rules
|
|
57
|
+
|
|
58
|
+
- No magic numbers: `padding: 16` -> `.Spacing.spacing16`
|
|
59
|
+
- No raw hex colors: `Color(hex: "#E31837")` -> `Color.Primary.primary`
|
|
60
|
+
- No raw `.font()` -> `.typographyStyle(.body1)`
|
|
61
|
+
- Token hierarchy: Spacing > Size > Radius > BorderWidth > Color > Typography
|
|
62
|
+
|
|
63
|
+
### Pre-Commit Checklist
|
|
64
|
+
|
|
65
|
+
- [ ] No magic numbers/raw colors/fonts
|
|
66
|
+
- [ ] Accessibility IDs from UITestingIdentifiers
|
|
67
|
+
- [ ] Localization keys defined
|
|
68
|
+
- [ ] 3-layer tests: structural + snapshot + unit
|
|
69
|
+
- [ ] Code Connect .figma.swift written
|
|
70
|
+
- [ ] Preview shows all meaningful variants
|
|
71
|
+
- [ ] FIGMA.md contains variant matrix
|
|
72
|
+
|
|
73
|
+
### SubPhase Integration (multi-agent Phase 3)
|
|
74
|
+
|
|
75
|
+
When Figma pipeline is active (`figmaConfigPath` set in project preferences),
|
|
76
|
+
multi-agent Phase 3 (DEV) dispatches Figma sub-phases instead of standard TDD:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Phase 3.0: figma-to-swift-ui-start → Branch, assign, registry
|
|
80
|
+
Phase 3.1: figma-to-swiftui → Full 8-phase implementation
|
|
81
|
+
Phase 3.2: figma-commit → 14-item review + commit + PR
|
|
82
|
+
Phase 3.3: figma-iteration-commit → Batch iteration commit (if iterating)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Abstraction Layers
|
|
86
|
+
|
|
87
|
+
| Layer | Provider Options | Config |
|
|
88
|
+
|-------|-----------------|--------|
|
|
89
|
+
| Board | `github-projects-v2`, `github-labels-only`, `none` | `board.provider` |
|
|
90
|
+
| Registry | `swift-cli`, `json-file`, `none` | `registry.type` |
|
|
91
|
+
| Confluence | enabled/disabled | `confluence.enabled` |
|
|
92
|
+
| Wiki | enabled/disabled | `wiki.enabled` |
|
|
93
|
+
| Figma API | MCP / REST fallback | `figma.mcpEnabled` |
|
|
94
|
+
|
|
95
|
+
Provider interfaces are defined inline in the platform skill sets — see `pipeline/skills/figma-common/`, `pipeline/skills/figma-ios/`, and `pipeline/skills/figma-android/`.
|
|
96
|
+
|
|
97
|
+
### Optional Features (graceful skip when disabled)
|
|
98
|
+
|
|
99
|
+
| Feature | Config | Skip Behavior |
|
|
100
|
+
|---------|--------|---------------|
|
|
101
|
+
| Registry CLI | `registry.enabled` | Manual component name/path input |
|
|
102
|
+
| Projects V2 Board | `board.enabled` | No board column updates |
|
|
103
|
+
| Wiki | `wiki.enabled` | Phase 7 wiki skipped |
|
|
104
|
+
| Confluence | `confluence.enabled` | Phase 7a confluence skipped |
|
|
105
|
+
| Figma MCP | `figma.mcpEnabled` | REST API fallback |
|
|
106
|
+
|
|
107
|
+
### 14-Item Review Checklist
|
|
108
|
+
|
|
109
|
+
1. File completeness
|
|
110
|
+
2. No magic numbers (design tokens required)
|
|
111
|
+
3. Configuration purity
|
|
112
|
+
4. +Modifiers correctness
|
|
113
|
+
5. Accessibility identifiers
|
|
114
|
+
6. Analytics tracking
|
|
115
|
+
7. Testing identifier pipeline
|
|
116
|
+
8. Preview quality (LTR + RTL)
|
|
117
|
+
9. Code Connect
|
|
118
|
+
10. View implementation quality
|
|
119
|
+
11. FIGMA.md documentation
|
|
120
|
+
12. Cleanup (artifact cleanup)
|
|
121
|
+
13. Build verification (xcodebuild)
|
|
122
|
+
14. Test verification (ViewInspector + Snapshot)
|
|
123
|
+
|
|
124
|
+
### Command Catalog (31 commands)
|
|
125
|
+
|
|
126
|
+
**Core Pipeline:**
|
|
127
|
+
|
|
128
|
+
| Command | What It Does |
|
|
129
|
+
|---------|-------------|
|
|
130
|
+
| `/figma-to-swiftui <url>` | Full 8-phase pipeline |
|
|
131
|
+
| `/figma-to-swift-ui-start #N` | Start from issue: branch, assign |
|
|
132
|
+
| `/figma-to-swift-ui-implement <url>` | Phases 0-4 only (implementation) |
|
|
133
|
+
| `/figma-to-swift-ui-test <url>` | Phase 5 only (tests) |
|
|
134
|
+
| `/figma-to-swift-ui-wiki <Name>` | Phase 7 only (wiki docs) |
|
|
135
|
+
| `/figma-to-swift-ui-code-connect <url>` | Phase 6 only (Code Connect) |
|
|
136
|
+
| `/figma-to-swift-ui-confluence-sync` | Sync wiki → Confluence |
|
|
137
|
+
| `/figma-to-swift-ui-status-update` | Refresh Confluence dashboard |
|
|
138
|
+
|
|
139
|
+
**Issue & Board:**
|
|
140
|
+
|
|
141
|
+
| Command | What It Does |
|
|
142
|
+
|---------|-------------|
|
|
143
|
+
| `/figma-issue open <url>` | Create GitHub Issue + optional Jira |
|
|
144
|
+
| `/figma-review <Name>` | Interactive review (approve/bug) |
|
|
145
|
+
| `/figma-validate <url>` | Pre-implementation validation |
|
|
146
|
+
|
|
147
|
+
**Commit & PR:**
|
|
148
|
+
|
|
149
|
+
| Command | What It Does |
|
|
150
|
+
|---------|-------------|
|
|
151
|
+
| `/figma-commit <Name>` | 14-item review + commit + PR |
|
|
152
|
+
| `/figma-iteration-commit <Name>` | Commit to iteration/develop + PR |
|
|
153
|
+
|
|
154
|
+
**Iteration & Batch:**
|
|
155
|
+
|
|
156
|
+
| Command | What It Does |
|
|
157
|
+
|---------|-------------|
|
|
158
|
+
| `/figma-iterate` | Auto loop: pick → implement → commit |
|
|
159
|
+
| `/figma-cli-iterate` | Full CLI iterate (all phases) |
|
|
160
|
+
| `/figma-cli-lean-iterate` | Lean iterate (skip test+wiki) |
|
|
161
|
+
| `/figma-cli-iterate-mend` | Re-implement discarded components |
|
|
162
|
+
| `/figma-cli-skip` | Mark component as skipped |
|
|
163
|
+
| `/figma-skip` | Skip + update Confluence |
|
|
164
|
+
|
|
165
|
+
**Bugfix:**
|
|
166
|
+
|
|
167
|
+
| Command | What It Does |
|
|
168
|
+
|---------|-------------|
|
|
169
|
+
| `/figma-fix` | Apply targeted bug fixes |
|
|
170
|
+
| `/figma-mend` | Re-implement from scratch |
|
|
171
|
+
|
|
172
|
+
**Setup & Utility:**
|
|
173
|
+
|
|
174
|
+
| Command | What It Does |
|
|
175
|
+
|---------|-------------|
|
|
176
|
+
| `/figma-setup` | Environment setup wizard |
|
|
177
|
+
| `/figma-utility` | Figma data fetch (screenshots, metadata) |
|
|
178
|
+
| `/figma-remote-mcp-auth` | Figma MCP OAuth flow |
|
|
179
|
+
| `/figma-ui-patterns` | UI pattern library index |
|
|
180
|
+
| `/figma-price-integration` | Price protocol adoption guide |
|
|
181
|
+
|
|
182
|
+
**Performance (batch production):**
|
|
183
|
+
|
|
184
|
+
| Command | What It Does |
|
|
185
|
+
|---------|-------------|
|
|
186
|
+
| `/performance-start #N` | Start component with perf tracking |
|
|
187
|
+
| `/performance-swiftui` | Perf-optimized pipeline |
|
|
188
|
+
| `/performance-tour` | Batch produce multiple components |
|
|
189
|
+
| `/performance-review-next` | Interactive batch review |
|
|
190
|
+
| `/performance-iteration-commit-all` | Batch validate + push all |
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Git commit and branching conventions
|
|
3
|
+
globs: "**"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Git Conventions
|
|
7
|
+
|
|
8
|
+
### Commit Messages
|
|
9
|
+
|
|
10
|
+
- **Default format**: `{type}: {concise description}`
|
|
11
|
+
- **With scope/ticket** (multi-agent pipeline overrides): `{type}({scope}): description [{JIRA_KEY}-{id}]`
|
|
12
|
+
- Types: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `style`, `perf`
|
|
13
|
+
- Max 72 chars first line
|
|
14
|
+
- Body for "why", not "what"
|
|
15
|
+
|
|
16
|
+
### Branching
|
|
17
|
+
|
|
18
|
+
- `feature/{ticket-id}-{short-description}`
|
|
19
|
+
- `bugfix/{ticket-id}-{short-description}`
|
|
20
|
+
- `hotfix/{description}`
|
|
21
|
+
- `release/{version}`
|
|
22
|
+
|
|
23
|
+
### Rules
|
|
24
|
+
|
|
25
|
+
- Never commit secrets, tokens, keys, certificates
|
|
26
|
+
- Never commit .env files, Pods/, .build/, DerivedData/
|
|
27
|
+
- Never force push to main/master/develop
|
|
28
|
+
- Always pull before push
|
|
29
|
+
- Squash WIP commits before merge
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Kotlin and Android development conventions with Jetpack Compose
|
|
3
|
+
globs: "**/*.kt"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Kotlin & Android Conventions
|
|
7
|
+
|
|
8
|
+
### Naming
|
|
9
|
+
|
|
10
|
+
- Types/Classes: UpperCamelCase (`UserViewModel`, `HomeScreen`)
|
|
11
|
+
- Functions: lowerCamelCase (`loadUserData()`)
|
|
12
|
+
- Composables: UpperCamelCase (`@Composable fun UserCard()`)
|
|
13
|
+
- Constants: SCREAMING_SNAKE_CASE (`const val MAX_RETRY = 3`)
|
|
14
|
+
- Packages: all lowercase (`com.example.feature.home`)
|
|
15
|
+
|
|
16
|
+
### Jetpack Compose (2024+ standards)
|
|
17
|
+
|
|
18
|
+
- State: `MutableStateFlow` in ViewModel, `collectAsStateWithLifecycle()` in UI
|
|
19
|
+
- Navigation: Type-safe with `@Serializable` route objects (Navigation 2.8+)
|
|
20
|
+
- Side effects: `LaunchedEffect`, `DisposableEffect`, `SideEffect` — never in body
|
|
21
|
+
- Stability: Mark data classes `@Immutable` or `@Stable` for recomposition optimization
|
|
22
|
+
- Remember: Always `remember {}` for expensive computations
|
|
23
|
+
- ViewModel: Never pass ViewModel to child composables — pass state + lambdas
|
|
24
|
+
|
|
25
|
+
### Architecture
|
|
26
|
+
|
|
27
|
+
- MVVM/MVI with `ViewModel` + `StateFlow`
|
|
28
|
+
- UI State as single sealed/data class per screen
|
|
29
|
+
- Repository pattern for data layer
|
|
30
|
+
- Hilt for dependency injection
|
|
31
|
+
- One-way data flow: Event -> ViewModel -> State -> UI
|
|
32
|
+
|
|
33
|
+
### Patterns
|
|
34
|
+
|
|
35
|
+
```kotlin
|
|
36
|
+
// UI State
|
|
37
|
+
data class HomeUiState(
|
|
38
|
+
val isLoading: Boolean = false,
|
|
39
|
+
val items: List<Item> = emptyList(),
|
|
40
|
+
val error: String? = null
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
// ViewModel
|
|
44
|
+
class HomeViewModel @Inject constructor(
|
|
45
|
+
private val repo: ItemRepository
|
|
46
|
+
) : ViewModel() {
|
|
47
|
+
private val _uiState = MutableStateFlow(HomeUiState())
|
|
48
|
+
val uiState: StateFlow<HomeUiState> = _uiState.asStateFlow()
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Screen (stateful wrapper)
|
|
52
|
+
@Composable
|
|
53
|
+
fun HomeScreen(viewModel: HomeViewModel = hiltViewModel()) {
|
|
54
|
+
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
|
|
55
|
+
HomeContent(uiState = uiState, onRefresh = viewModel::refresh)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Content (stateless, testable, previewable)
|
|
59
|
+
@Composable
|
|
60
|
+
fun HomeContent(uiState: HomeUiState, onRefresh: () -> Unit) { ... }
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Coroutines
|
|
64
|
+
|
|
65
|
+
- Use `viewModelScope.launch` for ViewModel operations
|
|
66
|
+
- `Dispatchers.IO` for blocking I/O
|
|
67
|
+
- `supervisorScope` when child failures shouldn't cancel siblings
|
|
68
|
+
- Never use `GlobalScope`
|
|
69
|
+
- Never catch `CancellationException` (or rethrow)
|
|
70
|
+
|
|
71
|
+
### Don'ts
|
|
72
|
+
|
|
73
|
+
- No `!!` force unwrap — use `?.let`, `requireNotNull`, or `checkNotNull`
|
|
74
|
+
- No mutable state exposed from ViewModel — use `StateFlow` + `asStateFlow()`
|
|
75
|
+
- No `Thread.sleep()` — use `delay()` in coroutines
|
|
76
|
+
- No `android.util.Log` in production — use Timber
|
|
77
|
+
- No hardcoded strings in Composables — use `stringResource()`
|
|
78
|
+
- No business logic in Composables — put in ViewModel or UseCase
|
|
79
|
+
|
|
80
|
+
### Testing
|
|
81
|
+
|
|
82
|
+
- UI: Compose Testing with `createComposeRule()` + `onNodeWithText/Tag`
|
|
83
|
+
- ViewModel: `runTest` + `TestDispatcher` + `Turbine` for Flow testing
|
|
84
|
+
- Repository: Fake implementations, not mocks
|
|
85
|
+
- Naming: `funName_scenario_expectedBehavior()`
|
|
86
|
+
|
|
87
|
+
### Gradle
|
|
88
|
+
|
|
89
|
+
- Version catalog: `libs.versions.toml`
|
|
90
|
+
- Compose BOM for version alignment
|
|
91
|
+
- KSP over KAPT for annotation processing
|
|
92
|
+
- Convention plugins for shared build logic
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
## Performance Optimization
|
|
2
|
+
|
|
3
|
+
### Measure Before Optimizing
|
|
4
|
+
|
|
5
|
+
Never optimize without profiling first. Use Instruments.
|
|
6
|
+
|
|
7
|
+
### Common iOS Bottlenecks
|
|
8
|
+
|
|
9
|
+
| Area | Problem | Solution |
|
|
10
|
+
| ------- | --------------------------- | ---------------------------------------------- |
|
|
11
|
+
| SwiftUI | Unnecessary re-renders | `@State` correctly, equatable, `EquatableView` |
|
|
12
|
+
| SwiftUI | Heavy body computation | Move out of `body`, cache with `@State` |
|
|
13
|
+
| Images | Large images on main thread | `AsyncImage` or background decoding |
|
|
14
|
+
| Network | No caching | `URLCache`, ETag, conditional requests |
|
|
15
|
+
| Memory | Retain cycles | `[weak self]`, Instruments Leaks |
|
|
16
|
+
| Layout | Complex hierarchies | Flatten, `LazyVStack`/`LazyHStack` |
|
|
17
|
+
|
|
18
|
+
### Caching Strategy
|
|
19
|
+
|
|
20
|
+
1. In-memory: `NSCache`
|
|
21
|
+
2. Disk: `FileManager` + Codable
|
|
22
|
+
3. Network: `URLCache`
|
|
23
|
+
4. Database: CoreData or SwiftData
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
## iOS Security Best Practices
|
|
2
|
+
|
|
3
|
+
### Secure Data Storage
|
|
4
|
+
|
|
5
|
+
```swift
|
|
6
|
+
// FORBIDDEN — UserDefaults for sensitive data
|
|
7
|
+
UserDefaults.standard.set(authToken, forKey: "token")
|
|
8
|
+
|
|
9
|
+
// CORRECT — Keychain
|
|
10
|
+
let query: [String: Any] = [
|
|
11
|
+
kSecClass as String: kSecClassGenericPassword,
|
|
12
|
+
kSecAttrAccount as String: "authToken",
|
|
13
|
+
kSecValueData as String: tokenData
|
|
14
|
+
]
|
|
15
|
+
SecItemAdd(query as CFDictionary, nil)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Hardcoded Credentials
|
|
19
|
+
|
|
20
|
+
```swift
|
|
21
|
+
// FORBIDDEN
|
|
22
|
+
let apiKey = "sk-abc123..."
|
|
23
|
+
|
|
24
|
+
// CORRECT — Info.plist (gitignored) or server-side
|
|
25
|
+
let apiKey = Bundle.main.infoDictionary?["API_KEY"] as? String
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Network Security
|
|
29
|
+
|
|
30
|
+
- ATS enabled — no HTTP without exception justification
|
|
31
|
+
- Certificate pinning for sensitive endpoints
|
|
32
|
+
- Never log request/response bodies in production
|
|
33
|
+
|
|
34
|
+
### Privacy
|
|
35
|
+
|
|
36
|
+
- Only permissions needed for core functionality
|
|
37
|
+
- Purpose strings clearly explain why
|
|
38
|
+
- ATT before any tracking
|
|
39
|
+
- Sign in with Apple alongside other social logins
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
## SwiftUI Component QA
|
|
2
|
+
|
|
3
|
+
### 3-Layer Test Strategy
|
|
4
|
+
|
|
5
|
+
| Layer | Tool | What It Verifies |
|
|
6
|
+
| -------------- | -------------- | ------------------------------------------------ |
|
|
7
|
+
| **Structural** | ViewInspector | Hierarchy, subview existence, applied modifiers |
|
|
8
|
+
| **Visual** | Snapshot Tests | Pixel-accurate render: light/dark, RTL/LTR |
|
|
9
|
+
| **Behavioral** | Unit Tests | State changes, closures, configuration mutations |
|
|
10
|
+
|
|
11
|
+
### Pre-Commit 13-Item Checklist
|
|
12
|
+
|
|
13
|
+
1. No magic numbers: all values reference design tokens
|
|
14
|
+
2. Configuration purity: no side-effects or view logic
|
|
15
|
+
3. Modifier correctness: valid fluent API
|
|
16
|
+
4. Accessibility identifiers on every interactive element
|
|
17
|
+
5. Accessibility traits: correct VoiceOver traits
|
|
18
|
+
6. Analytics events tracked per spec
|
|
19
|
+
7. Localization: all user-facing strings use keys
|
|
20
|
+
8. Dark mode renders correctly
|
|
21
|
+
9. RTL layout mirrors correctly
|
|
22
|
+
10. Dynamic Type scales without breaking
|
|
23
|
+
11. Preview coverage: all meaningful variants
|
|
24
|
+
12. Code Connect: .figma.swift maps variants
|
|
25
|
+
13. FIGMA.md contains variant matrix
|
|
26
|
+
|
|
27
|
+
### Accessibility Verification
|
|
28
|
+
|
|
29
|
+
- Identifier on every interactive element
|
|
30
|
+
- Minimum tap target: 44x44pt
|
|
31
|
+
- VoiceOver labels and hints meaningful
|
|
32
|
+
- Dynamic Type: layout must not break at large sizes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
## Test-Driven Development
|
|
2
|
+
|
|
3
|
+
### The Iron Law
|
|
4
|
+
|
|
5
|
+
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST.
|
|
6
|
+
|
|
7
|
+
### Red-Green-Refactor
|
|
8
|
+
|
|
9
|
+
1. **RED**: Write ONE minimal failing test
|
|
10
|
+
2. **Verify RED**: Confirm it fails for the RIGHT reason
|
|
11
|
+
3. **GREEN**: Simplest code to pass — nothing more
|
|
12
|
+
4. **Verify GREEN**: Confirm pass AND other tests still pass
|
|
13
|
+
5. **REFACTOR**: Remove duplication, improve names
|
|
14
|
+
|
|
15
|
+
### Bug Fix Protocol
|
|
16
|
+
|
|
17
|
+
Bug found -> Write failing test -> TDD cycle -> Test proves fix & prevents regression.
|
|
18
|
+
|
|
19
|
+
### iOS Testing Pyramid
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
[UI Tests / XCUITest] (minimize)
|
|
23
|
+
[Integration / Snapshot Tests]
|
|
24
|
+
[Unit Tests / ViewInspector / XCTest] (maximize)
|
|
25
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Testing conventions and standards
|
|
3
|
+
globs: "**/*Tests.swift,**/*Test.swift,**/Tests/**"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Testing Rules
|
|
7
|
+
|
|
8
|
+
### Naming
|
|
9
|
+
|
|
10
|
+
- Test files: `{ClassName}Tests.swift`
|
|
11
|
+
- Test methods: `test{Scenario}_{Expected}` or `test{WhatItDoes}`
|
|
12
|
+
- Example: `testLoginWithInvalidEmail_ShowsError()`
|
|
13
|
+
|
|
14
|
+
### Structure
|
|
15
|
+
|
|
16
|
+
- Arrange / Act / Assert pattern
|
|
17
|
+
- One assertion concept per test (multiple XCTAssert for same concept is OK)
|
|
18
|
+
- Use `setUp()` for common setup, `tearDown()` for cleanup
|
|
19
|
+
|
|
20
|
+
### Framework
|
|
21
|
+
|
|
22
|
+
- Prefer Swift Testing (`@Test`, `#expect`) for new tests
|
|
23
|
+
- XCTest for UI tests and existing test suites
|
|
24
|
+
- No `sleep()` in tests — use expectations/async
|
|
25
|
+
|
|
26
|
+
### Coverage
|
|
27
|
+
|
|
28
|
+
- All public methods must have tests
|
|
29
|
+
- All error paths must have tests
|
|
30
|
+
- Edge cases: nil, empty, boundary values
|
|
31
|
+
|
|
32
|
+
### Don'ts
|
|
33
|
+
|
|
34
|
+
- No network calls in unit tests — use mocks/stubs
|
|
35
|
+
- No file system dependencies — use temporary directories
|
|
36
|
+
- No test interdependencies — each test must be isolated
|
|
37
|
+
- No `XCTAssertTrue(result != nil)` — use `XCTAssertNotNil(result)`
|