@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,209 @@
1
+ ---
2
+ name: competitive-platform-analysis
3
+ description: >-
4
+ ---
5
+
6
+ # Competitive Platform Analysis
7
+
8
+ Use this skill to decide **who to benchmark** and **where to find them** before
9
+ any scoring begins. A competitive analysis is only as good as its frame: the
10
+ wrong set makes the client look either unbeatable or doomed. The goal is a
11
+ defensible, decision-relevant set — not an exhaustive census.
12
+
13
+ ## When to Activate
14
+
15
+ - About to start a competitive benchmarking project and need to define the competitor set first.
16
+ - Unsure which companies belong in Direct / Adjacent / Aspirational tiers.
17
+ - Need a defensible, pruned scope for a market landscape report.
18
+ - Has a positioning brief and wants to identify who contests that position.
19
+ - First step before running benchmark-methodology.
20
+
21
+ ## Client positioning brief (establish first)
22
+
23
+ Before scoping the set, establish the client's positioning brief. If you don't
24
+ already have it, run a short brand-discovery interview to elicit it — do **not**
25
+ invent one and do **not** scope the set blind. The brief supplies:
26
+
27
+ - **Identity / aesthetic register** — what kind of studio or company this is and
28
+ how it presents itself.
29
+ - **Offer** — what services or products it delivers.
30
+ - **Target clients** — who it sells to.
31
+ - **Differentiator** — the moat or positioning argument the client believes in.
32
+ - **Scoping consequence** — the implication for how to weight competitors (e.g.,
33
+ prioritize by distinctiveness vs. capability overlap vs. price).
34
+ - **Strategic tension** — the paired axes that define the client's white-space
35
+ (e.g., memorability × hireability).
36
+
37
+ **Do not proceed without the positioning brief.** A competitor list scoped
38
+ without the client's lens is noise, not intelligence. The scoping consequence in
39
+ particular determines which competitors are *strong* rivals (those that contest
40
+ the client's moat) vs. merely overlapping on service menu.
41
+
42
+ ## Selection criteria
43
+
44
+ For each candidate, capture these axes — they decide both inclusion and tier:
45
+
46
+ - **Size / model** — solo, micro-studio (2–8), boutique (sub-30), mid-size
47
+ agency. Match the client's own band; same-band studios are the realistic
48
+ head-to-head set.
49
+ - **Niche / specialization** — how closely the candidate's focus overlaps with
50
+ the client's offer. Tighter overlap = more direct.
51
+ - **Geography / market** — EU vs US vs global-remote; language; time-zone reach.
52
+ Note whether they win the same clients the client targets.
53
+ - **Pricing & engagement model** — productized sprints, retainer, project,
54
+ day-rate; transparent vs "contact us". Signals positioning maturity.
55
+ - **Portfolio style** — generic vs. opinionated/editorial vs. contrarian. Closer
56
+ to the client's aesthetic register = more they contest the client's
57
+ distinctiveness.
58
+ - **Technical depth / craft maturity** — relevant if the client's credibility
59
+ story includes public process work, open tooling, or documented systems.
60
+ - **Brand strength** — does the studio have an ownable verbal/visual identity, or
61
+ is it interchangeable? Weight this per the client's scoping consequence.
62
+
63
+ ## Player taxonomy — axes to populate across
64
+
65
+ Don't sort competitors into niche-specific buckets; sort them along a few
66
+ generic axes so the landscape isn't skewed toward one archetype. These axes
67
+ apply to any creative-service market (design, motion, copywriting, branding,
68
+ content, film, etc.). Aim for breadth across each axis first, then prune to the
69
+ most instructive.
70
+
71
+ 1. **Positioning stance** — *brand-led / editorial* (competes on identity,
72
+ voice, POV) vs *capability-led* (competes on craft, throughput, outcomes).
73
+ Populate both poles; the client's closest mirror sits at its own end.
74
+ 2. **Specialization** — *specialist* (one tight discipline or vertical) vs
75
+ *generalist* (broad service menu). Tighter overlap with the client's focus =
76
+ more direct.
77
+ 3. **Size / model** — *solo / micro* vs *boutique* vs *mid-size* vs
78
+ *enterprise-scale*. Same-band players are the realistic head-to-head; larger
79
+ bands are the aspirational/commercial-maturity reference.
80
+ 4. **Engagement format** — *productized* (named sprints, audits, fixed packages)
81
+ vs *bespoke* (custom project / retainer). Signals positioning maturity.
82
+ 5. **Distinctiveness posture** — *conventional / safe* vs *contrarian /
83
+ manifesto-driven*. The opinionated end is key for distinctiveness
84
+ benchmarking in any niche.
85
+ 6. **Evidence / credibility model** — *outcome-led* (metrics, named clients,
86
+ case depth) vs *aesthetic-led* (portfolio, awards). Tells you how each player
87
+ earns trust.
88
+ 7. **Brand strength of the operator** — *interchangeable* vs *cult / ownable
89
+ identity* (including senior independents who prove the "memorable solo brand"
90
+ model).
91
+ 8. **Market / reach** — *local / regional* vs *global-remote*; note whether they
92
+ win the same clients the client targets.
93
+
94
+ Plot each candidate on the relevant axes; a competitor is *direct* when it sits
95
+ near the client on positioning, specialization, size, and market at once.
96
+
97
+ ## Competitive tiers (how the set resolves)
98
+
99
+ Group the final set into three tiers — this structure carries through to the
100
+ report:
101
+
102
+ - **Direct** — same band, overlapping offer, same client targets. The realistic
103
+ head-to-head.
104
+ - **Adjacent** — partial overlap (one capability, or a different client size)
105
+ that pressures at the edges.
106
+ - **Aspirational** — players the client is not competing with today but whose
107
+ brand or commercial maturity sets the bar to aim at.
108
+ - *(Watch also for substitutes: no-code/AI tools, in-house teams, generalist
109
+ freelancers — note as a threat vector, not a profiled competitor unless
110
+ materially relevant.)*
111
+
112
+ ## Data sources (where to look)
113
+
114
+ Match the source to the dimension you need. The platform *types* below are
115
+ generic; substitute the ones native to the client's niche (e.g. Dribbble/Behance
116
+ for design, showreel/Vimeo for motion, writing samples/published work for copy):
117
+
118
+ - **Portfolio / craft platforms** — craft quality, range, aesthetic register
119
+ (e.g. Dribbble, Behance, Vimeo, or the niche's equivalent showcase).
120
+ - **Awards / curated showcases** — craft ambition and editorial recognition;
121
+ over-indexes on flashy, so cross-check commercial credibility (e.g. Awwwards,
122
+ industry award lists).
123
+ - **Competitor's own site** — primary source for positioning, voice, offer
124
+ packaging, pricing posture, named clients, manifesto/POV.
125
+ - **LinkedIn** — team size/model, founder narrative, post cadence, client logos,
126
+ geography.
127
+ - **Review directories** — reviews, named clients, project sizes, engagement
128
+ models; strongest signal for commercial credibility and enterprise-readiness
129
+ (e.g. Clutch.co or the niche's equivalent).
130
+ - **Open / public work** — process repos, published samples, open creative
131
+ output: depth and craft-transparency evidence.
132
+ - **Conference talks / podcasts / newsletters** — thought-leadership depth and
133
+ POV ownership.
134
+
135
+ Always **verify claims across at least two sources** before treating a competitor
136
+ attribute as fact (self-reported site copy ≠ verified outcome). Carry an
137
+ adversarial-verification discipline into every profile.
138
+
139
+ ## Scoring matrix template (selection stage)
140
+
141
+ A lightweight pre-filter to decide who graduates into full benchmarking. Score
142
+ 1–5; keep candidates that score high on **either** distinctiveness **or**
143
+ credibility — the client's strategic tension means both poles are instructive.
144
+
145
+ | Candidate | Positioning stance | Specialization | Size band | Tier | Offer overlap (1–5) | Distinctiveness (1–5) | Commercial credibility (1–5) | Craft proximity (1–5) | Include? |
146
+ |-----------|--------------------|----------------|-----------|------|---------------------|------------------------|------------------------------|------------------------|----------|
147
+
148
+ Rules of thumb (apply per the client's scoping consequence in the positioning brief):
149
+
150
+ - High distinctiveness **and** high credibility → must-profile (proves the
151
+ client's target tension is achievable).
152
+ - High distinctiveness, low credibility → cautionary case (memorable but
153
+ un-hireable — a potential failure mode to learn from).
154
+ - High credibility, low distinctiveness → "competent but forgettable" mass the
155
+ client defines itself against.
156
+ - Low on both → drop unless needed for landscape breadth.
157
+
158
+ ## Output of this stage
159
+
160
+ A scoped, tiered competitor set (typically 10–18 candidates → 8–12 profiled),
161
+ each tagged with its axis positions, tier, and source links, ready to hand to
162
+ `benchmark-methodology`.
163
+
164
+ ## Anti-Patterns
165
+
166
+ - **Scoping without a positioning brief.** A competitor list built without the client's lens is noise. The brief determines what counts as a real rival.
167
+ - **Listing every similar company.** The goal is a defensible 10–18 candidate set, not a census. Breadth without pruning makes benchmarking unmanageable.
168
+ - **Blurring the Direct/Adjacent/Aspirational tiers.** These tiers serve different strategic purposes. Mixing them produces a flat list that can't drive decisions.
169
+ - **Relying on a single source per competitor.** Self-reported site copy is marketing, not fact. Verify attributes across at least two sources.
170
+ - **Jumping straight to scoring.** This skill scopes and tiers the set. Benchmark-methodology handles scoring. Don't conflate the two steps.
171
+
172
+ ## Examples
173
+
174
+ **Scenario:** A boutique brand-identity studio (2-person, EU-remote, productized
175
+ sprints, contrarian/manifesto-driven aesthetic) wants to scope its competitive
176
+ set before benchmarking. The strategic tension from the positioning brief is
177
+ *memorability × hireability*.
178
+
179
+ **Step 1 — eight-axis population (sample candidates):**
180
+
181
+ | Candidate | Positioning stance | Specialization | Size band | Engagement | Distinctiveness | Evidence model | Brand strength | Market |
182
+ |---|---|---|---|---|---|---|---|---|
183
+ | Studio A | brand-led / editorial | identity only | micro | productized | contrarian | aesthetic-led | cult | global-remote |
184
+ | Studio B | capability-led | broad DS+motion | boutique | bespoke | conventional | outcome-led | interchangeable | US |
185
+ | Agency C | capability-led | brand+digital | mid-size | retainer | conventional | outcome-led | interchangeable | EU |
186
+ | Freelancer D | brand-led | brand voice only | solo | day-rate | editorial | aesthetic-led | ownable | global |
187
+ | Studio E | brand-led | brand strategy | micro | productized | manifesto-driven | outcome-led | cult | EU-remote |
188
+
189
+ **Step 2 — pre-filter scoring (client scoping consequence: weight distinctiveness
190
+ because the client's moat is POV-first, not capability breadth):**
191
+
192
+ | Candidate | Offer overlap (1–5) | Distinctiveness (1–5) | Commercial credibility (1–5) | Craft proximity (1–5) | Tier | Include? |
193
+ |---|---|---|---|---|---|---|
194
+ | Studio A | 5 | 5 | 3 | 5 | Direct | ✓ must-profile |
195
+ | Studio B | 3 | 2 | 5 | 3 | Adjacent | ✓ credibility anchor |
196
+ | Agency C | 2 | 1 | 5 | 2 | Aspirational | ✓ scale reference |
197
+ | Freelancer D | 4 | 4 | 2 | 4 | Direct | ✓ cautionary case |
198
+ | Studio E | 5 | 5 | 4 | 4 | Direct | ✓ must-profile |
199
+
200
+ **Step 3 — output handed to `benchmark-methodology`:**
201
+ Five candidates (3 Direct, 1 Adjacent, 1 Aspirational), each tagged with
202
+ axis positions, tier, and source links. Studio A and Studio E are the
203
+ sharpest head-to-head rivals; Freelancer D is the "memorable but
204
+ un-hireable" cautionary case to learn from.
205
+
206
+ ## Related Skills
207
+
208
+ - `brand-discovery` — use first to establish the positioning brief and strategic tension that scopes the competitor set.
209
+ - `benchmark-methodology` — the next step; takes the tiered set and scores each competitor across nine dimensions.
@@ -0,0 +1,157 @@
1
+ ---
2
+ name: competitive-report-structure
3
+ description: >-
4
+ ---
5
+
6
+ # Competitive Report Structure
7
+
8
+ Use this skill to assemble scored competitor cards into a decision-grade report.
9
+ The report must answer three questions for the client: **who do we compete with,
10
+ how do we compete, and where is our defensible white-space?** Every section
11
+ earns its place by moving toward those answers — cut anything that doesn't.
12
+
13
+ ## When to Activate
14
+
15
+ - All competitor profile cards from benchmark-methodology are complete and ready to assemble.
16
+ - Need to present competitive findings to a founder, leadership team, or board.
17
+ - The report must drive decisions (who to compete with, how, where the moat is) — not just document the landscape.
18
+ - Preparing a client deliverable that must be auditable and defensible.
19
+
20
+ ## Client positioning brief (establish first)
21
+
22
+ Before assembling the report, establish the client's positioning brief. It
23
+ supplies:
24
+
25
+ - **Strategic tension** — the paired axes (e.g., memorability × hireability)
26
+ that define the client's target white-space. All maps and synthesis resolve
27
+ back to this tension.
28
+ - **Brand balance** — the intended proportional mix of the client's strategic
29
+ emphases (e.g., 60% strategy/evidence, 25% distinctiveness, 15% craft).
30
+ Every recommendation must be checked against this balance; flag any that
31
+ would shift it.
32
+ - **Differentiator** — the framing principle for the executive summary and
33
+ white-space section.
34
+ - **Target quadrant** — where the client intends to sit in the tension map;
35
+ confirming whether that quadrant is genuinely open is the report's central
36
+ empirical question.
37
+
38
+ ## Framing principle
39
+
40
+ The whole report is organized around the client's strategic tension and
41
+ recommendations resolve back to the client's deliberate brand balance.
42
+ Recommendations that would break that balance must be flagged against it
43
+ explicitly — "this move shifts the balance from X/Y/Z toward A/B/C; confirm
44
+ intent."
45
+
46
+ ## Report sections
47
+
48
+ ### 1. Executive summary
49
+ 3–5 takeaways, decision-first. State the most important findings in plain
50
+ language: where the client is strong, where it's exposed, who occupies its
51
+ target white-space, and the top 2–3 moves. Written so a founder/PM reads only
52
+ this and knows what to do. No methodology here.
53
+
54
+ ### 2. Market landscape & category framing
55
+ Define the category and map it. Use a **multi-axis map** — at minimum a 2×2
56
+ (e.g., *brand-led <-> capability-led* × *boutique <-> enterprise-scale*), and
57
+ ideally the **client's tension plot** from `benchmark-methodology` as the
58
+ headline map. Place every profiled competitor and the client. The map should
59
+ make the client's intended position visually obvious and show how crowded (or
60
+ empty) it is.
61
+
62
+ ### 3. Competitor tiers
63
+ Organize the set into **Direct / Adjacent / Aspirational** (from
64
+ `competitive-platform-analysis`). One short paragraph per tier explaining who's
65
+ in it and why it matters to the client. This sets reader expectations before
66
+ the detail.
67
+
68
+ ### 4. Benchmarking matrix
69
+ The full **competitors × dimensions** table — the quantitative spine. Rows =
70
+ competitors (grouped by tier), columns = the nine benchmark dimensions (note:
71
+ dimension 9 — strategic tension — has two poles (e.g., Memorability and
72
+ Hireability for a brand-studio client; substitute the client's own paired axes);
73
+ represent them as two separate sub-columns rather than averaging them). Include
74
+ the client's own honest self-assessment as a row for contrast. Use a **heatmap**
75
+ (color or symbol scale) so strength/weakness patterns are scannable. Do **not**
76
+ add a blended total column — report dimensions separately (per the bias
77
+ controls). Call out the columns where the client leads and where it trails.
78
+
79
+ ### 5. Deep dives
80
+ 3–5 most instructive competitors in narrative form (from their profile cards).
81
+ Choose for instruction, not ranking: the best exemplar of the target tension
82
+ (high on both poles), the cautionary "one pole only" case, the "competent but
83
+ forgettable" archetype the client defines against, plus any direct threat. Each
84
+ deep dive: what they do, what the client should learn, what the client should
85
+ avoid.
86
+
87
+ ### 6. White-space & threats
88
+ The strategic heart. Two parts:
89
+
90
+ - **White-space:** the position the client can own that rivals don't — argued
91
+ from the maps and matrix, not asserted. Confirm whether the target quadrant
92
+ (from the positioning brief) is genuinely open.
93
+ - **Threats:** who/what pressures the client — a rival closing the gap,
94
+ substitutes (no-code/AI tools, in-house teams, generalist freelancers), or
95
+ category shifts. Be honest about the client's own risks (e.g., a bold identity
96
+ reading as un-serious to risk-averse buyers).
97
+
98
+ ### 7. Strategic recommendations
99
+ Concrete, prioritized moves: who the client competes with, how it differentiates,
100
+ and where to invest (offer packaging, evidence/case studies, thought leadership,
101
+ brand sharpening). **Tie every recommendation back to the brand balance from the
102
+ positioning brief** and flag any that would shift it. Sequence by impact ×
103
+ effort.
104
+
105
+ ### 8. Sources / methodology appendix
106
+ The dimensions, weights, rubrics, the scoped set with tiers, source links per
107
+ competitor, and verification notes (asserted vs proven). This is what makes the
108
+ report auditable and defensible — carry the adversarial citation discipline
109
+ through.
110
+
111
+ ## How to present data
112
+
113
+ - **2×2 / positioning maps** — for landscape and the tension plot. Lead with
114
+ these; they carry the argument faster than prose.
115
+ - **Heatmap matrix** — for the competitors × dimensions comparison (section 4).
116
+ - **Profile cards** — the source unit feeding deep dives (section 5).
117
+ - **Quadrant callouts** — name who sits in each quadrant explicitly, especially
118
+ the client's target one.
119
+ - Keep tables scannable; push raw evidence and links to the appendix.
120
+
121
+ ## Decision framework (the report must resolve these)
122
+
123
+ - **Who do we compete with?** — Name the Direct tier specifically; that's the
124
+ real fight.
125
+ - **How do we compete?** — State the client's differentiator in one sentence,
126
+ grounded in the matrix (which dimensions the client owns).
127
+ - **Where are our differentiators defensible?** — Identify the
128
+ dimensions/quadrant rivals can't easily copy (the moat), vs. the ones that
129
+ are table-stakes.
130
+
131
+ ## Trigger questions for the team alignment session
132
+
133
+ End with questions that force decisions, not admiration of the analysis:
134
+
135
+ - Is the target quadrant truly open, or is a rival already moving in?
136
+ - Which Direct competitor is the sharpest threat in the next 12 months, and
137
+ what's the counter?
138
+ - Does the brand balance still hold given the landscape — should any emphasis
139
+ shift?
140
+ - Which dimension where the client trails is worth closing, and which to
141
+ deliberately concede?
142
+ - What's the one move that most widens distinctiveness *without* costing
143
+ hireability / credibility?
144
+
145
+ ## Anti-Patterns
146
+
147
+ - **Leading with methodology.** The executive summary opens with the most important finding, not an explanation of how the benchmark was run. Methodology belongs in the appendix.
148
+ - **Presenting scores without the tension plot.** The 2×2 tension map is the headline artefact. A table of numbers without the map buries the strategic insight.
149
+ - **Omitting the decision framework.** The report must resolve the three questions (who to compete with, how, where the moat is). Leaving these unanswered turns the report into a literature review.
150
+ - **Starting before all profile cards are complete.** Benchmark-methodology must finish before assembly begins. Partial data produces gaps that undermine the heatmap and white-space analysis.
151
+ - **Adding a blended total column to the matrix.** Explicitly excluded — it creates a false composite that obscures the asymmetry the client needs to act on.
152
+
153
+ ## Related Skills
154
+
155
+ - `benchmark-methodology` — the prerequisite; produces the scored competitor profile cards this skill assembles.
156
+ - `competitive-platform-analysis` — provides the tier structure (Direct / Adjacent / Aspirational) used in Section 3.
157
+ - `brand-discovery` — use to establish the client's positioning brief if it hasn't been defined.
@@ -0,0 +1,298 @@
1
+ ---
2
+ name: compose-multiplatform-patterns
3
+ description: Compose Multiplatform and Jetpack Compose patterns for KMP projects — state management, navigation, theming, performance, and platform-specific UI.
4
+ ---
5
+
6
+ # Compose Multiplatform Patterns
7
+
8
+ Patterns for building shared UI across Android, iOS, Desktop, and Web using Compose Multiplatform and Jetpack Compose. Covers state management, navigation, theming, and performance.
9
+
10
+ ## When to Activate
11
+
12
+ - Building Compose UI (Jetpack Compose or Compose Multiplatform)
13
+ - Managing UI state with ViewModels and Compose state
14
+ - Implementing navigation in KMP or Android projects
15
+ - Designing reusable composables and design systems
16
+ - Optimizing recomposition and rendering performance
17
+
18
+ ## State Management
19
+
20
+ ### ViewModel + Single State Object
21
+
22
+ Use a single data class for screen state. Expose it as `StateFlow` and collect in Compose:
23
+
24
+ ```kotlin
25
+ data class ItemListState(
26
+ val items: List<Item> = emptyList(),
27
+ val isLoading: Boolean = false,
28
+ val error: String? = null,
29
+ val searchQuery: String = ""
30
+ )
31
+
32
+ class ItemListViewModel(
33
+ private val getItems: GetItemsUseCase
34
+ ) : ViewModel() {
35
+ private val _state = MutableStateFlow(ItemListState())
36
+ val state: StateFlow<ItemListState> = _state.asStateFlow()
37
+
38
+ fun onSearch(query: String) {
39
+ _state.update { it.copy(searchQuery = query) }
40
+ loadItems(query)
41
+ }
42
+
43
+ private fun loadItems(query: String) {
44
+ viewModelScope.launch {
45
+ _state.update { it.copy(isLoading = true) }
46
+ getItems(query).fold(
47
+ onSuccess = { items -> _state.update { it.copy(items = items, isLoading = false) } },
48
+ onFailure = { e -> _state.update { it.copy(error = e.message, isLoading = false) } }
49
+ )
50
+ }
51
+ }
52
+ }
53
+ ```
54
+
55
+ ### Collecting State in Compose
56
+
57
+ ```kotlin
58
+ @Composable
59
+ fun ItemListScreen(viewModel: ItemListViewModel = koinViewModel()) {
60
+ val state by viewModel.state.collectAsStateWithLifecycle()
61
+
62
+ ItemListContent(
63
+ state = state,
64
+ onSearch = viewModel::onSearch
65
+ )
66
+ }
67
+
68
+ @Composable
69
+ private fun ItemListContent(
70
+ state: ItemListState,
71
+ onSearch: (String) -> Unit
72
+ ) {
73
+ // Stateless composable — easy to preview and test
74
+ }
75
+ ```
76
+
77
+ ### Event Sink Pattern
78
+
79
+ For complex screens, use a sealed interface for events instead of multiple callback lambdas:
80
+
81
+ ```kotlin
82
+ sealed interface ItemListEvent {
83
+ data class Search(val query: String) : ItemListEvent
84
+ data class Delete(val itemId: String) : ItemListEvent
85
+ data object Refresh : ItemListEvent
86
+ }
87
+
88
+ // In ViewModel
89
+ fun onEvent(event: ItemListEvent) {
90
+ when (event) {
91
+ is ItemListEvent.Search -> onSearch(event.query)
92
+ is ItemListEvent.Delete -> deleteItem(event.itemId)
93
+ is ItemListEvent.Refresh -> loadItems(_state.value.searchQuery)
94
+ }
95
+ }
96
+
97
+ // In Composable — single lambda instead of many
98
+ ItemListContent(
99
+ state = state,
100
+ onEvent = viewModel::onEvent
101
+ )
102
+ ```
103
+
104
+ ## Navigation
105
+
106
+ ### Type-Safe Navigation (Compose Navigation 2.8+)
107
+
108
+ Define routes as `@Serializable` objects:
109
+
110
+ ```kotlin
111
+ @Serializable data object HomeRoute
112
+ @Serializable data class DetailRoute(val id: String)
113
+ @Serializable data object SettingsRoute
114
+
115
+ @Composable
116
+ fun AppNavHost(navController: NavHostController = rememberNavController()) {
117
+ NavHost(navController, startDestination = HomeRoute) {
118
+ composable<HomeRoute> {
119
+ HomeScreen(onNavigateToDetail = { id -> navController.navigate(DetailRoute(id)) })
120
+ }
121
+ composable<DetailRoute> { backStackEntry ->
122
+ val route = backStackEntry.toRoute<DetailRoute>()
123
+ DetailScreen(id = route.id)
124
+ }
125
+ composable<SettingsRoute> { SettingsScreen() }
126
+ }
127
+ }
128
+ ```
129
+
130
+ ### Dialog and Bottom Sheet Navigation
131
+
132
+ Use `dialog()` and overlay patterns instead of imperative show/hide:
133
+
134
+ ```kotlin
135
+ NavHost(navController, startDestination = HomeRoute) {
136
+ composable<HomeRoute> { /* ... */ }
137
+ dialog<ConfirmDeleteRoute> { backStackEntry ->
138
+ val route = backStackEntry.toRoute<ConfirmDeleteRoute>()
139
+ ConfirmDeleteDialog(
140
+ itemId = route.itemId,
141
+ onConfirm = { navController.popBackStack() },
142
+ onDismiss = { navController.popBackStack() }
143
+ )
144
+ }
145
+ }
146
+ ```
147
+
148
+ ## Composable Design
149
+
150
+ ### Slot-Based APIs
151
+
152
+ Design composables with slot parameters for flexibility:
153
+
154
+ ```kotlin
155
+ @Composable
156
+ fun AppCard(
157
+ modifier: Modifier = Modifier,
158
+ header: @Composable () -> Unit = {},
159
+ content: @Composable ColumnScope.() -> Unit,
160
+ actions: @Composable RowScope.() -> Unit = {}
161
+ ) {
162
+ Card(modifier = modifier) {
163
+ Column {
164
+ header()
165
+ Column(content = content)
166
+ Row(horizontalArrangement = Arrangement.End, content = actions)
167
+ }
168
+ }
169
+ }
170
+ ```
171
+
172
+ ### Modifier Ordering
173
+
174
+ Modifier order matters — apply in this sequence:
175
+
176
+ ```kotlin
177
+ Text(
178
+ text = "Hello",
179
+ modifier = Modifier
180
+ .padding(16.dp) // 1. Layout (padding, size)
181
+ .clip(RoundedCornerShape(8.dp)) // 2. Shape
182
+ .background(Color.White) // 3. Drawing (background, border)
183
+ .clickable { } // 4. Interaction
184
+ )
185
+ ```
186
+
187
+ ## KMP Platform-Specific UI
188
+
189
+ ### expect/actual for Platform Composables
190
+
191
+ ```kotlin
192
+ // commonMain
193
+ @Composable
194
+ expect fun PlatformStatusBar(darkIcons: Boolean)
195
+
196
+ // androidMain
197
+ @Composable
198
+ actual fun PlatformStatusBar(darkIcons: Boolean) {
199
+ val systemUiController = rememberSystemUiController()
200
+ SideEffect { systemUiController.setStatusBarColor(Color.Transparent, darkIcons) }
201
+ }
202
+
203
+ // iosMain
204
+ @Composable
205
+ actual fun PlatformStatusBar(darkIcons: Boolean) {
206
+ // iOS handles this via UIKit interop or Info.plist
207
+ }
208
+ ```
209
+
210
+ ## Performance
211
+
212
+ ### Stable Types for Skippable Recomposition
213
+
214
+ Mark classes as `@Stable` or `@Immutable` when all properties are stable:
215
+
216
+ ```kotlin
217
+ @Immutable
218
+ data class ItemUiModel(
219
+ val id: String,
220
+ val title: String,
221
+ val description: String,
222
+ val progress: Float
223
+ )
224
+ ```
225
+
226
+ ### Use `key()` and Lazy Lists Correctly
227
+
228
+ ```kotlin
229
+ LazyColumn {
230
+ items(
231
+ items = items,
232
+ key = { it.id } // Stable keys enable item reuse and animations
233
+ ) { item ->
234
+ ItemRow(item = item)
235
+ }
236
+ }
237
+ ```
238
+
239
+ ### Defer Reads with `derivedStateOf`
240
+
241
+ ```kotlin
242
+ val listState = rememberLazyListState()
243
+ val showScrollToTop by remember {
244
+ derivedStateOf { listState.firstVisibleItemIndex > 5 }
245
+ }
246
+ ```
247
+
248
+ ### Avoid Allocations in Recomposition
249
+
250
+ ```kotlin
251
+ // BAD — new lambda and list every recomposition
252
+ items.filter { it.isActive }.forEach { ActiveItem(it, onClick = { handle(it) }) }
253
+
254
+ // GOOD — key each item so callbacks stay attached to the right row
255
+ val activeItems = remember(items) { items.filter { it.isActive } }
256
+ activeItems.forEach { item ->
257
+ key(item.id) {
258
+ ActiveItem(item, onClick = { handle(item) })
259
+ }
260
+ }
261
+ ```
262
+
263
+ ## Theming
264
+
265
+ ### Material 3 Dynamic Theming
266
+
267
+ ```kotlin
268
+ @Composable
269
+ fun AppTheme(
270
+ darkTheme: Boolean = isSystemInDarkTheme(),
271
+ dynamicColor: Boolean = true,
272
+ content: @Composable () -> Unit
273
+ ) {
274
+ val colorScheme = when {
275
+ dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
276
+ if (darkTheme) dynamicDarkColorScheme(LocalContext.current)
277
+ else dynamicLightColorScheme(LocalContext.current)
278
+ }
279
+ darkTheme -> darkColorScheme()
280
+ else -> lightColorScheme()
281
+ }
282
+
283
+ MaterialTheme(colorScheme = colorScheme, content = content)
284
+ }
285
+ ```
286
+
287
+ ## Anti-Patterns to Avoid
288
+
289
+ - Using `mutableStateOf` in ViewModels when `MutableStateFlow` with `collectAsStateWithLifecycle` is safer for lifecycle
290
+ - Passing `NavController` deep into composables — pass lambda callbacks instead
291
+ - Heavy computation inside `@Composable` functions — move to ViewModel or `remember {}`
292
+ - Using `LaunchedEffect(Unit)` as a substitute for ViewModel init — it re-runs on configuration change in some setups
293
+ - Creating new object instances in composable parameters — causes unnecessary recomposition
294
+
295
+ ## References
296
+
297
+ See skill: `android-clean-architecture` for module structure and layering.
298
+ See skill: `kotlin-coroutines-flows` for coroutine and Flow patterns.