@mmerterden/multi-agent-pipeline 20.2.1 → 20.3.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 +912 -1
- package/README.md +104 -81
- package/README.tr.md +103 -62
- package/docs/FIGMA_PIPELINE.md +35 -35
- package/docs/adr/0006-skills-core-external-split.md +1 -1
- package/docs/adr/0007-multi-tool-adapter-framework.md +6 -0
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +7 -0
- package/docs/architecture.md +50 -14
- package/docs/best-practices.md +1 -1
- package/docs/ecosystem.md +56 -32
- package/docs/facts.json +10 -10
- package/docs/features.md +97 -5
- package/docs/recovery-guide.md +7 -14
- package/docs/server-readiness.md +31 -24
- package/index.js +1 -1
- package/install/_common.mjs +3 -5
- package/install/_platform-filter.mjs +23 -1
- package/install/_unattended-profile.mjs +321 -75
- package/install/claude.mjs +51 -10
- package/install/codex.mjs +2 -0
- package/install/copilot.mjs +2 -0
- package/install/index.mjs +30 -17
- package/install/templates/claude-hooks.json +16 -5
- package/install/templates/copilot-instructions.md +1 -1
- package/install/templates/multi-agent-autopilot-awake.plist.template +48 -0
- package/install/templates/multi-agent-autopilot.plist.template +12 -5
- package/install/unattended-profile-legacy.json +80 -0
- package/manifest.json +616 -483
- package/package.json +8 -3
- package/pipeline/agents/code-reviewer.md +10 -0
- package/pipeline/agents/plan-critic.md +98 -0
- package/pipeline/agents/security-auditor.md +10 -0
- package/pipeline/agents/task-clarifier.md +10 -0
- package/pipeline/commands/multi-agent/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/analysis/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/analysis-jira/SKILL.md +12 -1
- package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/autopilot-off/SKILL.md +36 -6
- package/pipeline/commands/multi-agent/autopilot-on/SKILL.md +77 -12
- package/pipeline/commands/multi-agent/autopilot-status/SKILL.md +29 -8
- package/pipeline/commands/multi-agent/build-optimize/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/channels/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/complaint-analysis/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/create-jira/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/design-check/SKILL.md +16 -11
- package/pipeline/commands/multi-agent/diff-explain/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/doctor/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/feedback/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/forget/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/graph/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/help/SKILL.md +37 -39
- package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/issue/SKILL.md +7 -1
- package/pipeline/commands/multi-agent/jira/SKILL.md +7 -1
- package/pipeline/commands/multi-agent/kill/SKILL.md +9 -3
- package/pipeline/commands/multi-agent/language/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/log/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/manual-test/SKILL.md +5 -0
- package/pipeline/commands/multi-agent/model/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/prune-logs/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/prune-prompts/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/purge/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/refactor/SKILL.md +5 -0
- package/pipeline/commands/multi-agent/research/SKILL.md +49 -0
- package/pipeline/commands/multi-agent/resume/SKILL.md +29 -6
- package/pipeline/commands/multi-agent/review/SKILL.md +28 -9
- package/pipeline/commands/multi-agent/review-analysis/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/review-issue/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/review-jira/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/route-off/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/route-on/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/route-status/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/routines/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/save/SKILL.md +6 -2
- package/pipeline/commands/multi-agent/scaffold/SKILL.md +47 -0
- package/pipeline/commands/multi-agent/scan/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/search/SKILL.md +12 -8
- package/pipeline/commands/multi-agent/security-review/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/serve/SKILL.md +62 -0
- package/pipeline/commands/multi-agent/setup/SKILL.md +27 -36
- package/pipeline/commands/multi-agent/stack/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/status/SKILL.md +10 -9
- package/pipeline/commands/multi-agent/steer/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/store-ready/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/sync/SKILL.md +13 -13
- package/pipeline/commands/multi-agent/test/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/test-accessibility/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/test-dark-mode/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/test-dynamic-type/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/test-screenshots/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/testflight-validation/SKILL.md +4 -0
- package/pipeline/commands/multi-agent/uninstall/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/update/SKILL.md +4 -0
- package/pipeline/contract/CHANGELOG.md +74 -0
- package/pipeline/contract/README.md +126 -0
- package/pipeline/contract/build.mjs +427 -0
- package/pipeline/contract/fixtures/answer-result.json +11 -0
- package/pipeline/contract/fixtures/error-invalid-request.json +8 -0
- package/pipeline/contract/fixtures/error-unauthorized.json +5 -0
- package/pipeline/contract/fixtures/error-unsigned.json +5 -0
- package/pipeline/contract/fixtures/issues-empty.json +18 -0
- package/pipeline/contract/fixtures/launch-plan.json +31 -0
- package/pipeline/contract/fixtures/runs-awaiting-question.json +70 -0
- package/pipeline/contract/fixtures/runs-empty.json +6 -0
- package/pipeline/contract/fixtures/runs-failed.json +84 -0
- package/pipeline/contract/fixtures/runs-old-schema.json +70 -0
- package/pipeline/contract/fixtures/runs-pr-opened-redacted.json +101 -0
- package/pipeline/contract/fixtures/runs-pr-opened.json +106 -0
- package/pipeline/contract/fixtures/runs-running.json +84 -0
- package/pipeline/contract/fixtures/worktrees-empty.json +4 -0
- package/pipeline/contract/frozen/toolbox.json +107 -0
- package/pipeline/contract/manifest.json +263 -0
- package/pipeline/contract/types/index.d.ts +343 -0
- package/pipeline/lib/_jira-auth.sh +6 -2
- package/pipeline/lib/account-resolver.sh +1 -1
- package/pipeline/lib/autopilot-state.sh +19 -0
- package/pipeline/lib/context-link-extractor.sh +12 -5
- package/pipeline/lib/credential-inventory.sh +12 -5
- package/pipeline/lib/credential-store.sh +116 -185
- package/pipeline/lib/fetch-confluence.sh +44 -3
- package/pipeline/lib/fetch-document.sh +3 -4
- package/pipeline/lib/fetch-fortify.sh +1 -1
- package/pipeline/lib/figma-mcp-refresh.sh +2 -2
- package/pipeline/lib/figma-token.sh +5 -1
- package/pipeline/lib/issue-fetcher.sh +233 -16
- package/pipeline/lib/json-file-lock.mjs +172 -0
- package/pipeline/lib/model-dispatch.sh +21 -12
- package/pipeline/lib/model-rung.sh +6 -1
- package/pipeline/lib/multi-repo-pipeline.sh +1 -1
- package/pipeline/lib/outbound-gate.mjs +46 -16
- package/pipeline/lib/parse-complaints.sh +14 -7
- package/pipeline/lib/plan-todos.sh +3 -3
- package/pipeline/lib/post-pr-review.sh +9 -9
- package/pipeline/lib/pr-request-location.mjs +85 -0
- package/pipeline/lib/regular-file.mjs +153 -0
- package/pipeline/lib/repo-hygiene.sh +17 -0
- package/pipeline/lib/route-state.sh +5 -1
- package/pipeline/lib/run-paths.sh +3 -2
- package/pipeline/lib/stack-detect.sh +19 -1
- package/pipeline/lib/unattended-profile-check.mjs +178 -0
- package/pipeline/lib/unattended-settings-location.mjs +28 -0
- package/pipeline/lib/unattended.mjs +76 -0
- package/pipeline/lib/unattended.sh +32 -0
- package/pipeline/lib/untrusted.mjs +76 -0
- package/pipeline/lib/user-facing.mjs +82 -0
- package/pipeline/lib/user-facing.sh +58 -0
- package/pipeline/multi-agent-refs/_dev-context.md +1 -1
- package/pipeline/multi-agent-refs/analysis/evidence.md +4 -0
- package/pipeline/multi-agent-refs/analysis/locked.md +2 -2
- package/pipeline/multi-agent-refs/analysis/render.md +4 -3
- package/pipeline/multi-agent-refs/analysis/resolve.md +3 -1
- package/pipeline/multi-agent-refs/analysis/synthesis.md +4 -5
- package/pipeline/multi-agent-refs/analysis-template.md +10 -17
- package/pipeline/multi-agent-refs/channels/jira.md +1 -1
- package/pipeline/multi-agent-refs/component-dispatch.md +3 -3
- package/pipeline/multi-agent-refs/conventions-defaults.md +32 -32
- package/pipeline/multi-agent-refs/cross-cli-contract.md +10 -17
- package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +37 -9
- package/pipeline/multi-agent-refs/features/autopilot-operations.md +277 -0
- package/pipeline/multi-agent-refs/features/constitution.md +196 -0
- package/pipeline/multi-agent-refs/features/doctor.md +6 -3
- package/pipeline/multi-agent-refs/features/external-context-injection.md +6 -1
- package/pipeline/multi-agent-refs/features/jira-context.md +1 -1
- package/pipeline/multi-agent-refs/features/maturity-followup.md +43 -23
- package/pipeline/multi-agent-refs/features/model-fallback.md +9 -0
- package/pipeline/multi-agent-refs/features/phone-api.md +306 -0
- package/pipeline/multi-agent-refs/features/plan-critic.md +159 -0
- package/pipeline/multi-agent-refs/features/research.md +150 -0
- package/pipeline/multi-agent-refs/features/review-decision.md +185 -0
- package/pipeline/multi-agent-refs/features/scaffold.md +160 -0
- package/pipeline/multi-agent-refs/features/security-audit.md +6 -2
- package/pipeline/multi-agent-refs/features/skill-conformance.md +4 -1
- package/pipeline/multi-agent-refs/features/stack-adapters.md +116 -0
- package/pipeline/multi-agent-refs/features/unattended-gates.md +316 -0
- package/pipeline/multi-agent-refs/features/unattended-security.md +731 -0
- package/pipeline/multi-agent-refs/features/url-enrichment.md +2 -2
- package/pipeline/multi-agent-refs/features/usage-reporting.md +127 -35
- package/pipeline/multi-agent-refs/features/verify-by-test.md +1 -1
- package/pipeline/multi-agent-refs/features/visual-evidence.md +7 -7
- package/pipeline/multi-agent-refs/keychain.md +6 -11
- package/pipeline/multi-agent-refs/payload-contracts.md +2 -2
- package/pipeline/multi-agent-refs/phases/log-format.md +2 -3
- package/pipeline/multi-agent-refs/phases/modes.md +10 -12
- package/pipeline/multi-agent-refs/phases/operations.md +11 -5
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +73 -81
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +22 -22
- package/pipeline/multi-agent-refs/phases/phase-2-dev.md +42 -66
- package/pipeline/multi-agent-refs/phases/phase-3-review.md +45 -79
- package/pipeline/multi-agent-refs/phases/phase-4-commit.md +28 -38
- package/pipeline/multi-agent-refs/phases/phase-5-report.md +27 -25
- package/pipeline/multi-agent-refs/phases.md +1 -1
- package/pipeline/multi-agent-refs/picker-contract.md +1 -1
- package/pipeline/multi-agent-refs/progress-contract.md +13 -16
- package/pipeline/multi-agent-refs/readiness-review.md +1 -1
- package/pipeline/multi-agent-refs/research/engine.md +91 -0
- package/pipeline/multi-agent-refs/rules.md +6 -4
- package/pipeline/multi-agent-refs/setup/repo-discovery.md +2 -2
- package/pipeline/multi-agent-refs/tracker-contract.md +2 -2
- package/pipeline/multi-agent-refs/unattended-contract.md +68 -16
- package/pipeline/rules/figma-pipeline.md +12 -12
- package/pipeline/schemas/agent-state.schema.json +480 -18
- package/pipeline/schemas/analysis-spec.schema.json +4 -4
- package/pipeline/schemas/answer-request.schema.json +24 -0
- package/pipeline/schemas/answer-result.schema.json +28 -0
- package/pipeline/schemas/autopilot-config.schema.json +111 -13
- package/pipeline/schemas/command-parameters.schema.json +99 -0
- package/pipeline/schemas/constitution.schema.json +56 -0
- package/pipeline/schemas/contract-error.schema.json +52 -0
- package/pipeline/schemas/design-check-config.schema.json +5 -1
- package/pipeline/schemas/issues.schema.json +61 -0
- package/pipeline/schemas/launch-plan.schema.json +46 -0
- package/pipeline/schemas/launch-request.schema.json +45 -0
- package/pipeline/schemas/launch.json +61 -0
- package/pipeline/schemas/launch.schema.json +84 -0
- package/pipeline/schemas/phases.json +2 -2
- package/pipeline/schemas/phases.schema.json +68 -0
- package/pipeline/schemas/phone-devices.schema.json +61 -0
- package/pipeline/schemas/phone-signed-request.schema.json +67 -0
- package/pipeline/schemas/plan-critique.schema.json +99 -0
- package/pipeline/schemas/plan-todos.schema.json +7 -7
- package/pipeline/schemas/planning-output.schema.json +5 -0
- package/pipeline/schemas/pr-request.schema.json +46 -0
- package/pipeline/schemas/prefs.schema.json +79 -8
- package/pipeline/schemas/research-output.schema.json +118 -0
- package/pipeline/schemas/review-file-exclusions.schema.json +25 -0
- package/pipeline/schemas/reviewer-output.schema.json +40 -4
- package/pipeline/schemas/run-questions.json +392 -0
- package/pipeline/schemas/run-questions.schema.json +118 -0
- package/pipeline/schemas/runs-index.schema.json +189 -0
- package/pipeline/schemas/scaffold-manifest.schema.json +43 -0
- package/pipeline/schemas/secret-patterns.schema.json +28 -0
- package/pipeline/schemas/stack-adapters.json +527 -0
- package/pipeline/schemas/stack-adapters.schema.json +184 -0
- package/pipeline/schemas/token-budget.json +1 -1
- package/pipeline/schemas/token-budget.schema.json +26 -0
- package/pipeline/schemas/triage-output.schema.json +64 -3
- package/pipeline/schemas/unattended-policy.json +139 -0
- package/pipeline/schemas/unattended-policy.schema.json +73 -0
- package/pipeline/schemas/unattended-profile.json +248 -0
- package/pipeline/schemas/unattended-profile.schema.json +198 -0
- package/pipeline/schemas/worktrees.schema.json +51 -0
- package/pipeline/scripts/README.md +1 -0
- package/pipeline/scripts/_autopilot-config.mjs +130 -0
- package/pipeline/scripts/_autopilot-ops.mjs +567 -0
- package/pipeline/scripts/_autopilot-outcomes.mjs +174 -0
- package/pipeline/scripts/_command-contract.mjs +384 -0
- package/pipeline/scripts/_cost.mjs +40 -0
- package/pipeline/scripts/_notices.mjs +160 -0
- package/pipeline/scripts/_phone-auth.mjs +485 -0
- package/pipeline/scripts/_pre-existing.mjs +294 -0
- package/pipeline/scripts/_redact.mjs +77 -0
- package/pipeline/scripts/_run-paths.mjs +4 -2
- package/pipeline/scripts/_stack-adapter.mjs +678 -0
- package/pipeline/scripts/_stack-routing.mjs +1 -1
- package/pipeline/scripts/agent-guard.py +348 -37
- package/pipeline/scripts/agent-guard.sh +41 -13
- package/pipeline/scripts/analysis-story-tree.mjs +79 -3
- package/pipeline/scripts/answer-question.mjs +181 -0
- package/pipeline/scripts/audit-log-rotate.sh +1 -4
- package/pipeline/scripts/audit-log.sh +4 -4
- package/pipeline/scripts/autopilot-arming.mjs +389 -21
- package/pipeline/scripts/autopilot-awake.mjs +255 -0
- package/pipeline/scripts/autopilot-intake.mjs +137 -36
- package/pipeline/scripts/autopilot-menubar.swift +156 -44
- package/pipeline/scripts/autopilot-publish.mjs +1625 -0
- package/pipeline/scripts/autopilot-runner.mjs +1678 -222
- package/pipeline/scripts/autopilot-status.sh +198 -33
- package/pipeline/scripts/build-lock.sh +120 -0
- package/pipeline/scripts/build-references.mjs +4 -1
- package/pipeline/scripts/build-stack-plugins.mjs +59 -22
- package/pipeline/scripts/capture-flush.sh +1 -1
- package/pipeline/scripts/capture-resume.sh +13 -9
- package/pipeline/scripts/check-derived-drift.mjs +52 -11
- package/pipeline/scripts/commands.mjs +88 -0
- package/pipeline/scripts/constitution.mjs +362 -0
- package/pipeline/scripts/contract-server.mjs +776 -0
- package/pipeline/scripts/cost-analyze.mjs +89 -39
- package/pipeline/scripts/diff-explain.mjs +12 -1
- package/pipeline/scripts/doctor.mjs +77 -28
- package/pipeline/scripts/evidence-gate.mjs +192 -12
- package/pipeline/scripts/feedback-send.mjs +4 -2
- package/pipeline/scripts/gate-ledger.mjs +449 -0
- package/pipeline/scripts/gc-abandoned.sh +132 -13
- package/pipeline/scripts/gen-facts.mjs +31 -15
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
- package/pipeline/scripts/github-ssh-setup.sh +140 -29
- package/pipeline/scripts/graph-mermaid.mjs +4 -1
- package/pipeline/scripts/issues.mjs +236 -0
- package/pipeline/scripts/jira-attach.sh +6 -2
- package/pipeline/scripts/jira-search.sh +4 -3
- package/pipeline/scripts/keychain-save.sh +125 -24
- package/pipeline/scripts/keychain.py +63 -93
- package/pipeline/scripts/launch-request.mjs +747 -0
- package/pipeline/scripts/localize-commands.mjs +4 -10
- package/pipeline/scripts/log-metric.sh +6 -5
- package/pipeline/scripts/maturity-followup.mjs +13 -4
- package/pipeline/scripts/memory-save.sh +25 -0
- package/pipeline/scripts/migrate-prefs.mjs +4 -3
- package/pipeline/scripts/open-questions-gate.mjs +276 -0
- package/pipeline/scripts/phase-tracker.sh +41 -27
- package/pipeline/scripts/phase0-exit-gate.mjs +22 -4
- package/pipeline/scripts/phone-devices.mjs +224 -0
- package/pipeline/scripts/plan-coverage-gate.mjs +200 -66
- package/pipeline/scripts/plan-critique-gate.mjs +591 -0
- package/pipeline/scripts/pr-request.mjs +188 -0
- package/pipeline/scripts/pre-commit-check.sh +115 -4
- package/pipeline/scripts/probe-evidence-capability.sh +44 -5
- package/pipeline/scripts/record-phase.mjs +71 -0
- package/pipeline/scripts/render-agent-log-cost.sh +17 -2
- package/pipeline/scripts/render-cost-summary.sh +1 -1
- package/pipeline/scripts/render-work-summary.sh +1 -1
- package/pipeline/scripts/require-supported-version.sh +4 -1
- package/pipeline/scripts/research-gate.mjs +704 -0
- package/pipeline/scripts/review-decision-gate.mjs +403 -0
- package/pipeline/scripts/routine-registry.mjs +5 -2
- package/pipeline/scripts/runs-index.mjs +135 -27
- package/pipeline/scripts/scaffold-gate.mjs +393 -0
- package/pipeline/scripts/skill-conformance.mjs +25 -8
- package/pipeline/scripts/skill-siblings.mjs +2 -1
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +32 -6
- package/pipeline/scripts/smoke-schema-validation.sh +6 -2
- package/pipeline/scripts/spec-consistency-gate.mjs +469 -0
- package/pipeline/scripts/symbol-existence-gate.mjs +450 -0
- package/pipeline/scripts/test-gap-scan.mjs +40 -2
- package/pipeline/scripts/test-integrity-gate.mjs +20 -4
- package/pipeline/scripts/test-strength.mjs +484 -0
- package/pipeline/scripts/test-summary.mjs +651 -0
- package/pipeline/scripts/triage-memory.mjs +49 -9
- package/pipeline/scripts/unattended_policy.py +2786 -0
- package/pipeline/scripts/uninstall.mjs +10 -10
- package/pipeline/scripts/update-issue-progress.sh +1 -1
- package/pipeline/scripts/usage-identity.mjs +288 -0
- package/pipeline/scripts/usage-register.mjs +185 -65
- package/pipeline/scripts/usage-report.mjs +230 -66
- package/pipeline/scripts/validate-complaint-doc.mjs +28 -10
- package/pipeline/scripts/validate-planning.mjs +6 -0
- package/pipeline/scripts/verify-citations.mjs +151 -38
- package/pipeline/scripts/verify.mjs +58 -18
- package/pipeline/scripts/worktree-prepare.sh +126 -0
- package/pipeline/scripts/worktrees.mjs +124 -0
- package/pipeline/scripts/write-state.mjs +48 -17
- package/pipeline/skills/.skill-manifest.json +222 -226
- package/pipeline/skills/.skills-index.json +77 -88
- package/pipeline/skills/shared/README.md +44 -45
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +3 -2
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +10 -9
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +6 -5
- package/pipeline/skills/shared/core/multi-agent-analysis-jira/SKILL.md +11 -3
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +4 -3
- package/pipeline/skills/shared/core/multi-agent-autopilot-off/SKILL.md +32 -6
- package/pipeline/skills/shared/core/multi-agent-autopilot-on/SKILL.md +66 -8
- package/pipeline/skills/shared/core/multi-agent-autopilot-status/SKILL.md +27 -9
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +7 -4
- package/pipeline/skills/shared/core/multi-agent-complaint-analysis/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +7 -5
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-doctor/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-feedback/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-forget/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +7 -4
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-model/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-prune-prompts/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-research/SKILL.md +35 -0
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +7 -3
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +7 -5
- package/pipeline/skills/shared/core/multi-agent-review-analysis/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-review-issue/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-route-off/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-route-on/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-route-status/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-routines/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-save/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-scaffold/SKILL.md +30 -0
- package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +4 -3
- package/pipeline/skills/shared/core/multi-agent-security-review/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-serve/SKILL.md +60 -0
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +8 -8
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +7 -8
- package/pipeline/skills/shared/core/multi-agent-steer/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-store-ready/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +10 -10
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-test-accessibility/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-test-dark-mode/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-test-dynamic-type/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-test-screenshots/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md +2 -1
- package/pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md +3 -2
- package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +2 -1
- package/pipeline/skills/shared/external/NOTICE-avdlee-swiftui-agent-skill.md +46 -0
- package/pipeline/skills/shared/external/NOTICE-dimillian-skills.md +9 -3
- package/pipeline/skills/shared/external/NOTICE-paul-hudson-skills.md +54 -0
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +9 -11
- package/pipeline/skills/shared/external/NOTICE-vibeship-spawner-skills.md +203 -0
- package/pipeline/skills/shared/external/NOTICE-xcode-build-skills.md +10 -3
- package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +131 -25
- package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +4 -3
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +2 -1
- package/pipeline/skills/shared/external/android-architecture/SKILL.md +85 -76
- package/pipeline/skills/shared/external/android-build-quality-gates/SKILL.md +51 -3
- package/pipeline/skills/shared/external/android-build-quality-gates/references/patterns.md +9 -0
- package/pipeline/skills/shared/external/android-datastore/SKILL.md +4 -3
- package/pipeline/skills/shared/external/android-design-tokens-codegen/SKILL.md +4 -3
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +106 -181
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/references/patterns.md +147 -0
- package/pipeline/skills/shared/external/android-mvi-viewmodel/SKILL.md +45 -4
- package/pipeline/skills/shared/external/android-performance/SKILL.md +27 -2
- package/pipeline/skills/shared/external/android-performance/references/patterns.md +37 -37
- package/pipeline/skills/shared/external/api-patterns/SKILL.md +111 -67
- package/pipeline/skills/shared/external/api-patterns/references/contract-details.md +128 -0
- package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +136 -186
- package/pipeline/skills/shared/external/api-security-best-practices/references/abuse-controls.md +140 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/identity-and-access.md +207 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/operations.md +66 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/request-handling.md +175 -0
- package/pipeline/skills/shared/external/app-clips/SKILL.md +2 -0
- package/pipeline/skills/shared/external/app-intents/SKILL.md +2 -0
- package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +4 -3
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +2 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +2 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +2 -0
- package/pipeline/skills/shared/external/architecture/SKILL.md +106 -39
- package/pipeline/skills/shared/external/architecture/references/adr-and-review.md +76 -0
- package/pipeline/skills/shared/external/authentication/SKILL.md +2 -0
- package/pipeline/skills/shared/external/avkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/background-processing/SKILL.md +2 -1
- package/pipeline/skills/shared/external/backlog/SKILL.md +3 -2
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +2 -0
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +3 -2
- package/pipeline/skills/shared/external/clean-code/SKILL.md +192 -90
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +2 -1
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/compose-components/SKILL.md +4 -4
- package/pipeline/skills/shared/external/compose-navigation/SKILL.md +22 -22
- package/pipeline/skills/shared/external/compose-navigation/references/patterns.md +10 -10
- package/pipeline/skills/shared/external/compose-testing/SKILL.md +13 -6
- package/pipeline/skills/shared/external/compose-testing/references/patterns.md +59 -59
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +2 -0
- package/pipeline/skills/shared/external/context-compression/SKILL.md +118 -250
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +2 -0
- package/pipeline/skills/shared/external/core-data/SKILL.md +2 -0
- package/pipeline/skills/shared/external/core-motion/SKILL.md +2 -0
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +2 -0
- package/pipeline/skills/shared/external/coreml/SKILL.md +2 -1
- package/pipeline/skills/shared/external/council/SKILL.md +2 -1
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/css-modern/SKILL.md +3 -2
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +3 -2
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +2 -0
- package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +130 -20
- package/pipeline/skills/shared/external/debugging-strategies/references/hard-cases.md +54 -0
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +2 -0
- package/pipeline/skills/shared/external/docker-expert/SKILL.md +137 -381
- package/pipeline/skills/shared/external/docker-expert/references/patterns.md +98 -0
- package/pipeline/skills/shared/external/energykit/SKILL.md +2 -1
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +3 -1
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +2 -2
- package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +116 -185
- package/pipeline/skills/shared/external/fastapi-pro/references/app-structure.md +235 -0
- package/pipeline/skills/shared/external/fastapi-pro/references/testing-and-deployment.md +69 -0
- package/pipeline/skills/shared/external/firebase/SKILL.md +4 -3
- package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +151 -293
- package/pipeline/skills/shared/external/github-actions-templates/references/patterns.md +96 -0
- package/pipeline/skills/shared/external/healthkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/hig-components-content/SKILL.md +69 -72
- package/pipeline/skills/shared/external/hig-components-content/references/content-views.md +111 -0
- package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +77 -86
- package/pipeline/skills/shared/external/hig-components-layout/references/containers.md +98 -0
- package/pipeline/skills/shared/external/hig-components-status/SKILL.md +150 -78
- package/pipeline/skills/shared/external/hig-components-system/SKILL.md +76 -97
- package/pipeline/skills/shared/external/hig-components-system/references/surfaces.md +98 -0
- package/pipeline/skills/shared/external/hig-foundations/SKILL.md +48 -76
- package/pipeline/skills/shared/external/hig-foundations/references/foundations-detail.md +132 -0
- package/pipeline/skills/shared/external/hig-inputs/SKILL.md +147 -106
- package/pipeline/skills/shared/external/hig-patterns/SKILL.md +61 -77
- package/pipeline/skills/shared/external/hig-patterns/references/patterns.md +92 -0
- package/pipeline/skills/shared/external/hig-platforms/SKILL.md +147 -77
- package/pipeline/skills/shared/external/hig-technologies/SKILL.md +61 -121
- package/pipeline/skills/shared/external/hig-technologies/references/technologies.md +108 -0
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +2 -0
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +3 -2
- package/pipeline/skills/shared/external/humanizer/SKILL.md +2 -1
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +2 -0
- package/pipeline/skills/shared/external/ios-coding-standard/SKILL.md +2 -1
- package/pipeline/skills/shared/external/ios-coding-standard/references/STANDARD.md +14 -2
- package/pipeline/skills/shared/external/ios-coding-standard/references/rules.yml +2 -2
- package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +4 -3
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +8 -6
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +2 -2
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +11 -11
- package/pipeline/skills/shared/external/ios-module-structure/SKILL.md +2 -1
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +2 -0
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +2 -0
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +102 -193
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/references/patterns.md +103 -0
- package/pipeline/skills/shared/external/live-activities/SKILL.md +4 -2
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +2 -2
- package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +7 -9
- package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +3 -3
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-new-values.py +2 -2
- package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +4 -3
- package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +5 -3
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +2 -0
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +2 -0
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +149 -46
- package/pipeline/skills/shared/external/monorepo-architect/references/patterns.md +70 -0
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +2 -0
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/natural-language/SKILL.md +2 -0
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +3 -2
- package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +91 -21
- package/pipeline/skills/shared/external/nodejs-backend-patterns/references/runtime-patterns.md +247 -0
- package/pipeline/skills/shared/external/nodejs-backend-patterns/references/testing-and-frameworks.md +57 -0
- package/pipeline/skills/shared/external/observability-engineer/SKILL.md +155 -232
- package/pipeline/skills/shared/external/observability-engineer/references/patterns.md +75 -0
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +2 -0
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +2 -2
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +18 -18
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +2 -1
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +2 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +2 -1
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +2 -0
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +3 -2
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +3 -2
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +2 -2
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +1 -1
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +3 -2
- package/pipeline/skills/shared/external/retrofit-networking/SKILL.md +7 -7
- package/pipeline/skills/shared/external/retrofit-networking/references/patterns.md +69 -69
- package/pipeline/skills/shared/external/room-database/references/patterns.md +126 -126
- package/pipeline/skills/shared/external/search-first/SKILL.md +2 -1
- package/pipeline/skills/shared/external/security-review/SKILL.md +4 -3
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +2 -2
- package/pipeline/skills/shared/external/signal-community/SKILL.md +1 -1
- package/pipeline/skills/shared/external/skill-creator/SKILL.md +2 -1
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +2 -1
- package/pipeline/skills/shared/external/spm-build-analysis/SKILL.md +2 -0
- package/pipeline/skills/shared/external/storekit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +5 -4
- package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-language/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swift-security/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +10 -0
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +3 -1
- package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +5 -4
- package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +2 -1
- package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +5 -4
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +2 -0
- package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +4 -3
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +3 -2
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +3 -2
- package/pipeline/skills/shared/external/tipkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +3 -2
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +2 -0
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +3 -2
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +3 -2
- package/pipeline/skills/shared/external/web-performance/SKILL.md +3 -2
- package/pipeline/skills/shared/external/web-testing/SKILL.md +3 -2
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +2 -0
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +1 -1
- package/pipeline/skills/shared/external/xcode-build-benchmark/SKILL.md +2 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/SKILL.md +2 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/SKILL.md +2 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/SKILL.md +2 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/SKILL.md +2 -0
- package/pipeline/skills/skills-index.md +40 -41
- package/docs/token-budget-history.md +0 -24
- package/pipeline/skills/shared/external/agentflow/SKILL.md +0 -199
- package/pipeline/skills/shared/external/android-ui-verification/SKILL.md +0 -66
- package/pipeline/skills/shared/external/api-security-best-practices/references/auth.md +0 -299
- package/pipeline/skills/shared/external/api-security-best-practices/references/input-validation.md +0 -255
- package/pipeline/skills/shared/external/api-security-best-practices/references/rate-limiting.md +0 -167
- package/pipeline/skills/shared/external/closed-loop-delivery/SKILL.md +0 -116
- package/pipeline/skills/shared/external/ios-developer/SKILL.md +0 -216
|
@@ -1,99 +1,83 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hig-patterns
|
|
3
|
-
description: "Apple
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
description: "Apple HIG interaction patterns mapped to SwiftUI: modality, loading, empty and error states, feedback, undo, search, data entry, settings, sharing, accounts. Use when designing a UX flow on an Apple platform."
|
|
4
|
+
metadata:
|
|
5
|
+
risk: safe
|
|
6
|
+
source: multi-agent-pipeline
|
|
7
|
+
date_added: "2026-09-25"
|
|
7
8
|
---
|
|
8
9
|
|
|
9
|
-
#
|
|
10
|
+
# HIG Patterns
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
A pattern is a recurring answer to a recurring flow question: how do people get
|
|
13
|
+
started, how do they wait, how do they leave a task, how do they recover from a
|
|
14
|
+
mistake. Apple's own apps answer these consistently, and people carry those
|
|
15
|
+
expectations into yours. This skill lists the questions, the expected answer,
|
|
16
|
+
and how to express it in SwiftUI.
|
|
12
17
|
|
|
13
|
-
##
|
|
18
|
+
## Flow questions to settle first
|
|
14
19
|
|
|
15
|
-
|
|
20
|
+
Before drawing screens, answer these for the flow under review:
|
|
16
21
|
|
|
17
|
-
|
|
22
|
+
- Where does it start, and what does the person already know at that point?
|
|
23
|
+
- Which step can they abandon, and what happens to their input if they do?
|
|
24
|
+
- What do they see while the app is working?
|
|
25
|
+
- What do they see when there is nothing to show, or when something fails?
|
|
26
|
+
- How do they undo the last thing they did?
|
|
18
27
|
|
|
19
|
-
|
|
28
|
+
Each maps to a pattern in `references/patterns.md`.
|
|
20
29
|
|
|
21
|
-
|
|
30
|
+
## Details on demand
|
|
22
31
|
|
|
23
|
-
|
|
32
|
+
Load `references/patterns.md` for launch, loading, empty and error states, feedback, undo, search, data entry, settings, sharing, accounts and notifications.
|
|
24
33
|
|
|
25
|
-
|
|
34
|
+
## Choosing how to present a task
|
|
26
35
|
|
|
27
|
-
|
|
36
|
+
| Situation | Treatment | SwiftUI |
|
|
37
|
+
|-----------|-----------|---------|
|
|
38
|
+
| Moving deeper into a hierarchy | Push | `NavigationLink(value:)` + `.navigationDestination` |
|
|
39
|
+
| Self-contained task with its own done or cancel | Sheet | `.sheet(item:)` with `.presentationDetents` |
|
|
40
|
+
| Task that needs the whole screen and focus | Full screen | `.fullScreenCover` |
|
|
41
|
+
| Must acknowledge or decide before continuing | Alert | `.alert(_:isPresented:actions:message:)` |
|
|
42
|
+
| Choosing among actions for the current item | Confirmation dialog | `.confirmationDialog` |
|
|
43
|
+
| Quick, dismissible supplemental info | Popover or inline | `.popover`, inline disclosure |
|
|
28
44
|
|
|
29
|
-
|
|
45
|
+
Rules of thumb:
|
|
30
46
|
|
|
31
|
-
|
|
47
|
+
- A sheet should have a clear way out: Cancel on the leading side, the
|
|
48
|
+
confirming action on the trailing side. Protect unsaved input with
|
|
49
|
+
`.interactiveDismissDisabled(hasChanges)` and a discard confirmation.
|
|
50
|
+
- Avoid stacking modals. If a sheet opens another sheet, reconsider the flow.
|
|
51
|
+
- Alerts are interruptions; use them for consequences, not for success.
|
|
32
52
|
|
|
33
|
-
|
|
34
|
-
|---|---|
|
|
35
|
-
| Charting Data | Data visualization patterns, accessible charts, interactive elements |
|
|
36
|
-
| Collaboration & Sharing | Share sheets, activity views, collaborative editing, SharePlay |
|
|
37
|
-
| Drag and Drop | Drag sources, drop targets, spring loading, multi-item drag, visual feedback |
|
|
38
|
-
| Entering Data | Text fields, pickers, steppers, input validation, keyboard types, autofill |
|
|
39
|
-
| Feedback | Alerts, action sheets, haptic patterns, sound feedback, visual indicators |
|
|
40
|
-
| File Management | Document browser, file providers, iCloud integration, document lifecycle |
|
|
41
|
-
| Going Full Screen | Full-screen transitions, immersive content, exiting full screen |
|
|
42
|
-
| Launching | Launch screens, state restoration, cold vs warm launch |
|
|
43
|
-
| Live Viewing Apps | Live content display, real-time updates, Live Activities, Dynamic Island |
|
|
44
|
-
| Loading | Activity indicators, progress views, skeleton screens, lazy loading, placeholders |
|
|
45
|
-
| Managing Accounts | Sign in with Apple, passkeys, account creation, credential autofill, account deletion |
|
|
46
|
-
| Managing Notifications | Permission requests, grouping, actionable notifications, provisional delivery |
|
|
47
|
-
| Modality | Sheets, alerts, popovers, full-screen modals, when to use each |
|
|
48
|
-
| Multitasking | iPad Split View, Slide Over, Stage Manager, responsive layout, size class transitions |
|
|
49
|
-
| Offering Help | Contextual tips, onboarding hints, help menus, support links |
|
|
50
|
-
| Onboarding | Welcome screens, feature highlights, progressive onboarding, skip options |
|
|
51
|
-
| Playing Audio | Audio sessions, background audio, Now Playing, audio routing, interruptions |
|
|
52
|
-
| Playing Haptics | Core Haptics, UIFeedbackGenerator, haptic patterns, custom haptics |
|
|
53
|
-
| Playing Video | Video player controls, picture-in-picture, AirPlay, full-screen video |
|
|
54
|
-
| Printing | Print dialogs, page setup, AirPrint integration |
|
|
55
|
-
| Ratings & Reviews | SKStoreReviewController, timing, frequency limits, in-app feedback |
|
|
56
|
-
| Searching | Search bars, suggestions, scoped search, results display, recents |
|
|
57
|
-
| Settings | In-app vs Settings app, preference organization, toggles, defaults |
|
|
58
|
-
| Undo and Redo | Shake to undo, undo/redo stack, multi-level undo |
|
|
59
|
-
| Workouts | Workout sessions, live metrics, Always On display, summaries, HealthKit |
|
|
53
|
+
## Review output
|
|
60
54
|
|
|
61
|
-
|
|
55
|
+
Name the flow step, the expected pattern, what the build does instead, and the
|
|
56
|
+
change:
|
|
62
57
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
| Confirming destructive action | Undo support | Excessive "Are you sure?" dialogs |
|
|
68
|
-
| Collecting user input | Inline validation, smart defaults, autofill | Modal forms for simple inputs |
|
|
69
|
-
| Requesting permissions | Contextual, just-in-time with explanation | Requesting all permissions at launch |
|
|
70
|
-
| Providing feedback | Haptics + visual indicator | Silent actions with no confirmation |
|
|
71
|
-
| Organizing preferences | In-app settings for frequent items | Burying all settings in system Settings app |
|
|
58
|
+
```
|
|
59
|
+
[Modality] Editing a product opens a full screen cover with no Cancel.
|
|
60
|
+
Expected: sheet with Cancel and Save; discard confirmation when edited.
|
|
61
|
+
```
|
|
72
62
|
|
|
73
|
-
##
|
|
63
|
+
## Related skills
|
|
74
64
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
4. **Common pitfalls** that violate HIG for this pattern.
|
|
65
|
+
- `hig-components-content`, `hig-components-system` for the parts of each pattern.
|
|
66
|
+
- `swiftui-navigation` for push, sheet and deep link implementation.
|
|
67
|
+
- `tipkit` for in-context onboarding.
|
|
79
68
|
|
|
80
|
-
##
|
|
69
|
+
## References
|
|
81
70
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
*Built by [Raintree Technology](https://raintree.technology) · [More developer tools](https://raintree.technology)*
|
|
97
|
-
|
|
98
|
-
## When to Use
|
|
99
|
-
This skill is applicable to execute the workflow or actions described in the overview.
|
|
71
|
+
- https://developer.apple.com/design/human-interface-guidelines/patterns
|
|
72
|
+
- https://developer.apple.com/design/human-interface-guidelines/onboarding
|
|
73
|
+
- https://developer.apple.com/design/human-interface-guidelines/launching
|
|
74
|
+
- https://developer.apple.com/design/human-interface-guidelines/loading
|
|
75
|
+
- https://developer.apple.com/design/human-interface-guidelines/modality
|
|
76
|
+
- https://developer.apple.com/design/human-interface-guidelines/feedback
|
|
77
|
+
- https://developer.apple.com/design/human-interface-guidelines/undo-and-redo
|
|
78
|
+
- https://developer.apple.com/design/human-interface-guidelines/searching
|
|
79
|
+
- https://developer.apple.com/design/human-interface-guidelines/entering-data
|
|
80
|
+
- https://developer.apple.com/design/human-interface-guidelines/settings
|
|
81
|
+
- https://developer.apple.com/design/human-interface-guidelines/drag-and-drop
|
|
82
|
+
- https://developer.apple.com/design/human-interface-guidelines/managing-accounts
|
|
83
|
+
- https://developer.apple.com/design/human-interface-guidelines/managing-notifications
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Interaction patterns in detail
|
|
2
|
+
|
|
3
|
+
Companion to `../SKILL.md` for the `hig-patterns` skill.
|
|
4
|
+
|
|
5
|
+
## Starting: launch and onboarding
|
|
6
|
+
|
|
7
|
+
- Launch straight into useful content. The launch screen should look like the
|
|
8
|
+
first frame of the app, not a splash advert.
|
|
9
|
+
- Restore where the person left off (`@SceneStorage` for per-window state).
|
|
10
|
+
- Keep onboarding optional and short. Teach in context instead, for example a
|
|
11
|
+
TipKit tip the first time someone opens the filters on a product list.
|
|
12
|
+
- Ask for permissions at the moment they are needed, with a sentence of
|
|
13
|
+
context before the system prompt. Never ask for everything at launch.
|
|
14
|
+
- Let people try the app before creating an account whenever possible.
|
|
15
|
+
|
|
16
|
+
## Waiting: loading and progress
|
|
17
|
+
|
|
18
|
+
- Show content as soon as any part is ready; load the rest progressively.
|
|
19
|
+
- Use `ProgressView(value:total:)` when progress is measurable and an
|
|
20
|
+
indeterminate `ProgressView()` only for short, unknown waits.
|
|
21
|
+
- For content shaped placeholders use `.redacted(reason: .placeholder)` on a
|
|
22
|
+
sample layout, which keeps the page from jumping when data arrives.
|
|
23
|
+
- Keep the interface usable during long work; allow cancellation.
|
|
24
|
+
- Pull to refresh with `.refreshable` on lists and scroll views.
|
|
25
|
+
|
|
26
|
+
## Nothing to show, or something went wrong
|
|
27
|
+
|
|
28
|
+
- Empty states explain what would appear and offer the next step:
|
|
29
|
+
`ContentUnavailableView("No notes yet", systemImage: "note.text", description: ...)`
|
|
30
|
+
with a button to create one.
|
|
31
|
+
- For search with no results use `ContentUnavailableView.search(text:)`.
|
|
32
|
+
- Errors say what happened in plain language and what to do. Offer retry for
|
|
33
|
+
transient failures; keep entered data intact.
|
|
34
|
+
|
|
35
|
+
## Feedback and confirmation
|
|
36
|
+
|
|
37
|
+
- Confirm success quietly and in place: a checkmark symbol effect, an updated
|
|
38
|
+
row, a brief haptic (`.sensoryFeedback(.success, trigger:)`).
|
|
39
|
+
- Reserve alerts for failures that block progress.
|
|
40
|
+
- Make destructive actions recoverable (undo, trash) rather than piling on
|
|
41
|
+
confirmation dialogs. Where there is no undo, confirm with a destructive-role
|
|
42
|
+
button (`Button("Delete Order", role: .destructive)`).
|
|
43
|
+
|
|
44
|
+
## Undo
|
|
45
|
+
|
|
46
|
+
- Register reversible edits with `@Environment(\.undoManager)`; shake to undo on
|
|
47
|
+
iPhone and Command-Z on iPad and Mac come with it.
|
|
48
|
+
- Swipe-to-delete in a list should either be undoable or confirmed.
|
|
49
|
+
|
|
50
|
+
## Search
|
|
51
|
+
|
|
52
|
+
- Add `.searchable(text:)` to the navigation container so the field sits where
|
|
53
|
+
the platform expects it. Offer `.searchSuggestions` and `.searchScopes` for
|
|
54
|
+
large catalogs.
|
|
55
|
+
- On iOS 26 a dedicated search tab (`Tab(role: .search)`) places search at the
|
|
56
|
+
bottom within reach.
|
|
57
|
+
- Search as the person types when results are local; debounce remote queries.
|
|
58
|
+
|
|
59
|
+
## Entering data
|
|
60
|
+
|
|
61
|
+
- Ask only for what is needed; prefill what the app knows.
|
|
62
|
+
- Pick the right keyboard and content type (`.keyboardType(.emailAddress)`,
|
|
63
|
+
`.textContentType(.emailAddress)`) so AutoFill works.
|
|
64
|
+
- Validate inline next to the field, after the person leaves it, not on every
|
|
65
|
+
keystroke.
|
|
66
|
+
- Move focus with `@FocusState` and `.submitLabel(.next)`.
|
|
67
|
+
|
|
68
|
+
## Settings
|
|
69
|
+
|
|
70
|
+
- Put settings people change often inside the app; put rarely changed ones in a
|
|
71
|
+
settings screen. On macOS use a `Settings` scene.
|
|
72
|
+
- Keep defaults good enough that most people never visit settings.
|
|
73
|
+
|
|
74
|
+
## Sharing, drag and drop, files
|
|
75
|
+
|
|
76
|
+
- Use `ShareLink` with a `Transferable` model; the same conformance powers
|
|
77
|
+
`.draggable` and `.dropDestination`.
|
|
78
|
+
- For document-based apps, `DocumentGroup` provides the browser, open, save and
|
|
79
|
+
rename behavior people expect.
|
|
80
|
+
|
|
81
|
+
## Accounts
|
|
82
|
+
|
|
83
|
+
- Offer Sign in with Apple wherever other third-party sign-in exists.
|
|
84
|
+
- Support passkeys and AutoFill for passwords.
|
|
85
|
+
- Provide in-app account deletion if the app lets people create an account.
|
|
86
|
+
|
|
87
|
+
## Notifications
|
|
88
|
+
|
|
89
|
+
- Notify about things people care about and that are time-sensitive, such as an
|
|
90
|
+
order that has shipped. Group by thread and set an interruption level that
|
|
91
|
+
matches urgency.
|
|
92
|
+
- Deep link into the exact content the notification describes.
|
|
@@ -1,81 +1,151 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hig-platforms
|
|
3
|
-
description: "Apple
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
description: "Apple HIG per platform: iPhone, iPad, Mac, Watch, TV and Vision Pro conventions, and adapting one SwiftUI codebase across them. Use when a design has to fit a specific Apple platform."
|
|
4
|
+
metadata:
|
|
5
|
+
risk: safe
|
|
6
|
+
source: multi-agent-pipeline
|
|
7
|
+
date_added: "2026-09-25"
|
|
7
8
|
---
|
|
8
9
|
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
-
|
|
72
|
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
10
|
+
# HIG Platforms
|
|
11
|
+
|
|
12
|
+
Every Apple platform has a different distance between person and screen, a
|
|
13
|
+
different primary input, and a different idea of what an app session looks
|
|
14
|
+
like. A screen that is right on iPhone is rarely right, unchanged, anywhere
|
|
15
|
+
else. This skill gives the per-platform defaults, then the shared SwiftUI tools
|
|
16
|
+
that let one codebase adapt instead of fork.
|
|
17
|
+
|
|
18
|
+
## Start with three questions
|
|
19
|
+
|
|
20
|
+
1. **How is it held or viewed?** In the hand, on a desk, on the wrist, across a
|
|
21
|
+
room, or floating in space. This sets text size, density and session length.
|
|
22
|
+
2. **What is the primary input?** Touch, pointer and keyboard, Digital Crown,
|
|
23
|
+
a focus-driven remote, or eyes and hands.
|
|
24
|
+
3. **How long is a visit?** Seconds on the wrist, minutes on the phone, hours on
|
|
25
|
+
the Mac.
|
|
26
|
+
|
|
27
|
+
The answers usually decide navigation structure before any visual question.
|
|
28
|
+
|
|
29
|
+
## Platform profiles
|
|
30
|
+
|
|
31
|
+
### iPhone
|
|
32
|
+
|
|
33
|
+
- One primary task per screen, reachable with a thumb. Primary actions low,
|
|
34
|
+
destructive ones behind confirmation.
|
|
35
|
+
- Top-level navigation in a `TabView`; hierarchy inside each tab with
|
|
36
|
+
`NavigationStack`.
|
|
37
|
+
- Portrait first, but layouts must not break in landscape or at accessibility
|
|
38
|
+
text sizes.
|
|
39
|
+
- On iOS 26, standard tab bars and toolbars render in Liquid Glass and can
|
|
40
|
+
minimize on scroll (`.tabBarMinimizeBehavior(.onScrollDown)`); a search tab
|
|
41
|
+
can use `Tab(role: .search)`.
|
|
42
|
+
|
|
43
|
+
### iPad
|
|
44
|
+
|
|
45
|
+
- Treat it as a large, multitasking canvas, not a big phone. Support every
|
|
46
|
+
orientation and resizable windows (Stage Manager, and the free-form windowing
|
|
47
|
+
introduced in iPadOS 26).
|
|
48
|
+
- Use `NavigationSplitView` for list-detail content such as orders and their
|
|
49
|
+
line items. Use `.tabViewStyle(.sidebarAdaptable)` so tabs can become a
|
|
50
|
+
sidebar.
|
|
51
|
+
- Support pointer, hardware keyboard shortcuts (`.keyboardShortcut`) and Apple
|
|
52
|
+
Pencil where drawing or markup fits.
|
|
53
|
+
- Support multiple scenes when documents or records can be open side by side.
|
|
54
|
+
- iPadOS 26 adds a menu bar; populate it through `.commands` as on the Mac.
|
|
55
|
+
|
|
56
|
+
### Mac
|
|
57
|
+
|
|
58
|
+
- Windows are resizable, long-lived and often several at once. Use
|
|
59
|
+
`WindowGroup`, `Window`, `Settings` and `MenuBarExtra` scenes appropriately.
|
|
60
|
+
- Every command belongs in the menu bar with a shortcut; toolbars hold the
|
|
61
|
+
frequent subset. Context menus mirror menu commands.
|
|
62
|
+
- Higher density is expected: smaller controls, hover states, tooltips
|
|
63
|
+
(`.help`), multi-selection, drag and drop.
|
|
64
|
+
- Sidebars, inspectors (`.inspector`) and tables (`Table`) are native idioms.
|
|
65
|
+
- Mac Catalyst or "Designed for iPad" apps should still be checked for menu
|
|
66
|
+
bar completeness and pointer behavior.
|
|
67
|
+
|
|
68
|
+
### Apple Watch
|
|
69
|
+
|
|
70
|
+
- Glanceable: a visit lasts a few seconds. Show the one thing that matters now,
|
|
71
|
+
such as the status of the latest order.
|
|
72
|
+
- Vertical `NavigationStack` or vertically paged `TabView`
|
|
73
|
+
(`.tabViewStyle(.verticalPage)`); avoid deep hierarchies.
|
|
74
|
+
- Digital Crown scrolls and adjusts values (`.digitalCrownRotation`).
|
|
75
|
+
- Complications and Smart Stack widgets through WidgetKit are often more used
|
|
76
|
+
than the app itself.
|
|
77
|
+
- Large, full-width buttons; edge-to-edge content that follows the display's
|
|
78
|
+
rounded corners.
|
|
79
|
+
|
|
80
|
+
### Apple TV
|
|
81
|
+
|
|
82
|
+
- Viewed from across a room, driven by a focus engine and the Siri Remote.
|
|
83
|
+
- Everything interactive must be focusable; use `.focusable()`, `@FocusState`
|
|
84
|
+
and `.focusSection()` to shape movement between groups.
|
|
85
|
+
- Large type, generous spacing, content-forward layouts with lockups and
|
|
86
|
+
shelves. Keep text entry to a minimum.
|
|
87
|
+
- Keep overscan-safe margins; the system containers already do.
|
|
88
|
+
|
|
89
|
+
### Apple Vision Pro
|
|
90
|
+
|
|
91
|
+
- Apps run in windows, volumes and optionally immersive spaces. Start in a
|
|
92
|
+
window; offer immersion only when it adds value.
|
|
93
|
+
- Glass window backgrounds are the default; do not replace them with opaque
|
|
94
|
+
fills. Keep content in the center of the field of view.
|
|
95
|
+
- Input is look and pinch. Give targets at least about 60 points of spacing and
|
|
96
|
+
let the system hover effect show focus (`.hoverEffect()` on custom views).
|
|
97
|
+
- Use ornaments (`.ornament`) for toolbars and tab bars outside the window.
|
|
98
|
+
- Depth is a tool for hierarchy, not decoration; keep text on flat planes.
|
|
99
|
+
|
|
100
|
+
## One codebase, adapted
|
|
101
|
+
|
|
102
|
+
| Need | SwiftUI tool |
|
|
103
|
+
|------|--------------|
|
|
104
|
+
| List and detail on large screens, stack on small | `NavigationSplitView` (collapses automatically) |
|
|
105
|
+
| Tabs that become a sidebar | `.tabViewStyle(.sidebarAdaptable)` |
|
|
106
|
+
| Layout switches on width | `@Environment(\.horizontalSizeClass)`, `ViewThatFits` |
|
|
107
|
+
| Platform-only modifiers | `#if os(macOS)` / `#if os(visionOS)` kept at the edge of a view |
|
|
108
|
+
| Commands shared by menu, shortcut and toolbar | `.commands`, `CommandMenu`, `.keyboardShortcut` |
|
|
109
|
+
| Several windows of the same content | `WindowGroup(for: Order.ID.self)` plus `openWindow` |
|
|
110
|
+
| Pointer affordances | `.hoverEffect`, `.onHover`, `.pointerStyle` (iPadOS/macOS 15+) |
|
|
111
|
+
|
|
112
|
+
Keep platform conditionals small and local. A view that is half `#if` blocks
|
|
113
|
+
is usually two views that should share a model instead.
|
|
114
|
+
|
|
115
|
+
## Decision guide: what to drop or add
|
|
116
|
+
|
|
117
|
+
- **Porting phone to watch:** drop browsing and editing; keep status, one or two
|
|
118
|
+
quick actions, and a complication.
|
|
119
|
+
- **Porting phone to iPad:** add a sidebar, keyboard shortcuts, multiple
|
|
120
|
+
windows, drag and drop between apps.
|
|
121
|
+
- **Porting iPad to Mac:** add a full menu bar, settings window, hover states
|
|
122
|
+
and higher density; remove anything that assumes touch only.
|
|
123
|
+
- **Porting to TV:** strip dense forms; favor browsing and playback.
|
|
124
|
+
- **Porting to visionOS:** keep the iPad layout as a starting window, then
|
|
125
|
+
replace custom opaque chrome with system glass and ornaments.
|
|
126
|
+
|
|
127
|
+
## Review checklist
|
|
128
|
+
|
|
129
|
+
- Navigation container matches the platform (tabs, split view, windows).
|
|
130
|
+
- Primary input works end to end without the others (keyboard-only on Mac,
|
|
131
|
+
focus-only on TV, look-and-pinch on visionOS).
|
|
132
|
+
- Targets meet the platform minimum size.
|
|
133
|
+
- No device-model checks; adaptation keys off size class, scene and platform.
|
|
134
|
+
- Text remains legible at the platform's viewing distance and user text size.
|
|
135
|
+
|
|
136
|
+
## Related skills
|
|
137
|
+
|
|
138
|
+
- `hig-foundations` for the base layer shared by all platforms.
|
|
139
|
+
- `hig-inputs` for input-specific behavior.
|
|
140
|
+
- `hig-components-layout` for split views, sidebars and tab bars in detail.
|
|
141
|
+
- `swiftui-navigation` for navigation implementation.
|
|
142
|
+
|
|
143
|
+
## References
|
|
144
|
+
|
|
145
|
+
- https://developer.apple.com/design/human-interface-guidelines/platforms
|
|
146
|
+
- https://developer.apple.com/design/human-interface-guidelines/designing-for-ios
|
|
147
|
+
- https://developer.apple.com/design/human-interface-guidelines/designing-for-ipados
|
|
148
|
+
- https://developer.apple.com/design/human-interface-guidelines/designing-for-macos
|
|
149
|
+
- https://developer.apple.com/design/human-interface-guidelines/designing-for-watchos
|
|
150
|
+
- https://developer.apple.com/design/human-interface-guidelines/designing-for-tvos
|
|
151
|
+
- https://developer.apple.com/design/human-interface-guidelines/designing-for-visionos
|