@rubix0270/arboris 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/README.md +151 -0
  2. package/cli/manifest.json +323 -0
  3. package/dist/cli.mjs +376 -0
  4. package/package.json +81 -0
  5. package/prisma/skills/accessibility/SKILL.md +147 -0
  6. package/prisma/skills/agent-architecture-audit/SKILL.md +257 -0
  7. package/prisma/skills/agent-eval/SKILL.md +146 -0
  8. package/prisma/skills/agent-harness-construction/SKILL.md +74 -0
  9. package/prisma/skills/agent-introspection-debugging/SKILL.md +154 -0
  10. package/prisma/skills/agent-payment-x402/SKILL.md +225 -0
  11. package/prisma/skills/agent-self-evaluation/SKILL.md +182 -0
  12. package/prisma/skills/agent-self-evaluation/examples/high-score-example.md +87 -0
  13. package/prisma/skills/agent-self-evaluation/examples/low-score-example.md +86 -0
  14. package/prisma/skills/agent-self-evaluation/references/evaluation-criteria.md +71 -0
  15. package/prisma/skills/agent-self-evaluation/references/hook-integration.md +64 -0
  16. package/prisma/skills/agent-self-evaluation/scripts/evaluate.py +408 -0
  17. package/prisma/skills/agent-self-evaluation/templates/evaluation-report.md +86 -0
  18. package/prisma/skills/agent-sort/SKILL.md +216 -0
  19. package/prisma/skills/agentic-engineering/SKILL.md +64 -0
  20. package/prisma/skills/agentic-os/SKILL.md +388 -0
  21. package/prisma/skills/ai-first-engineering/SKILL.md +52 -0
  22. package/prisma/skills/ai-regression-testing/SKILL.md +386 -0
  23. package/prisma/skills/android-clean-architecture/SKILL.md +340 -0
  24. package/prisma/skills/angular-developer/SKILL.md +155 -0
  25. package/prisma/skills/angular-developer/references/angular-animations.md +160 -0
  26. package/prisma/skills/angular-developer/references/angular-aria.md +410 -0
  27. package/prisma/skills/angular-developer/references/cli.md +86 -0
  28. package/prisma/skills/angular-developer/references/component-harnesses.md +59 -0
  29. package/prisma/skills/angular-developer/references/component-styling.md +91 -0
  30. package/prisma/skills/angular-developer/references/components.md +117 -0
  31. package/prisma/skills/angular-developer/references/creating-services.md +97 -0
  32. package/prisma/skills/angular-developer/references/data-resolvers.md +69 -0
  33. package/prisma/skills/angular-developer/references/define-routes.md +67 -0
  34. package/prisma/skills/angular-developer/references/defining-providers.md +72 -0
  35. package/prisma/skills/angular-developer/references/di-fundamentals.md +120 -0
  36. package/prisma/skills/angular-developer/references/e2e-testing.md +56 -0
  37. package/prisma/skills/angular-developer/references/effects.md +83 -0
  38. package/prisma/skills/angular-developer/references/hierarchical-injectors.md +43 -0
  39. package/prisma/skills/angular-developer/references/host-elements.md +80 -0
  40. package/prisma/skills/angular-developer/references/injection-context.md +63 -0
  41. package/prisma/skills/angular-developer/references/inputs.md +101 -0
  42. package/prisma/skills/angular-developer/references/linked-signal.md +59 -0
  43. package/prisma/skills/angular-developer/references/loading-strategies.md +61 -0
  44. package/prisma/skills/angular-developer/references/mcp.md +108 -0
  45. package/prisma/skills/angular-developer/references/navigate-to-routes.md +69 -0
  46. package/prisma/skills/angular-developer/references/outputs.md +86 -0
  47. package/prisma/skills/angular-developer/references/reactive-forms.md +122 -0
  48. package/prisma/skills/angular-developer/references/rendering-strategies.md +44 -0
  49. package/prisma/skills/angular-developer/references/resource.md +77 -0
  50. package/prisma/skills/angular-developer/references/route-animations.md +56 -0
  51. package/prisma/skills/angular-developer/references/route-guards.md +52 -0
  52. package/prisma/skills/angular-developer/references/router-lifecycle.md +45 -0
  53. package/prisma/skills/angular-developer/references/router-testing.md +87 -0
  54. package/prisma/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
  55. package/prisma/skills/angular-developer/references/signal-forms.md +795 -0
  56. package/prisma/skills/angular-developer/references/signals-overview.md +94 -0
  57. package/prisma/skills/angular-developer/references/tailwind-css.md +69 -0
  58. package/prisma/skills/angular-developer/references/template-driven-forms.md +114 -0
  59. package/prisma/skills/angular-developer/references/testing-fundamentals.md +65 -0
  60. package/prisma/skills/api-connector-builder/SKILL.md +121 -0
  61. package/prisma/skills/api-design/SKILL.md +524 -0
  62. package/prisma/skills/architecture-decision-records/SKILL.md +180 -0
  63. package/prisma/skills/article-writing/SKILL.md +80 -0
  64. package/prisma/skills/automation-audit-ops/SKILL.md +143 -0
  65. package/prisma/skills/autonomous-agent-harness/SKILL.md +274 -0
  66. package/prisma/skills/autonomous-loops/SKILL.md +611 -0
  67. package/prisma/skills/backend-patterns/SKILL.md +562 -0
  68. package/prisma/skills/benchmark/SKILL.md +94 -0
  69. package/prisma/skills/benchmark-methodology/SKILL.md +190 -0
  70. package/prisma/skills/benchmark-optimization-loop/SKILL.md +70 -0
  71. package/prisma/skills/blender-motion-state-inspection/SKILL.md +165 -0
  72. package/prisma/skills/blueprint/SKILL.md +106 -0
  73. package/prisma/skills/brand-discovery/SKILL.md +145 -0
  74. package/prisma/skills/brand-discovery/references/10_purpose-why.md +40 -0
  75. package/prisma/skills/brand-discovery/references/20_positioning.md +44 -0
  76. package/prisma/skills/brand-discovery/references/30_audience-niche.md +52 -0
  77. package/prisma/skills/brand-discovery/references/40_personality-archetype.md +57 -0
  78. package/prisma/skills/brand-discovery/references/50_voice-tone.md +59 -0
  79. package/prisma/skills/brand-discovery/references/60_narrative-story.md +50 -0
  80. package/prisma/skills/brand-discovery/references/70_founder-tension.md +49 -0
  81. package/prisma/skills/brand-discovery/references/90_SYNTHESIS.md +133 -0
  82. package/prisma/skills/brand-voice/SKILL.md +98 -0
  83. package/prisma/skills/brand-voice/references/voice-profile-schema.md +55 -0
  84. package/prisma/skills/browser-qa/SKILL.md +105 -0
  85. package/prisma/skills/bun-runtime/SKILL.md +85 -0
  86. package/prisma/skills/canary-watch/SKILL.md +108 -0
  87. package/prisma/skills/carrier-relationship-management/SKILL.md +212 -0
  88. package/prisma/skills/cisco-ios-patterns/SKILL.md +164 -0
  89. package/prisma/skills/ck/SKILL.md +148 -0
  90. package/prisma/skills/ck/commands/forget.mjs +44 -0
  91. package/prisma/skills/ck/commands/info.mjs +24 -0
  92. package/prisma/skills/ck/commands/init.mjs +143 -0
  93. package/prisma/skills/ck/commands/list.mjs +40 -0
  94. package/prisma/skills/ck/commands/migrate.mjs +202 -0
  95. package/prisma/skills/ck/commands/resume.mjs +36 -0
  96. package/prisma/skills/ck/commands/save.mjs +210 -0
  97. package/prisma/skills/ck/commands/shared.mjs +387 -0
  98. package/prisma/skills/ck/hooks/session-start.mjs +224 -0
  99. package/prisma/skills/claude-devfleet/SKILL.md +112 -0
  100. package/prisma/skills/click-path-audit/SKILL.md +245 -0
  101. package/prisma/skills/clickhouse-io/SKILL.md +440 -0
  102. package/prisma/skills/code-tour/SKILL.md +254 -0
  103. package/prisma/skills/codebase-onboarding/SKILL.md +234 -0
  104. package/prisma/skills/codehealth-mcp/SKILL.md +167 -0
  105. package/prisma/skills/coding-standards/SKILL.md +551 -0
  106. package/prisma/skills/competitive-platform-analysis/SKILL.md +214 -0
  107. package/prisma/skills/competitive-report-structure/SKILL.md +162 -0
  108. package/prisma/skills/compose-multiplatform-patterns/SKILL.md +300 -0
  109. package/prisma/skills/config-gc/SKILL.md +120 -0
  110. package/prisma/skills/configure-ecc/SKILL.md +385 -0
  111. package/prisma/skills/connections-optimizer/SKILL.md +190 -0
  112. package/prisma/skills/content-engine/SKILL.md +132 -0
  113. package/prisma/skills/content-hash-cache-pattern/SKILL.md +162 -0
  114. package/prisma/skills/context-budget/SKILL.md +136 -0
  115. package/prisma/skills/continuous-agent-loop/SKILL.md +46 -0
  116. package/prisma/skills/continuous-learning/SKILL.md +132 -0
  117. package/prisma/skills/continuous-learning/config.json +18 -0
  118. package/prisma/skills/continuous-learning/evaluate-session.sh +69 -0
  119. package/prisma/skills/continuous-learning-v2/SKILL.md +361 -0
  120. package/prisma/skills/continuous-learning-v2/agents/observer-loop.sh +359 -0
  121. package/prisma/skills/continuous-learning-v2/agents/observer.md +189 -0
  122. package/prisma/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
  123. package/prisma/skills/continuous-learning-v2/agents/start-observer.sh +248 -0
  124. package/prisma/skills/continuous-learning-v2/config.json +8 -0
  125. package/prisma/skills/continuous-learning-v2/hooks/observe.sh +585 -0
  126. package/prisma/skills/continuous-learning-v2/scripts/detect-project.sh +322 -0
  127. package/prisma/skills/continuous-learning-v2/scripts/instinct-cli.py +1956 -0
  128. package/prisma/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
  129. package/prisma/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +68 -0
  130. package/prisma/skills/continuous-learning-v2/scripts/test_parse_instinct.py +1421 -0
  131. package/prisma/skills/cost-aware-llm-pipeline/SKILL.md +184 -0
  132. package/prisma/skills/cost-tracking/SKILL.md +97 -0
  133. package/prisma/skills/council/SKILL.md +204 -0
  134. package/prisma/skills/cpp-coding-standards/SKILL.md +724 -0
  135. package/prisma/skills/cpp-testing/SKILL.md +325 -0
  136. package/prisma/skills/crosspost/SKILL.md +112 -0
  137. package/prisma/skills/csharp-testing/SKILL.md +322 -0
  138. package/prisma/skills/customer-billing-ops/SKILL.md +141 -0
  139. package/prisma/skills/customs-trade-compliance/SKILL.md +263 -0
  140. package/prisma/skills/dart-flutter-patterns/SKILL.md +564 -0
  141. package/prisma/skills/dashboard-builder/SKILL.md +109 -0
  142. package/prisma/skills/data-scraper-agent/SKILL.md +765 -0
  143. package/prisma/skills/data-throughput-accelerator/SKILL.md +73 -0
  144. package/prisma/skills/database-migrations/SKILL.md +430 -0
  145. package/prisma/skills/deep-research/SKILL.md +160 -0
  146. package/prisma/skills/defi-amm-security/SKILL.md +167 -0
  147. package/prisma/skills/delivery-gate/SKILL.md +126 -0
  148. package/prisma/skills/delivery-gate/hooks/quality-gate.py +220 -0
  149. package/prisma/skills/deployment-patterns/SKILL.md +428 -0
  150. package/prisma/skills/design-system/SKILL.md +83 -0
  151. package/prisma/skills/django-celery/SKILL.md +458 -0
  152. package/prisma/skills/django-patterns/SKILL.md +735 -0
  153. package/prisma/skills/django-security/SKILL.md +644 -0
  154. package/prisma/skills/django-tdd/SKILL.md +730 -0
  155. package/prisma/skills/django-verification/SKILL.md +470 -0
  156. package/prisma/skills/dmux-workflows/SKILL.md +192 -0
  157. package/prisma/skills/docker-patterns/SKILL.md +365 -0
  158. package/prisma/skills/documentation-lookup/SKILL.md +91 -0
  159. package/prisma/skills/dotnet-patterns/SKILL.md +322 -0
  160. package/prisma/skills/dynamic-workflow-mode/SKILL.md +124 -0
  161. package/prisma/skills/e2e-testing/SKILL.md +327 -0
  162. package/prisma/skills/ecc-guide/SKILL.md +190 -0
  163. package/prisma/skills/ecc-recipes/SKILL.md +149 -0
  164. package/prisma/skills/ecc-tools-cost-audit/SKILL.md +161 -0
  165. package/prisma/skills/email-ops/SKILL.md +122 -0
  166. package/prisma/skills/energy-procurement/SKILL.md +228 -0
  167. package/prisma/skills/enterprise-agent-ops/SKILL.md +51 -0
  168. package/prisma/skills/error-handling/SKILL.md +377 -0
  169. package/prisma/skills/eval-harness/SKILL.md +271 -0
  170. package/prisma/skills/evm-token-decimals/SKILL.md +131 -0
  171. package/prisma/skills/exa-search/SKILL.md +108 -0
  172. package/prisma/skills/fal-ai-media/SKILL.md +289 -0
  173. package/prisma/skills/fastapi-patterns/SKILL.md +514 -0
  174. package/prisma/skills/finance-billing-ops/SKILL.md +128 -0
  175. package/prisma/skills/flox-environments/SKILL.md +497 -0
  176. package/prisma/skills/flutter-dart-code-review/SKILL.md +436 -0
  177. package/prisma/skills/foundation-models-on-device/SKILL.md +243 -0
  178. package/prisma/skills/frontend-a11y/SKILL.md +446 -0
  179. package/prisma/skills/frontend-design-direction/SKILL.md +93 -0
  180. package/prisma/skills/frontend-patterns/SKILL.md +657 -0
  181. package/prisma/skills/frontend-slides/SKILL.md +185 -0
  182. package/prisma/skills/frontend-slides/STYLE_PRESETS.md +330 -0
  183. package/prisma/skills/frontend-slides/animation-patterns.md +122 -0
  184. package/prisma/skills/frontend-slides/html-template.md +419 -0
  185. package/prisma/skills/frontend-slides/scripts/export-pdf.sh +418 -0
  186. package/prisma/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  187. package/prisma/skills/frontend-slides/viewport-base.css +153 -0
  188. package/prisma/skills/fsharp-testing/SKILL.md +281 -0
  189. package/prisma/skills/gan-style-harness/SKILL.md +279 -0
  190. package/prisma/skills/gateguard/SKILL.md +133 -0
  191. package/prisma/skills/generating-python-installer/SKILL.md +820 -0
  192. package/prisma/skills/git-workflow/SKILL.md +716 -0
  193. package/prisma/skills/github-ops/SKILL.md +145 -0
  194. package/prisma/skills/golang-patterns/SKILL.md +675 -0
  195. package/prisma/skills/golang-testing/SKILL.md +721 -0
  196. package/prisma/skills/google-workspace-ops/SKILL.md +96 -0
  197. package/prisma/skills/growth-log/SKILL.md +128 -0
  198. package/prisma/skills/healthcare-cdss-patterns/SKILL.md +246 -0
  199. package/prisma/skills/healthcare-emr-patterns/SKILL.md +160 -0
  200. package/prisma/skills/healthcare-eval-harness/SKILL.md +208 -0
  201. package/prisma/skills/healthcare-phi-compliance/SKILL.md +146 -0
  202. package/prisma/skills/hermes-imports/SKILL.md +89 -0
  203. package/prisma/skills/hexagonal-architecture/SKILL.md +277 -0
  204. package/prisma/skills/hipaa-compliance/SKILL.md +79 -0
  205. package/prisma/skills/homelab-network-readiness/SKILL.md +170 -0
  206. package/prisma/skills/homelab-network-setup/SKILL.md +130 -0
  207. package/prisma/skills/homelab-pihole-dns/SKILL.md +275 -0
  208. package/prisma/skills/homelab-vlan-segmentation/SKILL.md +312 -0
  209. package/prisma/skills/homelab-wireguard-vpn/SKILL.md +306 -0
  210. package/prisma/skills/hookify-rules/SKILL.md +128 -0
  211. package/prisma/skills/inherit-legacy-style/SKILL.md +157 -0
  212. package/prisma/skills/intent-driven-development/SKILL.md +360 -0
  213. package/prisma/skills/inventory-demand-planning/SKILL.md +247 -0
  214. package/prisma/skills/investor-materials/SKILL.md +97 -0
  215. package/prisma/skills/investor-outreach/SKILL.md +92 -0
  216. package/prisma/skills/ios-icon-gen/SKILL.md +158 -0
  217. package/prisma/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
  218. package/prisma/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
  219. package/prisma/skills/iterative-retrieval/SKILL.md +212 -0
  220. package/prisma/skills/ito-basket-compare/SKILL.md +64 -0
  221. package/prisma/skills/ito-data-atlas-agent/SKILL.md +64 -0
  222. package/prisma/skills/ito-market-intelligence/SKILL.md +61 -0
  223. package/prisma/skills/ito-trade-planner/SKILL.md +68 -0
  224. package/prisma/skills/java-coding-standards/SKILL.md +384 -0
  225. package/prisma/skills/jira-integration/SKILL.md +303 -0
  226. package/prisma/skills/jpa-patterns/SKILL.md +152 -0
  227. package/prisma/skills/knowledge-ops/SKILL.md +155 -0
  228. package/prisma/skills/kotlin-coroutines-flows/SKILL.md +285 -0
  229. package/prisma/skills/kotlin-exposed-patterns/SKILL.md +720 -0
  230. package/prisma/skills/kotlin-ktor-patterns/SKILL.md +690 -0
  231. package/prisma/skills/kotlin-patterns/SKILL.md +712 -0
  232. package/prisma/skills/kotlin-testing/SKILL.md +825 -0
  233. package/prisma/skills/kubernetes-patterns/SKILL.md +756 -0
  234. package/prisma/skills/laravel-patterns/SKILL.md +416 -0
  235. package/prisma/skills/laravel-plugin-discovery/SKILL.md +230 -0
  236. package/prisma/skills/laravel-security/SKILL.md +948 -0
  237. package/prisma/skills/laravel-tdd/SKILL.md +675 -0
  238. package/prisma/skills/laravel-verification/SKILL.md +180 -0
  239. package/prisma/skills/latency-critical-systems/SKILL.md +74 -0
  240. package/prisma/skills/lead-intelligence/SKILL.md +322 -0
  241. package/prisma/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
  242. package/prisma/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
  243. package/prisma/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
  244. package/prisma/skills/lead-intelligence/agents/signal-scorer.md +60 -0
  245. package/prisma/skills/liquid-glass-design/SKILL.md +279 -0
  246. package/prisma/skills/llm-trading-agent-security/SKILL.md +147 -0
  247. package/prisma/skills/logistics-exception-management/SKILL.md +222 -0
  248. package/prisma/skills/loop-design-check/SKILL.md +143 -0
  249. package/prisma/skills/mailtrap-email-integration/SKILL.md +77 -0
  250. package/prisma/skills/make-interfaces-feel-better/SKILL.md +152 -0
  251. package/prisma/skills/manim-video/SKILL.md +90 -0
  252. package/prisma/skills/manim-video/assets/network_graph_scene.py +52 -0
  253. package/prisma/skills/market-research/SKILL.md +76 -0
  254. package/prisma/skills/marketing-campaign/SKILL.md +114 -0
  255. package/prisma/skills/mcp-server-patterns/SKILL.md +70 -0
  256. package/prisma/skills/messages-ops/SKILL.md +105 -0
  257. package/prisma/skills/ml-adoption-playbook/SKILL.md +57 -0
  258. package/prisma/skills/mle-workflow/SKILL.md +347 -0
  259. package/prisma/skills/motion-advanced/SKILL.md +596 -0
  260. package/prisma/skills/motion-foundations/SKILL.md +299 -0
  261. package/prisma/skills/motion-patterns/SKILL.md +434 -0
  262. package/prisma/skills/motion-ui/SKILL.md +576 -0
  263. package/prisma/skills/mysql-patterns/SKILL.md +413 -0
  264. package/prisma/skills/nanoclaw-repl/SKILL.md +34 -0
  265. package/prisma/skills/nestjs-patterns/SKILL.md +231 -0
  266. package/prisma/skills/netmiko-ssh-automation/SKILL.md +174 -0
  267. package/prisma/skills/network-bgp-diagnostics/SKILL.md +168 -0
  268. package/prisma/skills/network-config-validation/SKILL.md +211 -0
  269. package/prisma/skills/network-interface-health/SKILL.md +153 -0
  270. package/prisma/skills/nextjs-turbopack/SKILL.md +58 -0
  271. package/prisma/skills/nodejs-keccak256/SKILL.md +103 -0
  272. package/prisma/skills/nutrient-document-processing/SKILL.md +168 -0
  273. package/prisma/skills/nuxt4-patterns/SKILL.md +101 -0
  274. package/prisma/skills/openclaw-persona-forge/SKILL.md +289 -0
  275. package/prisma/skills/openclaw-persona-forge/gacha.py +224 -0
  276. package/prisma/skills/openclaw-persona-forge/gacha.sh +5 -0
  277. package/prisma/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
  278. package/prisma/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
  279. package/prisma/skills/openclaw-persona-forge/references/error-handling.md +53 -0
  280. package/prisma/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
  281. package/prisma/skills/openclaw-persona-forge/references/naming-system.md +39 -0
  282. package/prisma/skills/openclaw-persona-forge/references/output-template.md +166 -0
  283. package/prisma/skills/opensource-pipeline/SKILL.md +256 -0
  284. package/prisma/skills/orch-add-feature/SKILL.md +45 -0
  285. package/prisma/skills/orch-build-mvp/SKILL.md +49 -0
  286. package/prisma/skills/orch-change-feature/SKILL.md +43 -0
  287. package/prisma/skills/orch-fix-defect/SKILL.md +43 -0
  288. package/prisma/skills/orch-pipeline/SKILL.md +121 -0
  289. package/prisma/skills/orch-refine-code/SKILL.md +44 -0
  290. package/prisma/skills/parallel-execution-optimizer/SKILL.md +73 -0
  291. package/prisma/skills/perl-patterns/SKILL.md +505 -0
  292. package/prisma/skills/perl-security/SKILL.md +504 -0
  293. package/prisma/skills/perl-testing/SKILL.md +476 -0
  294. package/prisma/skills/plan-orchestrate/SKILL.md +263 -0
  295. package/prisma/skills/plankton-code-quality/SKILL.md +237 -0
  296. package/prisma/skills/postgres-patterns/SKILL.md +148 -0
  297. package/prisma/skills/prediction-market-oracle-research/SKILL.md +64 -0
  298. package/prisma/skills/prediction-market-risk-review/SKILL.md +61 -0
  299. package/prisma/skills/prisma-patterns/SKILL.md +401 -0
  300. package/prisma/skills/product-capability/SKILL.md +142 -0
  301. package/prisma/skills/product-lens/SKILL.md +93 -0
  302. package/prisma/skills/production-audit/SKILL.md +207 -0
  303. package/prisma/skills/production-scheduling/SKILL.md +238 -0
  304. package/prisma/skills/project-flow-ops/SKILL.md +112 -0
  305. package/prisma/skills/prompt-optimizer/SKILL.md +398 -0
  306. package/prisma/skills/python-patterns/SKILL.md +751 -0
  307. package/prisma/skills/python-testing/SKILL.md +817 -0
  308. package/prisma/skills/pytorch-patterns/SKILL.md +397 -0
  309. package/prisma/skills/quality-nonconformance/SKILL.md +260 -0
  310. package/prisma/skills/quarkus-patterns/SKILL.md +723 -0
  311. package/prisma/skills/quarkus-security/SKILL.md +468 -0
  312. package/prisma/skills/quarkus-tdd/SKILL.md +812 -0
  313. package/prisma/skills/quarkus-verification/SKILL.md +480 -0
  314. package/prisma/skills/ralphinho-rfc-pipeline/SKILL.md +68 -0
  315. package/prisma/skills/react-native-patterns/SKILL.md +326 -0
  316. package/prisma/skills/react-patterns/SKILL.md +342 -0
  317. package/prisma/skills/react-performance/SKILL.md +575 -0
  318. package/prisma/skills/react-testing/SKILL.md +424 -0
  319. package/prisma/skills/recsys-pipeline-architect/SKILL.md +115 -0
  320. package/prisma/skills/recursive-decision-ledger/SKILL.md +80 -0
  321. package/prisma/skills/redis-patterns/SKILL.md +404 -0
  322. package/prisma/skills/regex-vs-llm-structured-text/SKILL.md +221 -0
  323. package/prisma/skills/remotion-video-creation/SKILL.md +43 -0
  324. package/prisma/skills/remotion-video-creation/rules/3d.md +86 -0
  325. package/prisma/skills/remotion-video-creation/rules/animations.md +29 -0
  326. package/prisma/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
  327. package/prisma/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
  328. package/prisma/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
  329. package/prisma/skills/remotion-video-creation/rules/assets.md +78 -0
  330. package/prisma/skills/remotion-video-creation/rules/audio.md +172 -0
  331. package/prisma/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
  332. package/prisma/skills/remotion-video-creation/rules/can-decode.md +75 -0
  333. package/prisma/skills/remotion-video-creation/rules/charts.md +58 -0
  334. package/prisma/skills/remotion-video-creation/rules/compositions.md +146 -0
  335. package/prisma/skills/remotion-video-creation/rules/display-captions.md +126 -0
  336. package/prisma/skills/remotion-video-creation/rules/extract-frames.md +229 -0
  337. package/prisma/skills/remotion-video-creation/rules/fonts.md +152 -0
  338. package/prisma/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
  339. package/prisma/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
  340. package/prisma/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
  341. package/prisma/skills/remotion-video-creation/rules/gifs.md +138 -0
  342. package/prisma/skills/remotion-video-creation/rules/images.md +130 -0
  343. package/prisma/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
  344. package/prisma/skills/remotion-video-creation/rules/lottie.md +67 -0
  345. package/prisma/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
  346. package/prisma/skills/remotion-video-creation/rules/measuring-text.md +143 -0
  347. package/prisma/skills/remotion-video-creation/rules/sequencing.md +106 -0
  348. package/prisma/skills/remotion-video-creation/rules/tailwind.md +11 -0
  349. package/prisma/skills/remotion-video-creation/rules/text-animations.md +20 -0
  350. package/prisma/skills/remotion-video-creation/rules/timing.md +179 -0
  351. package/prisma/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
  352. package/prisma/skills/remotion-video-creation/rules/transitions.md +122 -0
  353. package/prisma/skills/remotion-video-creation/rules/trimming.md +52 -0
  354. package/prisma/skills/remotion-video-creation/rules/videos.md +171 -0
  355. package/prisma/skills/repo-scan/SKILL.md +79 -0
  356. package/prisma/skills/research-ops/SKILL.md +113 -0
  357. package/prisma/skills/returns-reverse-logistics/SKILL.md +240 -0
  358. package/prisma/skills/rules-distill/SKILL.md +265 -0
  359. package/prisma/skills/rules-distill/scripts/scan-rules.sh +58 -0
  360. package/prisma/skills/rules-distill/scripts/scan-skills.sh +129 -0
  361. package/prisma/skills/rust-patterns/SKILL.md +500 -0
  362. package/prisma/skills/rust-testing/SKILL.md +501 -0
  363. package/prisma/skills/safety-guard/SKILL.md +76 -0
  364. package/prisma/skills/santa-method/SKILL.md +307 -0
  365. package/prisma/skills/scientific-db-pubmed-database/SKILL.md +176 -0
  366. package/prisma/skills/scientific-db-uspto-database/SKILL.md +178 -0
  367. package/prisma/skills/scientific-pkg-gget/SKILL.md +167 -0
  368. package/prisma/skills/scientific-thinking-literature-review/SKILL.md +193 -0
  369. package/prisma/skills/scientific-thinking-scholar-evaluation/SKILL.md +161 -0
  370. package/prisma/skills/search-first/SKILL.md +183 -0
  371. package/prisma/skills/security-bounty-hunter/SKILL.md +100 -0
  372. package/prisma/skills/security-review/SKILL.md +504 -0
  373. package/prisma/skills/security-review/cloud-infrastructure-security.md +361 -0
  374. package/prisma/skills/security-scan/SKILL.md +166 -0
  375. package/prisma/skills/seo/SKILL.md +155 -0
  376. package/prisma/skills/skill-comply/SKILL.md +59 -0
  377. package/prisma/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
  378. package/prisma/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
  379. package/prisma/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
  380. package/prisma/skills/skill-comply/prompts/classifier.md +24 -0
  381. package/prisma/skills/skill-comply/prompts/scenario_generator.md +62 -0
  382. package/prisma/skills/skill-comply/prompts/spec_generator.md +42 -0
  383. package/prisma/skills/skill-comply/pyproject.toml +15 -0
  384. package/prisma/skills/skill-comply/scripts/__init__.py +0 -0
  385. package/prisma/skills/skill-comply/scripts/classifier.py +85 -0
  386. package/prisma/skills/skill-comply/scripts/grader.py +124 -0
  387. package/prisma/skills/skill-comply/scripts/parser.py +107 -0
  388. package/prisma/skills/skill-comply/scripts/report.py +170 -0
  389. package/prisma/skills/skill-comply/scripts/run.py +127 -0
  390. package/prisma/skills/skill-comply/scripts/runner.py +194 -0
  391. package/prisma/skills/skill-comply/scripts/scenario_generator.py +70 -0
  392. package/prisma/skills/skill-comply/scripts/spec_generator.py +72 -0
  393. package/prisma/skills/skill-comply/scripts/utils.py +13 -0
  394. package/prisma/skills/skill-comply/tests/test_grader.py +197 -0
  395. package/prisma/skills/skill-comply/tests/test_parser.py +90 -0
  396. package/prisma/skills/skill-comply/tests/test_runner.py +172 -0
  397. package/prisma/skills/skill-scout/SKILL.md +141 -0
  398. package/prisma/skills/skill-stocktake/SKILL.md +195 -0
  399. package/prisma/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
  400. package/prisma/skills/skill-stocktake/scripts/save-results.sh +56 -0
  401. package/prisma/skills/skill-stocktake/scripts/scan.sh +170 -0
  402. package/prisma/skills/social-graph-ranker/SKILL.md +155 -0
  403. package/prisma/skills/social-publisher/SKILL.md +130 -0
  404. package/prisma/skills/springboot-patterns/SKILL.md +315 -0
  405. package/prisma/skills/springboot-security/SKILL.md +273 -0
  406. package/prisma/skills/springboot-tdd/SKILL.md +159 -0
  407. package/prisma/skills/springboot-verification/SKILL.md +232 -0
  408. package/prisma/skills/strategic-compact/SKILL.md +136 -0
  409. package/prisma/skills/swift-actor-persistence/SKILL.md +144 -0
  410. package/prisma/skills/swift-concurrency-6-2/SKILL.md +216 -0
  411. package/prisma/skills/swift-protocol-di-testing/SKILL.md +191 -0
  412. package/prisma/skills/swiftui-patterns/SKILL.md +259 -0
  413. package/prisma/skills/taste/SKILL.md +264 -0
  414. package/prisma/skills/taste/references/genre-taxonomy.md +87 -0
  415. package/prisma/skills/tdd-workflow/SKILL.md +583 -0
  416. package/prisma/skills/team-agent-orchestration/SKILL.md +111 -0
  417. package/prisma/skills/team-builder/SKILL.md +169 -0
  418. package/prisma/skills/terminal-ops/SKILL.md +110 -0
  419. package/prisma/skills/tinystruct-patterns/SKILL.md +279 -0
  420. package/prisma/skills/tinystruct-patterns/references/architecture.md +90 -0
  421. package/prisma/skills/tinystruct-patterns/references/data-handling.md +60 -0
  422. package/prisma/skills/tinystruct-patterns/references/database.md +99 -0
  423. package/prisma/skills/tinystruct-patterns/references/routing.md +64 -0
  424. package/prisma/skills/tinystruct-patterns/references/system-usage.md +97 -0
  425. package/prisma/skills/tinystruct-patterns/references/testing.md +72 -0
  426. package/prisma/skills/token-budget-advisor/SKILL.md +134 -0
  427. package/prisma/skills/ui-demo/SKILL.md +466 -0
  428. package/prisma/skills/ui-to-vue/SKILL.md +135 -0
  429. package/prisma/skills/uncloud/SKILL.md +344 -0
  430. package/prisma/skills/unified-notifications-ops/SKILL.md +188 -0
  431. package/prisma/skills/verification-loop/SKILL.md +127 -0
  432. package/prisma/skills/video-editing/SKILL.md +311 -0
  433. package/prisma/skills/videodb/SKILL.md +375 -0
  434. package/prisma/skills/videodb/reference/api-reference.md +550 -0
  435. package/prisma/skills/videodb/reference/capture-reference.md +407 -0
  436. package/prisma/skills/videodb/reference/capture.md +101 -0
  437. package/prisma/skills/videodb/reference/editor.md +443 -0
  438. package/prisma/skills/videodb/reference/generative.md +331 -0
  439. package/prisma/skills/videodb/reference/rtstream-reference.md +564 -0
  440. package/prisma/skills/videodb/reference/rtstream.md +65 -0
  441. package/prisma/skills/videodb/reference/search.md +230 -0
  442. package/prisma/skills/videodb/reference/streaming.md +406 -0
  443. package/prisma/skills/videodb/reference/use-cases.md +118 -0
  444. package/prisma/skills/videodb/scripts/ws_listener.py +282 -0
  445. package/prisma/skills/visa-doc-translate/README.md +86 -0
  446. package/prisma/skills/visa-doc-translate/SKILL.md +117 -0
  447. package/prisma/skills/vite-patterns/SKILL.md +450 -0
  448. package/prisma/skills/vue-patterns/SKILL.md +471 -0
  449. package/prisma/skills/windows-desktop-e2e/SKILL.md +888 -0
  450. package/prisma/skills/workspace-surface-audit/SKILL.md +126 -0
  451. package/prisma/skills/x-api/SKILL.md +235 -0
@@ -0,0 +1,214 @@
1
+ ---
2
+ name: competitive-platform-analysis
3
+ description: >-
4
+ Use when scoping a competitive landscape — identifying, categorising, and
5
+ score-filtering a competitor set before any benchmarking begins. Decides who
6
+ counts as a competitor, which tier they belong to, and which sources to mine.
7
+ First step in the three-skill competitive pipeline; precedes
8
+ benchmark-methodology.
9
+ ---
10
+
11
+ # Competitive Platform Analysis
12
+
13
+ Use this skill to decide **who to benchmark** and **where to find them** before
14
+ any scoring begins. A competitive analysis is only as good as its frame: the
15
+ wrong set makes the client look either unbeatable or doomed. The goal is a
16
+ defensible, decision-relevant set — not an exhaustive census.
17
+
18
+ ## When to Activate
19
+
20
+ - About to start a competitive benchmarking project and need to define the competitor set first.
21
+ - Unsure which companies belong in Direct / Adjacent / Aspirational tiers.
22
+ - Need a defensible, pruned scope for a market landscape report.
23
+ - Has a positioning brief and wants to identify who contests that position.
24
+ - First step before running benchmark-methodology.
25
+
26
+ ## Client positioning brief (establish first)
27
+
28
+ Before scoping the set, establish the client's positioning brief. If you don't
29
+ already have it, run a short brand-discovery interview to elicit it — do **not**
30
+ invent one and do **not** scope the set blind. The brief supplies:
31
+
32
+ - **Identity / aesthetic register** — what kind of studio or company this is and
33
+ how it presents itself.
34
+ - **Offer** — what services or products it delivers.
35
+ - **Target clients** — who it sells to.
36
+ - **Differentiator** — the moat or positioning argument the client believes in.
37
+ - **Scoping consequence** — the implication for how to weight competitors (e.g.,
38
+ prioritize by distinctiveness vs. capability overlap vs. price).
39
+ - **Strategic tension** — the paired axes that define the client's white-space
40
+ (e.g., memorability × hireability).
41
+
42
+ **Do not proceed without the positioning brief.** A competitor list scoped
43
+ without the client's lens is noise, not intelligence. The scoping consequence in
44
+ particular determines which competitors are *strong* rivals (those that contest
45
+ the client's moat) vs. merely overlapping on service menu.
46
+
47
+ ## Selection criteria
48
+
49
+ For each candidate, capture these axes — they decide both inclusion and tier:
50
+
51
+ - **Size / model** — solo, micro-studio (2–8), boutique (sub-30), mid-size
52
+ agency. Match the client's own band; same-band studios are the realistic
53
+ head-to-head set.
54
+ - **Niche / specialization** — how closely the candidate's focus overlaps with
55
+ the client's offer. Tighter overlap = more direct.
56
+ - **Geography / market** — EU vs US vs global-remote; language; time-zone reach.
57
+ Note whether they win the same clients the client targets.
58
+ - **Pricing & engagement model** — productized sprints, retainer, project,
59
+ day-rate; transparent vs "contact us". Signals positioning maturity.
60
+ - **Portfolio style** — generic vs. opinionated/editorial vs. contrarian. Closer
61
+ to the client's aesthetic register = more they contest the client's
62
+ distinctiveness.
63
+ - **Technical depth / craft maturity** — relevant if the client's credibility
64
+ story includes public process work, open tooling, or documented systems.
65
+ - **Brand strength** — does the studio have an ownable verbal/visual identity, or
66
+ is it interchangeable? Weight this per the client's scoping consequence.
67
+
68
+ ## Player taxonomy — axes to populate across
69
+
70
+ Don't sort competitors into niche-specific buckets; sort them along a few
71
+ generic axes so the landscape isn't skewed toward one archetype. These axes
72
+ apply to any creative-service market (design, motion, copywriting, branding,
73
+ content, film, etc.). Aim for breadth across each axis first, then prune to the
74
+ most instructive.
75
+
76
+ 1. **Positioning stance** — *brand-led / editorial* (competes on identity,
77
+ voice, POV) vs *capability-led* (competes on craft, throughput, outcomes).
78
+ Populate both poles; the client's closest mirror sits at its own end.
79
+ 2. **Specialization** — *specialist* (one tight discipline or vertical) vs
80
+ *generalist* (broad service menu). Tighter overlap with the client's focus =
81
+ more direct.
82
+ 3. **Size / model** — *solo / micro* vs *boutique* vs *mid-size* vs
83
+ *enterprise-scale*. Same-band players are the realistic head-to-head; larger
84
+ bands are the aspirational/commercial-maturity reference.
85
+ 4. **Engagement format** — *productized* (named sprints, audits, fixed packages)
86
+ vs *bespoke* (custom project / retainer). Signals positioning maturity.
87
+ 5. **Distinctiveness posture** — *conventional / safe* vs *contrarian /
88
+ manifesto-driven*. The opinionated end is key for distinctiveness
89
+ benchmarking in any niche.
90
+ 6. **Evidence / credibility model** — *outcome-led* (metrics, named clients,
91
+ case depth) vs *aesthetic-led* (portfolio, awards). Tells you how each player
92
+ earns trust.
93
+ 7. **Brand strength of the operator** — *interchangeable* vs *cult / ownable
94
+ identity* (including senior independents who prove the "memorable solo brand"
95
+ model).
96
+ 8. **Market / reach** — *local / regional* vs *global-remote*; note whether they
97
+ win the same clients the client targets.
98
+
99
+ Plot each candidate on the relevant axes; a competitor is *direct* when it sits
100
+ near the client on positioning, specialization, size, and market at once.
101
+
102
+ ## Competitive tiers (how the set resolves)
103
+
104
+ Group the final set into three tiers — this structure carries through to the
105
+ report:
106
+
107
+ - **Direct** — same band, overlapping offer, same client targets. The realistic
108
+ head-to-head.
109
+ - **Adjacent** — partial overlap (one capability, or a different client size)
110
+ that pressures at the edges.
111
+ - **Aspirational** — players the client is not competing with today but whose
112
+ brand or commercial maturity sets the bar to aim at.
113
+ - *(Watch also for substitutes: no-code/AI tools, in-house teams, generalist
114
+ freelancers — note as a threat vector, not a profiled competitor unless
115
+ materially relevant.)*
116
+
117
+ ## Data sources (where to look)
118
+
119
+ Match the source to the dimension you need. The platform *types* below are
120
+ generic; substitute the ones native to the client's niche (e.g. Dribbble/Behance
121
+ for design, showreel/Vimeo for motion, writing samples/published work for copy):
122
+
123
+ - **Portfolio / craft platforms** — craft quality, range, aesthetic register
124
+ (e.g. Dribbble, Behance, Vimeo, or the niche's equivalent showcase).
125
+ - **Awards / curated showcases** — craft ambition and editorial recognition;
126
+ over-indexes on flashy, so cross-check commercial credibility (e.g. Awwwards,
127
+ industry award lists).
128
+ - **Competitor's own site** — primary source for positioning, voice, offer
129
+ packaging, pricing posture, named clients, manifesto/POV.
130
+ - **LinkedIn** — team size/model, founder narrative, post cadence, client logos,
131
+ geography.
132
+ - **Review directories** — reviews, named clients, project sizes, engagement
133
+ models; strongest signal for commercial credibility and enterprise-readiness
134
+ (e.g. Clutch.co or the niche's equivalent).
135
+ - **Open / public work** — process repos, published samples, open creative
136
+ output: depth and craft-transparency evidence.
137
+ - **Conference talks / podcasts / newsletters** — thought-leadership depth and
138
+ POV ownership.
139
+
140
+ Always **verify claims across at least two sources** before treating a competitor
141
+ attribute as fact (self-reported site copy ≠ verified outcome). Carry an
142
+ adversarial-verification discipline into every profile.
143
+
144
+ ## Scoring matrix template (selection stage)
145
+
146
+ A lightweight pre-filter to decide who graduates into full benchmarking. Score
147
+ 1–5; keep candidates that score high on **either** distinctiveness **or**
148
+ credibility — the client's strategic tension means both poles are instructive.
149
+
150
+ | Candidate | Positioning stance | Specialization | Size band | Tier | Offer overlap (1–5) | Distinctiveness (1–5) | Commercial credibility (1–5) | Craft proximity (1–5) | Include? |
151
+ |-----------|--------------------|----------------|-----------|------|---------------------|------------------------|------------------------------|------------------------|----------|
152
+
153
+ Rules of thumb (apply per the client's scoping consequence in the positioning brief):
154
+
155
+ - High distinctiveness **and** high credibility → must-profile (proves the
156
+ client's target tension is achievable).
157
+ - High distinctiveness, low credibility → cautionary case (memorable but
158
+ un-hireable — a potential failure mode to learn from).
159
+ - High credibility, low distinctiveness → "competent but forgettable" mass the
160
+ client defines itself against.
161
+ - Low on both → drop unless needed for landscape breadth.
162
+
163
+ ## Output of this stage
164
+
165
+ A scoped, tiered competitor set (typically 10–18 candidates → 8–12 profiled),
166
+ each tagged with its axis positions, tier, and source links, ready to hand to
167
+ `benchmark-methodology`.
168
+
169
+ ## Anti-Patterns
170
+
171
+ - **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.
172
+ - **Listing every similar company.** The goal is a defensible 10–18 candidate set, not a census. Breadth without pruning makes benchmarking unmanageable.
173
+ - **Blurring the Direct/Adjacent/Aspirational tiers.** These tiers serve different strategic purposes. Mixing them produces a flat list that can't drive decisions.
174
+ - **Relying on a single source per competitor.** Self-reported site copy is marketing, not fact. Verify attributes across at least two sources.
175
+ - **Jumping straight to scoring.** This skill scopes and tiers the set. Benchmark-methodology handles scoring. Don't conflate the two steps.
176
+
177
+ ## Examples
178
+
179
+ **Scenario:** A boutique brand-identity studio (2-person, EU-remote, productized
180
+ sprints, contrarian/manifesto-driven aesthetic) wants to scope its competitive
181
+ set before benchmarking. The strategic tension from the positioning brief is
182
+ *memorability × hireability*.
183
+
184
+ **Step 1 — eight-axis population (sample candidates):**
185
+
186
+ | Candidate | Positioning stance | Specialization | Size band | Engagement | Distinctiveness | Evidence model | Brand strength | Market |
187
+ |---|---|---|---|---|---|---|---|---|
188
+ | Studio A | brand-led / editorial | identity only | micro | productized | contrarian | aesthetic-led | cult | global-remote |
189
+ | Studio B | capability-led | broad DS+motion | boutique | bespoke | conventional | outcome-led | interchangeable | US |
190
+ | Agency C | capability-led | brand+digital | mid-size | retainer | conventional | outcome-led | interchangeable | EU |
191
+ | Freelancer D | brand-led | brand voice only | solo | day-rate | editorial | aesthetic-led | ownable | global |
192
+ | Studio E | brand-led | brand strategy | micro | productized | manifesto-driven | outcome-led | cult | EU-remote |
193
+
194
+ **Step 2 — pre-filter scoring (client scoping consequence: weight distinctiveness
195
+ because the client's moat is POV-first, not capability breadth):**
196
+
197
+ | Candidate | Offer overlap (1–5) | Distinctiveness (1–5) | Commercial credibility (1–5) | Craft proximity (1–5) | Tier | Include? |
198
+ |---|---|---|---|---|---|---|
199
+ | Studio A | 5 | 5 | 3 | 5 | Direct | ✓ must-profile |
200
+ | Studio B | 3 | 2 | 5 | 3 | Adjacent | ✓ credibility anchor |
201
+ | Agency C | 2 | 1 | 5 | 2 | Aspirational | ✓ scale reference |
202
+ | Freelancer D | 4 | 4 | 2 | 4 | Direct | ✓ cautionary case |
203
+ | Studio E | 5 | 5 | 4 | 4 | Direct | ✓ must-profile |
204
+
205
+ **Step 3 — output handed to `benchmark-methodology`:**
206
+ Five candidates (3 Direct, 1 Adjacent, 1 Aspirational), each tagged with
207
+ axis positions, tier, and source links. Studio A and Studio E are the
208
+ sharpest head-to-head rivals; Freelancer D is the "memorable but
209
+ un-hireable" cautionary case to learn from.
210
+
211
+ ## Related Skills
212
+
213
+ - `brand-discovery` — use first to establish the positioning brief and strategic tension that scopes the competitor set.
214
+ - `benchmark-methodology` — the next step; takes the tiered set and scores each competitor across nine dimensions.
@@ -0,0 +1,162 @@
1
+ ---
2
+ name: competitive-report-structure
3
+ description: >-
4
+ Use after benchmark-methodology has produced scored competitor profile cards.
5
+ Assembles findings into a decision-grade report: landscape map, competitor
6
+ profiles, benchmarking matrix, white-space analysis, strategic recommendations,
7
+ and team alignment trigger questions. Final step in the three-skill competitive
8
+ pipeline.
9
+ ---
10
+
11
+ # Competitive Report Structure
12
+
13
+ Use this skill to assemble scored competitor cards into a decision-grade report.
14
+ The report must answer three questions for the client: **who do we compete with,
15
+ how do we compete, and where is our defensible white-space?** Every section
16
+ earns its place by moving toward those answers — cut anything that doesn't.
17
+
18
+ ## When to Activate
19
+
20
+ - All competitor profile cards from benchmark-methodology are complete and ready to assemble.
21
+ - Need to present competitive findings to a founder, leadership team, or board.
22
+ - The report must drive decisions (who to compete with, how, where the moat is) — not just document the landscape.
23
+ - Preparing a client deliverable that must be auditable and defensible.
24
+
25
+ ## Client positioning brief (establish first)
26
+
27
+ Before assembling the report, establish the client's positioning brief. It
28
+ supplies:
29
+
30
+ - **Strategic tension** — the paired axes (e.g., memorability × hireability)
31
+ that define the client's target white-space. All maps and synthesis resolve
32
+ back to this tension.
33
+ - **Brand balance** — the intended proportional mix of the client's strategic
34
+ emphases (e.g., 60% strategy/evidence, 25% distinctiveness, 15% craft).
35
+ Every recommendation must be checked against this balance; flag any that
36
+ would shift it.
37
+ - **Differentiator** — the framing principle for the executive summary and
38
+ white-space section.
39
+ - **Target quadrant** — where the client intends to sit in the tension map;
40
+ confirming whether that quadrant is genuinely open is the report's central
41
+ empirical question.
42
+
43
+ ## Framing principle
44
+
45
+ The whole report is organized around the client's strategic tension and
46
+ recommendations resolve back to the client's deliberate brand balance.
47
+ Recommendations that would break that balance must be flagged against it
48
+ explicitly — "this move shifts the balance from X/Y/Z toward A/B/C; confirm
49
+ intent."
50
+
51
+ ## Report sections
52
+
53
+ ### 1. Executive summary
54
+ 3–5 takeaways, decision-first. State the most important findings in plain
55
+ language: where the client is strong, where it's exposed, who occupies its
56
+ target white-space, and the top 2–3 moves. Written so a founder/PM reads only
57
+ this and knows what to do. No methodology here.
58
+
59
+ ### 2. Market landscape & category framing
60
+ Define the category and map it. Use a **multi-axis map** — at minimum a 2×2
61
+ (e.g., *brand-led <-> capability-led* × *boutique <-> enterprise-scale*), and
62
+ ideally the **client's tension plot** from `benchmark-methodology` as the
63
+ headline map. Place every profiled competitor and the client. The map should
64
+ make the client's intended position visually obvious and show how crowded (or
65
+ empty) it is.
66
+
67
+ ### 3. Competitor tiers
68
+ Organize the set into **Direct / Adjacent / Aspirational** (from
69
+ `competitive-platform-analysis`). One short paragraph per tier explaining who's
70
+ in it and why it matters to the client. This sets reader expectations before
71
+ the detail.
72
+
73
+ ### 4. Benchmarking matrix
74
+ The full **competitors × dimensions** table — the quantitative spine. Rows =
75
+ competitors (grouped by tier), columns = the nine benchmark dimensions (note:
76
+ dimension 9 — strategic tension — has two poles (e.g., Memorability and
77
+ Hireability for a brand-studio client; substitute the client's own paired axes);
78
+ represent them as two separate sub-columns rather than averaging them). Include
79
+ the client's own honest self-assessment as a row for contrast. Use a **heatmap**
80
+ (color or symbol scale) so strength/weakness patterns are scannable. Do **not**
81
+ add a blended total column — report dimensions separately (per the bias
82
+ controls). Call out the columns where the client leads and where it trails.
83
+
84
+ ### 5. Deep dives
85
+ 3–5 most instructive competitors in narrative form (from their profile cards).
86
+ Choose for instruction, not ranking: the best exemplar of the target tension
87
+ (high on both poles), the cautionary "one pole only" case, the "competent but
88
+ forgettable" archetype the client defines against, plus any direct threat. Each
89
+ deep dive: what they do, what the client should learn, what the client should
90
+ avoid.
91
+
92
+ ### 6. White-space & threats
93
+ The strategic heart. Two parts:
94
+
95
+ - **White-space:** the position the client can own that rivals don't — argued
96
+ from the maps and matrix, not asserted. Confirm whether the target quadrant
97
+ (from the positioning brief) is genuinely open.
98
+ - **Threats:** who/what pressures the client — a rival closing the gap,
99
+ substitutes (no-code/AI tools, in-house teams, generalist freelancers), or
100
+ category shifts. Be honest about the client's own risks (e.g., a bold identity
101
+ reading as un-serious to risk-averse buyers).
102
+
103
+ ### 7. Strategic recommendations
104
+ Concrete, prioritized moves: who the client competes with, how it differentiates,
105
+ and where to invest (offer packaging, evidence/case studies, thought leadership,
106
+ brand sharpening). **Tie every recommendation back to the brand balance from the
107
+ positioning brief** and flag any that would shift it. Sequence by impact ×
108
+ effort.
109
+
110
+ ### 8. Sources / methodology appendix
111
+ The dimensions, weights, rubrics, the scoped set with tiers, source links per
112
+ competitor, and verification notes (asserted vs proven). This is what makes the
113
+ report auditable and defensible — carry the adversarial citation discipline
114
+ through.
115
+
116
+ ## How to present data
117
+
118
+ - **2×2 / positioning maps** — for landscape and the tension plot. Lead with
119
+ these; they carry the argument faster than prose.
120
+ - **Heatmap matrix** — for the competitors × dimensions comparison (section 4).
121
+ - **Profile cards** — the source unit feeding deep dives (section 5).
122
+ - **Quadrant callouts** — name who sits in each quadrant explicitly, especially
123
+ the client's target one.
124
+ - Keep tables scannable; push raw evidence and links to the appendix.
125
+
126
+ ## Decision framework (the report must resolve these)
127
+
128
+ - **Who do we compete with?** — Name the Direct tier specifically; that's the
129
+ real fight.
130
+ - **How do we compete?** — State the client's differentiator in one sentence,
131
+ grounded in the matrix (which dimensions the client owns).
132
+ - **Where are our differentiators defensible?** — Identify the
133
+ dimensions/quadrant rivals can't easily copy (the moat), vs. the ones that
134
+ are table-stakes.
135
+
136
+ ## Trigger questions for the team alignment session
137
+
138
+ End with questions that force decisions, not admiration of the analysis:
139
+
140
+ - Is the target quadrant truly open, or is a rival already moving in?
141
+ - Which Direct competitor is the sharpest threat in the next 12 months, and
142
+ what's the counter?
143
+ - Does the brand balance still hold given the landscape — should any emphasis
144
+ shift?
145
+ - Which dimension where the client trails is worth closing, and which to
146
+ deliberately concede?
147
+ - What's the one move that most widens distinctiveness *without* costing
148
+ hireability / credibility?
149
+
150
+ ## Anti-Patterns
151
+
152
+ - **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.
153
+ - **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.
154
+ - **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.
155
+ - **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.
156
+ - **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.
157
+
158
+ ## Related Skills
159
+
160
+ - `benchmark-methodology` — the prerequisite; produces the scored competitor profile cards this skill assembles.
161
+ - `competitive-platform-analysis` — provides the tier structure (Direct / Adjacent / Aspirational) used in Section 3.
162
+ - `brand-discovery` — use to establish the client's positioning brief if it hasn't been defined.
@@ -0,0 +1,300 @@
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
+ metadata:
5
+ origin: ECC
6
+ ---
7
+
8
+ # Compose Multiplatform Patterns
9
+
10
+ Patterns for building shared UI across Android, iOS, Desktop, and Web using Compose Multiplatform and Jetpack Compose. Covers state management, navigation, theming, and performance.
11
+
12
+ ## When to Activate
13
+
14
+ - Building Compose UI (Jetpack Compose or Compose Multiplatform)
15
+ - Managing UI state with ViewModels and Compose state
16
+ - Implementing navigation in KMP or Android projects
17
+ - Designing reusable composables and design systems
18
+ - Optimizing recomposition and rendering performance
19
+
20
+ ## State Management
21
+
22
+ ### ViewModel + Single State Object
23
+
24
+ Use a single data class for screen state. Expose it as `StateFlow` and collect in Compose:
25
+
26
+ ```kotlin
27
+ data class ItemListState(
28
+ val items: List<Item> = emptyList(),
29
+ val isLoading: Boolean = false,
30
+ val error: String? = null,
31
+ val searchQuery: String = ""
32
+ )
33
+
34
+ class ItemListViewModel(
35
+ private val getItems: GetItemsUseCase
36
+ ) : ViewModel() {
37
+ private val _state = MutableStateFlow(ItemListState())
38
+ val state: StateFlow<ItemListState> = _state.asStateFlow()
39
+
40
+ fun onSearch(query: String) {
41
+ _state.update { it.copy(searchQuery = query) }
42
+ loadItems(query)
43
+ }
44
+
45
+ private fun loadItems(query: String) {
46
+ viewModelScope.launch {
47
+ _state.update { it.copy(isLoading = true) }
48
+ getItems(query).fold(
49
+ onSuccess = { items -> _state.update { it.copy(items = items, isLoading = false) } },
50
+ onFailure = { e -> _state.update { it.copy(error = e.message, isLoading = false) } }
51
+ )
52
+ }
53
+ }
54
+ }
55
+ ```
56
+
57
+ ### Collecting State in Compose
58
+
59
+ ```kotlin
60
+ @Composable
61
+ fun ItemListScreen(viewModel: ItemListViewModel = koinViewModel()) {
62
+ val state by viewModel.state.collectAsStateWithLifecycle()
63
+
64
+ ItemListContent(
65
+ state = state,
66
+ onSearch = viewModel::onSearch
67
+ )
68
+ }
69
+
70
+ @Composable
71
+ private fun ItemListContent(
72
+ state: ItemListState,
73
+ onSearch: (String) -> Unit
74
+ ) {
75
+ // Stateless composable — easy to preview and test
76
+ }
77
+ ```
78
+
79
+ ### Event Sink Pattern
80
+
81
+ For complex screens, use a sealed interface for events instead of multiple callback lambdas:
82
+
83
+ ```kotlin
84
+ sealed interface ItemListEvent {
85
+ data class Search(val query: String) : ItemListEvent
86
+ data class Delete(val itemId: String) : ItemListEvent
87
+ data object Refresh : ItemListEvent
88
+ }
89
+
90
+ // In ViewModel
91
+ fun onEvent(event: ItemListEvent) {
92
+ when (event) {
93
+ is ItemListEvent.Search -> onSearch(event.query)
94
+ is ItemListEvent.Delete -> deleteItem(event.itemId)
95
+ is ItemListEvent.Refresh -> loadItems(_state.value.searchQuery)
96
+ }
97
+ }
98
+
99
+ // In Composable — single lambda instead of many
100
+ ItemListContent(
101
+ state = state,
102
+ onEvent = viewModel::onEvent
103
+ )
104
+ ```
105
+
106
+ ## Navigation
107
+
108
+ ### Type-Safe Navigation (Compose Navigation 2.8+)
109
+
110
+ Define routes as `@Serializable` objects:
111
+
112
+ ```kotlin
113
+ @Serializable data object HomeRoute
114
+ @Serializable data class DetailRoute(val id: String)
115
+ @Serializable data object SettingsRoute
116
+
117
+ @Composable
118
+ fun AppNavHost(navController: NavHostController = rememberNavController()) {
119
+ NavHost(navController, startDestination = HomeRoute) {
120
+ composable<HomeRoute> {
121
+ HomeScreen(onNavigateToDetail = { id -> navController.navigate(DetailRoute(id)) })
122
+ }
123
+ composable<DetailRoute> { backStackEntry ->
124
+ val route = backStackEntry.toRoute<DetailRoute>()
125
+ DetailScreen(id = route.id)
126
+ }
127
+ composable<SettingsRoute> { SettingsScreen() }
128
+ }
129
+ }
130
+ ```
131
+
132
+ ### Dialog and Bottom Sheet Navigation
133
+
134
+ Use `dialog()` and overlay patterns instead of imperative show/hide:
135
+
136
+ ```kotlin
137
+ NavHost(navController, startDestination = HomeRoute) {
138
+ composable<HomeRoute> { /* ... */ }
139
+ dialog<ConfirmDeleteRoute> { backStackEntry ->
140
+ val route = backStackEntry.toRoute<ConfirmDeleteRoute>()
141
+ ConfirmDeleteDialog(
142
+ itemId = route.itemId,
143
+ onConfirm = { navController.popBackStack() },
144
+ onDismiss = { navController.popBackStack() }
145
+ )
146
+ }
147
+ }
148
+ ```
149
+
150
+ ## Composable Design
151
+
152
+ ### Slot-Based APIs
153
+
154
+ Design composables with slot parameters for flexibility:
155
+
156
+ ```kotlin
157
+ @Composable
158
+ fun AppCard(
159
+ modifier: Modifier = Modifier,
160
+ header: @Composable () -> Unit = {},
161
+ content: @Composable ColumnScope.() -> Unit,
162
+ actions: @Composable RowScope.() -> Unit = {}
163
+ ) {
164
+ Card(modifier = modifier) {
165
+ Column {
166
+ header()
167
+ Column(content = content)
168
+ Row(horizontalArrangement = Arrangement.End, content = actions)
169
+ }
170
+ }
171
+ }
172
+ ```
173
+
174
+ ### Modifier Ordering
175
+
176
+ Modifier order matters — apply in this sequence:
177
+
178
+ ```kotlin
179
+ Text(
180
+ text = "Hello",
181
+ modifier = Modifier
182
+ .padding(16.dp) // 1. Layout (padding, size)
183
+ .clip(RoundedCornerShape(8.dp)) // 2. Shape
184
+ .background(Color.White) // 3. Drawing (background, border)
185
+ .clickable { } // 4. Interaction
186
+ )
187
+ ```
188
+
189
+ ## KMP Platform-Specific UI
190
+
191
+ ### expect/actual for Platform Composables
192
+
193
+ ```kotlin
194
+ // commonMain
195
+ @Composable
196
+ expect fun PlatformStatusBar(darkIcons: Boolean)
197
+
198
+ // androidMain
199
+ @Composable
200
+ actual fun PlatformStatusBar(darkIcons: Boolean) {
201
+ val systemUiController = rememberSystemUiController()
202
+ SideEffect { systemUiController.setStatusBarColor(Color.Transparent, darkIcons) }
203
+ }
204
+
205
+ // iosMain
206
+ @Composable
207
+ actual fun PlatformStatusBar(darkIcons: Boolean) {
208
+ // iOS handles this via UIKit interop or Info.plist
209
+ }
210
+ ```
211
+
212
+ ## Performance
213
+
214
+ ### Stable Types for Skippable Recomposition
215
+
216
+ Mark classes as `@Stable` or `@Immutable` when all properties are stable:
217
+
218
+ ```kotlin
219
+ @Immutable
220
+ data class ItemUiModel(
221
+ val id: String,
222
+ val title: String,
223
+ val description: String,
224
+ val progress: Float
225
+ )
226
+ ```
227
+
228
+ ### Use `key()` and Lazy Lists Correctly
229
+
230
+ ```kotlin
231
+ LazyColumn {
232
+ items(
233
+ items = items,
234
+ key = { it.id } // Stable keys enable item reuse and animations
235
+ ) { item ->
236
+ ItemRow(item = item)
237
+ }
238
+ }
239
+ ```
240
+
241
+ ### Defer Reads with `derivedStateOf`
242
+
243
+ ```kotlin
244
+ val listState = rememberLazyListState()
245
+ val showScrollToTop by remember {
246
+ derivedStateOf { listState.firstVisibleItemIndex > 5 }
247
+ }
248
+ ```
249
+
250
+ ### Avoid Allocations in Recomposition
251
+
252
+ ```kotlin
253
+ // BAD — new lambda and list every recomposition
254
+ items.filter { it.isActive }.forEach { ActiveItem(it, onClick = { handle(it) }) }
255
+
256
+ // GOOD — key each item so callbacks stay attached to the right row
257
+ val activeItems = remember(items) { items.filter { it.isActive } }
258
+ activeItems.forEach { item ->
259
+ key(item.id) {
260
+ ActiveItem(item, onClick = { handle(item) })
261
+ }
262
+ }
263
+ ```
264
+
265
+ ## Theming
266
+
267
+ ### Material 3 Dynamic Theming
268
+
269
+ ```kotlin
270
+ @Composable
271
+ fun AppTheme(
272
+ darkTheme: Boolean = isSystemInDarkTheme(),
273
+ dynamicColor: Boolean = true,
274
+ content: @Composable () -> Unit
275
+ ) {
276
+ val colorScheme = when {
277
+ dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
278
+ if (darkTheme) dynamicDarkColorScheme(LocalContext.current)
279
+ else dynamicLightColorScheme(LocalContext.current)
280
+ }
281
+ darkTheme -> darkColorScheme()
282
+ else -> lightColorScheme()
283
+ }
284
+
285
+ MaterialTheme(colorScheme = colorScheme, content = content)
286
+ }
287
+ ```
288
+
289
+ ## Anti-Patterns to Avoid
290
+
291
+ - Using `mutableStateOf` in ViewModels when `MutableStateFlow` with `collectAsStateWithLifecycle` is safer for lifecycle
292
+ - Passing `NavController` deep into composables — pass lambda callbacks instead
293
+ - Heavy computation inside `@Composable` functions — move to ViewModel or `remember {}`
294
+ - Using `LaunchedEffect(Unit)` as a substitute for ViewModel init — it re-runs on configuration change in some setups
295
+ - Creating new object instances in composable parameters — causes unnecessary recomposition
296
+
297
+ ## References
298
+
299
+ See skill: `android-clean-architecture` for module structure and layering.
300
+ See skill: `kotlin-coroutines-flows` for coroutine and Flow patterns.