@mmerterden/multi-agent-pipeline 20.2.0 → 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 +923 -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 -31
- 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 +82 -7
- 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 -63
- 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
|
@@ -22,27 +22,27 @@ SKILL.md sections.
|
|
|
22
22
|
|
|
23
23
|
```kotlin
|
|
24
24
|
@Entity(
|
|
25
|
-
tableName = "
|
|
25
|
+
tableName = "orders",
|
|
26
26
|
indices = [
|
|
27
|
-
Index(value = ["
|
|
28
|
-
Index(value = ["
|
|
27
|
+
Index(value = ["store_code", "region_code"]),
|
|
28
|
+
Index(value = ["placed_at"]),
|
|
29
29
|
],
|
|
30
30
|
)
|
|
31
|
-
data class
|
|
31
|
+
data class OrderEntity(
|
|
32
32
|
@PrimaryKey
|
|
33
33
|
val id: String,
|
|
34
|
-
@ColumnInfo(name = "
|
|
35
|
-
val
|
|
36
|
-
@ColumnInfo(name = "
|
|
37
|
-
val
|
|
38
|
-
@ColumnInfo(name = "
|
|
39
|
-
val
|
|
40
|
-
@ColumnInfo(name = "
|
|
41
|
-
val
|
|
42
|
-
@ColumnInfo(name = "
|
|
43
|
-
val
|
|
44
|
-
@ColumnInfo(name = "
|
|
45
|
-
val
|
|
34
|
+
@ColumnInfo(name = "store_code")
|
|
35
|
+
val storeCode: String,
|
|
36
|
+
@ColumnInfo(name = "store_name")
|
|
37
|
+
val storeName: String,
|
|
38
|
+
@ColumnInfo(name = "region_code")
|
|
39
|
+
val regionCode: String,
|
|
40
|
+
@ColumnInfo(name = "region_name")
|
|
41
|
+
val regionName: String,
|
|
42
|
+
@ColumnInfo(name = "placed_at")
|
|
43
|
+
val placedAt: String,
|
|
44
|
+
@ColumnInfo(name = "delivered_at")
|
|
45
|
+
val deliveredAt: String,
|
|
46
46
|
@ColumnInfo(name = "price_amount")
|
|
47
47
|
val priceAmount: Double,
|
|
48
48
|
@ColumnInfo(name = "price_currency")
|
|
@@ -57,16 +57,16 @@ data class FlightEntity(
|
|
|
57
57
|
|
|
58
58
|
```kotlin
|
|
59
59
|
@Entity(
|
|
60
|
-
tableName = "
|
|
61
|
-
primaryKeys = ["
|
|
60
|
+
tableName = "shipment_packages",
|
|
61
|
+
primaryKeys = ["shipment_id", "package_id"],
|
|
62
62
|
)
|
|
63
|
-
data class
|
|
64
|
-
@ColumnInfo(name = "
|
|
65
|
-
val
|
|
66
|
-
@ColumnInfo(name = "
|
|
67
|
-
val
|
|
68
|
-
@ColumnInfo(name = "
|
|
69
|
-
val
|
|
63
|
+
data class ShipmentPackageEntity(
|
|
64
|
+
@ColumnInfo(name = "shipment_id")
|
|
65
|
+
val shipmentId: String,
|
|
66
|
+
@ColumnInfo(name = "package_id")
|
|
67
|
+
val packageId: String,
|
|
68
|
+
@ColumnInfo(name = "tracking_number")
|
|
69
|
+
val trackingNumber: String?,
|
|
70
70
|
)
|
|
71
71
|
```
|
|
72
72
|
|
|
@@ -74,49 +74,49 @@ data class BookingPassengerEntity(
|
|
|
74
74
|
|
|
75
75
|
```kotlin
|
|
76
76
|
@Dao
|
|
77
|
-
interface
|
|
77
|
+
interface OrderDao {
|
|
78
78
|
|
|
79
|
-
@Query("SELECT * FROM
|
|
80
|
-
fun
|
|
79
|
+
@Query("SELECT * FROM orders WHERE store_code = :store AND region_code = :region ORDER BY placed_at ASC")
|
|
80
|
+
fun getOrders(store: String, region: String): Flow<List<OrderEntity>>
|
|
81
81
|
|
|
82
|
-
@Query("SELECT * FROM
|
|
83
|
-
fun
|
|
82
|
+
@Query("SELECT * FROM orders WHERE id = :id")
|
|
83
|
+
fun getOrderById(id: String): Flow<OrderEntity?>
|
|
84
84
|
|
|
85
|
-
@Query("SELECT * FROM
|
|
86
|
-
suspend fun
|
|
85
|
+
@Query("SELECT * FROM orders WHERE id = :id")
|
|
86
|
+
suspend fun getOrderByIdOnce(id: String): OrderEntity?
|
|
87
87
|
|
|
88
88
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
|
89
|
-
suspend fun
|
|
89
|
+
suspend fun insertOrder(order: OrderEntity)
|
|
90
90
|
|
|
91
91
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
|
92
|
-
suspend fun
|
|
92
|
+
suspend fun insertOrders(orders: List<OrderEntity>)
|
|
93
93
|
|
|
94
94
|
@Upsert
|
|
95
|
-
suspend fun
|
|
95
|
+
suspend fun upsertOrders(orders: List<OrderEntity>)
|
|
96
96
|
|
|
97
97
|
@Update
|
|
98
|
-
suspend fun
|
|
98
|
+
suspend fun updateOrder(order: OrderEntity)
|
|
99
99
|
|
|
100
100
|
@Delete
|
|
101
|
-
suspend fun
|
|
101
|
+
suspend fun deleteOrder(order: OrderEntity)
|
|
102
102
|
|
|
103
|
-
@Query("DELETE FROM
|
|
104
|
-
suspend fun
|
|
103
|
+
@Query("DELETE FROM orders WHERE id = :id")
|
|
104
|
+
suspend fun deleteOrderById(id: String)
|
|
105
105
|
|
|
106
|
-
@Query("DELETE FROM
|
|
107
|
-
suspend fun
|
|
106
|
+
@Query("DELETE FROM orders WHERE updated_at < :threshold")
|
|
107
|
+
suspend fun deleteStaleOrders(threshold: Long)
|
|
108
108
|
|
|
109
|
-
@Query("SELECT COUNT(*) FROM
|
|
110
|
-
fun
|
|
109
|
+
@Query("SELECT COUNT(*) FROM orders")
|
|
110
|
+
fun getOrderCount(): Flow<Int>
|
|
111
111
|
|
|
112
112
|
@Transaction
|
|
113
|
-
suspend fun
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
suspend fun replaceAllOrders(orders: List<OrderEntity>) {
|
|
114
|
+
deleteAllOrders()
|
|
115
|
+
insertOrders(orders)
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
@Query("DELETE FROM
|
|
119
|
-
suspend fun
|
|
118
|
+
@Query("DELETE FROM orders")
|
|
119
|
+
suspend fun deleteAllOrders()
|
|
120
120
|
}
|
|
121
121
|
```
|
|
122
122
|
|
|
@@ -133,9 +133,9 @@ interface FlightDao {
|
|
|
133
133
|
```kotlin
|
|
134
134
|
@Database(
|
|
135
135
|
entities = [
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
OrderEntity::class,
|
|
137
|
+
ShipmentEntity::class,
|
|
138
|
+
ShipmentPackageEntity::class,
|
|
139
139
|
],
|
|
140
140
|
version = 2,
|
|
141
141
|
autoMigrations = [
|
|
@@ -145,8 +145,8 @@ interface FlightDao {
|
|
|
145
145
|
)
|
|
146
146
|
@TypeConverters(Converters::class)
|
|
147
147
|
abstract class AppDatabase : RoomDatabase() {
|
|
148
|
-
abstract fun
|
|
149
|
-
abstract fun
|
|
148
|
+
abstract fun orderDao(): OrderDao
|
|
149
|
+
abstract fun shipmentDao(): ShipmentDao
|
|
150
150
|
}
|
|
151
151
|
```
|
|
152
152
|
|
|
@@ -166,28 +166,28 @@ table changes.
|
|
|
166
166
|
|
|
167
167
|
```kotlin
|
|
168
168
|
// DAO returns Flow
|
|
169
|
-
@Query("SELECT * FROM
|
|
170
|
-
fun
|
|
169
|
+
@Query("SELECT * FROM orders WHERE store_code = :store")
|
|
170
|
+
fun getOrdersByStore(store: String): Flow<List<OrderEntity>>
|
|
171
171
|
|
|
172
172
|
// Repository maps to domain models
|
|
173
|
-
class
|
|
174
|
-
private val dao:
|
|
175
|
-
private val mapper:
|
|
176
|
-
) :
|
|
173
|
+
class OrderRepositoryImpl @Inject constructor(
|
|
174
|
+
private val dao: OrderDao,
|
|
175
|
+
private val mapper: OrderMapper,
|
|
176
|
+
) : OrderRepository {
|
|
177
177
|
|
|
178
|
-
override fun
|
|
179
|
-
dao.
|
|
178
|
+
override fun getOrders(store: String): Flow<List<Order>> =
|
|
179
|
+
dao.getOrdersByStore(store)
|
|
180
180
|
.map { entities -> entities.map(mapper::toDomain) }
|
|
181
181
|
.flowOn(Dispatchers.IO)
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
// ViewModel collects in viewModelScope
|
|
185
185
|
@HiltViewModel
|
|
186
|
-
class
|
|
187
|
-
private val repository:
|
|
186
|
+
class OrderListViewModel @Inject constructor(
|
|
187
|
+
private val repository: OrderRepository,
|
|
188
188
|
) : ViewModel() {
|
|
189
189
|
|
|
190
|
-
val
|
|
190
|
+
val orders: StateFlow<List<Order>> = repository.getOrders("LDN")
|
|
191
191
|
.stateIn(
|
|
192
192
|
scope = viewModelScope,
|
|
193
193
|
started = SharingStarted.WhileSubscribed(5_000),
|
|
@@ -197,11 +197,11 @@ class FlightListViewModel @Inject constructor(
|
|
|
197
197
|
|
|
198
198
|
// Compose collects as state
|
|
199
199
|
@Composable
|
|
200
|
-
fun
|
|
201
|
-
val
|
|
200
|
+
fun OrderListScreen(viewModel: OrderListViewModel = hiltViewModel()) {
|
|
201
|
+
val orders by viewModel.orders.collectAsStateWithLifecycle()
|
|
202
202
|
LazyColumn {
|
|
203
|
-
items(
|
|
204
|
-
|
|
203
|
+
items(orders, key = { it.id }) { order ->
|
|
204
|
+
OrderCard(order = order)
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
207
|
}
|
|
@@ -231,10 +231,10 @@ class Converters {
|
|
|
231
231
|
fun toInstant(value: Long?): Instant? = value?.let { Instant.fromEpochMilliseconds(it) }
|
|
232
232
|
|
|
233
233
|
@TypeConverter
|
|
234
|
-
fun
|
|
234
|
+
fun fromOrderStatus(value: OrderStatus): String = value.name
|
|
235
235
|
|
|
236
236
|
@TypeConverter
|
|
237
|
-
fun
|
|
237
|
+
fun toOrderStatus(value: String): OrderStatus = OrderStatus.valueOf(value)
|
|
238
238
|
}
|
|
239
239
|
```
|
|
240
240
|
|
|
@@ -259,8 +259,8 @@ data class AddressEntity(
|
|
|
259
259
|
val country: String,
|
|
260
260
|
)
|
|
261
261
|
|
|
262
|
-
@Entity(tableName = "
|
|
263
|
-
data class
|
|
262
|
+
@Entity(tableName = "customers")
|
|
263
|
+
data class CustomerEntity(
|
|
264
264
|
@PrimaryKey val id: String,
|
|
265
265
|
val name: String,
|
|
266
266
|
@Embedded(prefix = "address_")
|
|
@@ -272,20 +272,20 @@ data class PassengerEntity(
|
|
|
272
272
|
### @Relation (One-to-Many)
|
|
273
273
|
|
|
274
274
|
```kotlin
|
|
275
|
-
data class
|
|
276
|
-
@Embedded val
|
|
275
|
+
data class ShipmentWithPackages(
|
|
276
|
+
@Embedded val shipment: ShipmentEntity,
|
|
277
277
|
@Relation(
|
|
278
278
|
parentColumn = "id",
|
|
279
|
-
entityColumn = "
|
|
279
|
+
entityColumn = "shipment_id",
|
|
280
280
|
)
|
|
281
|
-
val
|
|
281
|
+
val packages: List<ShipmentPackageEntity>,
|
|
282
282
|
)
|
|
283
283
|
|
|
284
284
|
@Dao
|
|
285
|
-
interface
|
|
285
|
+
interface ShipmentDao {
|
|
286
286
|
@Transaction
|
|
287
|
-
@Query("SELECT * FROM
|
|
288
|
-
fun
|
|
287
|
+
@Query("SELECT * FROM shipments WHERE id = :shipmentId")
|
|
288
|
+
fun getShipmentWithPackages(shipmentId: String): Flow<ShipmentWithPackages?>
|
|
289
289
|
}
|
|
290
290
|
```
|
|
291
291
|
|
|
@@ -293,22 +293,22 @@ interface BookingDao {
|
|
|
293
293
|
|
|
294
294
|
```kotlin
|
|
295
295
|
@Entity(
|
|
296
|
-
tableName = "
|
|
297
|
-
primaryKeys = ["
|
|
296
|
+
tableName = "order_tags",
|
|
297
|
+
primaryKeys = ["order_id", "tag_id"],
|
|
298
298
|
)
|
|
299
|
-
data class
|
|
300
|
-
@ColumnInfo(name = "
|
|
299
|
+
data class OrderTagCrossRef(
|
|
300
|
+
@ColumnInfo(name = "order_id") val orderId: String,
|
|
301
301
|
@ColumnInfo(name = "tag_id") val tagId: String,
|
|
302
302
|
)
|
|
303
303
|
|
|
304
|
-
data class
|
|
305
|
-
@Embedded val
|
|
304
|
+
data class OrderWithTags(
|
|
305
|
+
@Embedded val order: OrderEntity,
|
|
306
306
|
@Relation(
|
|
307
307
|
parentColumn = "id",
|
|
308
308
|
entityColumn = "id",
|
|
309
309
|
associateBy = Junction(
|
|
310
|
-
value =
|
|
311
|
-
parentColumn = "
|
|
310
|
+
value = OrderTagCrossRef::class,
|
|
311
|
+
parentColumn = "order_id",
|
|
312
312
|
entityColumn = "tag_id",
|
|
313
313
|
),
|
|
314
314
|
)
|
|
@@ -326,7 +326,7 @@ For simple schema changes (add column, add table, add index):
|
|
|
326
326
|
|
|
327
327
|
```kotlin
|
|
328
328
|
@Database(
|
|
329
|
-
entities = [
|
|
329
|
+
entities = [OrderEntity::class],
|
|
330
330
|
version = 3,
|
|
331
331
|
autoMigrations = [
|
|
332
332
|
AutoMigration(from = 1, to = 2),
|
|
@@ -336,7 +336,7 @@ For simple schema changes (add column, add table, add index):
|
|
|
336
336
|
abstract class AppDatabase : RoomDatabase()
|
|
337
337
|
|
|
338
338
|
// Spec needed for column/table renames or deletes
|
|
339
|
-
@RenameColumn(tableName = "
|
|
339
|
+
@RenameColumn(tableName = "orders", fromColumnName = "price", toColumnName = "price_amount")
|
|
340
340
|
class Migration2To3 : AutoMigrationSpec
|
|
341
341
|
```
|
|
342
342
|
|
|
@@ -348,20 +348,20 @@ For complex changes (data transformation, merging tables):
|
|
|
348
348
|
val MIGRATION_3_4 = object : Migration(3, 4) {
|
|
349
349
|
override fun migrate(db: SupportSQLiteDatabase) {
|
|
350
350
|
db.execSQL("""
|
|
351
|
-
CREATE TABLE IF NOT EXISTS
|
|
351
|
+
CREATE TABLE IF NOT EXISTS shipments_new (
|
|
352
352
|
id TEXT NOT NULL PRIMARY KEY,
|
|
353
|
-
|
|
353
|
+
order_id TEXT NOT NULL,
|
|
354
354
|
status TEXT NOT NULL DEFAULT 'PENDING',
|
|
355
355
|
created_at INTEGER NOT NULL DEFAULT 0,
|
|
356
|
-
FOREIGN KEY (
|
|
356
|
+
FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE
|
|
357
357
|
)
|
|
358
358
|
""")
|
|
359
359
|
db.execSQL("""
|
|
360
|
-
INSERT INTO
|
|
361
|
-
SELECT id,
|
|
360
|
+
INSERT INTO shipments_new (id, order_id, status, created_at)
|
|
361
|
+
SELECT id, order_id, status, 0 FROM shipments
|
|
362
362
|
""")
|
|
363
|
-
db.execSQL("DROP TABLE
|
|
364
|
-
db.execSQL("ALTER TABLE
|
|
363
|
+
db.execSQL("DROP TABLE shipments")
|
|
364
|
+
db.execSQL("ALTER TABLE shipments_new RENAME TO shipments")
|
|
365
365
|
}
|
|
366
366
|
}
|
|
367
367
|
|
|
@@ -400,22 +400,22 @@ object DatabaseModule {
|
|
|
400
400
|
.build()
|
|
401
401
|
|
|
402
402
|
@Provides
|
|
403
|
-
fun
|
|
404
|
-
database.
|
|
403
|
+
fun provideOrderDao(database: AppDatabase): OrderDao =
|
|
404
|
+
database.orderDao()
|
|
405
405
|
|
|
406
406
|
@Provides
|
|
407
|
-
fun
|
|
408
|
-
database.
|
|
407
|
+
fun provideShipmentDao(database: AppDatabase): ShipmentDao =
|
|
408
|
+
database.shipmentDao()
|
|
409
409
|
}
|
|
410
410
|
```
|
|
411
411
|
|
|
412
412
|
## Testing with In-Memory Database
|
|
413
413
|
|
|
414
414
|
```kotlin
|
|
415
|
-
class
|
|
415
|
+
class OrderDaoTest {
|
|
416
416
|
|
|
417
417
|
private lateinit var database: AppDatabase
|
|
418
|
-
private lateinit var dao:
|
|
418
|
+
private lateinit var dao: OrderDao
|
|
419
419
|
|
|
420
420
|
@Before
|
|
421
421
|
fun setup() {
|
|
@@ -426,7 +426,7 @@ class FlightDaoTest {
|
|
|
426
426
|
.allowMainThreadQueries() // OK for tests only
|
|
427
427
|
.build()
|
|
428
428
|
|
|
429
|
-
dao = database.
|
|
429
|
+
dao = database.orderDao()
|
|
430
430
|
}
|
|
431
431
|
|
|
432
432
|
@After
|
|
@@ -435,33 +435,33 @@ class FlightDaoTest {
|
|
|
435
435
|
}
|
|
436
436
|
|
|
437
437
|
@Test
|
|
438
|
-
fun
|
|
439
|
-
val
|
|
440
|
-
id = "
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
438
|
+
fun insertAndQuery_returnsCorrectOrder() = runTest {
|
|
439
|
+
val order = OrderEntity(
|
|
440
|
+
id = "ORD-101",
|
|
441
|
+
storeCode = "LDN",
|
|
442
|
+
storeName = "London",
|
|
443
|
+
regionCode = "NYC",
|
|
444
|
+
regionName = "New York",
|
|
445
|
+
placedAt = "2025-01-15T10:00:00Z",
|
|
446
|
+
deliveredAt = "2025-01-15T18:00:00Z",
|
|
447
447
|
priceAmount = 799.0,
|
|
448
448
|
priceCurrency = "USD",
|
|
449
|
-
status = "
|
|
449
|
+
status = "PLACED",
|
|
450
450
|
)
|
|
451
451
|
|
|
452
|
-
dao.
|
|
452
|
+
dao.insertOrder(order)
|
|
453
453
|
|
|
454
|
-
val result = dao.
|
|
454
|
+
val result = dao.getOrderByIdOnce("ORD-101")
|
|
455
455
|
assertThat(result).isNotNull()
|
|
456
|
-
assertThat(result?.
|
|
456
|
+
assertThat(result?.storeCode).isEqualTo("LDN")
|
|
457
457
|
}
|
|
458
458
|
|
|
459
459
|
@Test
|
|
460
460
|
fun flowQuery_emitsUpdates() = runTest {
|
|
461
|
-
dao.
|
|
461
|
+
dao.getOrders("LDN", "NYC").test {
|
|
462
462
|
assertThat(awaitItem()).isEmpty()
|
|
463
463
|
|
|
464
|
-
dao.
|
|
464
|
+
dao.insertOrder(testOrder)
|
|
465
465
|
|
|
466
466
|
val updated = awaitItem()
|
|
467
467
|
assertThat(updated).hasSize(1)
|
|
@@ -471,13 +471,13 @@ class FlightDaoTest {
|
|
|
471
471
|
}
|
|
472
472
|
|
|
473
473
|
@Test
|
|
474
|
-
fun
|
|
475
|
-
dao.
|
|
476
|
-
val updated =
|
|
477
|
-
dao.
|
|
474
|
+
fun upsert_updatesExistingOrder() = runTest {
|
|
475
|
+
dao.insertOrder(testOrder)
|
|
476
|
+
val updated = testOrder.copy(status = "SHIPPED")
|
|
477
|
+
dao.upsertOrders(listOf(updated))
|
|
478
478
|
|
|
479
|
-
val result = dao.
|
|
480
|
-
assertThat(result?.status).isEqualTo("
|
|
479
|
+
val result = dao.getOrderByIdOnce(testOrder.id)
|
|
480
|
+
assertThat(result?.status).isEqualTo("SHIPPED")
|
|
481
481
|
}
|
|
482
482
|
}
|
|
483
483
|
```
|
|
@@ -498,13 +498,13 @@ class MigrationTest {
|
|
|
498
498
|
fun migrate3To4() {
|
|
499
499
|
// Create database at version 3
|
|
500
500
|
helper.createDatabase("test-db", 3).apply {
|
|
501
|
-
execSQL("INSERT INTO
|
|
501
|
+
execSQL("INSERT INTO shipments (id, order_id, status) VALUES ('S1', 'O1', 'CONFIRMED')")
|
|
502
502
|
close()
|
|
503
503
|
}
|
|
504
504
|
|
|
505
505
|
// Run migration and validate
|
|
506
506
|
val db = helper.runMigrationsAndValidate("test-db", 4, true, MIGRATION_3_4)
|
|
507
|
-
val cursor = db.query("SELECT * FROM
|
|
507
|
+
val cursor = db.query("SELECT * FROM shipments WHERE id = 'S1'")
|
|
508
508
|
assertThat(cursor.moveToFirst()).isTrue()
|
|
509
509
|
assertThat(cursor.getColumnIndex("created_at")).isAtLeast(0)
|
|
510
510
|
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: search-first
|
|
3
|
-
version: 1.0.0
|
|
4
3
|
description: |
|
|
5
4
|
Research-before-coding workflow. Before writing a custom implementation,
|
|
6
5
|
check what already exists (repo utilities, installed libraries, packages,
|
|
7
6
|
internal components) and decide adopt / extend / compose / build on evidence.
|
|
8
7
|
Use at the start of any non-trivial feature or utility, especially when you
|
|
9
8
|
are about to reach for a new dependency or hand-roll something common.
|
|
9
|
+
metadata:
|
|
10
|
+
version: 1.0.0
|
|
10
11
|
---
|
|
11
12
|
|
|
12
13
|
# Search-First
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: security-review
|
|
3
3
|
description: "Run a defensive, static security review of a diff or a repo: build a run-scoped threat model, find vulnerabilities joined to OWASP + CWE with CVSS scoring and evidence, and emit reviewer-shaped findings with before/after fixes. Use when reviewing code for security, auditing a dependency set, preparing a release for a security sign-off, or when a diff touches auth, crypto, input handling, networking or secrets."
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
metadata:
|
|
5
|
+
risk: low
|
|
6
|
+
source: multi-agent-pipeline
|
|
7
|
+
date_added: "2026-09-21"
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# Security Review (defensive, static)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: shareplay-activities
|
|
3
3
|
description: "Build shared real-time experiences using GroupActivities and SharePlay. Use when implementing shared media playback, collaborative app features, synchronized game state, or any FaceTime, Messages, AirDrop, or nearby visionOS group activity on iOS, macOS, tvOS, or visionOS."
|
|
4
|
+
metadata:
|
|
5
|
+
source: "dpearson2699/swift-ios-skills (PolyForm Perimeter 1.0.0)"
|
|
4
6
|
---
|
|
5
|
-
|
|
6
7
|
# GroupActivities / SharePlay
|
|
7
|
-
|
|
8
8
|
Build shared real-time experiences using the GroupActivities framework. SharePlay
|
|
9
9
|
connects people over FaceTime, Messages, AirDrop, and nearby visionOS sharing,
|
|
10
10
|
synchronizing media playback, app state, or custom data. Targets Swift 6.3 / iOS 26+.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: signal-community
|
|
3
|
-
description: Check whether other people hit the same problem, via Stack Overflow and Hacker News (keyless) plus opt-in Reddit and X. Use when a bug report or complaint needs corroboration beyond one user. Advisory only: it belongs in a risks section, never in a business rule.
|
|
3
|
+
description: "Check whether other people hit the same problem, via Stack Overflow and Hacker News (keyless) plus opt-in Reddit and X. Use when a bug report or complaint needs corroboration beyond one user. Advisory only: it belongs in a risks section, never in a business rule."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Community signal
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: skill-creator
|
|
3
|
-
version: 1.0.0
|
|
4
3
|
description: "Author and refine skills for a plugin/toolkit efficiently. Use when creating a new skill, trimming or splitting an existing one, writing a skill's description, or choosing skill vs command vs agent vs CLAUDE.md. Encodes the house rules - lean SKILL.md as an index, progressive disclosure into bundled files, the reference (descriptive) vs workflow (imperative) split, no-prefix naming, and growing a skill from observed failures. Bundles a template, a pre-ship checklist, and good/bad description examples."
|
|
5
4
|
user-invocable: true
|
|
6
5
|
argument-hint: [new | trim | description]
|
|
7
6
|
allowed-tools: Read, Write, Edit, Glob
|
|
7
|
+
metadata:
|
|
8
|
+
version: 1.0.0
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
# skill-creator - how to write skills here
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: speech-recognition
|
|
3
3
|
description: "Transcribe speech to text using Apple's Speech framework. Use when implementing live microphone transcription with AVAudioEngine, recognizing recorded audio files, handling speech and microphone authorization, choosing on-device vs server-backed SFSpeechRecognizer behavior, or adopting SpeechAnalyzer, SpeechTranscriber, DictationTranscriber, AssetInventory, and async result streams on iOS 26+."
|
|
4
|
+
metadata:
|
|
5
|
+
source: "dpearson2699/swift-ios-skills (PolyForm Perimeter 1.0.0)"
|
|
4
6
|
---
|
|
5
|
-
|
|
6
7
|
# Speech Recognition
|
|
7
8
|
|
|
8
9
|
Transcribe live and pre-recorded audio to text using Apple's Speech framework.
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
name: spm-build-analysis
|
|
3
3
|
description: Analyze Swift Package Manager dependencies, package plugins, module variants, and CI-oriented build overhead that slow Xcode builds. Use when a developer suspects packages, plugins, or dependency graph shape are hurting clean or incremental build performance, mentions SPM slowness, package resolution time, build plugin overhead, duplicate module builds from configuration drift, circular dependencies between modules, oversized modules needing splitting, or modularization best practices.
|
|
4
4
|
user-invocable: false
|
|
5
|
+
metadata:
|
|
6
|
+
source: "AvdLee/Xcode-Build-Optimization-Agent-Skill (MIT)"
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# SPM Build Analysis
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: storekit
|
|
3
3
|
description: "Implement, review, or improve in-app purchases and subscriptions using StoreKit 2. Use when building paywalls with SubscriptionStoreView or ProductView, processing transactions with Product and Transaction APIs, verifying entitlements, handling purchase flows (consumable, non-consumable, auto-renewable), implementing offer codes or promotional/win-back/introductory offers, managing subscription status and renewal state, setting up StoreKit testing with configuration files, or integrating Family Sharing, Ask to Buy, refund handling, and billing retry logic."
|
|
4
|
+
metadata:
|
|
5
|
+
source: "dpearson2699/swift-ios-skills (PolyForm Perimeter 1.0.0)"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
8
|
# StoreKit 2 In-App Purchases and Subscriptions
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: swift-api-design-guidelines
|
|
3
3
|
description: "Swift API Design Guidelines: clarity at the point of use, naming for readability over brevity, argument labels and prepositional phrases, method vs property choice, mutating/nonmutating pairs, protocol naming, generic parameter names, and documentation comment conventions. Use when naming a type, method or parameter, deciding between a method and a property, writing doc comments, or reviewing an API surface for consistency with the standard library."
|
|
4
|
+
metadata:
|
|
5
|
+
source: "dpearson2699/swift-ios-skills (PolyForm Perimeter 1.0.0)"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
8
|
# Swift API Design Guidelines
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: swift-architecture
|
|
3
3
|
description: "Select, implement, or migrate between app architecture patterns for Apple platform apps. Use when choosing between MV (Model-View with @Observable), MVVM, MVI, TCA (The Composable Architecture), Clean Architecture, VIPER, or Coordinator patterns; when evaluating architecture fit for a feature's complexity; when migrating from one pattern to another; or when reviewing whether an app's current architecture is appropriate. Scoped to Apple-platform patterns using Swift 6.3, SwiftUI, and UIKit."
|
|
4
|
+
metadata:
|
|
5
|
+
source: "dpearson2699/swift-ios-skills (PolyForm Perimeter 1.0.0)"
|
|
4
6
|
---
|
|
5
|
-
|
|
6
7
|
# Swift Architecture
|
|
7
8
|
|
|
8
9
|
Select and implement the right architecture pattern for Apple platform apps built with Swift 6.3 and SwiftUI or UIKit.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: swift-charts
|
|
3
3
|
description: "Implement, review, or improve data visualizations using Swift Charts. Use when building bar, line, area, point, pie, donut, or iOS 26 3D charts; when adding chart selection, scrolling, annotations, axes, scales, legends, or foregroundStyle grouping; when plotting functions with BarPlot, LinePlot, AreaPlot, PointPlot, Chart3D, or SurfacePlot; or when creating heat maps, Gantt charts, grouped bars, sparklines, threshold lines, or spatial visualizations."
|
|
4
|
+
metadata:
|
|
5
|
+
source: "dpearson2699/swift-ios-skills (PolyForm Perimeter 1.0.0)"
|
|
4
6
|
---
|
|
5
|
-
|
|
6
7
|
# Swift Charts
|
|
7
8
|
|
|
8
9
|
Build data visualizations with Swift Charts targeting iOS 26+. Compose marks
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: swift-codable
|
|
3
3
|
description: "Implement Swift Codable models for JSON and property-list encoding and decoding with JSONDecoder, JSONEncoder, CodingKeys, and custom init(from:) or encode(to:). Use when parsing API responses, remapping keys, flattening nested JSON, handling date or data decoding strategies, decoding heterogeneous arrays, or integrating Codable with URLSession, SwiftData, or UserDefaults."
|
|
4
|
+
metadata:
|
|
5
|
+
source: "dpearson2699/swift-ios-skills (PolyForm Perimeter 1.0.0)"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
8
|
# Swift Codable
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: swift-concurrency
|
|
3
|
-
description: "
|
|
3
|
+
description: "Swift concurrency language reference and migration: Sendable and actor-isolation diagnostics, approachable concurrency (SE-0466 default MainActor, @concurrent, nonisolated(nonsending), Task.immediate), actors, TaskGroup and the Swift 6 strict-mode migration. Use when fixing strict-concurrency errors or migrating; for the smallest fix to one diagnostic use swift-concurrency-expert, for a file-by-file review swift-concurrency-pro."
|
|
4
|
+
metadata:
|
|
5
|
+
source: "dpearson2699/swift-ios-skills (PolyForm Perimeter 1.0.0)"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
8
|
# Swift Concurrency
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: swift-concurrency-expert
|
|
3
|
-
description: "Review and fix Swift concurrency issues such as actor isolation and Sendable violations. Use when a Swift concurrency problem needs diagnosing, such as actor isolation or a Sendable violation."
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
description: "Review and fix Swift concurrency issues such as actor isolation and Sendable violations. Use when a Swift concurrency problem needs diagnosing, such as actor isolation or a Sendable violation; for Swift 6 migration use swift-concurrency, for a file-by-file review swift-concurrency-pro."
|
|
4
|
+
metadata:
|
|
5
|
+
risk: safe
|
|
6
|
+
source: "Dimillian/Skills (MIT)"
|
|
7
|
+
date_added: "2026-03-25"
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# Swift Concurrency Expert
|