@rubix0270/arboris 1.0.2 → 1.0.4

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/package.json +25 -37
  2. package/run.mjs +10 -0
  3. package/dist/cli.mjs +0 -383
  4. package/manifest.json +0 -323
  5. package/prisma/skills/accessibility/SKILL.md +0 -147
  6. package/prisma/skills/agent-architecture-audit/SKILL.md +0 -257
  7. package/prisma/skills/agent-eval/SKILL.md +0 -146
  8. package/prisma/skills/agent-harness-construction/SKILL.md +0 -74
  9. package/prisma/skills/agent-introspection-debugging/SKILL.md +0 -154
  10. package/prisma/skills/agent-payment-x402/SKILL.md +0 -225
  11. package/prisma/skills/agent-self-evaluation/SKILL.md +0 -182
  12. package/prisma/skills/agent-self-evaluation/examples/high-score-example.md +0 -87
  13. package/prisma/skills/agent-self-evaluation/examples/low-score-example.md +0 -86
  14. package/prisma/skills/agent-self-evaluation/references/evaluation-criteria.md +0 -71
  15. package/prisma/skills/agent-self-evaluation/references/hook-integration.md +0 -64
  16. package/prisma/skills/agent-self-evaluation/scripts/evaluate.py +0 -408
  17. package/prisma/skills/agent-self-evaluation/templates/evaluation-report.md +0 -86
  18. package/prisma/skills/agent-sort/SKILL.md +0 -216
  19. package/prisma/skills/agentic-engineering/SKILL.md +0 -64
  20. package/prisma/skills/agentic-os/SKILL.md +0 -388
  21. package/prisma/skills/ai-first-engineering/SKILL.md +0 -52
  22. package/prisma/skills/ai-regression-testing/SKILL.md +0 -386
  23. package/prisma/skills/android-clean-architecture/SKILL.md +0 -340
  24. package/prisma/skills/angular-developer/SKILL.md +0 -155
  25. package/prisma/skills/angular-developer/references/angular-animations.md +0 -160
  26. package/prisma/skills/angular-developer/references/angular-aria.md +0 -410
  27. package/prisma/skills/angular-developer/references/cli.md +0 -86
  28. package/prisma/skills/angular-developer/references/component-harnesses.md +0 -59
  29. package/prisma/skills/angular-developer/references/component-styling.md +0 -91
  30. package/prisma/skills/angular-developer/references/components.md +0 -117
  31. package/prisma/skills/angular-developer/references/creating-services.md +0 -97
  32. package/prisma/skills/angular-developer/references/data-resolvers.md +0 -69
  33. package/prisma/skills/angular-developer/references/define-routes.md +0 -67
  34. package/prisma/skills/angular-developer/references/defining-providers.md +0 -72
  35. package/prisma/skills/angular-developer/references/di-fundamentals.md +0 -120
  36. package/prisma/skills/angular-developer/references/e2e-testing.md +0 -56
  37. package/prisma/skills/angular-developer/references/effects.md +0 -83
  38. package/prisma/skills/angular-developer/references/hierarchical-injectors.md +0 -43
  39. package/prisma/skills/angular-developer/references/host-elements.md +0 -80
  40. package/prisma/skills/angular-developer/references/injection-context.md +0 -63
  41. package/prisma/skills/angular-developer/references/inputs.md +0 -101
  42. package/prisma/skills/angular-developer/references/linked-signal.md +0 -59
  43. package/prisma/skills/angular-developer/references/loading-strategies.md +0 -61
  44. package/prisma/skills/angular-developer/references/mcp.md +0 -108
  45. package/prisma/skills/angular-developer/references/navigate-to-routes.md +0 -69
  46. package/prisma/skills/angular-developer/references/outputs.md +0 -86
  47. package/prisma/skills/angular-developer/references/reactive-forms.md +0 -122
  48. package/prisma/skills/angular-developer/references/rendering-strategies.md +0 -44
  49. package/prisma/skills/angular-developer/references/resource.md +0 -77
  50. package/prisma/skills/angular-developer/references/route-animations.md +0 -56
  51. package/prisma/skills/angular-developer/references/route-guards.md +0 -52
  52. package/prisma/skills/angular-developer/references/router-lifecycle.md +0 -45
  53. package/prisma/skills/angular-developer/references/router-testing.md +0 -87
  54. package/prisma/skills/angular-developer/references/show-routes-with-outlets.md +0 -68
  55. package/prisma/skills/angular-developer/references/signal-forms.md +0 -795
  56. package/prisma/skills/angular-developer/references/signals-overview.md +0 -94
  57. package/prisma/skills/angular-developer/references/tailwind-css.md +0 -69
  58. package/prisma/skills/angular-developer/references/template-driven-forms.md +0 -114
  59. package/prisma/skills/angular-developer/references/testing-fundamentals.md +0 -65
  60. package/prisma/skills/api-connector-builder/SKILL.md +0 -121
  61. package/prisma/skills/api-design/SKILL.md +0 -524
  62. package/prisma/skills/architecture-decision-records/SKILL.md +0 -180
  63. package/prisma/skills/article-writing/SKILL.md +0 -80
  64. package/prisma/skills/automation-audit-ops/SKILL.md +0 -143
  65. package/prisma/skills/autonomous-agent-harness/SKILL.md +0 -274
  66. package/prisma/skills/autonomous-loops/SKILL.md +0 -611
  67. package/prisma/skills/backend-patterns/SKILL.md +0 -562
  68. package/prisma/skills/benchmark/SKILL.md +0 -94
  69. package/prisma/skills/benchmark-methodology/SKILL.md +0 -190
  70. package/prisma/skills/benchmark-optimization-loop/SKILL.md +0 -70
  71. package/prisma/skills/blender-motion-state-inspection/SKILL.md +0 -165
  72. package/prisma/skills/blueprint/SKILL.md +0 -106
  73. package/prisma/skills/brand-discovery/SKILL.md +0 -145
  74. package/prisma/skills/brand-discovery/references/10_purpose-why.md +0 -40
  75. package/prisma/skills/brand-discovery/references/20_positioning.md +0 -44
  76. package/prisma/skills/brand-discovery/references/30_audience-niche.md +0 -52
  77. package/prisma/skills/brand-discovery/references/40_personality-archetype.md +0 -57
  78. package/prisma/skills/brand-discovery/references/50_voice-tone.md +0 -59
  79. package/prisma/skills/brand-discovery/references/60_narrative-story.md +0 -50
  80. package/prisma/skills/brand-discovery/references/70_founder-tension.md +0 -49
  81. package/prisma/skills/brand-discovery/references/90_SYNTHESIS.md +0 -133
  82. package/prisma/skills/brand-voice/SKILL.md +0 -98
  83. package/prisma/skills/brand-voice/references/voice-profile-schema.md +0 -55
  84. package/prisma/skills/browser-qa/SKILL.md +0 -105
  85. package/prisma/skills/bun-runtime/SKILL.md +0 -85
  86. package/prisma/skills/canary-watch/SKILL.md +0 -108
  87. package/prisma/skills/carrier-relationship-management/SKILL.md +0 -212
  88. package/prisma/skills/cisco-ios-patterns/SKILL.md +0 -164
  89. package/prisma/skills/ck/SKILL.md +0 -148
  90. package/prisma/skills/ck/commands/forget.mjs +0 -44
  91. package/prisma/skills/ck/commands/info.mjs +0 -24
  92. package/prisma/skills/ck/commands/init.mjs +0 -143
  93. package/prisma/skills/ck/commands/list.mjs +0 -40
  94. package/prisma/skills/ck/commands/migrate.mjs +0 -202
  95. package/prisma/skills/ck/commands/resume.mjs +0 -36
  96. package/prisma/skills/ck/commands/save.mjs +0 -210
  97. package/prisma/skills/ck/commands/shared.mjs +0 -387
  98. package/prisma/skills/ck/hooks/session-start.mjs +0 -224
  99. package/prisma/skills/claude-devfleet/SKILL.md +0 -112
  100. package/prisma/skills/click-path-audit/SKILL.md +0 -245
  101. package/prisma/skills/clickhouse-io/SKILL.md +0 -440
  102. package/prisma/skills/code-tour/SKILL.md +0 -254
  103. package/prisma/skills/codebase-onboarding/SKILL.md +0 -234
  104. package/prisma/skills/codehealth-mcp/SKILL.md +0 -167
  105. package/prisma/skills/coding-standards/SKILL.md +0 -551
  106. package/prisma/skills/competitive-platform-analysis/SKILL.md +0 -214
  107. package/prisma/skills/competitive-report-structure/SKILL.md +0 -162
  108. package/prisma/skills/compose-multiplatform-patterns/SKILL.md +0 -300
  109. package/prisma/skills/config-gc/SKILL.md +0 -120
  110. package/prisma/skills/configure-ecc/SKILL.md +0 -385
  111. package/prisma/skills/connections-optimizer/SKILL.md +0 -190
  112. package/prisma/skills/content-engine/SKILL.md +0 -132
  113. package/prisma/skills/content-hash-cache-pattern/SKILL.md +0 -162
  114. package/prisma/skills/context-budget/SKILL.md +0 -136
  115. package/prisma/skills/continuous-agent-loop/SKILL.md +0 -46
  116. package/prisma/skills/continuous-learning/SKILL.md +0 -132
  117. package/prisma/skills/continuous-learning/config.json +0 -18
  118. package/prisma/skills/continuous-learning/evaluate-session.sh +0 -69
  119. package/prisma/skills/continuous-learning-v2/SKILL.md +0 -361
  120. package/prisma/skills/continuous-learning-v2/agents/observer-loop.sh +0 -359
  121. package/prisma/skills/continuous-learning-v2/agents/observer.md +0 -189
  122. package/prisma/skills/continuous-learning-v2/agents/session-guardian.sh +0 -150
  123. package/prisma/skills/continuous-learning-v2/agents/start-observer.sh +0 -248
  124. package/prisma/skills/continuous-learning-v2/config.json +0 -8
  125. package/prisma/skills/continuous-learning-v2/hooks/observe.sh +0 -585
  126. package/prisma/skills/continuous-learning-v2/scripts/detect-project.sh +0 -322
  127. package/prisma/skills/continuous-learning-v2/scripts/instinct-cli.py +0 -1956
  128. package/prisma/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +0 -31
  129. package/prisma/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +0 -68
  130. package/prisma/skills/continuous-learning-v2/scripts/test_parse_instinct.py +0 -1421
  131. package/prisma/skills/cost-aware-llm-pipeline/SKILL.md +0 -184
  132. package/prisma/skills/cost-tracking/SKILL.md +0 -97
  133. package/prisma/skills/council/SKILL.md +0 -204
  134. package/prisma/skills/cpp-coding-standards/SKILL.md +0 -724
  135. package/prisma/skills/cpp-testing/SKILL.md +0 -325
  136. package/prisma/skills/crosspost/SKILL.md +0 -112
  137. package/prisma/skills/csharp-testing/SKILL.md +0 -322
  138. package/prisma/skills/customer-billing-ops/SKILL.md +0 -141
  139. package/prisma/skills/customs-trade-compliance/SKILL.md +0 -263
  140. package/prisma/skills/dart-flutter-patterns/SKILL.md +0 -564
  141. package/prisma/skills/dashboard-builder/SKILL.md +0 -109
  142. package/prisma/skills/data-scraper-agent/SKILL.md +0 -765
  143. package/prisma/skills/data-throughput-accelerator/SKILL.md +0 -73
  144. package/prisma/skills/database-migrations/SKILL.md +0 -430
  145. package/prisma/skills/deep-research/SKILL.md +0 -160
  146. package/prisma/skills/defi-amm-security/SKILL.md +0 -167
  147. package/prisma/skills/delivery-gate/SKILL.md +0 -126
  148. package/prisma/skills/delivery-gate/hooks/quality-gate.py +0 -220
  149. package/prisma/skills/deployment-patterns/SKILL.md +0 -428
  150. package/prisma/skills/design-system/SKILL.md +0 -83
  151. package/prisma/skills/django-celery/SKILL.md +0 -458
  152. package/prisma/skills/django-patterns/SKILL.md +0 -735
  153. package/prisma/skills/django-security/SKILL.md +0 -644
  154. package/prisma/skills/django-tdd/SKILL.md +0 -730
  155. package/prisma/skills/django-verification/SKILL.md +0 -470
  156. package/prisma/skills/dmux-workflows/SKILL.md +0 -192
  157. package/prisma/skills/docker-patterns/SKILL.md +0 -365
  158. package/prisma/skills/documentation-lookup/SKILL.md +0 -91
  159. package/prisma/skills/dotnet-patterns/SKILL.md +0 -322
  160. package/prisma/skills/dynamic-workflow-mode/SKILL.md +0 -124
  161. package/prisma/skills/e2e-testing/SKILL.md +0 -327
  162. package/prisma/skills/ecc-guide/SKILL.md +0 -190
  163. package/prisma/skills/ecc-recipes/SKILL.md +0 -149
  164. package/prisma/skills/ecc-tools-cost-audit/SKILL.md +0 -161
  165. package/prisma/skills/email-ops/SKILL.md +0 -122
  166. package/prisma/skills/energy-procurement/SKILL.md +0 -228
  167. package/prisma/skills/enterprise-agent-ops/SKILL.md +0 -51
  168. package/prisma/skills/error-handling/SKILL.md +0 -377
  169. package/prisma/skills/eval-harness/SKILL.md +0 -271
  170. package/prisma/skills/evm-token-decimals/SKILL.md +0 -131
  171. package/prisma/skills/exa-search/SKILL.md +0 -108
  172. package/prisma/skills/fal-ai-media/SKILL.md +0 -289
  173. package/prisma/skills/fastapi-patterns/SKILL.md +0 -514
  174. package/prisma/skills/finance-billing-ops/SKILL.md +0 -128
  175. package/prisma/skills/flox-environments/SKILL.md +0 -497
  176. package/prisma/skills/flutter-dart-code-review/SKILL.md +0 -436
  177. package/prisma/skills/foundation-models-on-device/SKILL.md +0 -243
  178. package/prisma/skills/frontend-a11y/SKILL.md +0 -446
  179. package/prisma/skills/frontend-design-direction/SKILL.md +0 -93
  180. package/prisma/skills/frontend-patterns/SKILL.md +0 -657
  181. package/prisma/skills/frontend-slides/SKILL.md +0 -185
  182. package/prisma/skills/frontend-slides/STYLE_PRESETS.md +0 -330
  183. package/prisma/skills/frontend-slides/animation-patterns.md +0 -122
  184. package/prisma/skills/frontend-slides/html-template.md +0 -419
  185. package/prisma/skills/frontend-slides/scripts/export-pdf.sh +0 -418
  186. package/prisma/skills/frontend-slides/scripts/extract-pptx.py +0 -96
  187. package/prisma/skills/frontend-slides/viewport-base.css +0 -153
  188. package/prisma/skills/fsharp-testing/SKILL.md +0 -281
  189. package/prisma/skills/gan-style-harness/SKILL.md +0 -279
  190. package/prisma/skills/gateguard/SKILL.md +0 -133
  191. package/prisma/skills/generating-python-installer/SKILL.md +0 -820
  192. package/prisma/skills/git-workflow/SKILL.md +0 -716
  193. package/prisma/skills/github-ops/SKILL.md +0 -145
  194. package/prisma/skills/golang-patterns/SKILL.md +0 -675
  195. package/prisma/skills/golang-testing/SKILL.md +0 -721
  196. package/prisma/skills/google-workspace-ops/SKILL.md +0 -96
  197. package/prisma/skills/growth-log/SKILL.md +0 -128
  198. package/prisma/skills/healthcare-cdss-patterns/SKILL.md +0 -246
  199. package/prisma/skills/healthcare-emr-patterns/SKILL.md +0 -160
  200. package/prisma/skills/healthcare-eval-harness/SKILL.md +0 -208
  201. package/prisma/skills/healthcare-phi-compliance/SKILL.md +0 -146
  202. package/prisma/skills/hermes-imports/SKILL.md +0 -89
  203. package/prisma/skills/hexagonal-architecture/SKILL.md +0 -277
  204. package/prisma/skills/hipaa-compliance/SKILL.md +0 -79
  205. package/prisma/skills/homelab-network-readiness/SKILL.md +0 -170
  206. package/prisma/skills/homelab-network-setup/SKILL.md +0 -130
  207. package/prisma/skills/homelab-pihole-dns/SKILL.md +0 -275
  208. package/prisma/skills/homelab-vlan-segmentation/SKILL.md +0 -312
  209. package/prisma/skills/homelab-wireguard-vpn/SKILL.md +0 -306
  210. package/prisma/skills/hookify-rules/SKILL.md +0 -128
  211. package/prisma/skills/inherit-legacy-style/SKILL.md +0 -157
  212. package/prisma/skills/intent-driven-development/SKILL.md +0 -360
  213. package/prisma/skills/inventory-demand-planning/SKILL.md +0 -247
  214. package/prisma/skills/investor-materials/SKILL.md +0 -97
  215. package/prisma/skills/investor-outreach/SKILL.md +0 -92
  216. package/prisma/skills/ios-icon-gen/SKILL.md +0 -158
  217. package/prisma/skills/ios-icon-gen/scripts/generate_icons.swift +0 -258
  218. package/prisma/skills/ios-icon-gen/scripts/iconify_gen.sh +0 -235
  219. package/prisma/skills/iterative-retrieval/SKILL.md +0 -212
  220. package/prisma/skills/ito-basket-compare/SKILL.md +0 -64
  221. package/prisma/skills/ito-data-atlas-agent/SKILL.md +0 -64
  222. package/prisma/skills/ito-market-intelligence/SKILL.md +0 -61
  223. package/prisma/skills/ito-trade-planner/SKILL.md +0 -68
  224. package/prisma/skills/java-coding-standards/SKILL.md +0 -384
  225. package/prisma/skills/jira-integration/SKILL.md +0 -303
  226. package/prisma/skills/jpa-patterns/SKILL.md +0 -152
  227. package/prisma/skills/knowledge-ops/SKILL.md +0 -155
  228. package/prisma/skills/kotlin-coroutines-flows/SKILL.md +0 -285
  229. package/prisma/skills/kotlin-exposed-patterns/SKILL.md +0 -720
  230. package/prisma/skills/kotlin-ktor-patterns/SKILL.md +0 -690
  231. package/prisma/skills/kotlin-patterns/SKILL.md +0 -712
  232. package/prisma/skills/kotlin-testing/SKILL.md +0 -825
  233. package/prisma/skills/kubernetes-patterns/SKILL.md +0 -756
  234. package/prisma/skills/laravel-patterns/SKILL.md +0 -416
  235. package/prisma/skills/laravel-plugin-discovery/SKILL.md +0 -230
  236. package/prisma/skills/laravel-security/SKILL.md +0 -948
  237. package/prisma/skills/laravel-tdd/SKILL.md +0 -675
  238. package/prisma/skills/laravel-verification/SKILL.md +0 -180
  239. package/prisma/skills/latency-critical-systems/SKILL.md +0 -74
  240. package/prisma/skills/lead-intelligence/SKILL.md +0 -322
  241. package/prisma/skills/lead-intelligence/agents/enrichment-agent.md +0 -85
  242. package/prisma/skills/lead-intelligence/agents/mutual-mapper.md +0 -75
  243. package/prisma/skills/lead-intelligence/agents/outreach-drafter.md +0 -98
  244. package/prisma/skills/lead-intelligence/agents/signal-scorer.md +0 -60
  245. package/prisma/skills/liquid-glass-design/SKILL.md +0 -279
  246. package/prisma/skills/llm-trading-agent-security/SKILL.md +0 -147
  247. package/prisma/skills/logistics-exception-management/SKILL.md +0 -222
  248. package/prisma/skills/loop-design-check/SKILL.md +0 -143
  249. package/prisma/skills/mailtrap-email-integration/SKILL.md +0 -77
  250. package/prisma/skills/make-interfaces-feel-better/SKILL.md +0 -152
  251. package/prisma/skills/manim-video/SKILL.md +0 -90
  252. package/prisma/skills/manim-video/assets/network_graph_scene.py +0 -52
  253. package/prisma/skills/market-research/SKILL.md +0 -76
  254. package/prisma/skills/marketing-campaign/SKILL.md +0 -114
  255. package/prisma/skills/mcp-server-patterns/SKILL.md +0 -70
  256. package/prisma/skills/messages-ops/SKILL.md +0 -105
  257. package/prisma/skills/ml-adoption-playbook/SKILL.md +0 -57
  258. package/prisma/skills/mle-workflow/SKILL.md +0 -347
  259. package/prisma/skills/motion-advanced/SKILL.md +0 -596
  260. package/prisma/skills/motion-foundations/SKILL.md +0 -299
  261. package/prisma/skills/motion-patterns/SKILL.md +0 -434
  262. package/prisma/skills/motion-ui/SKILL.md +0 -576
  263. package/prisma/skills/mysql-patterns/SKILL.md +0 -413
  264. package/prisma/skills/nanoclaw-repl/SKILL.md +0 -34
  265. package/prisma/skills/nestjs-patterns/SKILL.md +0 -231
  266. package/prisma/skills/netmiko-ssh-automation/SKILL.md +0 -174
  267. package/prisma/skills/network-bgp-diagnostics/SKILL.md +0 -168
  268. package/prisma/skills/network-config-validation/SKILL.md +0 -211
  269. package/prisma/skills/network-interface-health/SKILL.md +0 -153
  270. package/prisma/skills/nextjs-turbopack/SKILL.md +0 -58
  271. package/prisma/skills/nodejs-keccak256/SKILL.md +0 -103
  272. package/prisma/skills/nutrient-document-processing/SKILL.md +0 -168
  273. package/prisma/skills/nuxt4-patterns/SKILL.md +0 -101
  274. package/prisma/skills/openclaw-persona-forge/SKILL.md +0 -289
  275. package/prisma/skills/openclaw-persona-forge/gacha.py +0 -224
  276. package/prisma/skills/openclaw-persona-forge/gacha.sh +0 -5
  277. package/prisma/skills/openclaw-persona-forge/references/avatar-style.md +0 -124
  278. package/prisma/skills/openclaw-persona-forge/references/boundary-rules.md +0 -53
  279. package/prisma/skills/openclaw-persona-forge/references/error-handling.md +0 -53
  280. package/prisma/skills/openclaw-persona-forge/references/identity-tension.md +0 -48
  281. package/prisma/skills/openclaw-persona-forge/references/naming-system.md +0 -39
  282. package/prisma/skills/openclaw-persona-forge/references/output-template.md +0 -166
  283. package/prisma/skills/opensource-pipeline/SKILL.md +0 -256
  284. package/prisma/skills/orch-add-feature/SKILL.md +0 -45
  285. package/prisma/skills/orch-build-mvp/SKILL.md +0 -49
  286. package/prisma/skills/orch-change-feature/SKILL.md +0 -43
  287. package/prisma/skills/orch-fix-defect/SKILL.md +0 -43
  288. package/prisma/skills/orch-pipeline/SKILL.md +0 -121
  289. package/prisma/skills/orch-refine-code/SKILL.md +0 -44
  290. package/prisma/skills/parallel-execution-optimizer/SKILL.md +0 -73
  291. package/prisma/skills/perl-patterns/SKILL.md +0 -505
  292. package/prisma/skills/perl-security/SKILL.md +0 -504
  293. package/prisma/skills/perl-testing/SKILL.md +0 -476
  294. package/prisma/skills/plan-orchestrate/SKILL.md +0 -263
  295. package/prisma/skills/plankton-code-quality/SKILL.md +0 -237
  296. package/prisma/skills/postgres-patterns/SKILL.md +0 -148
  297. package/prisma/skills/prediction-market-oracle-research/SKILL.md +0 -64
  298. package/prisma/skills/prediction-market-risk-review/SKILL.md +0 -61
  299. package/prisma/skills/prisma-patterns/SKILL.md +0 -401
  300. package/prisma/skills/product-capability/SKILL.md +0 -142
  301. package/prisma/skills/product-lens/SKILL.md +0 -93
  302. package/prisma/skills/production-audit/SKILL.md +0 -207
  303. package/prisma/skills/production-scheduling/SKILL.md +0 -238
  304. package/prisma/skills/project-flow-ops/SKILL.md +0 -112
  305. package/prisma/skills/prompt-optimizer/SKILL.md +0 -398
  306. package/prisma/skills/python-patterns/SKILL.md +0 -751
  307. package/prisma/skills/python-testing/SKILL.md +0 -817
  308. package/prisma/skills/pytorch-patterns/SKILL.md +0 -397
  309. package/prisma/skills/quality-nonconformance/SKILL.md +0 -260
  310. package/prisma/skills/quarkus-patterns/SKILL.md +0 -723
  311. package/prisma/skills/quarkus-security/SKILL.md +0 -468
  312. package/prisma/skills/quarkus-tdd/SKILL.md +0 -812
  313. package/prisma/skills/quarkus-verification/SKILL.md +0 -480
  314. package/prisma/skills/ralphinho-rfc-pipeline/SKILL.md +0 -68
  315. package/prisma/skills/react-native-patterns/SKILL.md +0 -326
  316. package/prisma/skills/react-patterns/SKILL.md +0 -342
  317. package/prisma/skills/react-performance/SKILL.md +0 -575
  318. package/prisma/skills/react-testing/SKILL.md +0 -424
  319. package/prisma/skills/recsys-pipeline-architect/SKILL.md +0 -115
  320. package/prisma/skills/recursive-decision-ledger/SKILL.md +0 -80
  321. package/prisma/skills/redis-patterns/SKILL.md +0 -404
  322. package/prisma/skills/regex-vs-llm-structured-text/SKILL.md +0 -221
  323. package/prisma/skills/remotion-video-creation/SKILL.md +0 -43
  324. package/prisma/skills/remotion-video-creation/rules/3d.md +0 -86
  325. package/prisma/skills/remotion-video-creation/rules/animations.md +0 -29
  326. package/prisma/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +0 -173
  327. package/prisma/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +0 -100
  328. package/prisma/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +0 -108
  329. package/prisma/skills/remotion-video-creation/rules/assets.md +0 -78
  330. package/prisma/skills/remotion-video-creation/rules/audio.md +0 -172
  331. package/prisma/skills/remotion-video-creation/rules/calculate-metadata.md +0 -104
  332. package/prisma/skills/remotion-video-creation/rules/can-decode.md +0 -75
  333. package/prisma/skills/remotion-video-creation/rules/charts.md +0 -58
  334. package/prisma/skills/remotion-video-creation/rules/compositions.md +0 -146
  335. package/prisma/skills/remotion-video-creation/rules/display-captions.md +0 -126
  336. package/prisma/skills/remotion-video-creation/rules/extract-frames.md +0 -229
  337. package/prisma/skills/remotion-video-creation/rules/fonts.md +0 -152
  338. package/prisma/skills/remotion-video-creation/rules/get-audio-duration.md +0 -58
  339. package/prisma/skills/remotion-video-creation/rules/get-video-dimensions.md +0 -68
  340. package/prisma/skills/remotion-video-creation/rules/get-video-duration.md +0 -58
  341. package/prisma/skills/remotion-video-creation/rules/gifs.md +0 -138
  342. package/prisma/skills/remotion-video-creation/rules/images.md +0 -130
  343. package/prisma/skills/remotion-video-creation/rules/import-srt-captions.md +0 -67
  344. package/prisma/skills/remotion-video-creation/rules/lottie.md +0 -67
  345. package/prisma/skills/remotion-video-creation/rules/measuring-dom-nodes.md +0 -34
  346. package/prisma/skills/remotion-video-creation/rules/measuring-text.md +0 -143
  347. package/prisma/skills/remotion-video-creation/rules/sequencing.md +0 -106
  348. package/prisma/skills/remotion-video-creation/rules/tailwind.md +0 -11
  349. package/prisma/skills/remotion-video-creation/rules/text-animations.md +0 -20
  350. package/prisma/skills/remotion-video-creation/rules/timing.md +0 -179
  351. package/prisma/skills/remotion-video-creation/rules/transcribe-captions.md +0 -19
  352. package/prisma/skills/remotion-video-creation/rules/transitions.md +0 -122
  353. package/prisma/skills/remotion-video-creation/rules/trimming.md +0 -52
  354. package/prisma/skills/remotion-video-creation/rules/videos.md +0 -171
  355. package/prisma/skills/repo-scan/SKILL.md +0 -79
  356. package/prisma/skills/research-ops/SKILL.md +0 -113
  357. package/prisma/skills/returns-reverse-logistics/SKILL.md +0 -240
  358. package/prisma/skills/rules-distill/SKILL.md +0 -265
  359. package/prisma/skills/rules-distill/scripts/scan-rules.sh +0 -58
  360. package/prisma/skills/rules-distill/scripts/scan-skills.sh +0 -129
  361. package/prisma/skills/rust-patterns/SKILL.md +0 -500
  362. package/prisma/skills/rust-testing/SKILL.md +0 -501
  363. package/prisma/skills/safety-guard/SKILL.md +0 -76
  364. package/prisma/skills/santa-method/SKILL.md +0 -307
  365. package/prisma/skills/scientific-db-pubmed-database/SKILL.md +0 -176
  366. package/prisma/skills/scientific-db-uspto-database/SKILL.md +0 -178
  367. package/prisma/skills/scientific-pkg-gget/SKILL.md +0 -167
  368. package/prisma/skills/scientific-thinking-literature-review/SKILL.md +0 -193
  369. package/prisma/skills/scientific-thinking-scholar-evaluation/SKILL.md +0 -161
  370. package/prisma/skills/search-first/SKILL.md +0 -183
  371. package/prisma/skills/security-bounty-hunter/SKILL.md +0 -100
  372. package/prisma/skills/security-review/SKILL.md +0 -504
  373. package/prisma/skills/security-review/cloud-infrastructure-security.md +0 -361
  374. package/prisma/skills/security-scan/SKILL.md +0 -166
  375. package/prisma/skills/seo/SKILL.md +0 -155
  376. package/prisma/skills/skill-comply/SKILL.md +0 -59
  377. package/prisma/skills/skill-comply/fixtures/compliant_trace.jsonl +0 -5
  378. package/prisma/skills/skill-comply/fixtures/noncompliant_trace.jsonl +0 -3
  379. package/prisma/skills/skill-comply/fixtures/tdd_spec.yaml +0 -44
  380. package/prisma/skills/skill-comply/prompts/classifier.md +0 -24
  381. package/prisma/skills/skill-comply/prompts/scenario_generator.md +0 -62
  382. package/prisma/skills/skill-comply/prompts/spec_generator.md +0 -42
  383. package/prisma/skills/skill-comply/pyproject.toml +0 -15
  384. package/prisma/skills/skill-comply/scripts/__init__.py +0 -0
  385. package/prisma/skills/skill-comply/scripts/classifier.py +0 -85
  386. package/prisma/skills/skill-comply/scripts/grader.py +0 -124
  387. package/prisma/skills/skill-comply/scripts/parser.py +0 -107
  388. package/prisma/skills/skill-comply/scripts/report.py +0 -170
  389. package/prisma/skills/skill-comply/scripts/run.py +0 -127
  390. package/prisma/skills/skill-comply/scripts/runner.py +0 -194
  391. package/prisma/skills/skill-comply/scripts/scenario_generator.py +0 -70
  392. package/prisma/skills/skill-comply/scripts/spec_generator.py +0 -72
  393. package/prisma/skills/skill-comply/scripts/utils.py +0 -13
  394. package/prisma/skills/skill-comply/tests/test_grader.py +0 -197
  395. package/prisma/skills/skill-comply/tests/test_parser.py +0 -90
  396. package/prisma/skills/skill-comply/tests/test_runner.py +0 -172
  397. package/prisma/skills/skill-scout/SKILL.md +0 -141
  398. package/prisma/skills/skill-stocktake/SKILL.md +0 -195
  399. package/prisma/skills/skill-stocktake/scripts/quick-diff.sh +0 -87
  400. package/prisma/skills/skill-stocktake/scripts/save-results.sh +0 -56
  401. package/prisma/skills/skill-stocktake/scripts/scan.sh +0 -170
  402. package/prisma/skills/social-graph-ranker/SKILL.md +0 -155
  403. package/prisma/skills/social-publisher/SKILL.md +0 -130
  404. package/prisma/skills/springboot-patterns/SKILL.md +0 -315
  405. package/prisma/skills/springboot-security/SKILL.md +0 -273
  406. package/prisma/skills/springboot-tdd/SKILL.md +0 -159
  407. package/prisma/skills/springboot-verification/SKILL.md +0 -232
  408. package/prisma/skills/strategic-compact/SKILL.md +0 -136
  409. package/prisma/skills/swift-actor-persistence/SKILL.md +0 -144
  410. package/prisma/skills/swift-concurrency-6-2/SKILL.md +0 -216
  411. package/prisma/skills/swift-protocol-di-testing/SKILL.md +0 -191
  412. package/prisma/skills/swiftui-patterns/SKILL.md +0 -259
  413. package/prisma/skills/taste/SKILL.md +0 -264
  414. package/prisma/skills/taste/references/genre-taxonomy.md +0 -87
  415. package/prisma/skills/tdd-workflow/SKILL.md +0 -583
  416. package/prisma/skills/team-agent-orchestration/SKILL.md +0 -111
  417. package/prisma/skills/team-builder/SKILL.md +0 -169
  418. package/prisma/skills/terminal-ops/SKILL.md +0 -110
  419. package/prisma/skills/tinystruct-patterns/SKILL.md +0 -279
  420. package/prisma/skills/tinystruct-patterns/references/architecture.md +0 -90
  421. package/prisma/skills/tinystruct-patterns/references/data-handling.md +0 -60
  422. package/prisma/skills/tinystruct-patterns/references/database.md +0 -99
  423. package/prisma/skills/tinystruct-patterns/references/routing.md +0 -64
  424. package/prisma/skills/tinystruct-patterns/references/system-usage.md +0 -97
  425. package/prisma/skills/tinystruct-patterns/references/testing.md +0 -72
  426. package/prisma/skills/token-budget-advisor/SKILL.md +0 -134
  427. package/prisma/skills/ui-demo/SKILL.md +0 -466
  428. package/prisma/skills/ui-to-vue/SKILL.md +0 -135
  429. package/prisma/skills/uncloud/SKILL.md +0 -344
  430. package/prisma/skills/unified-notifications-ops/SKILL.md +0 -188
  431. package/prisma/skills/verification-loop/SKILL.md +0 -127
  432. package/prisma/skills/video-editing/SKILL.md +0 -311
  433. package/prisma/skills/videodb/SKILL.md +0 -375
  434. package/prisma/skills/videodb/reference/api-reference.md +0 -550
  435. package/prisma/skills/videodb/reference/capture-reference.md +0 -407
  436. package/prisma/skills/videodb/reference/capture.md +0 -101
  437. package/prisma/skills/videodb/reference/editor.md +0 -443
  438. package/prisma/skills/videodb/reference/generative.md +0 -331
  439. package/prisma/skills/videodb/reference/rtstream-reference.md +0 -564
  440. package/prisma/skills/videodb/reference/rtstream.md +0 -65
  441. package/prisma/skills/videodb/reference/search.md +0 -230
  442. package/prisma/skills/videodb/reference/streaming.md +0 -406
  443. package/prisma/skills/videodb/reference/use-cases.md +0 -118
  444. package/prisma/skills/videodb/scripts/ws_listener.py +0 -282
  445. package/prisma/skills/visa-doc-translate/README.md +0 -86
  446. package/prisma/skills/visa-doc-translate/SKILL.md +0 -117
  447. package/prisma/skills/vite-patterns/SKILL.md +0 -450
  448. package/prisma/skills/vue-patterns/SKILL.md +0 -471
  449. package/prisma/skills/windows-desktop-e2e/SKILL.md +0 -888
  450. package/prisma/skills/workspace-surface-audit/SKILL.md +0 -126
  451. package/prisma/skills/x-api/SKILL.md +0 -235
@@ -1,97 +0,0 @@
1
- ---
2
- name: investor-materials
3
- description: Create and update pitch decks, one-pagers, investor memos, accelerator applications, financial models, and fundraising materials. Use when the user needs investor-facing documents, projections, use-of-funds tables, milestone plans, or materials that must stay internally consistent across multiple fundraising assets.
4
- metadata:
5
- origin: ECC
6
- ---
7
-
8
- # Investor Materials
9
-
10
- Build investor-facing materials that are consistent, credible, and easy to defend.
11
-
12
- ## When to Activate
13
-
14
- - creating or revising a pitch deck
15
- - writing an investor memo or one-pager
16
- - building a financial model, milestone plan, or use-of-funds table
17
- - answering accelerator or incubator application questions
18
- - aligning multiple fundraising docs around one source of truth
19
-
20
- ## Golden Rule
21
-
22
- All investor materials must agree with each other.
23
-
24
- Create or confirm a single source of truth before writing:
25
- - traction metrics
26
- - pricing and revenue assumptions
27
- - raise size and instrument
28
- - use of funds
29
- - team bios and titles
30
- - milestones and timelines
31
-
32
- If conflicting numbers appear, stop and resolve them before drafting.
33
-
34
- ## Core Workflow
35
-
36
- 1. inventory the canonical facts
37
- 2. identify missing assumptions
38
- 3. choose the asset type
39
- 4. draft the asset with explicit logic
40
- 5. cross-check every number against the source of truth
41
-
42
- ## Asset Guidance
43
-
44
- ### Pitch Deck
45
- Recommended flow:
46
- 1. company + wedge
47
- 2. problem
48
- 3. solution
49
- 4. product / demo
50
- 5. market
51
- 6. business model
52
- 7. traction
53
- 8. team
54
- 9. competition / differentiation
55
- 10. ask
56
- 11. use of funds / milestones
57
- 12. appendix
58
-
59
- If the user wants a web-native deck, pair this skill with `frontend-slides`.
60
-
61
- ### One-Pager / Memo
62
- - state what the company does in one clean sentence
63
- - show why now
64
- - include traction and proof points early
65
- - make the ask precise
66
- - keep claims easy to verify
67
-
68
- ### Financial Model
69
- Include:
70
- - explicit assumptions
71
- - bear / base / bull cases when useful
72
- - clean layer-by-layer revenue logic
73
- - milestone-linked spending
74
- - sensitivity analysis where the decision hinges on assumptions
75
-
76
- ### Accelerator Applications
77
- - answer the exact question asked
78
- - prioritize traction, insight, and team advantage
79
- - avoid puffery
80
- - keep internal metrics consistent with the deck and model
81
-
82
- ## Red Flags to Avoid
83
-
84
- - unverifiable claims
85
- - fuzzy market sizing without assumptions
86
- - inconsistent team roles or titles
87
- - revenue math that does not sum cleanly
88
- - inflated certainty where assumptions are fragile
89
-
90
- ## Quality Gate
91
-
92
- Before delivering:
93
- - every number matches the current source of truth
94
- - use of funds and revenue layers sum correctly
95
- - assumptions are visible, not buried
96
- - the story is clear without hype language
97
- - the final asset is defensible in a partner meeting
@@ -1,92 +0,0 @@
1
- ---
2
- name: investor-outreach
3
- description: Draft cold emails, warm intro blurbs, follow-ups, update emails, and investor communications for fundraising. Use when the user wants outreach to angels, VCs, strategic investors, or accelerators and needs concise, personalized, investor-facing messaging.
4
- metadata:
5
- origin: ECC
6
- ---
7
-
8
- # Investor Outreach
9
-
10
- Write investor communication that is short, concrete, and easy to act on.
11
-
12
- ## When to Activate
13
-
14
- - writing a cold email to an investor
15
- - drafting a warm intro request
16
- - sending follow-ups after a meeting or no response
17
- - writing investor updates during a process
18
- - tailoring outreach based on fund thesis or partner fit
19
-
20
- ## Core Rules
21
-
22
- 1. Personalize every outbound message.
23
- 2. Keep the ask low-friction.
24
- 3. Use proof instead of adjectives.
25
- 4. Stay concise.
26
- 5. Never send copy that could go to any investor.
27
-
28
- ## Voice Handling
29
-
30
- If the user's voice matters, run `brand-voice` first and reuse its `VOICE PROFILE`.
31
- This skill should keep the investor-specific structure and ask discipline, not recreate its own parallel voice system.
32
-
33
- ## Hard Bans
34
-
35
- Delete and rewrite any of these:
36
- - "I'd love to connect"
37
- - "excited to share"
38
- - generic thesis praise without a real tie-in
39
- - vague founder adjectives
40
- - begging language
41
- - soft closing questions when a direct ask is clearer
42
-
43
- ## Cold Email Structure
44
-
45
- 1. subject line: short and specific
46
- 2. opener: why this investor specifically
47
- 3. pitch: what the company does, why now, and what proof matters
48
- 4. ask: one concrete next step
49
- 5. sign-off: name, role, and one credibility anchor if needed
50
-
51
- ## Personalization Sources
52
-
53
- Reference one or more of:
54
- - relevant portfolio companies
55
- - a public thesis, talk, post, or article
56
- - a mutual connection
57
- - a clear market or product fit with the investor's focus
58
-
59
- If that context is missing, state that the draft still needs personalization instead of pretending it is finished.
60
-
61
- ## Follow-Up Cadence
62
-
63
- Default:
64
- - day 0: initial outbound
65
- - day 4 or 5: short follow-up with one new data point
66
- - day 10 to 12: final follow-up with a clean close
67
-
68
- Do not keep nudging after that unless the user wants a longer sequence.
69
-
70
- ## Warm Intro Requests
71
-
72
- Make life easy for the connector:
73
- - explain why the intro is a fit
74
- - include a forwardable blurb
75
- - keep the forwardable blurb under 100 words
76
-
77
- ## Post-Meeting Updates
78
-
79
- Include:
80
- - the specific thing discussed
81
- - the answer or update promised
82
- - one new proof point if available
83
- - the next step
84
-
85
- ## Quality Gate
86
-
87
- Before delivering:
88
- - the message is genuinely personalized
89
- - the ask is explicit
90
- - the proof point is concrete
91
- - filler praise and softener language are gone
92
- - word count stays tight
@@ -1,158 +0,0 @@
1
- ---
2
- name: ios-icon-gen
3
- description: Generate iOS app icons as PNG imagesets for Xcode asset catalogs from SF Symbols (5000+ Apple-native) or Iconify API (275k+ open source icons from 200+ collections). Use when generating icons, creating icon assets, adding icons to asset catalog, or searching for icons for iOS projects.
4
- metadata:
5
- origin: community
6
- ---
7
-
8
- # iOS Icon Generator
9
-
10
- Generate PNG icon imagesets for Xcode asset catalogs from two sources.
11
-
12
- ## When to Activate
13
-
14
- - Generating icon assets for an iOS/macOS Xcode project
15
- - Searching for icons across open source collections
16
- - Creating PNG imagesets (1x, 2x, 3x) for asset catalogs
17
- - Replacing placeholder icons with production-quality assets
18
- - Matching existing icon styles in an Xcode project
19
-
20
- ## Core Principles
21
-
22
- ### 1. Two Sources, One Output Format
23
- Both sources produce identical Xcode-compatible imagesets. Choose based on need:
24
-
25
- | Source | Icons | Requires | Best for |
26
- |--------|-------|----------|----------|
27
- | **Iconify API** | 275,000+ from 200+ collections | Internet | Wide selection, specific styles, open source icons |
28
- | **SF Symbols** | 5,000+ Apple symbols | macOS only | Apple-native style, offline use |
29
-
30
- ### 2. Always Match Existing Style
31
- Before generating, check the project's existing icons for size, color, and weight consistency.
32
-
33
- ### 3. Output Structure
34
- Both methods produce a complete Xcode imageset:
35
-
36
- ```
37
- <output-dir>/<asset-name>.imageset/
38
- Contents.json
39
- <asset-name>.png # 1x (68px default)
40
- <asset-name>@2x.png # 2x (136px default)
41
- <asset-name>@3x.png # 3x (204px default)
42
- ```
43
-
44
- ## Examples
45
-
46
- ### Step 1: Assess Requirements
47
-
48
- Determine icon needs: what the icon represents, preferred style, target color, and size.
49
-
50
- If the project already has icons, check existing style:
51
- ```bash
52
- # Check dimensions of existing icon
53
- sips -g pixelWidth -g pixelHeight path/to/existing@2x.png
54
- ```
55
-
56
- ### Step 2: Search for Icons
57
-
58
- **Iconify API (recommended for wide selection):**
59
- ```bash
60
- # Search all collections
61
- $SKILL_DIR/scripts/iconify_gen.sh search "receipt"
62
-
63
- # Search within a specific collection
64
- $SKILL_DIR/scripts/iconify_gen.sh search "business card" --prefix mdi
65
-
66
- # List available collections
67
- $SKILL_DIR/scripts/iconify_gen.sh collections
68
- ```
69
-
70
- **SF Symbols (for Apple-native style):**
71
- Browse the SF Symbols app or reference common names:
72
-
73
- | Use Case | Symbol Name |
74
- |----------|-------------|
75
- | Document | `doc.text`, `doc.fill` |
76
- | Receipt | `doc.text.below.ecg`, `receipt` |
77
- | Person | `person.crop.rectangle`, `person.text.rectangle` |
78
- | Camera | `camera`, `camera.fill` |
79
- | Scan | `doc.viewfinder`, `qrcode.viewfinder` |
80
- | Settings | `gearshape`, `slider.horizontal.3` |
81
-
82
- ### Step 3: Preview (Optional)
83
-
84
- ```bash
85
- # Iconify preview
86
- $SKILL_DIR/scripts/iconify_gen.sh preview mdi:receipt-text-outline
87
- ```
88
-
89
- ### Step 4: Generate
90
-
91
- **Iconify API:**
92
- ```bash
93
- # Basic generation
94
- $SKILL_DIR/scripts/iconify_gen.sh mdi:receipt-text-outline editTool_expenseReport
95
-
96
- # Custom color and output location
97
- $SKILL_DIR/scripts/iconify_gen.sh mdi:receipt-text-outline myIcon --color 007AFF --output ./Assets.xcassets/icons
98
- ```
99
-
100
- Options: `--size <pt>` (default: 68), `--color <hex>` (default: 8E8E93), `--output <dir>` (default: /tmp/icons)
101
-
102
- **SF Symbols:**
103
- ```bash
104
- # Basic generation
105
- swift $SKILL_DIR/scripts/generate_icons.swift doc.text.below.ecg editTool_expenseReport
106
-
107
- # Custom color, weight, and output
108
- swift $SKILL_DIR/scripts/generate_icons.swift person.crop.rectangle myIcon --color 007AFF --weight regular --output ./Assets.xcassets/icons
109
- ```
110
-
111
- Options: `--size <pt>` (default: 68), `--color <hex>` (default: 8E8E93), `--weight <name>` (default: thin), `--output <dir>` (default: /tmp/icons)
112
-
113
- ### Step 5: Verify and Integrate
114
-
115
- 1. Read the generated @2x PNG to verify visually
116
- 2. Copy to asset catalog if not output there directly:
117
- ```bash
118
- cp -r /tmp/icons/<name>.imageset path/to/Assets.xcassets/<group>/
119
- ```
120
- 3. Build the project to verify Xcode picks up the new assets
121
-
122
- ## Popular Iconify Collections
123
-
124
- | Prefix | Name | Count | Style |
125
- |--------|------|-------|-------|
126
- | `mdi` | Material Design Icons | 7400+ | Filled + outline variants |
127
- | `ph` | Phosphor | 9000+ | 6 weights per icon |
128
- | `solar` | Solar | 7400+ | Bold, linear, outline |
129
- | `tabler` | Tabler Icons | 6000+ | Consistent stroke width |
130
- | `lucide` | Lucide | 1700+ | Clean, minimal |
131
- | `ri` | Remix Icon | 3100+ | Filled + line variants |
132
- | `carbon` | Carbon | 2400+ | IBM design language |
133
- | `heroicons` | HeroIcons | 1200+ | Tailwind CSS companion |
134
-
135
- Browse all: <https://icon-sets.iconify.design/>
136
-
137
- ## Scripts Reference
138
-
139
- | Script | Source | Path |
140
- |--------|--------|------|
141
- | `iconify_gen.sh` | Iconify API (275k+ icons) | `$SKILL_DIR/scripts/iconify_gen.sh` |
142
- | `generate_icons.swift` | SF Symbols (5k+ icons) | `$SKILL_DIR/scripts/generate_icons.swift` |
143
-
144
- ## Best Practices
145
-
146
- - **Search before generating** -- browse available icons to find the best match
147
- - **Match existing project style** -- check dimensions, color, and weight of existing icons before generating new ones
148
- - **Use Iconify for variety** -- 200+ collections means you can find the exact style you need
149
- - **Use SF Symbols for Apple consistency** -- they match system UI perfectly
150
- - **Generate directly to asset catalog** -- use `--output ./Assets.xcassets/icons` to skip manual copying
151
- - **Verify visually** -- always preview the @2x PNG before committing
152
-
153
- ## Anti-Patterns
154
-
155
- - Generating icons without checking existing project icon style
156
- - Using default colors when the project has a defined color palette
157
- - Generating at wrong sizes (check existing icons first)
158
- - Committing generated icons without visual verification
@@ -1,258 +0,0 @@
1
- #!/usr/bin/env swift
2
-
3
- import AppKit
4
- import Foundation
5
-
6
- // MARK: - Configuration
7
-
8
- struct IconSpec {
9
- let symbolName: String
10
- let assetName: String
11
- let baseSize: CGFloat
12
- let color: NSColor
13
- let weight: NSFont.Weight
14
- }
15
-
16
- func parseColor(_ hex: String) -> NSColor {
17
- var hex = hex.trimmingCharacters(in: .whitespacesAndNewlines)
18
- if hex.hasPrefix("#") { hex.removeFirst() }
19
- guard hex.count == 6, let value = UInt64(hex, radix: 16) else {
20
- return NSColor(red: 142/255, green: 142/255, blue: 147/255, alpha: 1.0)
21
- }
22
- return NSColor(
23
- red: CGFloat((value >> 16) & 0xFF) / 255,
24
- green: CGFloat((value >> 8) & 0xFF) / 255,
25
- blue: CGFloat(value & 0xFF) / 255,
26
- alpha: 1.0
27
- )
28
- }
29
-
30
- func parseWeight(_ name: String) -> NSFont.Weight {
31
- switch name.lowercased() {
32
- case "ultralight": return .ultraLight
33
- case "thin": return .thin
34
- case "light": return .light
35
- case "regular": return .regular
36
- case "medium": return .medium
37
- case "semibold": return .semibold
38
- case "bold": return .bold
39
- case "heavy": return .heavy
40
- case "black": return .black
41
- default: return .thin
42
- }
43
- }
44
-
45
- // MARK: - Generation
46
-
47
- enum IconError: Error, CustomStringConvertible {
48
- case directoryCreation(String)
49
- case symbolNotFound(String)
50
- case configurationFailed(String)
51
- case pngCreation(String)
52
- case fileWrite(String)
53
-
54
- var description: String {
55
- switch self {
56
- case .directoryCreation(let msg): return msg
57
- case .symbolNotFound(let msg): return msg
58
- case .configurationFailed(let msg): return msg
59
- case .pngCreation(let msg): return msg
60
- case .fileWrite(let msg): return msg
61
- }
62
- }
63
- }
64
-
65
- func generateIcon(_ spec: IconSpec, outputDir: String) throws {
66
- let dir = "\(outputDir)/\(spec.assetName).imageset"
67
- do {
68
- try FileManager.default.createDirectory(atPath: dir, withIntermediateDirectories: true)
69
- } catch {
70
- throw IconError.directoryCreation("Could not create output directory '\(dir)': \(error.localizedDescription)")
71
- }
72
-
73
- let scales: [(suffix: String, multiplier: CGFloat)] = [("", 1), ("@2x", 2), ("@3x", 3)]
74
-
75
- for scale in scales {
76
- let pixelSize = spec.baseSize * scale.multiplier
77
- let imageSize = NSSize(width: pixelSize, height: pixelSize)
78
-
79
- let config = NSImage.SymbolConfiguration(
80
- pointSize: pixelSize * 0.40,
81
- weight: spec.weight,
82
- scale: .large
83
- )
84
-
85
- guard let symbol = NSImage(systemSymbolName: spec.symbolName, accessibilityDescription: nil) else {
86
- throw IconError.symbolNotFound("SF Symbol '\(spec.symbolName)' not found. Run 'SF Symbols' app to browse available names.")
87
- }
88
-
89
- guard let configured = symbol.withSymbolConfiguration(config) else {
90
- throw IconError.configurationFailed("Could not apply symbol configuration to '\(spec.symbolName)'")
91
- }
92
-
93
- let image = NSImage(size: imageSize, flipped: false) { rect in
94
- let symSize = configured.size
95
- let x = (rect.width - symSize.width) / 2
96
- let y = (rect.height - symSize.height) / 2
97
- let drawRect = NSRect(x: x, y: y, width: symSize.width, height: symSize.height)
98
-
99
- let tinted = NSImage(size: symSize, flipped: false) { tintRect in
100
- configured.draw(in: tintRect)
101
- spec.color.set()
102
- tintRect.fill(using: .sourceAtop)
103
- return true
104
- }
105
-
106
- tinted.draw(in: drawRect, from: .zero, operation: .sourceOver, fraction: 1.0)
107
- return true
108
- }
109
-
110
- guard let tiffData = image.tiffRepresentation,
111
- let bitmap = NSBitmapImageRep(data: tiffData),
112
- let pngData = bitmap.representation(using: .png, properties: [:]) else {
113
- throw IconError.pngCreation("Failed to create PNG for \(spec.assetName)\(scale.suffix)")
114
- }
115
-
116
- let fileName = "\(spec.assetName)\(scale.suffix).png"
117
- do {
118
- try pngData.write(to: URL(fileURLWithPath: "\(dir)/\(fileName)"))
119
- } catch {
120
- throw IconError.fileWrite("Failed to write \(fileName): \(error.localizedDescription)")
121
- }
122
- print(" \(fileName) (\(Int(pixelSize))x\(Int(pixelSize)))")
123
- }
124
-
125
- // Write Contents.json
126
- let json = """
127
- {
128
- "images" : [
129
- {
130
- "filename" : "\(spec.assetName).png",
131
- "idiom" : "universal",
132
- "scale" : "1x"
133
- },
134
- {
135
- "filename" : "\(spec.assetName)@2x.png",
136
- "idiom" : "universal",
137
- "scale" : "2x"
138
- },
139
- {
140
- "filename" : "\(spec.assetName)@3x.png",
141
- "idiom" : "universal",
142
- "scale" : "3x"
143
- }
144
- ],
145
- "info" : {
146
- "author" : "xcode",
147
- "version" : 1
148
- }
149
- }
150
- """
151
- do {
152
- try json.write(toFile: "\(dir)/Contents.json", atomically: true, encoding: .utf8)
153
- } catch {
154
- throw IconError.fileWrite("Failed to write Contents.json: \(error.localizedDescription)")
155
- }
156
- }
157
-
158
- func requireOptionValue(_ args: [String], at index: Int, flag: String) -> String {
159
- guard index < args.count else {
160
- fputs("ERROR: Missing value for \(flag)\n", stderr)
161
- exit(1)
162
- }
163
- let value = args[index]
164
- if value.hasPrefix("--") {
165
- fputs("ERROR: Missing value for \(flag)\n", stderr)
166
- exit(1)
167
- }
168
- return value
169
- }
170
-
171
- // MARK: - CLI
172
-
173
- let args = CommandLine.arguments
174
-
175
- if args.count < 3 || args.contains("--help") || args.contains("-h") {
176
- print("""
177
- Usage: generate_icons.swift <sf-symbol-name> <asset-name> [options]
178
-
179
- Options:
180
- --size <pt> Base size in points (default: 68)
181
- --color <hex> Color hex code (default: 8E8E93)
182
- --weight <name> Font weight: ultralight|thin|light|regular|medium|semibold|bold|heavy|black (default: thin)
183
- --output <dir> Output directory (default: /tmp/icons)
184
-
185
- Examples:
186
- generate_icons.swift doc.text.below.ecg editTool_expenseReport
187
- generate_icons.swift person.crop.rectangle editTool_businessCard --color 007AFF --weight regular
188
- generate_icons.swift receipt myReceipt --size 48 --output ./Assets.xcassets/icons
189
-
190
- Browse SF Symbol names: open the SF Symbols app (free from Apple) or https://developer.apple.com/sf-symbols/
191
- """)
192
- exit(0)
193
- }
194
-
195
- let symbolName = args[1]
196
- let assetName = args[2]
197
-
198
- var baseSize: CGFloat = 68
199
- var colorHex = "8E8E93"
200
- var weightName = "thin"
201
- var outputDir = "/tmp/icons"
202
-
203
- var i = 3
204
- while i < args.count {
205
- switch args[i] {
206
- case "--size":
207
- let raw = requireOptionValue(args, at: i + 1, flag: "--size")
208
- guard let size = Double(raw), size > 0 else {
209
- fputs("ERROR: --size must be a positive number\n", stderr)
210
- exit(1)
211
- }
212
- baseSize = CGFloat(size)
213
- i += 2
214
- continue
215
- case "--color":
216
- colorHex = requireOptionValue(args, at: i + 1, flag: "--color")
217
- let stripped = colorHex.hasPrefix("#") ? String(colorHex.dropFirst()) : colorHex
218
- guard stripped.count == 6, UInt64(stripped, radix: 16) != nil else {
219
- fputs("ERROR: --color must be a 6-digit hex code (e.g. 007AFF)\n", stderr)
220
- exit(1)
221
- }
222
- i += 2
223
- continue
224
- case "--weight":
225
- weightName = requireOptionValue(args, at: i + 1, flag: "--weight")
226
- let validWeights = ["ultralight", "thin", "light", "regular", "medium", "semibold", "bold", "heavy", "black"]
227
- guard validWeights.contains(weightName.lowercased()) else {
228
- fputs("ERROR: --weight must be one of: \(validWeights.joined(separator: ", "))\n", stderr)
229
- exit(1)
230
- }
231
- i += 2
232
- continue
233
- case "--output":
234
- outputDir = requireOptionValue(args, at: i + 1, flag: "--output")
235
- i += 2
236
- continue
237
- default:
238
- fputs("WARNING: Unknown option \(args[i])\n", stderr)
239
- }
240
- i += 1
241
- }
242
-
243
- let spec = IconSpec(
244
- symbolName: symbolName,
245
- assetName: assetName,
246
- baseSize: baseSize,
247
- color: parseColor(colorHex),
248
- weight: parseWeight(weightName)
249
- )
250
-
251
- print("Generating \(assetName) from SF Symbol '\(symbolName)':")
252
- do {
253
- try generateIcon(spec, outputDir: outputDir)
254
- print("Output: \(outputDir)/\(assetName).imageset/")
255
- } catch {
256
- fputs("ERROR: \(error)\n", stderr)
257
- exit(1)
258
- }