@baselane/packs 0.1.5 → 0.1.6

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.
Files changed (445) hide show
  1. package/package.json +2 -2
  2. package/packs/full-harness/pack.json +3093 -0
  3. package/packs/full-harness/rendered/.claude/agents/a11y-architect.md +138 -0
  4. package/packs/full-harness/rendered/.claude/agents/agent-evaluator.md +206 -0
  5. package/packs/full-harness/rendered/.claude/agents/architect.md +209 -0
  6. package/packs/full-harness/rendered/.claude/agents/build-error-resolver.md +114 -0
  7. package/packs/full-harness/rendered/.claude/agents/chief-of-staff.md +149 -0
  8. package/packs/full-harness/rendered/.claude/agents/code-architect.md +71 -0
  9. package/packs/full-harness/rendered/.claude/agents/code-explorer.md +69 -0
  10. package/packs/full-harness/rendered/.claude/agents/code-reviewer.md +312 -0
  11. package/packs/full-harness/rendered/.claude/agents/code-simplifier.md +47 -0
  12. package/packs/full-harness/rendered/.claude/agents/comment-analyzer.md +45 -0
  13. package/packs/full-harness/rendered/.claude/agents/conversation-analyzer.md +52 -0
  14. package/packs/full-harness/rendered/.claude/agents/cpp-build-resolver.md +90 -0
  15. package/packs/full-harness/rendered/.claude/agents/cpp-reviewer.md +64 -0
  16. package/packs/full-harness/rendered/.claude/agents/csharp-reviewer.md +93 -0
  17. package/packs/full-harness/rendered/.claude/agents/dart-build-resolver.md +201 -0
  18. package/packs/full-harness/rendered/.claude/agents/database-reviewer.md +91 -0
  19. package/packs/full-harness/rendered/.claude/agents/django-build-resolver.md +243 -0
  20. package/packs/full-harness/rendered/.claude/agents/django-reviewer.md +149 -0
  21. package/packs/full-harness/rendered/.claude/agents/doc-updater.md +107 -0
  22. package/packs/full-harness/rendered/.claude/agents/docs-lookup.md +64 -0
  23. package/packs/full-harness/rendered/.claude/agents/e2e-runner.md +107 -0
  24. package/packs/full-harness/rendered/.claude/agents/fastapi-reviewer.md +68 -0
  25. package/packs/full-harness/rendered/.claude/agents/flutter-reviewer.md +241 -0
  26. package/packs/full-harness/rendered/.claude/agents/fsharp-reviewer.md +92 -0
  27. package/packs/full-harness/rendered/.claude/agents/gan-evaluator.md +206 -0
  28. package/packs/full-harness/rendered/.claude/agents/gan-generator.md +128 -0
  29. package/packs/full-harness/rendered/.claude/agents/gan-planner.md +96 -0
  30. package/packs/full-harness/rendered/.claude/agents/go-build-resolver.md +94 -0
  31. package/packs/full-harness/rendered/.claude/agents/go-reviewer.md +68 -0
  32. package/packs/full-harness/rendered/.claude/agents/harmonyos-app-resolver.md +173 -0
  33. package/packs/full-harness/rendered/.claude/agents/harness-optimizer.md +32 -0
  34. package/packs/full-harness/rendered/.claude/agents/healthcare-reviewer.md +83 -0
  35. package/packs/full-harness/rendered/.claude/agents/homelab-architect.md +94 -0
  36. package/packs/full-harness/rendered/.claude/agents/java-build-resolver.md +266 -0
  37. package/packs/full-harness/rendered/.claude/agents/java-reviewer.md +179 -0
  38. package/packs/full-harness/rendered/.claude/agents/kotlin-build-resolver.md +118 -0
  39. package/packs/full-harness/rendered/.claude/agents/kotlin-reviewer.md +157 -0
  40. package/packs/full-harness/rendered/.claude/agents/loop-operator.md +33 -0
  41. package/packs/full-harness/rendered/.claude/agents/marketing-agent.md +141 -0
  42. package/packs/full-harness/rendered/.claude/agents/mle-reviewer.md +153 -0
  43. package/packs/full-harness/rendered/.claude/agents/network-architect.md +92 -0
  44. package/packs/full-harness/rendered/.claude/agents/network-config-reviewer.md +94 -0
  45. package/packs/full-harness/rendered/.claude/agents/network-troubleshooter.md +116 -0
  46. package/packs/full-harness/rendered/.claude/agents/opensource-forker.md +198 -0
  47. package/packs/full-harness/rendered/.claude/agents/opensource-packager.md +249 -0
  48. package/packs/full-harness/rendered/.claude/agents/opensource-sanitizer.md +188 -0
  49. package/packs/full-harness/rendered/.claude/agents/performance-optimizer.md +446 -0
  50. package/packs/full-harness/rendered/.claude/agents/php-reviewer.md +92 -0
  51. package/packs/full-harness/rendered/.claude/agents/planner.md +210 -0
  52. package/packs/full-harness/rendered/.claude/agents/pr-test-analyzer.md +45 -0
  53. package/packs/full-harness/rendered/.claude/agents/python-reviewer.md +90 -0
  54. package/packs/full-harness/rendered/.claude/agents/pytorch-build-resolver.md +120 -0
  55. package/packs/full-harness/rendered/.claude/agents/react-build-resolver.md +206 -0
  56. package/packs/full-harness/rendered/.claude/agents/react-reviewer.md +156 -0
  57. package/packs/full-harness/rendered/.claude/agents/refactor-cleaner.md +85 -0
  58. package/packs/full-harness/rendered/.claude/agents/rust-build-resolver.md +148 -0
  59. package/packs/full-harness/rendered/.claude/agents/rust-reviewer.md +85 -0
  60. package/packs/full-harness/rendered/.claude/agents/security-reviewer.md +108 -0
  61. package/packs/full-harness/rendered/.claude/agents/seo-specialist.md +54 -0
  62. package/packs/full-harness/rendered/.claude/agents/silent-failure-hunter.md +50 -0
  63. package/packs/full-harness/rendered/.claude/agents/spec-miner.md +207 -0
  64. package/packs/full-harness/rendered/.claude/agents/swift-build-resolver.md +161 -0
  65. package/packs/full-harness/rendered/.claude/agents/swift-reviewer.md +98 -0
  66. package/packs/full-harness/rendered/.claude/agents/tdd-guide.md +89 -0
  67. package/packs/full-harness/rendered/.claude/agents/type-design-analyzer.md +41 -0
  68. package/packs/full-harness/rendered/.claude/agents/typescript-reviewer.md +96 -0
  69. package/packs/full-harness/rendered/.claude/agents/vue-reviewer.md +195 -0
  70. package/packs/full-harness/rendered/.claude/commands/aside.md +6 -0
  71. package/packs/full-harness/rendered/.claude/commands/auto-update.md +6 -0
  72. package/packs/full-harness/rendered/.claude/commands/build-fix.md +6 -0
  73. package/packs/full-harness/rendered/.claude/commands/checkpoint.md +6 -0
  74. package/packs/full-harness/rendered/.claude/commands/code-review.md +6 -0
  75. package/packs/full-harness/rendered/.claude/commands/cost-report.md +6 -0
  76. package/packs/full-harness/rendered/.claude/commands/cpp-build.md +6 -0
  77. package/packs/full-harness/rendered/.claude/commands/cpp-review.md +6 -0
  78. package/packs/full-harness/rendered/.claude/commands/cpp-test.md +6 -0
  79. package/packs/full-harness/rendered/.claude/commands/ecc-guide.md +6 -0
  80. package/packs/full-harness/rendered/.claude/commands/epic-claim.md +6 -0
  81. package/packs/full-harness/rendered/.claude/commands/epic-decompose.md +6 -0
  82. package/packs/full-harness/rendered/.claude/commands/epic-publish.md +6 -0
  83. package/packs/full-harness/rendered/.claude/commands/epic-review.md +6 -0
  84. package/packs/full-harness/rendered/.claude/commands/epic-sync.md +6 -0
  85. package/packs/full-harness/rendered/.claude/commands/epic-unblock.md +6 -0
  86. package/packs/full-harness/rendered/.claude/commands/epic-validate.md +6 -0
  87. package/packs/full-harness/rendered/.claude/commands/evolve.md +6 -0
  88. package/packs/full-harness/rendered/.claude/commands/fastapi-review.md +6 -0
  89. package/packs/full-harness/rendered/.claude/commands/feature-dev.md +6 -0
  90. package/packs/full-harness/rendered/.claude/commands/flutter-build.md +6 -0
  91. package/packs/full-harness/rendered/.claude/commands/flutter-review.md +6 -0
  92. package/packs/full-harness/rendered/.claude/commands/flutter-test.md +6 -0
  93. package/packs/full-harness/rendered/.claude/commands/gan-build.md +6 -0
  94. package/packs/full-harness/rendered/.claude/commands/gan-design.md +6 -0
  95. package/packs/full-harness/rendered/.claude/commands/go-build.md +6 -0
  96. package/packs/full-harness/rendered/.claude/commands/go-review.md +6 -0
  97. package/packs/full-harness/rendered/.claude/commands/go-test.md +6 -0
  98. package/packs/full-harness/rendered/.claude/commands/gradle-build.md +6 -0
  99. package/packs/full-harness/rendered/.claude/commands/harness-audit.md +6 -0
  100. package/packs/full-harness/rendered/.claude/commands/hookify-configure.md +6 -0
  101. package/packs/full-harness/rendered/.claude/commands/hookify-help.md +6 -0
  102. package/packs/full-harness/rendered/.claude/commands/hookify-list.md +6 -0
  103. package/packs/full-harness/rendered/.claude/commands/hookify.md +6 -0
  104. package/packs/full-harness/rendered/.claude/commands/instinct-export.md +6 -0
  105. package/packs/full-harness/rendered/.claude/commands/instinct-import.md +6 -0
  106. package/packs/full-harness/rendered/.claude/commands/instinct-status.md +6 -0
  107. package/packs/full-harness/rendered/.claude/commands/jira.md +6 -0
  108. package/packs/full-harness/rendered/.claude/commands/kotlin-build.md +6 -0
  109. package/packs/full-harness/rendered/.claude/commands/kotlin-review.md +6 -0
  110. package/packs/full-harness/rendered/.claude/commands/kotlin-test.md +6 -0
  111. package/packs/full-harness/rendered/.claude/commands/learn-eval.md +6 -0
  112. package/packs/full-harness/rendered/.claude/commands/learn.md +6 -0
  113. package/packs/full-harness/rendered/.claude/commands/loop-start.md +6 -0
  114. package/packs/full-harness/rendered/.claude/commands/loop-status.md +6 -0
  115. package/packs/full-harness/rendered/.claude/commands/marketing-campaign.md +6 -0
  116. package/packs/full-harness/rendered/.claude/commands/model-route.md +6 -0
  117. package/packs/full-harness/rendered/.claude/commands/multi-backend.md +6 -0
  118. package/packs/full-harness/rendered/.claude/commands/multi-execute.md +6 -0
  119. package/packs/full-harness/rendered/.claude/commands/multi-frontend.md +6 -0
  120. package/packs/full-harness/rendered/.claude/commands/multi-plan.md +6 -0
  121. package/packs/full-harness/rendered/.claude/commands/multi-workflow.md +6 -0
  122. package/packs/full-harness/rendered/.claude/commands/orch-add-feature.md +6 -0
  123. package/packs/full-harness/rendered/.claude/commands/orch-build-mvp.md +6 -0
  124. package/packs/full-harness/rendered/.claude/commands/orch-change-feature.md +6 -0
  125. package/packs/full-harness/rendered/.claude/commands/orch-fix-defect.md +6 -0
  126. package/packs/full-harness/rendered/.claude/commands/orch-refine-code.md +6 -0
  127. package/packs/full-harness/rendered/.claude/commands/orch-review.md +6 -0
  128. package/packs/full-harness/rendered/.claude/commands/plan-canvas.md +6 -0
  129. package/packs/full-harness/rendered/.claude/commands/plan-prd.md +6 -0
  130. package/packs/full-harness/rendered/.claude/commands/plan.md +6 -0
  131. package/packs/full-harness/rendered/.claude/commands/pm2.md +6 -0
  132. package/packs/full-harness/rendered/.claude/commands/pr.md +6 -0
  133. package/packs/full-harness/rendered/.claude/commands/project-init.md +6 -0
  134. package/packs/full-harness/rendered/.claude/commands/projects.md +6 -0
  135. package/packs/full-harness/rendered/.claude/commands/promote.md +6 -0
  136. package/packs/full-harness/rendered/.claude/commands/prp-commit.md +6 -0
  137. package/packs/full-harness/rendered/.claude/commands/prp-implement.md +6 -0
  138. package/packs/full-harness/rendered/.claude/commands/prp-plan.md +6 -0
  139. package/packs/full-harness/rendered/.claude/commands/prp-pr.md +6 -0
  140. package/packs/full-harness/rendered/.claude/commands/prp-prd.md +6 -0
  141. package/packs/full-harness/rendered/.claude/commands/prune.md +6 -0
  142. package/packs/full-harness/rendered/.claude/commands/python-review.md +6 -0
  143. package/packs/full-harness/rendered/.claude/commands/quality-gate.md +6 -0
  144. package/packs/full-harness/rendered/.claude/commands/react-build.md +6 -0
  145. package/packs/full-harness/rendered/.claude/commands/react-review.md +6 -0
  146. package/packs/full-harness/rendered/.claude/commands/react-test.md +6 -0
  147. package/packs/full-harness/rendered/.claude/commands/refactor-clean.md +6 -0
  148. package/packs/full-harness/rendered/.claude/commands/resume-session.md +6 -0
  149. package/packs/full-harness/rendered/.claude/commands/review-pr.md +6 -0
  150. package/packs/full-harness/rendered/.claude/commands/rust-build.md +6 -0
  151. package/packs/full-harness/rendered/.claude/commands/rust-review.md +6 -0
  152. package/packs/full-harness/rendered/.claude/commands/rust-test.md +6 -0
  153. package/packs/full-harness/rendered/.claude/commands/santa-loop.md +6 -0
  154. package/packs/full-harness/rendered/.claude/commands/save-session.md +6 -0
  155. package/packs/full-harness/rendered/.claude/commands/security-scan.md +6 -0
  156. package/packs/full-harness/rendered/.claude/commands/sessions.md +6 -0
  157. package/packs/full-harness/rendered/.claude/commands/setup-pm.md +6 -0
  158. package/packs/full-harness/rendered/.claude/commands/skill-create.md +6 -0
  159. package/packs/full-harness/rendered/.claude/commands/skill-health.md +6 -0
  160. package/packs/full-harness/rendered/.claude/commands/test-coverage.md +6 -0
  161. package/packs/full-harness/rendered/.claude/commands/update-codemaps.md +6 -0
  162. package/packs/full-harness/rendered/.claude/commands/update-docs.md +6 -0
  163. package/packs/full-harness/rendered/.claude/commands/vue-review.md +6 -0
  164. package/packs/full-harness/rendered/.claude/skills/accessibility/SKILL.md +144 -0
  165. package/packs/full-harness/rendered/.claude/skills/agent-architecture-audit/SKILL.md +254 -0
  166. package/packs/full-harness/rendered/.claude/skills/agent-eval/SKILL.md +143 -0
  167. package/packs/full-harness/rendered/.claude/skills/agent-harness-construction/SKILL.md +72 -0
  168. package/packs/full-harness/rendered/.claude/skills/agent-introspection-debugging/SKILL.md +152 -0
  169. package/packs/full-harness/rendered/.claude/skills/agent-payment-x402/SKILL.md +223 -0
  170. package/packs/full-harness/rendered/.claude/skills/agent-self-evaluation/SKILL.md +181 -0
  171. package/packs/full-harness/rendered/.claude/skills/agent-sort/SKILL.md +214 -0
  172. package/packs/full-harness/rendered/.claude/skills/agentic-engineering/SKILL.md +62 -0
  173. package/packs/full-harness/rendered/.claude/skills/agentic-os/SKILL.md +386 -0
  174. package/packs/full-harness/rendered/.claude/skills/ai-first-engineering/SKILL.md +50 -0
  175. package/packs/full-harness/rendered/.claude/skills/ai-regression-testing/SKILL.md +384 -0
  176. package/packs/full-harness/rendered/.claude/skills/android-clean-architecture/SKILL.md +338 -0
  177. package/packs/full-harness/rendered/.claude/skills/angular-developer/SKILL.md +153 -0
  178. package/packs/full-harness/rendered/.claude/skills/api-connector-builder/SKILL.md +118 -0
  179. package/packs/full-harness/rendered/.claude/skills/api-design/SKILL.md +522 -0
  180. package/packs/full-harness/rendered/.claude/skills/architecture-decision-records/SKILL.md +178 -0
  181. package/packs/full-harness/rendered/.claude/skills/article-writing/SKILL.md +78 -0
  182. package/packs/full-harness/rendered/.claude/skills/automation-audit-ops/SKILL.md +141 -0
  183. package/packs/full-harness/rendered/.claude/skills/autonomous-agent-harness/SKILL.md +272 -0
  184. package/packs/full-harness/rendered/.claude/skills/autonomous-loops/SKILL.md +609 -0
  185. package/packs/full-harness/rendered/.claude/skills/backend-patterns/SKILL.md +560 -0
  186. package/packs/full-harness/rendered/.claude/skills/benchmark/SKILL.md +92 -0
  187. package/packs/full-harness/rendered/.claude/skills/benchmark-methodology/SKILL.md +185 -0
  188. package/packs/full-harness/rendered/.claude/skills/benchmark-optimization-loop/SKILL.md +67 -0
  189. package/packs/full-harness/rendered/.claude/skills/blender-motion-state-inspection/SKILL.md +162 -0
  190. package/packs/full-harness/rendered/.claude/skills/blueprint/SKILL.md +95 -0
  191. package/packs/full-harness/rendered/.claude/skills/brand-discovery/SKILL.md +140 -0
  192. package/packs/full-harness/rendered/.claude/skills/brand-voice/SKILL.md +96 -0
  193. package/packs/full-harness/rendered/.claude/skills/browser-qa/SKILL.md +103 -0
  194. package/packs/full-harness/rendered/.claude/skills/bun-runtime/SKILL.md +83 -0
  195. package/packs/full-harness/rendered/.claude/skills/canary-watch/SKILL.md +106 -0
  196. package/packs/full-harness/rendered/.claude/skills/carrier-relationship-management/SKILL.md +198 -0
  197. package/packs/full-harness/rendered/.claude/skills/cisco-ios-patterns/SKILL.md +162 -0
  198. package/packs/full-harness/rendered/.claude/skills/ck/SKILL.md +143 -0
  199. package/packs/full-harness/rendered/.claude/skills/claude-devfleet/SKILL.md +110 -0
  200. package/packs/full-harness/rendered/.claude/skills/click-path-audit/SKILL.md +243 -0
  201. package/packs/full-harness/rendered/.claude/skills/clickhouse-io/SKILL.md +443 -0
  202. package/packs/full-harness/rendered/.claude/skills/code-tour/SKILL.md +252 -0
  203. package/packs/full-harness/rendered/.claude/skills/codebase-onboarding/SKILL.md +232 -0
  204. package/packs/full-harness/rendered/.claude/skills/codehealth-mcp/SKILL.md +165 -0
  205. package/packs/full-harness/rendered/.claude/skills/coding-standards/SKILL.md +549 -0
  206. package/packs/full-harness/rendered/.claude/skills/competitive-platform-analysis/SKILL.md +209 -0
  207. package/packs/full-harness/rendered/.claude/skills/competitive-report-structure/SKILL.md +157 -0
  208. package/packs/full-harness/rendered/.claude/skills/compose-multiplatform-patterns/SKILL.md +298 -0
  209. package/packs/full-harness/rendered/.claude/skills/config-gc/SKILL.md +118 -0
  210. package/packs/full-harness/rendered/.claude/skills/configure-ecc/SKILL.md +383 -0
  211. package/packs/full-harness/rendered/.claude/skills/connections-optimizer/SKILL.md +188 -0
  212. package/packs/full-harness/rendered/.claude/skills/content-engine/SKILL.md +130 -0
  213. package/packs/full-harness/rendered/.claude/skills/content-hash-cache-pattern/SKILL.md +160 -0
  214. package/packs/full-harness/rendered/.claude/skills/context-budget/SKILL.md +134 -0
  215. package/packs/full-harness/rendered/.claude/skills/continuous-agent-loop/SKILL.md +44 -0
  216. package/packs/full-harness/rendered/.claude/skills/continuous-learning/SKILL.md +130 -0
  217. package/packs/full-harness/rendered/.claude/skills/continuous-learning-v2/SKILL.md +358 -0
  218. package/packs/full-harness/rendered/.claude/skills/cost-aware-llm-pipeline/SKILL.md +182 -0
  219. package/packs/full-harness/rendered/.claude/skills/cost-tracking/SKILL.md +95 -0
  220. package/packs/full-harness/rendered/.claude/skills/council/SKILL.md +202 -0
  221. package/packs/full-harness/rendered/.claude/skills/cpp-coding-standards/SKILL.md +722 -0
  222. package/packs/full-harness/rendered/.claude/skills/cpp-testing/SKILL.md +323 -0
  223. package/packs/full-harness/rendered/.claude/skills/crosspost/SKILL.md +110 -0
  224. package/packs/full-harness/rendered/.claude/skills/csharp-testing/SKILL.md +320 -0
  225. package/packs/full-harness/rendered/.claude/skills/customer-billing-ops/SKILL.md +139 -0
  226. package/packs/full-harness/rendered/.claude/skills/customs-trade-compliance/SKILL.md +248 -0
  227. package/packs/full-harness/rendered/.claude/skills/dart-flutter-patterns/SKILL.md +562 -0
  228. package/packs/full-harness/rendered/.claude/skills/dashboard-builder/SKILL.md +106 -0
  229. package/packs/full-harness/rendered/.claude/skills/data-scraper-agent/SKILL.md +763 -0
  230. package/packs/full-harness/rendered/.claude/skills/data-throughput-accelerator/SKILL.md +70 -0
  231. package/packs/full-harness/rendered/.claude/skills/database-migrations/SKILL.md +428 -0
  232. package/packs/full-harness/rendered/.claude/skills/deep-research/SKILL.md +158 -0
  233. package/packs/full-harness/rendered/.claude/skills/defi-amm-security/SKILL.md +164 -0
  234. package/packs/full-harness/rendered/.claude/skills/delivery-gate/SKILL.md +123 -0
  235. package/packs/full-harness/rendered/.claude/skills/deployment-patterns/SKILL.md +426 -0
  236. package/packs/full-harness/rendered/.claude/skills/design-system/SKILL.md +81 -0
  237. package/packs/full-harness/rendered/.claude/skills/django-celery/SKILL.md +456 -0
  238. package/packs/full-harness/rendered/.claude/skills/django-patterns/SKILL.md +733 -0
  239. package/packs/full-harness/rendered/.claude/skills/django-security/SKILL.md +642 -0
  240. package/packs/full-harness/rendered/.claude/skills/django-tdd/SKILL.md +728 -0
  241. package/packs/full-harness/rendered/.claude/skills/django-verification/SKILL.md +468 -0
  242. package/packs/full-harness/rendered/.claude/skills/dmux-workflows/SKILL.md +190 -0
  243. package/packs/full-harness/rendered/.claude/skills/docker-patterns/SKILL.md +363 -0
  244. package/packs/full-harness/rendered/.claude/skills/documentation-lookup/SKILL.md +89 -0
  245. package/packs/full-harness/rendered/.claude/skills/dotnet-patterns/SKILL.md +320 -0
  246. package/packs/full-harness/rendered/.claude/skills/dynamic-workflow-mode/SKILL.md +122 -0
  247. package/packs/full-harness/rendered/.claude/skills/e2e-testing/SKILL.md +325 -0
  248. package/packs/full-harness/rendered/.claude/skills/ecc-guide/SKILL.md +188 -0
  249. package/packs/full-harness/rendered/.claude/skills/ecc-recipes/SKILL.md +145 -0
  250. package/packs/full-harness/rendered/.claude/skills/ecc-tools-cost-audit/SKILL.md +159 -0
  251. package/packs/full-harness/rendered/.claude/skills/email-ops/SKILL.md +120 -0
  252. package/packs/full-harness/rendered/.claude/skills/energy-procurement/SKILL.md +213 -0
  253. package/packs/full-harness/rendered/.claude/skills/enterprise-agent-ops/SKILL.md +49 -0
  254. package/packs/full-harness/rendered/.claude/skills/error-handling/SKILL.md +375 -0
  255. package/packs/full-harness/rendered/.claude/skills/eval-harness/SKILL.md +268 -0
  256. package/packs/full-harness/rendered/.claude/skills/evm-token-decimals/SKILL.md +128 -0
  257. package/packs/full-harness/rendered/.claude/skills/exa-search/SKILL.md +106 -0
  258. package/packs/full-harness/rendered/.claude/skills/fal-ai-media/SKILL.md +287 -0
  259. package/packs/full-harness/rendered/.claude/skills/fastapi-patterns/SKILL.md +512 -0
  260. package/packs/full-harness/rendered/.claude/skills/finance-billing-ops/SKILL.md +126 -0
  261. package/packs/full-harness/rendered/.claude/skills/flox-environments/SKILL.md +495 -0
  262. package/packs/full-harness/rendered/.claude/skills/flutter-dart-code-review/SKILL.md +434 -0
  263. package/packs/full-harness/rendered/.claude/skills/foundation-models-on-device/SKILL.md +243 -0
  264. package/packs/full-harness/rendered/.claude/skills/frontend-a11y/SKILL.md +441 -0
  265. package/packs/full-harness/rendered/.claude/skills/frontend-design-direction/SKILL.md +91 -0
  266. package/packs/full-harness/rendered/.claude/skills/frontend-patterns/SKILL.md +655 -0
  267. package/packs/full-harness/rendered/.claude/skills/frontend-slides/SKILL.md +183 -0
  268. package/packs/full-harness/rendered/.claude/skills/fsharp-testing/SKILL.md +279 -0
  269. package/packs/full-harness/rendered/.claude/skills/gan-style-harness/SKILL.md +276 -0
  270. package/packs/full-harness/rendered/.claude/skills/gateguard/SKILL.md +131 -0
  271. package/packs/full-harness/rendered/.claude/skills/generating-python-installer/SKILL.md +820 -0
  272. package/packs/full-harness/rendered/.claude/skills/gget/SKILL.md +165 -0
  273. package/packs/full-harness/rendered/.claude/skills/git-workflow/SKILL.md +714 -0
  274. package/packs/full-harness/rendered/.claude/skills/github-ops/SKILL.md +143 -0
  275. package/packs/full-harness/rendered/.claude/skills/golang-patterns/SKILL.md +674 -0
  276. package/packs/full-harness/rendered/.claude/skills/golang-testing/SKILL.md +719 -0
  277. package/packs/full-harness/rendered/.claude/skills/google-workspace-ops/SKILL.md +94 -0
  278. package/packs/full-harness/rendered/.claude/skills/growth-log/SKILL.md +125 -0
  279. package/packs/full-harness/rendered/.claude/skills/healthcare-cdss-patterns/SKILL.md +243 -0
  280. package/packs/full-harness/rendered/.claude/skills/healthcare-emr-patterns/SKILL.md +157 -0
  281. package/packs/full-harness/rendered/.claude/skills/healthcare-eval-harness/SKILL.md +205 -0
  282. package/packs/full-harness/rendered/.claude/skills/healthcare-phi-compliance/SKILL.md +143 -0
  283. package/packs/full-harness/rendered/.claude/skills/hermes-imports/SKILL.md +87 -0
  284. package/packs/full-harness/rendered/.claude/skills/hexagonal-architecture/SKILL.md +275 -0
  285. package/packs/full-harness/rendered/.claude/skills/hipaa-compliance/SKILL.md +76 -0
  286. package/packs/full-harness/rendered/.claude/skills/homelab-network-readiness/SKILL.md +168 -0
  287. package/packs/full-harness/rendered/.claude/skills/homelab-network-setup/SKILL.md +128 -0
  288. package/packs/full-harness/rendered/.claude/skills/homelab-pihole-dns/SKILL.md +273 -0
  289. package/packs/full-harness/rendered/.claude/skills/homelab-vlan-segmentation/SKILL.md +310 -0
  290. package/packs/full-harness/rendered/.claude/skills/homelab-wireguard-vpn/SKILL.md +304 -0
  291. package/packs/full-harness/rendered/.claude/skills/hookify-rules/SKILL.md +128 -0
  292. package/packs/full-harness/rendered/.claude/skills/inherit-legacy-style/SKILL.md +154 -0
  293. package/packs/full-harness/rendered/.claude/skills/intent-driven-development/SKILL.md +360 -0
  294. package/packs/full-harness/rendered/.claude/skills/inventory-demand-planning/SKILL.md +232 -0
  295. package/packs/full-harness/rendered/.claude/skills/investor-materials/SKILL.md +95 -0
  296. package/packs/full-harness/rendered/.claude/skills/investor-outreach/SKILL.md +90 -0
  297. package/packs/full-harness/rendered/.claude/skills/ios-icon-gen/SKILL.md +156 -0
  298. package/packs/full-harness/rendered/.claude/skills/iterative-retrieval/SKILL.md +210 -0
  299. package/packs/full-harness/rendered/.claude/skills/ito-basket-compare/SKILL.md +62 -0
  300. package/packs/full-harness/rendered/.claude/skills/ito-data-atlas-agent/SKILL.md +62 -0
  301. package/packs/full-harness/rendered/.claude/skills/ito-market-intelligence/SKILL.md +59 -0
  302. package/packs/full-harness/rendered/.claude/skills/ito-trade-planner/SKILL.md +66 -0
  303. package/packs/full-harness/rendered/.claude/skills/java-coding-standards/SKILL.md +382 -0
  304. package/packs/full-harness/rendered/.claude/skills/jira-integration/SKILL.md +301 -0
  305. package/packs/full-harness/rendered/.claude/skills/jpa-patterns/SKILL.md +150 -0
  306. package/packs/full-harness/rendered/.claude/skills/knowledge-ops/SKILL.md +153 -0
  307. package/packs/full-harness/rendered/.claude/skills/kotlin-coroutines-flows/SKILL.md +283 -0
  308. package/packs/full-harness/rendered/.claude/skills/kotlin-exposed-patterns/SKILL.md +718 -0
  309. package/packs/full-harness/rendered/.claude/skills/kotlin-ktor-patterns/SKILL.md +688 -0
  310. package/packs/full-harness/rendered/.claude/skills/kotlin-patterns/SKILL.md +710 -0
  311. package/packs/full-harness/rendered/.claude/skills/kotlin-testing/SKILL.md +823 -0
  312. package/packs/full-harness/rendered/.claude/skills/kubernetes-patterns/SKILL.md +754 -0
  313. package/packs/full-harness/rendered/.claude/skills/laravel-patterns/SKILL.md +414 -0
  314. package/packs/full-harness/rendered/.claude/skills/laravel-plugin-discovery/SKILL.md +228 -0
  315. package/packs/full-harness/rendered/.claude/skills/laravel-security/SKILL.md +946 -0
  316. package/packs/full-harness/rendered/.claude/skills/laravel-tdd/SKILL.md +673 -0
  317. package/packs/full-harness/rendered/.claude/skills/laravel-verification/SKILL.md +178 -0
  318. package/packs/full-harness/rendered/.claude/skills/latency-critical-systems/SKILL.md +71 -0
  319. package/packs/full-harness/rendered/.claude/skills/lead-intelligence/SKILL.md +320 -0
  320. package/packs/full-harness/rendered/.claude/skills/liquid-glass-design/SKILL.md +279 -0
  321. package/packs/full-harness/rendered/.claude/skills/literature-review/SKILL.md +191 -0
  322. package/packs/full-harness/rendered/.claude/skills/llm-trading-agent-security/SKILL.md +144 -0
  323. package/packs/full-harness/rendered/.claude/skills/logistics-exception-management/SKILL.md +208 -0
  324. package/packs/full-harness/rendered/.claude/skills/loop-design-check/SKILL.md +141 -0
  325. package/packs/full-harness/rendered/.claude/skills/mailtrap-email-integration/SKILL.md +76 -0
  326. package/packs/full-harness/rendered/.claude/skills/make-interfaces-feel-better/SKILL.md +150 -0
  327. package/packs/full-harness/rendered/.claude/skills/manim-video/SKILL.md +88 -0
  328. package/packs/full-harness/rendered/.claude/skills/market-research/SKILL.md +74 -0
  329. package/packs/full-harness/rendered/.claude/skills/marketing-campaign/SKILL.md +112 -0
  330. package/packs/full-harness/rendered/.claude/skills/mcp-server-patterns/SKILL.md +68 -0
  331. package/packs/full-harness/rendered/.claude/skills/messages-ops/SKILL.md +103 -0
  332. package/packs/full-harness/rendered/.claude/skills/ml-adoption-playbook/SKILL.md +56 -0
  333. package/packs/full-harness/rendered/.claude/skills/mle-workflow/SKILL.md +345 -0
  334. package/packs/full-harness/rendered/.claude/skills/motion-advanced/SKILL.md +592 -0
  335. package/packs/full-harness/rendered/.claude/skills/motion-foundations/SKILL.md +295 -0
  336. package/packs/full-harness/rendered/.claude/skills/motion-patterns/SKILL.md +430 -0
  337. package/packs/full-harness/rendered/.claude/skills/motion-ui/SKILL.md +574 -0
  338. package/packs/full-harness/rendered/.claude/skills/mysql-patterns/SKILL.md +411 -0
  339. package/packs/full-harness/rendered/.claude/skills/nanoclaw-repl/SKILL.md +32 -0
  340. package/packs/full-harness/rendered/.claude/skills/nestjs-patterns/SKILL.md +229 -0
  341. package/packs/full-harness/rendered/.claude/skills/netmiko-ssh-automation/SKILL.md +172 -0
  342. package/packs/full-harness/rendered/.claude/skills/network-bgp-diagnostics/SKILL.md +166 -0
  343. package/packs/full-harness/rendered/.claude/skills/network-config-validation/SKILL.md +209 -0
  344. package/packs/full-harness/rendered/.claude/skills/network-interface-health/SKILL.md +151 -0
  345. package/packs/full-harness/rendered/.claude/skills/nextjs-turbopack/SKILL.md +56 -0
  346. package/packs/full-harness/rendered/.claude/skills/nodejs-keccak256/SKILL.md +100 -0
  347. package/packs/full-harness/rendered/.claude/skills/nutrient-document-processing/SKILL.md +166 -0
  348. package/packs/full-harness/rendered/.claude/skills/nuxt4-patterns/SKILL.md +99 -0
  349. package/packs/full-harness/rendered/.claude/skills/openclaw-persona-forge/SKILL.md +287 -0
  350. package/packs/full-harness/rendered/.claude/skills/opensource-pipeline/SKILL.md +254 -0
  351. package/packs/full-harness/rendered/.claude/skills/orch-add-feature/SKILL.md +43 -0
  352. package/packs/full-harness/rendered/.claude/skills/orch-build-mvp/SKILL.md +47 -0
  353. package/packs/full-harness/rendered/.claude/skills/orch-change-feature/SKILL.md +41 -0
  354. package/packs/full-harness/rendered/.claude/skills/orch-fix-defect/SKILL.md +41 -0
  355. package/packs/full-harness/rendered/.claude/skills/orch-pipeline/SKILL.md +119 -0
  356. package/packs/full-harness/rendered/.claude/skills/orch-refine-code/SKILL.md +42 -0
  357. package/packs/full-harness/rendered/.claude/skills/parallel-execution-optimizer/SKILL.md +70 -0
  358. package/packs/full-harness/rendered/.claude/skills/perl-patterns/SKILL.md +503 -0
  359. package/packs/full-harness/rendered/.claude/skills/perl-security/SKILL.md +502 -0
  360. package/packs/full-harness/rendered/.claude/skills/perl-testing/SKILL.md +474 -0
  361. package/packs/full-harness/rendered/.claude/skills/plan-canvas/SKILL.md +150 -0
  362. package/packs/full-harness/rendered/.claude/skills/plan-orchestrate/SKILL.md +261 -0
  363. package/packs/full-harness/rendered/.claude/skills/plankton-code-quality/SKILL.md +235 -0
  364. package/packs/full-harness/rendered/.claude/skills/postgres-patterns/SKILL.md +146 -0
  365. package/packs/full-harness/rendered/.claude/skills/prediction-market-oracle-research/SKILL.md +62 -0
  366. package/packs/full-harness/rendered/.claude/skills/prediction-market-risk-review/SKILL.md +59 -0
  367. package/packs/full-harness/rendered/.claude/skills/prisma-patterns/SKILL.md +399 -0
  368. package/packs/full-harness/rendered/.claude/skills/product-capability/SKILL.md +140 -0
  369. package/packs/full-harness/rendered/.claude/skills/product-lens/SKILL.md +91 -0
  370. package/packs/full-harness/rendered/.claude/skills/production-audit/SKILL.md +205 -0
  371. package/packs/full-harness/rendered/.claude/skills/production-scheduling/SKILL.md +223 -0
  372. package/packs/full-harness/rendered/.claude/skills/project-flow-ops/SKILL.md +110 -0
  373. package/packs/full-harness/rendered/.claude/skills/prompt-optimizer/SKILL.md +383 -0
  374. package/packs/full-harness/rendered/.claude/skills/pubmed-database/SKILL.md +174 -0
  375. package/packs/full-harness/rendered/.claude/skills/python-patterns/SKILL.md +749 -0
  376. package/packs/full-harness/rendered/.claude/skills/python-testing/SKILL.md +815 -0
  377. package/packs/full-harness/rendered/.claude/skills/pytorch-patterns/SKILL.md +395 -0
  378. package/packs/full-harness/rendered/.claude/skills/quality-nonconformance/SKILL.md +245 -0
  379. package/packs/full-harness/rendered/.claude/skills/quarkus-patterns/SKILL.md +721 -0
  380. package/packs/full-harness/rendered/.claude/skills/quarkus-security/SKILL.md +466 -0
  381. package/packs/full-harness/rendered/.claude/skills/quarkus-tdd/SKILL.md +810 -0
  382. package/packs/full-harness/rendered/.claude/skills/quarkus-verification/SKILL.md +478 -0
  383. package/packs/full-harness/rendered/.claude/skills/ralphinho-rfc-pipeline/SKILL.md +66 -0
  384. package/packs/full-harness/rendered/.claude/skills/react-native-patterns/SKILL.md +325 -0
  385. package/packs/full-harness/rendered/.claude/skills/react-patterns/SKILL.md +340 -0
  386. package/packs/full-harness/rendered/.claude/skills/react-performance/SKILL.md +573 -0
  387. package/packs/full-harness/rendered/.claude/skills/react-testing/SKILL.md +422 -0
  388. package/packs/full-harness/rendered/.claude/skills/recsys-pipeline-architect/SKILL.md +113 -0
  389. package/packs/full-harness/rendered/.claude/skills/recursive-decision-ledger/SKILL.md +77 -0
  390. package/packs/full-harness/rendered/.claude/skills/redis-patterns/SKILL.md +402 -0
  391. package/packs/full-harness/rendered/.claude/skills/regex-vs-llm-structured-text/SKILL.md +219 -0
  392. package/packs/full-harness/rendered/.claude/skills/remotion-video-creation/SKILL.md +41 -0
  393. package/packs/full-harness/rendered/.claude/skills/repo-scan/SKILL.md +77 -0
  394. package/packs/full-harness/rendered/.claude/skills/research-ops/SKILL.md +111 -0
  395. package/packs/full-harness/rendered/.claude/skills/returns-reverse-logistics/SKILL.md +225 -0
  396. package/packs/full-harness/rendered/.claude/skills/rules-distill/SKILL.md +263 -0
  397. package/packs/full-harness/rendered/.claude/skills/rust-patterns/SKILL.md +498 -0
  398. package/packs/full-harness/rendered/.claude/skills/rust-testing/SKILL.md +499 -0
  399. package/packs/full-harness/rendered/.claude/skills/safety-guard/SKILL.md +74 -0
  400. package/packs/full-harness/rendered/.claude/skills/santa-method/SKILL.md +305 -0
  401. package/packs/full-harness/rendered/.claude/skills/scholar-evaluation/SKILL.md +159 -0
  402. package/packs/full-harness/rendered/.claude/skills/search-first/SKILL.md +181 -0
  403. package/packs/full-harness/rendered/.claude/skills/security-bounty-hunter/SKILL.md +97 -0
  404. package/packs/full-harness/rendered/.claude/skills/security-review/SKILL.md +502 -0
  405. package/packs/full-harness/rendered/.claude/skills/security-scan/SKILL.md +164 -0
  406. package/packs/full-harness/rendered/.claude/skills/seo/SKILL.md +153 -0
  407. package/packs/full-harness/rendered/.claude/skills/skill-comply/SKILL.md +56 -0
  408. package/packs/full-harness/rendered/.claude/skills/skill-scout/SKILL.md +139 -0
  409. package/packs/full-harness/rendered/.claude/skills/skill-stocktake/SKILL.md +193 -0
  410. package/packs/full-harness/rendered/.claude/skills/social-graph-ranker/SKILL.md +153 -0
  411. package/packs/full-harness/rendered/.claude/skills/social-publisher/SKILL.md +128 -0
  412. package/packs/full-harness/rendered/.claude/skills/springboot-patterns/SKILL.md +313 -0
  413. package/packs/full-harness/rendered/.claude/skills/springboot-security/SKILL.md +271 -0
  414. package/packs/full-harness/rendered/.claude/skills/springboot-tdd/SKILL.md +157 -0
  415. package/packs/full-harness/rendered/.claude/skills/springboot-verification/SKILL.md +230 -0
  416. package/packs/full-harness/rendered/.claude/skills/strategic-compact/SKILL.md +136 -0
  417. package/packs/full-harness/rendered/.claude/skills/swift-actor-persistence/SKILL.md +142 -0
  418. package/packs/full-harness/rendered/.claude/skills/swift-concurrency-6-2/SKILL.md +216 -0
  419. package/packs/full-harness/rendered/.claude/skills/swift-protocol-di-testing/SKILL.md +189 -0
  420. package/packs/full-harness/rendered/.claude/skills/swiftui-patterns/SKILL.md +259 -0
  421. package/packs/full-harness/rendered/.claude/skills/taste/SKILL.md +263 -0
  422. package/packs/full-harness/rendered/.claude/skills/tdd-workflow/SKILL.md +580 -0
  423. package/packs/full-harness/rendered/.claude/skills/team-agent-orchestration/SKILL.md +109 -0
  424. package/packs/full-harness/rendered/.claude/skills/team-builder/SKILL.md +167 -0
  425. package/packs/full-harness/rendered/.claude/skills/terminal-ops/SKILL.md +108 -0
  426. package/packs/full-harness/rendered/.claude/skills/tinystruct-patterns/SKILL.md +277 -0
  427. package/packs/full-harness/rendered/.claude/skills/token-budget-advisor/SKILL.md +120 -0
  428. package/packs/full-harness/rendered/.claude/skills/ui-demo/SKILL.md +464 -0
  429. package/packs/full-harness/rendered/.claude/skills/ui-to-vue/SKILL.md +133 -0
  430. package/packs/full-harness/rendered/.claude/skills/uncloud/SKILL.md +342 -0
  431. package/packs/full-harness/rendered/.claude/skills/unified-notifications-ops/SKILL.md +186 -0
  432. package/packs/full-harness/rendered/.claude/skills/uspto-database/SKILL.md +176 -0
  433. package/packs/full-harness/rendered/.claude/skills/verification-loop/SKILL.md +126 -0
  434. package/packs/full-harness/rendered/.claude/skills/video-editing/SKILL.md +309 -0
  435. package/packs/full-harness/rendered/.claude/skills/videodb/SKILL.md +371 -0
  436. package/packs/full-harness/rendered/.claude/skills/visa-doc-translate/SKILL.md +117 -0
  437. package/packs/full-harness/rendered/.claude/skills/vite-patterns/SKILL.md +448 -0
  438. package/packs/full-harness/rendered/.claude/skills/vue-patterns/SKILL.md +470 -0
  439. package/packs/full-harness/rendered/.claude/skills/windows-desktop-e2e/SKILL.md +886 -0
  440. package/packs/full-harness/rendered/.claude/skills/workspace-surface-audit/SKILL.md +124 -0
  441. package/packs/full-harness/rendered/.claude/skills/x-api/SKILL.md +233 -0
  442. package/packs/full-harness/rendered/.github/copilot-instructions.md +89529 -0
  443. package/packs/full-harness/rendered/AGENTS.md +9663 -0
  444. package/packs/full-harness/rendered/CLAUDE.md +444 -0
  445. package/packs/full-harness/rendered/GEMINI.md +71959 -0
@@ -0,0 +1,259 @@
1
+ ---
2
+ name: swiftui-patterns
3
+ description: SwiftUI architecture patterns, state management with @Observable, view composition, navigation, performance optimization, and modern iOS/macOS UI best practices.
4
+ ---
5
+
6
+ # SwiftUI Patterns
7
+
8
+ Modern SwiftUI patterns for building declarative, performant user interfaces on Apple platforms. Covers the Observation framework, view composition, type-safe navigation, and performance optimization.
9
+
10
+ ## When to Activate
11
+
12
+ - Building SwiftUI views and managing state (`@State`, `@Observable`, `@Binding`)
13
+ - Designing navigation flows with `NavigationStack`
14
+ - Structuring view models and data flow
15
+ - Optimizing rendering performance for lists and complex layouts
16
+ - Working with environment values and dependency injection in SwiftUI
17
+
18
+ ## State Management
19
+
20
+ ### Property Wrapper Selection
21
+
22
+ Choose the simplest wrapper that fits:
23
+
24
+ | Wrapper | Use Case |
25
+ |---------|----------|
26
+ | `@State` | View-local value types (toggles, form fields, sheet presentation) |
27
+ | `@Binding` | Two-way reference to parent's `@State` |
28
+ | `@Observable` class + `@State` | Owned model with multiple properties |
29
+ | `@Observable` class (no wrapper) | Read-only reference passed from parent |
30
+ | `@Bindable` | Two-way binding to an `@Observable` property |
31
+ | `@Environment` | Shared dependencies injected via `.environment()` |
32
+
33
+ ### @Observable ViewModel
34
+
35
+ Use `@Observable` (not `ObservableObject`) — it tracks property-level changes so SwiftUI only re-renders views that read the changed property:
36
+
37
+ ```swift
38
+ @Observable
39
+ final class ItemListViewModel {
40
+ private(set) var items: [Item] = []
41
+ private(set) var isLoading = false
42
+ var searchText = ""
43
+
44
+ private let repository: any ItemRepository
45
+
46
+ init(repository: any ItemRepository = DefaultItemRepository()) {
47
+ self.repository = repository
48
+ }
49
+
50
+ func load() async {
51
+ isLoading = true
52
+ defer { isLoading = false }
53
+ items = (try? await repository.fetchAll()) ?? []
54
+ }
55
+ }
56
+ ```
57
+
58
+ ### View Consuming the ViewModel
59
+
60
+ ```swift
61
+ struct ItemListView: View {
62
+ @State private var viewModel: ItemListViewModel
63
+
64
+ init(viewModel: ItemListViewModel = ItemListViewModel()) {
65
+ _viewModel = State(initialValue: viewModel)
66
+ }
67
+
68
+ var body: some View {
69
+ List(viewModel.items) { item in
70
+ ItemRow(item: item)
71
+ }
72
+ .searchable(text: $viewModel.searchText)
73
+ .overlay { if viewModel.isLoading { ProgressView() } }
74
+ .task { await viewModel.load() }
75
+ }
76
+ }
77
+ ```
78
+
79
+ ### Environment Injection
80
+
81
+ Replace `@EnvironmentObject` with `@Environment`:
82
+
83
+ ```swift
84
+ // Inject
85
+ ContentView()
86
+ .environment(authManager)
87
+
88
+ // Consume
89
+ struct ProfileView: View {
90
+ @Environment(AuthManager.self) private var auth
91
+
92
+ var body: some View {
93
+ Text(auth.currentUser?.name ?? "Guest")
94
+ }
95
+ }
96
+ ```
97
+
98
+ ## View Composition
99
+
100
+ ### Extract Subviews to Limit Invalidation
101
+
102
+ Break views into small, focused structs. When state changes, only the subview reading that state re-renders:
103
+
104
+ ```swift
105
+ struct OrderView: View {
106
+ @State private var viewModel = OrderViewModel()
107
+
108
+ var body: some View {
109
+ VStack {
110
+ OrderHeader(title: viewModel.title)
111
+ OrderItemList(items: viewModel.items)
112
+ OrderTotal(total: viewModel.total)
113
+ }
114
+ }
115
+ }
116
+ ```
117
+
118
+ ### ViewModifier for Reusable Styling
119
+
120
+ ```swift
121
+ struct CardModifier: ViewModifier {
122
+ func body(content: Content) -> some View {
123
+ content
124
+ .padding()
125
+ .background(.regularMaterial)
126
+ .clipShape(RoundedRectangle(cornerRadius: 12))
127
+ }
128
+ }
129
+
130
+ extension View {
131
+ func cardStyle() -> some View {
132
+ modifier(CardModifier())
133
+ }
134
+ }
135
+ ```
136
+
137
+ ## Navigation
138
+
139
+ ### Type-Safe NavigationStack
140
+
141
+ Use `NavigationStack` with `NavigationPath` for programmatic, type-safe routing:
142
+
143
+ ```swift
144
+ @Observable
145
+ final class Router {
146
+ var path = NavigationPath()
147
+
148
+ func navigate(to destination: Destination) {
149
+ path.append(destination)
150
+ }
151
+
152
+ func popToRoot() {
153
+ path = NavigationPath()
154
+ }
155
+ }
156
+
157
+ enum Destination: Hashable {
158
+ case detail(Item.ID)
159
+ case settings
160
+ case profile(User.ID)
161
+ }
162
+
163
+ struct RootView: View {
164
+ @State private var router = Router()
165
+
166
+ var body: some View {
167
+ NavigationStack(path: $router.path) {
168
+ HomeView()
169
+ .navigationDestination(for: Destination.self) { dest in
170
+ switch dest {
171
+ case .detail(let id): ItemDetailView(itemID: id)
172
+ case .settings: SettingsView()
173
+ case .profile(let id): ProfileView(userID: id)
174
+ }
175
+ }
176
+ }
177
+ .environment(router)
178
+ }
179
+ }
180
+ ```
181
+
182
+ ## Performance
183
+
184
+ ### Use Lazy Containers for Large Collections
185
+
186
+ `LazyVStack` and `LazyHStack` create views only when visible:
187
+
188
+ ```swift
189
+ ScrollView {
190
+ LazyVStack(spacing: 8) {
191
+ ForEach(items) { item in
192
+ ItemRow(item: item)
193
+ }
194
+ }
195
+ }
196
+ ```
197
+
198
+ ### Stable Identifiers
199
+
200
+ Always use stable, unique IDs in `ForEach` — avoid using array indices:
201
+
202
+ ```swift
203
+ // Use Identifiable conformance or explicit id
204
+ ForEach(items, id: \.stableID) { item in
205
+ ItemRow(item: item)
206
+ }
207
+ ```
208
+
209
+ ### Avoid Expensive Work in body
210
+
211
+ - Never perform I/O, network calls, or heavy computation inside `body`
212
+ - Use `.task {}` for async work — it cancels automatically when the view disappears
213
+ - Use `.sensoryFeedback()` and `.geometryGroup()` sparingly in scroll views
214
+ - Minimize `.shadow()`, `.blur()`, and `.mask()` in lists — they trigger offscreen rendering
215
+
216
+ ### Equatable Conformance
217
+
218
+ For views with expensive bodies, conform to `Equatable` to skip unnecessary re-renders:
219
+
220
+ ```swift
221
+ struct ExpensiveChartView: View, Equatable {
222
+ let dataPoints: [DataPoint] // DataPoint must conform to Equatable
223
+
224
+ static func == (lhs: Self, rhs: Self) -> Bool {
225
+ lhs.dataPoints == rhs.dataPoints
226
+ }
227
+
228
+ var body: some View {
229
+ // Complex chart rendering
230
+ }
231
+ }
232
+ ```
233
+
234
+ ## Previews
235
+
236
+ Use `#Preview` macro with inline mock data for fast iteration:
237
+
238
+ ```swift
239
+ #Preview("Empty state") {
240
+ ItemListView(viewModel: ItemListViewModel(repository: EmptyMockRepository()))
241
+ }
242
+
243
+ #Preview("Loaded") {
244
+ ItemListView(viewModel: ItemListViewModel(repository: PopulatedMockRepository()))
245
+ }
246
+ ```
247
+
248
+ ## Anti-Patterns to Avoid
249
+
250
+ - Using `ObservableObject` / `@Published` / `@StateObject` / `@EnvironmentObject` in new code — migrate to `@Observable`
251
+ - Putting async work directly in `body` or `init` — use `.task {}` or explicit load methods
252
+ - Creating view models as `@State` inside child views that don't own the data — pass from parent instead
253
+ - Using `AnyView` type erasure — prefer `@ViewBuilder` or `Group` for conditional views
254
+ - Ignoring `Sendable` requirements when passing data to/from actors
255
+
256
+ ## References
257
+
258
+ See skill: `swift-actor-persistence` for actor-based persistence patterns.
259
+ See skill: `swift-protocol-di-testing` for protocol-based DI and testing with Swift Testing.
@@ -0,0 +1,263 @@
1
+ ---
2
+ name: taste
3
+ description: A creative-direction (taste) layer for music videos and short-form edits in the angelcore / cloud-trance / hyperpop visual family. Distills a named-genre aesthetic vocabulary, a mood + color + light system, and a beat-synced editing grammar, then chains ECC's video skills (video-editing, fal-ai-media, remotion-video-creation, motion-*, content-engine) into one production pipeline. Use when the work is not just making a video function but making it feel intentional, when building a music video, a fancam/edit, a moodboard-driven reel, or when choosing a coherent visual direction for AI-generated b-roll.
4
+ ---
5
+
6
+ # Taste
7
+
8
+ Most AI video advice stops at *how to render frames*. This skill is the layer above
9
+ that: **what the frames should look like, in what order, cut to what rhythm, so the
10
+ result reads as one intentional thing instead of a pile of generations.**
11
+
12
+ It encodes a specific taste — the **angelcore / cloud-trance / hyperpop** family
13
+ (Bladee "Silver Surfer"-era ethereal trance crossed with heavy angelcore) — distilled
14
+ from a corpus of saved Reels and a tour through a ~70-entry visual-genre library. It
15
+ is opinionated on purpose. Taste is a point of view, not a menu.
16
+
17
+ > The companion file `references/genre-taxonomy.md` holds the full named-genre catalog.
18
+ > This file is the actionable layer: mood, grammar, pipeline, and a beat-mapped shot plan.
19
+
20
+ ## When to Activate
21
+
22
+ - Building a **music video**, lyric video, fancam, or visualizer.
23
+ - Making a short-form **edit / reel** where the *feel* matters more than the information.
24
+ - Driving **AI b-roll generation** (fal.ai, Veo, Kling, etc.) and the prompts need a
25
+ coherent direction instead of one-off vibes.
26
+ - Assembling a **moodboard** or choosing a visual genre before any rendering.
27
+ - The user says "taste", "make it feel like X", "give it a direction", "angelcore",
28
+ "cloud trance", "hyperpop edit", "Bladee", "dreamcore", or names a saved reference.
29
+ - The current edit works but reads as flat, generic, AI-slop, or stylistically incoherent.
30
+
31
+ This skill sits **on top of** `video-editing` (the mechanics) and `remotion-video-creation`
32
+ (the renderer). Use those for *how*. Use this for *what and why*.
33
+
34
+ ## Core Thesis
35
+
36
+ 1. **Taste is the last layer, and it must be decided first.** `video-editing` correctly
37
+ says taste is the final human pass. The trap: if you only decide taste at the end, every
38
+ generation and cut upstream was a guess. Pick the direction *before* the first prompt,
39
+ then let it constrain everything.
40
+ 2. **Coherence beats novelty.** One look executed across 30 shots beats 30 looks. A named
41
+ genre (below) is a constraint that buys coherence for free.
42
+ 3. **Cut to the song, not to the footage.** In a music video the timeline is the waveform.
43
+ Every hard cut lands on a beat or a transient. Frame math is in the pipeline section.
44
+ 4. **Generate selectively, edit ruthlessly.** AI makes b-roll that does not exist; it does
45
+ not make taste. You still throw away 80%.
46
+
47
+ ## The Aesthetic Vocabulary (distilled)
48
+
49
+ The reference corpus tours a large library of *named* visual genres. The full list lives in
50
+ `references/genre-taxonomy.md`. The useful move is not memorizing 70 names — it is seeing
51
+ that **a genre name is a complete prompt-and-grade preset.** When you pick one, you inherit
52
+ its palette, texture, lighting, and subject matter as a unit.
53
+
54
+ The genres cluster into families. Pick a **primary** family and at most **one accent**:
55
+
56
+ | Family | Genres in it | Reads as |
57
+ |--------|-------------|----------|
58
+ | **Ethereal / divine** | spiritualism, glacial folk, beacons, zen core, fairy tale | weightless, holy, glowing, soft |
59
+ | **Hyperpop / Y2K-cyber** | cyberdelia, acid house, acid nora, neo aggressano, new liquid | glossy, chrome, neon, kawaii-cyber |
60
+ | **Dark / occult** | dark academia, smoke nostalgia, communist core, abstract tech | high-contrast, ominous, grain |
61
+ | **Retro / print** | retro surfers, art deco, adventure pulp, classic advertising, magazine collage, bumper stickers | flat, graphic, halftone, nostalgic |
62
+ | **Organic / textural** | microbiology core, weaving patterns, fruitage retro, cozy blanket, pacific punk wave | tactile, macro, woven, wet |
63
+ | **Systemic / data** | numbers, mazes, code web, heatmap, pixel, 8-bit | gridded, generative, schematic |
64
+
65
+ **For the current project**, the primary is **Ethereal / divine** with a **Hyperpop / Y2K-cyber**
66
+ accent — i.e. holy light and crystalline bloom, punctuated by chrome and neon. That pairing
67
+ *is* the angelcore × cloud-trance brief.
68
+
69
+ ## The Mood System — angelcore × cloud-trance
70
+
71
+ Distilled directly from the strongest reference reels. This is the concrete grade.
72
+
73
+ ### Palette
74
+ - **Base:** near-black void (#05060a) and bone white (#f4f1ea). Most frames are one or the other.
75
+ - **Divine accent:** molten gold / ember orange (#ffb24d → #ff7a18) — the *one warm light* in the dark.
76
+ - **Crystalline accent:** iridescent violet→cyan→magenta bokeh (#8a6bff, #4fc3ff, #ff6ad5) — the
77
+ hyperpop bloom, used in bright frames.
78
+ - **Danger accent (sparingly):** a single glowing red (#ff2a2a) on monochrome — for one or two
79
+ shock cuts only.
80
+ - **Hyperpop subject:** candy pink hair / chrome / glossy white against blue sky.
81
+
82
+ Rule: **one accent per shot.** Gold lives in dark frames; iridescence lives in light frames;
83
+ never both in one shot.
84
+
85
+ ### Light & texture
86
+ - Darkness pierced by a single warm source (ember bloom, divine shaft). High contrast, deep blacks.
87
+ - Crystalline / glitter bokeh, lens flares, bloom, light leaks — *heavenly*, not dirty.
88
+ - Film grain + subtle chromatic aberration on the dark frames; clean gloss on the bright frames.
89
+ - Macro detail on negative space: a hero object centered on black (key, eye, gear, petal, water).
90
+ - Subjects: winged figures, clouds, halos, angels, crystalline structures, candy-cyber portraits.
91
+
92
+ ### Motion
93
+ - Slow, floating, weightless camera (drift, slow push, slow orbit) — *cloud* trance.
94
+ - Bursts of speed only at the drop. Otherwise everything breathes.
95
+ - Particles rising (embers, dust, glitter) — upward motion = ascension.
96
+
97
+ ## The Editing Grammar (distilled)
98
+
99
+ From the reference edits, the techniques that recur and define the style:
100
+
101
+ 1. **Beat-locked hard cuts.** No dissolves in the verse/drop. Cut on the kick. The eye should
102
+ feel the BPM.
103
+ 2. **Hero-on-black macro inserts.** A single sharp object centered in black negative space,
104
+ held for 1–2 beats, then cut. Rhythmic montage of these = the cloud-trance signature.
105
+ 3. **Bloom / explosion reveal.** A white or ember bloom that blows out the frame on a transient,
106
+ then resolves into the next shot. The "divine flash" transition.
107
+ 4. **Color-pop on monochrome.** Run a passage in B&W, then a single colored element (red eye,
108
+ gold flame, pink hair) punches through on the downbeat.
109
+ 5. **Speed-ramp into the drop.** Ramp footage from slow to fast across the last bar before the
110
+ drop, hard-cut to tempo on the one.
111
+ 6. **Caption keyword highlight (for talking-head / lyric sections only).** All-caps, one or two
112
+ words highlighted in the accent color, synced to the vocal. Use for lyric video, not for the
113
+ pure visualizer.
114
+ 7. **Reaction PiP (for explainer/edit-commentary only).** Picture-in-picture talking head over
115
+ b-roll. Out of scope for the music video itself; documented because the corpus uses it heavily.
116
+
117
+ **Do-nots:** crossfade transitions in tempo sections; more than one accent color per shot; a
118
+ shot held past its musical phrase; readable on-screen UI chrome (crop it out); mixed aspect
119
+ ratios in one timeline.
120
+
121
+ ## The Pipeline — mixing the ECC video skills
122
+
123
+ This skill is the conductor. Each ECC skill is an instrument. Do not skip layers.
124
+
125
+ ```
126
+ 0. TASTE (this skill) decide genre + mood + grammar BEFORE anything renders
127
+ 1. STRUCTURE (video-editing) map the song: timestamps for intro/verse/drop/bridge/outro
128
+ 2. GENERATE (fal-ai-media) make b-roll per genre prompt-presets; throw away 80%
129
+ 3. CUT (video-editing/FFmpeg) beat-cut + reframe to 9:16; assemble selects on the grid
130
+ 4. COMPOSE (remotion-video-creation) overlays, blooms, lyric text, beat-synced sequencing
131
+ 5. MOTION (motion-* skills) easing curves, light-leak/particle motion, transition timing
132
+ 6. AUDIO (fal-ai-media) transition risers/impacts to sell the cuts (track itself is in Ableton)
133
+ 7. POLISH grade to the palette above, final pacing pass, export
134
+ 8. DISTRIBUTE (content-engine) platform-native versions + caption/cover
135
+ ```
136
+
137
+ | Step | ECC skill to load | What it does here |
138
+ |------|-------------------|-------------------|
139
+ | Structure & cut | `video-editing` | FFmpeg cut/concat/reframe, EDL, scene/silence detection |
140
+ | Generate b-roll | `fal-ai-media` | image/video models per genre preset |
141
+ | Compose & overlay | `remotion-video-creation` | beat-synced `<Sequence>`s, text, blooms, masks |
142
+ | Motion timing | `motion-foundations`, `motion-patterns`, `motion-advanced`, `motion-ui` | easing, springs, light/particle motion |
143
+ | Server-side video | `videodb` | smart reframe, indexing if footage is large |
144
+ | Distribution | `content-engine` | per-platform cuts, covers, captions |
145
+ | Voice/lyric VO | `video-editing` (ElevenLabs section) | only if a spoken layer is needed |
146
+
147
+ ## Beat Math (lock cuts to the song)
148
+
149
+ The current track is **138 BPM, B minor**. Constants:
150
+
151
+ - `seconds_per_beat = 60 / 138 = 0.43478s`
152
+ - `frames_per_beat = fps × 0.43478` → **24fps: 10.43**, **30fps: 13.04**, **60fps: 26.09**
153
+ - `1 bar (4 beats) = 1.7391s` → 30fps: **52.17 frames**
154
+ - `8-bar phrase = 13.913s` → the loop length from the track
155
+
156
+ In Remotion, snap every `from={}` to a beat:
157
+ ```ts
158
+ const FPS = 30;
159
+ const BPM = 138;
160
+ const beat = (n: number) => Math.round(n * (60 / BPM) * FPS); // beat(n) → frame
161
+ // cut on beats 0,4,8,... : <Sequence from={beat(0)} durationInFrames={beat(4)}> ...
162
+ ```
163
+
164
+ ## Beat-Mapped Shot Plan (this music video)
165
+
166
+ The song arrangement (from the project's own notes) is
167
+ **Intro → Verse → Drop → Bridge → Drop → Outro (~2:05)**. Map taste to each section:
168
+
169
+ | Section | Genre/mood lean | Grammar | Shot ideas |
170
+ |---------|-----------------|---------|------------|
171
+ | **Intro** | Ethereal/divine, near-black | slow push, no cuts | ember bloom in the void; a single shaft of gold; dust rising |
172
+ | **Verse** | Dark + macro hero-on-black | hard cuts every 2 beats | key, eye, gear, water drop, petal — rhythmic macro montage |
173
+ | **Drop** | Hyperpop bloom + crystalline | speed-ramp in, cut on the one, fast | candy-pink figure, chrome, iridescent bokeh, winged ascension |
174
+ | **Bridge** | Spiritualism, weightless | one long held shot, color-pop | clouds + halo; single red accent punches once |
175
+ | **Drop 2** | as Drop, intensify | add divine-flash blooms on transients | wings open, glitter burst, light leaks maxed |
176
+ | **Outro** | Glacial folk, cold calm | slow fade to black | crystalline structure dissolving; ember dies out |
177
+
178
+ ## fal.ai Prompt Presets (per mood)
179
+
180
+ Use with `fal-ai-media`. Each preset is the genre rendered to the project palette. Append
181
+ `9:16, vertical, cinematic, film grain, volumetric light, no text, no watermark` to all.
182
+
183
+ - **Divine void:** "a single molten-gold ember bloom rising in an infinite near-black void,
184
+ deep shadow, one warm light source, weightless dust particles, holy, high contrast"
185
+ - **Macro hero:** "extreme macro of an antique brass key / a human eye / interlocking gears,
186
+ centered on pure black negative space, razor-sharp detail, single rim light"
187
+ - **Crystalline bloom:** "iridescent violet-cyan-magenta crystalline bokeh, glittering light
188
+ refraction, dreamy lens flares, heavenly glow, soft focus, hyperpop angelcore"
189
+ - **Candy-cyber portrait:** "candy-pink-haired figure, glossy chrome accents, bright blue sky,
190
+ Y2K hyperpop, clean gloss, saturated, kawaii-cyber"
191
+ - **Winged ascension:** "a winged figure ascending into clouds, halo of light, bone-white and
192
+ gold, volumetric god-rays, ethereal, religious iconography, soft"
193
+ - **Cold outro:** "pale crystalline ice structure slowly dissolving, glacial folk, cold blue
194
+ and bone white, minimal, calm, fading to black"
195
+
196
+ Generate 6–10 per preset, keep 2–3. For motion, animate stills with an image-to-video model
197
+ or generate short clips directly; keep camera moves slow per the Motion rules.
198
+
199
+ ## FFmpeg Recipes (cut + reframe)
200
+
201
+ ```bash
202
+ # Reframe any landscape/raw clip to 9:16 (center crop)
203
+ ffmpeg -i in.mp4 -vf "crop=ih*9/16:ih,scale=1080:1920" v.mp4
204
+
205
+ # Beat-cut a clip to exactly N beats at 138 BPM (e.g. 2 beats = 0.8696s)
206
+ ffmpeg -i in.mp4 -t 0.8696 -c copy beat2.mp4
207
+
208
+ # Concatenate beat-selects into the verse montage
209
+ for f in selects/*.mp4; do echo "file '$f'"; done > concat.txt
210
+ ffmpeg -f concat -safe 0 -i concat.txt -c copy verse.mp4
211
+
212
+ # Strip UI chrome / status bar from a screen-recorded reference (crop top+bottom)
213
+ ffmpeg -i reel.mp4 -vf "crop=iw:ih-300:0:150" clean.mp4
214
+ ```
215
+
216
+ ## Remotion Composition Skeleton (beat-synced)
217
+
218
+ ```tsx
219
+ import { AbsoluteFill, Sequence, Video, Img, useCurrentFrame, interpolate } from "remotion";
220
+
221
+ const FPS = 30, BPM = 138;
222
+ const beat = (n: number) => Math.round(n * (60 / BPM) * FPS);
223
+
224
+ const Bloom: React.FC = () => {
225
+ const f = useCurrentFrame();
226
+ const o = interpolate(f, [0, 3, 12], [0, 1, 0], { extrapolateRight: "clamp" }); // divine flash on a transient
227
+ return <AbsoluteFill style={{ background: "radial-gradient(#fff,#ffb24d)", opacity: o, mixBlendMode: "screen" }} />;
228
+ };
229
+
230
+ export const AngelcoreMV: React.FC = () => (
231
+ <AbsoluteFill style={{ background: "#05060a" }}>
232
+ {/* Verse: macro hero-on-black, hard cut every 2 beats */}
233
+ <Sequence from={beat(0)} durationInFrames={beat(2)}><Video src="/selects/key.mp4" /></Sequence>
234
+ <Sequence from={beat(2)} durationInFrames={beat(2)}><Video src="/selects/eye.mp4" /></Sequence>
235
+ <Sequence from={beat(4)} durationInFrames={beat(2)}><Video src="/selects/gear.mp4" /></Sequence>
236
+ {/* Drop: crystalline bloom + flash on the one */}
237
+ <Sequence from={beat(8)} durationInFrames={beat(16)}><Video src="/selects/crystalline.mp4" /></Sequence>
238
+ <Sequence from={beat(8)} durationInFrames={beat(1)}><Bloom /></Sequence>
239
+ </AbsoluteFill>
240
+ );
241
+ ```
242
+ Render: `npx remotion render src/index.ts AngelcoreMV out.mp4`. See `remotion-video-creation`
243
+ for project setup, audio track binding, and render flags.
244
+
245
+ ## Key Principles
246
+
247
+ 1. **Decide the genre before the first generation.** Pick one primary family + one accent.
248
+ 2. **One accent color per shot.** Gold in the dark, iridescence in the light, red once.
249
+ 3. **Every hard cut lands on a beat.** Use the beat math; no transitions in tempo sections.
250
+ 4. **Hero-on-black macro is the signature move.** Master it; it carries the verses.
251
+ 5. **Generate 10, keep 2.** Coherence comes from rejection, not from prompting harder.
252
+ 6. **Crop the chrome.** No status bars, captions, or UI in the final frame.
253
+ 7. **Taste is decided first and judged last.** Set the direction, then defend it on every cut.
254
+
255
+ ## Related Skills
256
+
257
+ - `video-editing` — the mechanical pipeline (FFmpeg, reframe, EDL, polish) this sits on top of
258
+ - `remotion-video-creation` — programmable beat-synced composition and rendering
259
+ - `fal-ai-media` — generate the b-roll, transition SFX, and risers
260
+ - `motion-foundations`, `motion-patterns`, `motion-advanced`, `motion-ui` — easing and motion timing
261
+ - `videodb` — server-side smart reframe and indexing for large footage
262
+ - `content-engine` — platform-native distribution, covers, captions
263
+ - `frontend-design-direction` — the same "decide a direction first" discipline, for UI