claudecode-omc 5.6.4 → 5.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/.local/commands/code-review.md +416 -0
  2. package/.local/commands/pr.md +250 -0
  3. package/.local/commands/prp-pr.md +244 -0
  4. package/.local/guidelines/CLAUDE.md +47 -0
  5. package/.local/skills/prompt-optimizer/SKILL.md +23 -4
  6. package/bundled/manifest.json +4 -4
  7. package/bundled/upstream/anthropic-skills/skills/algorithmic-art/LICENSE.txt +1 -1
  8. package/bundled/upstream/anthropic-skills/skills/brand-guidelines/LICENSE.txt +1 -1
  9. package/bundled/upstream/anthropic-skills/skills/canvas-design/LICENSE.txt +1 -1
  10. package/bundled/upstream/anthropic-skills/skills/claude-api/LICENSE.txt +1 -1
  11. package/bundled/upstream/anthropic-skills/skills/claude-api/SKILL.md +120 -58
  12. package/bundled/upstream/anthropic-skills/skills/claude-api/curl/examples.md +9 -9
  13. package/bundled/upstream/anthropic-skills/skills/claude-api/curl/managed-agents.md +336 -0
  14. package/bundled/upstream/anthropic-skills/skills/claude-api/go/managed-agents/README.md +561 -0
  15. package/bundled/upstream/anthropic-skills/skills/claude-api/java/claude-api.md +2 -2
  16. package/bundled/upstream/anthropic-skills/skills/claude-api/java/managed-agents/README.md +442 -0
  17. package/bundled/upstream/anthropic-skills/skills/claude-api/php/claude-api.md +10 -10
  18. package/bundled/upstream/anthropic-skills/skills/claude-api/php/managed-agents/README.md +435 -0
  19. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/README.md +16 -16
  20. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/batches.md +3 -3
  21. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/files-api.md +3 -3
  22. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/streaming.md +7 -7
  23. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/tool-use.md +19 -19
  24. package/bundled/upstream/anthropic-skills/skills/claude-api/python/managed-agents/README.md +332 -0
  25. package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/claude-api.md +4 -4
  26. package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/managed-agents/README.md +389 -0
  27. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/agent-design.md +101 -0
  28. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/error-codes.md +11 -4
  29. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/live-sources.md +60 -48
  30. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-api-reference.md +372 -0
  31. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-client-patterns.md +209 -0
  32. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-core.md +220 -0
  33. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-environments.md +211 -0
  34. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-events.md +195 -0
  35. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-memory.md +197 -0
  36. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-multiagent.md +99 -0
  37. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-onboarding.md +114 -0
  38. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-outcomes.md +106 -0
  39. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-overview.md +67 -0
  40. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-tools.md +315 -0
  41. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-webhooks.md +110 -0
  42. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/model-migration.md +779 -0
  43. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/models.md +16 -14
  44. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/prompt-caching.md +45 -2
  45. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/tool-use-concepts.md +28 -6
  46. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/README.md +15 -15
  47. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/batches.md +2 -2
  48. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/files-api.md +1 -1
  49. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/streaming.md +5 -5
  50. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/tool-use.md +15 -15
  51. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/managed-agents/README.md +359 -0
  52. package/bundled/upstream/anthropic-skills/skills/internal-comms/LICENSE.txt +1 -1
  53. package/bundled/upstream/anthropic-skills/skills/mcp-builder/LICENSE.txt +1 -1
  54. package/bundled/upstream/anthropic-skills/skills/skill-creator/LICENSE.txt +1 -1
  55. package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/LICENSE.txt +1 -1
  56. package/bundled/upstream/anthropic-skills/skills/theme-factory/LICENSE.txt +1 -1
  57. package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/LICENSE.txt +1 -1
  58. package/bundled/upstream/anthropic-skills/skills/webapp-testing/LICENSE.txt +1 -1
  59. package/bundled/upstream/ecc/.omc-source/bundle.json +2 -3
  60. package/bundled/upstream/ecc/.omc-source/manifests/.claude-plugin/marketplace.json +4 -4
  61. package/bundled/upstream/ecc/agents/a11y-architect.md +10 -2
  62. package/bundled/upstream/ecc/agents/architect.md +9 -0
  63. package/bundled/upstream/ecc/agents/build-error-resolver.md +9 -0
  64. package/bundled/upstream/ecc/agents/chief-of-staff.md +9 -0
  65. package/bundled/upstream/ecc/agents/code-architect.md +9 -0
  66. package/bundled/upstream/ecc/agents/code-explorer.md +10 -1
  67. package/bundled/upstream/ecc/agents/code-reviewer.md +87 -1
  68. package/bundled/upstream/ecc/agents/code-simplifier.md +9 -0
  69. package/bundled/upstream/ecc/agents/comment-analyzer.md +10 -1
  70. package/bundled/upstream/ecc/agents/conversation-analyzer.md +9 -0
  71. package/bundled/upstream/ecc/agents/cpp-build-resolver.md +9 -0
  72. package/bundled/upstream/ecc/agents/cpp-reviewer.md +9 -0
  73. package/bundled/upstream/ecc/agents/csharp-reviewer.md +9 -0
  74. package/bundled/upstream/ecc/agents/dart-build-resolver.md +9 -0
  75. package/bundled/upstream/ecc/agents/database-reviewer.md +9 -0
  76. package/bundled/upstream/ecc/agents/django-build-resolver.md +252 -0
  77. package/bundled/upstream/ecc/agents/django-reviewer.md +169 -0
  78. package/bundled/upstream/ecc/agents/doc-updater.md +9 -0
  79. package/bundled/upstream/ecc/agents/docs-lookup.md +9 -0
  80. package/bundled/upstream/ecc/agents/e2e-runner.md +9 -0
  81. package/bundled/upstream/ecc/agents/fastapi-reviewer.md +79 -0
  82. package/bundled/upstream/ecc/agents/flutter-reviewer.md +9 -0
  83. package/bundled/upstream/ecc/agents/fsharp-reviewer.md +109 -0
  84. package/bundled/upstream/ecc/agents/gan-evaluator.md +9 -0
  85. package/bundled/upstream/ecc/agents/gan-generator.md +9 -0
  86. package/bundled/upstream/ecc/agents/gan-planner.md +9 -0
  87. package/bundled/upstream/ecc/agents/go-build-resolver.md +9 -0
  88. package/bundled/upstream/ecc/agents/go-reviewer.md +9 -0
  89. package/bundled/upstream/ecc/agents/harmonyos-app-resolver.md +182 -0
  90. package/bundled/upstream/ecc/agents/harness-optimizer.md +9 -0
  91. package/bundled/upstream/ecc/agents/healthcare-reviewer.md +9 -0
  92. package/bundled/upstream/ecc/agents/homelab-architect.md +107 -0
  93. package/bundled/upstream/ecc/agents/java-build-resolver.md +133 -11
  94. package/bundled/upstream/ecc/agents/java-reviewer.md +130 -32
  95. package/bundled/upstream/ecc/agents/kotlin-build-resolver.md +9 -0
  96. package/bundled/upstream/ecc/agents/kotlin-reviewer.md +9 -0
  97. package/bundled/upstream/ecc/agents/loop-operator.md +9 -0
  98. package/bundled/upstream/ecc/agents/mle-reviewer.md +162 -0
  99. package/bundled/upstream/ecc/agents/network-architect.md +106 -0
  100. package/bundled/upstream/ecc/agents/network-config-reviewer.md +106 -0
  101. package/bundled/upstream/ecc/agents/network-troubleshooter.md +128 -0
  102. package/bundled/upstream/ecc/agents/opensource-forker.md +9 -0
  103. package/bundled/upstream/ecc/agents/opensource-packager.md +9 -0
  104. package/bundled/upstream/ecc/agents/opensource-sanitizer.md +9 -0
  105. package/bundled/upstream/ecc/agents/performance-optimizer.md +9 -0
  106. package/bundled/upstream/ecc/agents/planner.md +9 -0
  107. package/bundled/upstream/ecc/agents/pr-test-analyzer.md +9 -0
  108. package/bundled/upstream/ecc/agents/python-reviewer.md +9 -0
  109. package/bundled/upstream/ecc/agents/pytorch-build-resolver.md +12 -3
  110. package/bundled/upstream/ecc/agents/refactor-cleaner.md +9 -0
  111. package/bundled/upstream/ecc/agents/rust-build-resolver.md +9 -0
  112. package/bundled/upstream/ecc/agents/rust-reviewer.md +9 -0
  113. package/bundled/upstream/ecc/agents/security-reviewer.md +9 -0
  114. package/bundled/upstream/ecc/agents/seo-specialist.md +10 -1
  115. package/bundled/upstream/ecc/agents/silent-failure-hunter.md +9 -0
  116. package/bundled/upstream/ecc/agents/swift-build-resolver.md +170 -0
  117. package/bundled/upstream/ecc/agents/swift-reviewer.md +116 -0
  118. package/bundled/upstream/ecc/agents/tdd-guide.md +9 -0
  119. package/bundled/upstream/ecc/agents/type-design-analyzer.md +10 -1
  120. package/bundled/upstream/ecc/agents/typescript-reviewer.md +9 -0
  121. package/bundled/upstream/ecc/commands/auto-update.md +28 -0
  122. package/bundled/upstream/ecc/commands/build-fix.md +4 -0
  123. package/bundled/upstream/ecc/commands/checkpoint.md +4 -0
  124. package/bundled/upstream/ecc/commands/code-review.md +3 -3
  125. package/bundled/upstream/ecc/commands/cost-report.md +107 -0
  126. package/bundled/upstream/ecc/commands/cpp-build.md +1 -1
  127. package/bundled/upstream/ecc/commands/cpp-test.md +1 -1
  128. package/bundled/upstream/ecc/commands/ecc-guide.md +93 -0
  129. package/bundled/upstream/ecc/commands/fastapi-review.md +39 -0
  130. package/bundled/upstream/ecc/commands/flutter-build.md +1 -1
  131. package/bundled/upstream/ecc/commands/flutter-test.md +1 -1
  132. package/bundled/upstream/ecc/commands/gan-build.md +4 -0
  133. package/bundled/upstream/ecc/commands/gan-design.md +4 -0
  134. package/bundled/upstream/ecc/commands/go-build.md +1 -1
  135. package/bundled/upstream/ecc/commands/go-test.md +1 -1
  136. package/bundled/upstream/ecc/commands/harness-audit.md +4 -0
  137. package/bundled/upstream/ecc/commands/jira.md +2 -2
  138. package/bundled/upstream/ecc/commands/kotlin-build.md +1 -1
  139. package/bundled/upstream/ecc/commands/kotlin-test.md +1 -1
  140. package/bundled/upstream/ecc/commands/learn.md +4 -0
  141. package/bundled/upstream/ecc/commands/loop-start.md +4 -0
  142. package/bundled/upstream/ecc/commands/loop-status.md +54 -1
  143. package/bundled/upstream/ecc/commands/model-route.md +4 -0
  144. package/bundled/upstream/ecc/commands/multi-backend.md +4 -0
  145. package/bundled/upstream/ecc/commands/multi-execute.md +4 -0
  146. package/bundled/upstream/ecc/commands/multi-frontend.md +4 -0
  147. package/bundled/upstream/ecc/commands/multi-plan.md +4 -0
  148. package/bundled/upstream/ecc/commands/multi-workflow.md +4 -0
  149. package/bundled/upstream/ecc/commands/plan-prd.md +160 -0
  150. package/bundled/upstream/ecc/commands/plan.md +96 -13
  151. package/bundled/upstream/ecc/commands/pm2.md +4 -0
  152. package/bundled/upstream/ecc/commands/pr.md +184 -0
  153. package/bundled/upstream/ecc/commands/project-init.md +86 -0
  154. package/bundled/upstream/ecc/commands/python-review.md +1 -1
  155. package/bundled/upstream/ecc/commands/quality-gate.md +4 -0
  156. package/bundled/upstream/ecc/commands/refactor-clean.md +4 -0
  157. package/bundled/upstream/ecc/commands/rust-build.md +1 -1
  158. package/bundled/upstream/ecc/commands/rust-test.md +1 -1
  159. package/bundled/upstream/ecc/commands/security-scan.md +92 -0
  160. package/bundled/upstream/ecc/commands/sessions.md +6 -6
  161. package/bundled/upstream/ecc/commands/skill-health.md +3 -3
  162. package/bundled/upstream/ecc/commands/test-coverage.md +4 -0
  163. package/bundled/upstream/ecc/commands/update-codemaps.md +4 -0
  164. package/bundled/upstream/ecc/commands/update-docs.md +4 -0
  165. package/bundled/upstream/ecc/skills/accessibility/SKILL.md +1 -1
  166. package/bundled/upstream/ecc/skills/agent-architecture-audit/SKILL.md +256 -0
  167. package/bundled/upstream/ecc/skills/agent-payment-x402/SKILL.md +49 -3
  168. package/bundled/upstream/ecc/skills/agentic-os/SKILL.md +387 -0
  169. package/bundled/upstream/ecc/skills/angular-developer/SKILL.md +154 -0
  170. package/bundled/upstream/ecc/skills/angular-developer/references/angular-animations.md +160 -0
  171. package/bundled/upstream/ecc/skills/angular-developer/references/angular-aria.md +410 -0
  172. package/bundled/upstream/ecc/skills/angular-developer/references/cli.md +86 -0
  173. package/bundled/upstream/ecc/skills/angular-developer/references/component-harnesses.md +59 -0
  174. package/bundled/upstream/ecc/skills/angular-developer/references/component-styling.md +91 -0
  175. package/bundled/upstream/ecc/skills/angular-developer/references/components.md +117 -0
  176. package/bundled/upstream/ecc/skills/angular-developer/references/creating-services.md +97 -0
  177. package/bundled/upstream/ecc/skills/angular-developer/references/data-resolvers.md +69 -0
  178. package/bundled/upstream/ecc/skills/angular-developer/references/define-routes.md +67 -0
  179. package/bundled/upstream/ecc/skills/angular-developer/references/defining-providers.md +72 -0
  180. package/bundled/upstream/ecc/skills/angular-developer/references/di-fundamentals.md +120 -0
  181. package/bundled/upstream/ecc/skills/angular-developer/references/e2e-testing.md +56 -0
  182. package/bundled/upstream/ecc/skills/angular-developer/references/effects.md +83 -0
  183. package/bundled/upstream/ecc/skills/angular-developer/references/hierarchical-injectors.md +43 -0
  184. package/bundled/upstream/ecc/skills/angular-developer/references/host-elements.md +80 -0
  185. package/bundled/upstream/ecc/skills/angular-developer/references/injection-context.md +63 -0
  186. package/bundled/upstream/ecc/skills/angular-developer/references/inputs.md +101 -0
  187. package/bundled/upstream/ecc/skills/angular-developer/references/linked-signal.md +59 -0
  188. package/bundled/upstream/ecc/skills/angular-developer/references/loading-strategies.md +61 -0
  189. package/bundled/upstream/ecc/skills/angular-developer/references/mcp.md +108 -0
  190. package/bundled/upstream/ecc/skills/angular-developer/references/navigate-to-routes.md +69 -0
  191. package/bundled/upstream/ecc/skills/angular-developer/references/outputs.md +86 -0
  192. package/bundled/upstream/ecc/skills/angular-developer/references/reactive-forms.md +122 -0
  193. package/bundled/upstream/ecc/skills/angular-developer/references/rendering-strategies.md +44 -0
  194. package/bundled/upstream/ecc/skills/angular-developer/references/resource.md +77 -0
  195. package/bundled/upstream/ecc/skills/angular-developer/references/route-animations.md +56 -0
  196. package/bundled/upstream/ecc/skills/angular-developer/references/route-guards.md +52 -0
  197. package/bundled/upstream/ecc/skills/angular-developer/references/router-lifecycle.md +45 -0
  198. package/bundled/upstream/ecc/skills/angular-developer/references/router-testing.md +87 -0
  199. package/bundled/upstream/ecc/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
  200. package/bundled/upstream/ecc/skills/angular-developer/references/signal-forms.md +795 -0
  201. package/bundled/upstream/ecc/skills/angular-developer/references/signals-overview.md +94 -0
  202. package/bundled/upstream/ecc/skills/angular-developer/references/tailwind-css.md +69 -0
  203. package/bundled/upstream/ecc/skills/angular-developer/references/template-driven-forms.md +114 -0
  204. package/bundled/upstream/ecc/skills/angular-developer/references/testing-fundamentals.md +65 -0
  205. package/bundled/upstream/ecc/skills/autonomous-agent-harness/SKILL.md +6 -0
  206. package/bundled/upstream/ecc/skills/backend-patterns/SKILL.md +8 -45
  207. package/bundled/upstream/ecc/skills/cisco-ios-patterns/SKILL.md +163 -0
  208. package/bundled/upstream/ecc/skills/configure-ecc/SKILL.md +31 -14
  209. package/bundled/upstream/ecc/skills/continuous-learning/SKILL.md +10 -2
  210. package/bundled/upstream/ecc/skills/continuous-learning-v2/SKILL.md +19 -5
  211. package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer-loop.sh +44 -4
  212. package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer.md +4 -4
  213. package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/start-observer.sh +5 -1
  214. package/bundled/upstream/ecc/skills/continuous-learning-v2/hooks/observe.sh +21 -5
  215. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +58 -13
  216. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +97 -4
  217. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
  218. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
  219. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +34 -0
  220. package/bundled/upstream/ecc/skills/cost-tracking/SKILL.md +147 -0
  221. package/bundled/upstream/ecc/skills/deep-research/SKILL.md +4 -0
  222. package/bundled/upstream/ecc/skills/defi-amm-security/SKILL.md +6 -0
  223. package/bundled/upstream/ecc/skills/django-celery/SKILL.md +457 -0
  224. package/bundled/upstream/ecc/skills/ecc-guide/SKILL.md +189 -0
  225. package/bundled/upstream/ecc/skills/error-handling/SKILL.md +376 -0
  226. package/bundled/upstream/ecc/skills/exa-search/SKILL.md +4 -0
  227. package/bundled/upstream/ecc/skills/fal-ai-media/SKILL.md +4 -0
  228. package/bundled/upstream/ecc/skills/fastapi-patterns/SKILL.md +327 -0
  229. package/bundled/upstream/ecc/skills/flox-environments/SKILL.md +496 -0
  230. package/bundled/upstream/ecc/skills/frontend-design-direction/SKILL.md +92 -0
  231. package/bundled/upstream/ecc/skills/frontend-slides/animation-patterns.md +122 -0
  232. package/bundled/upstream/ecc/skills/frontend-slides/html-template.md +419 -0
  233. package/bundled/upstream/ecc/skills/frontend-slides/scripts/export-pdf.sh +418 -0
  234. package/bundled/upstream/ecc/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  235. package/bundled/upstream/ecc/skills/frontend-slides/viewport-base.css +153 -0
  236. package/bundled/upstream/ecc/skills/fsharp-testing/SKILL.md +280 -0
  237. package/bundled/upstream/ecc/skills/gateguard/SKILL.md +4 -0
  238. package/bundled/upstream/ecc/skills/hermes-imports/SKILL.md +88 -0
  239. package/bundled/upstream/ecc/skills/homelab-network-readiness/SKILL.md +169 -0
  240. package/bundled/upstream/ecc/skills/homelab-network-setup/SKILL.md +129 -0
  241. package/bundled/upstream/ecc/skills/homelab-pihole-dns/SKILL.md +274 -0
  242. package/bundled/upstream/ecc/skills/homelab-vlan-segmentation/SKILL.md +311 -0
  243. package/bundled/upstream/ecc/skills/homelab-wireguard-vpn/SKILL.md +305 -0
  244. package/bundled/upstream/ecc/skills/ios-icon-gen/SKILL.md +157 -0
  245. package/bundled/upstream/ecc/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
  246. package/bundled/upstream/ecc/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
  247. package/bundled/upstream/ecc/skills/java-coding-standards/SKILL.md +241 -5
  248. package/bundled/upstream/ecc/skills/make-interfaces-feel-better/SKILL.md +151 -0
  249. package/bundled/upstream/ecc/skills/mle-workflow/SKILL.md +346 -0
  250. package/bundled/upstream/ecc/skills/motion-advanced/SKILL.md +596 -0
  251. package/bundled/upstream/ecc/skills/motion-foundations/SKILL.md +299 -0
  252. package/bundled/upstream/ecc/skills/motion-patterns/SKILL.md +435 -0
  253. package/bundled/upstream/ecc/skills/motion-ui/SKILL.md +575 -0
  254. package/bundled/upstream/ecc/skills/mysql-patterns/SKILL.md +412 -0
  255. package/bundled/upstream/ecc/skills/netmiko-ssh-automation/SKILL.md +173 -0
  256. package/bundled/upstream/ecc/skills/network-bgp-diagnostics/SKILL.md +167 -0
  257. package/bundled/upstream/ecc/skills/network-config-validation/SKILL.md +210 -0
  258. package/bundled/upstream/ecc/skills/network-interface-health/SKILL.md +152 -0
  259. package/bundled/upstream/ecc/skills/openclaw-persona-forge/SKILL.md +1 -9
  260. package/bundled/upstream/ecc/skills/plan-orchestrate/SKILL.md +262 -0
  261. package/bundled/upstream/ecc/skills/prisma-patterns/SKILL.md +371 -0
  262. package/bundled/upstream/ecc/skills/production-audit/SKILL.md +206 -0
  263. package/bundled/upstream/ecc/skills/prompt-optimizer/SKILL.md +24 -400
  264. package/bundled/upstream/ecc/skills/quarkus-patterns/SKILL.md +722 -0
  265. package/bundled/upstream/ecc/skills/quarkus-security/SKILL.md +467 -0
  266. package/bundled/upstream/ecc/skills/quarkus-tdd/SKILL.md +811 -0
  267. package/bundled/upstream/ecc/skills/quarkus-verification/SKILL.md +479 -0
  268. package/bundled/upstream/ecc/skills/redis-patterns/SKILL.md +403 -0
  269. package/bundled/upstream/ecc/skills/scientific-db-pubmed-database/SKILL.md +175 -0
  270. package/bundled/upstream/ecc/skills/scientific-db-uspto-database/SKILL.md +177 -0
  271. package/bundled/upstream/ecc/skills/scientific-pkg-gget/SKILL.md +166 -0
  272. package/bundled/upstream/ecc/skills/scientific-thinking-literature-review/SKILL.md +192 -0
  273. package/bundled/upstream/ecc/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
  274. package/bundled/upstream/ecc/skills/search-first/SKILL.md +23 -2
  275. package/bundled/upstream/ecc/skills/security-review/SKILL.md +10 -2
  276. package/bundled/upstream/ecc/skills/skill-comply/scripts/runner.py +28 -3
  277. package/bundled/upstream/ecc/skills/skill-comply/tests/test_runner.py +172 -0
  278. package/bundled/upstream/ecc/skills/skill-scout/SKILL.md +140 -0
  279. package/bundled/upstream/ecc/skills/skill-stocktake/SKILL.md +1 -0
  280. package/bundled/upstream/ecc/skills/strategic-compact/SKILL.md +2 -2
  281. package/bundled/upstream/ecc/skills/tinystruct-patterns/SKILL.md +203 -0
  282. package/bundled/upstream/ecc/skills/tinystruct-patterns/references/architecture.md +90 -0
  283. package/bundled/upstream/ecc/skills/tinystruct-patterns/references/data-handling.md +60 -0
  284. package/bundled/upstream/ecc/skills/tinystruct-patterns/references/database.md +99 -0
  285. package/bundled/upstream/ecc/skills/tinystruct-patterns/references/routing.md +64 -0
  286. package/bundled/upstream/ecc/skills/tinystruct-patterns/references/system-usage.md +97 -0
  287. package/bundled/upstream/ecc/skills/tinystruct-patterns/references/testing.md +72 -0
  288. package/bundled/upstream/ecc/skills/ui-to-vue/SKILL.md +134 -0
  289. package/bundled/upstream/ecc/skills/vite-patterns/SKILL.md +449 -0
  290. package/bundled/upstream/ecc/skills/windows-desktop-e2e/SKILL.md +788 -0
  291. package/bundled/upstream/ecc/skills/x-api/SKILL.md +4 -0
  292. package/bundled/upstream/oh-my-claudecode/.omc-source/bundle.json +20 -0
  293. package/bundled/upstream/oh-my-claudecode/agents/analyst.md +2 -1
  294. package/bundled/upstream/oh-my-claudecode/agents/architect.md +2 -1
  295. package/bundled/upstream/oh-my-claudecode/agents/code-reviewer.md +26 -7
  296. package/bundled/upstream/oh-my-claudecode/agents/critic.md +2 -1
  297. package/bundled/upstream/oh-my-claudecode/agents/debugger.md +2 -1
  298. package/bundled/upstream/oh-my-claudecode/agents/designer.md +14 -1
  299. package/bundled/upstream/oh-my-claudecode/agents/document-specialist.md +1 -1
  300. package/bundled/upstream/oh-my-claudecode/agents/executor.md +2 -1
  301. package/bundled/upstream/oh-my-claudecode/agents/explore.md +2 -1
  302. package/bundled/upstream/oh-my-claudecode/agents/git-master.md +2 -1
  303. package/bundled/upstream/oh-my-claudecode/agents/planner.md +2 -1
  304. package/bundled/upstream/oh-my-claudecode/agents/qa-tester.md +2 -1
  305. package/bundled/upstream/oh-my-claudecode/agents/scientist.md +2 -1
  306. package/bundled/upstream/oh-my-claudecode/agents/security-reviewer.md +2 -1
  307. package/bundled/upstream/oh-my-claudecode/agents/test-engineer.md +2 -1
  308. package/bundled/upstream/oh-my-claudecode/agents/tracer.md +2 -1
  309. package/bundled/upstream/oh-my-claudecode/agents/verifier.md +2 -1
  310. package/bundled/upstream/oh-my-claudecode/agents/writer.md +2 -1
  311. package/bundled/upstream/oh-my-claudecode/skills/AGENTS.md +4 -3
  312. package/bundled/upstream/oh-my-claudecode/skills/ai-slop-cleaner/SKILL.md +12 -0
  313. package/bundled/upstream/oh-my-claudecode/skills/deep-dive/SKILL.md +69 -13
  314. package/bundled/upstream/oh-my-claudecode/skills/deep-interview/SKILL.md +176 -63
  315. package/bundled/upstream/oh-my-claudecode/skills/learner/SKILL.md +3 -1
  316. package/bundled/upstream/oh-my-claudecode/skills/omc-doctor/SKILL.md +22 -3
  317. package/bundled/upstream/oh-my-claudecode/skills/omc-reference/SKILL.md +1 -1
  318. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/01-install-claude-md.md +2 -2
  319. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/02-configure.md +45 -2
  320. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/03-integrations.md +46 -5
  321. package/bundled/upstream/oh-my-claudecode/skills/plan/SKILL.md +19 -17
  322. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/config.sh +1 -1
  323. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/parse.sh +1 -1
  324. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/azure-devops.sh +1 -1
  325. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/bitbucket.sh +1 -1
  326. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/gitea.sh +1 -1
  327. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/github.sh +1 -1
  328. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/gitlab.sh +1 -1
  329. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/interface.sh +1 -1
  330. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/jira.sh +1 -1
  331. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/session.sh +1 -1
  332. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/tmux.sh +1 -1
  333. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/worktree.sh +1 -1
  334. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/psm.sh +1 -1
  335. package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/tests/test-psm-prompt-injection.sh +1 -1
  336. package/bundled/upstream/oh-my-claudecode/skills/ralph/SKILL.md +8 -8
  337. package/bundled/upstream/oh-my-claudecode/skills/ralplan/SKILL.md +9 -5
  338. package/bundled/upstream/oh-my-claudecode/skills/skill/SKILL.md +6 -6
  339. package/bundled/upstream/oh-my-claudecode/skills/skillify/SKILL.md +19 -3
  340. package/bundled/upstream/oh-my-claudecode/skills/trace/SKILL.md +3 -1
  341. package/bundled/upstream/oh-my-claudecode/skills/ultrawork/SKILL.md +20 -7
  342. package/bundled/upstream/superpowers/.omc-source/bundle.json +21 -0
  343. package/bundled/upstream/superpowers/hooks/hooks-cursor.json +1 -1
  344. package/bundled/upstream/superpowers/skills/executing-plans/SKILL.md +1 -1
  345. package/bundled/upstream/superpowers/skills/finishing-a-development-branch/SKILL.md +93 -42
  346. package/bundled/upstream/superpowers/skills/requesting-code-review/SKILL.md +7 -9
  347. package/bundled/upstream/superpowers/skills/requesting-code-review/code-reviewer.md +107 -85
  348. package/bundled/upstream/superpowers/skills/subagent-driven-development/SKILL.md +3 -1
  349. package/bundled/upstream/superpowers/skills/subagent-driven-development/code-quality-reviewer-prompt.md +2 -3
  350. package/bundled/upstream/superpowers/skills/systematic-debugging/CREATION-LOG.md +1 -1
  351. package/bundled/upstream/superpowers/skills/systematic-debugging/root-cause-tracing.md +1 -1
  352. package/bundled/upstream/superpowers/skills/using-git-worktrees/SKILL.md +95 -98
  353. package/bundled/upstream/superpowers/skills/using-superpowers/references/codex-tools.md +7 -48
  354. package/bundled/upstream/superpowers/skills/using-superpowers/references/copilot-tools.md +1 -11
  355. package/bundled/upstream/superpowers/skills/using-superpowers/references/gemini-tools.md +21 -3
  356. package/bundled/upstream/superpowers/skills/writing-plans/SKILL.md +1 -1
  357. package/package.json +1 -1
  358. package/src/cli/index.js +1 -0
  359. package/src/cli/setup.js +9 -0
  360. package/src/cli/skill-index.js +209 -0
  361. package/src/cli/skill.js +4 -0
  362. package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/README.md +0 -355
  363. package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/patterns.md +0 -359
  364. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/README.md +0 -297
  365. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/patterns.md +0 -209
  366. package/bundled/upstream/ecc/commands/agent-sort.md +0 -23
  367. package/bundled/upstream/ecc/commands/claw.md +0 -23
  368. package/bundled/upstream/ecc/commands/context-budget.md +0 -23
  369. package/bundled/upstream/ecc/commands/devfleet.md +0 -23
  370. package/bundled/upstream/ecc/commands/docs.md +0 -23
  371. package/bundled/upstream/ecc/commands/e2e.md +0 -268
  372. package/bundled/upstream/ecc/commands/eval.md +0 -23
  373. package/bundled/upstream/ecc/commands/orchestrate.md +0 -135
  374. package/bundled/upstream/ecc/commands/prompt-optimize.md +0 -23
  375. package/bundled/upstream/ecc/commands/rules-distill.md +0 -20
  376. package/bundled/upstream/ecc/commands/tdd.md +0 -231
  377. package/bundled/upstream/ecc/commands/verify.md +0 -23
  378. package/bundled/upstream/ecc/skills/claude-api/SKILL.md +0 -337
  379. package/bundled/upstream/ecc/skills/frontend-design/SKILL.md +0 -145
  380. package/bundled/upstream/superpowers/agents/code-reviewer.md +0 -48
  381. package/bundled/upstream/superpowers/commands/brainstorm.md +0 -5
  382. package/bundled/upstream/superpowers/commands/execute-plan.md +0 -5
  383. package/bundled/upstream/superpowers/commands/write-plan.md +0 -5
@@ -0,0 +1,258 @@
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
+ }
@@ -0,0 +1,235 @@
1
+ #!/bin/bash
2
+ #
3
+ # Generate iOS icon imagesets from Iconify API (275k+ open source icons)
4
+ # Uses: curl (download SVG) + sips (SVG->PNG conversion, built into macOS)
5
+ #
6
+ # Usage:
7
+ # iconify_gen.sh <icon-id> <asset-name> [options]
8
+ # iconify_gen.sh search <query> [--prefix <collection>] [--limit <n>]
9
+ #
10
+ # Examples:
11
+ # iconify_gen.sh mdi:receipt-text-outline myExpenseIcon
12
+ # iconify_gen.sh search "business card"
13
+ # iconify_gen.sh search receipt --prefix mdi
14
+
15
+ set -euo pipefail
16
+
17
+ API_BASE="https://api.iconify.design"
18
+ readonly CURL_OPTS=(--fail --silent --show-error --connect-timeout 10 --max-time 30)
19
+
20
+ # Defaults
21
+ SIZE=68
22
+ COLOR="8E8E93"
23
+ OUTPUT="/tmp/icons"
24
+ LIMIT=20
25
+
26
+ require_value() {
27
+ local flag="$1"
28
+ local value="${2-}"
29
+ if [[ -z "$value" || "$value" == --* ]]; then
30
+ echo "ERROR: ${flag} requires a value" >&2
31
+ exit 1
32
+ fi
33
+ }
34
+
35
+ usage() {
36
+ cat <<'EOF'
37
+ Usage:
38
+ iconify_gen.sh <icon-id> <asset-name> [options] Generate an icon imageset
39
+ iconify_gen.sh search <query> [options] Search for icons
40
+ iconify_gen.sh preview <icon-id> Download preview SVG
41
+ iconify_gen.sh collections List popular icon collections
42
+
43
+ Generate Options:
44
+ --size <pt> Base size in points (default: 68)
45
+ --color <hex> Color hex without # (default: 8E8E93)
46
+ --output <dir> Output directory (default: /tmp/icons)
47
+
48
+ Search Options:
49
+ --prefix <name> Filter by collection (e.g., mdi, lucide, tabler, ph)
50
+ --limit <n> Max results (default: 20)
51
+
52
+ Icon ID Format: <collection>:<icon-name>
53
+ Examples: mdi:receipt-text-outline, lucide:credit-card, ph:address-book
54
+
55
+ Popular Collections:
56
+ mdi Material Design Icons (7400+ icons)
57
+ lucide Lucide (1700+ icons)
58
+ tabler Tabler Icons (6000+ icons)
59
+ ph Phosphor (9000+ icons)
60
+ ri Remix Icon (2800+ icons)
61
+ carbon Carbon (2100+ icons)
62
+ EOF
63
+ exit 0
64
+ }
65
+
66
+ search_icons() {
67
+ local query="$1"
68
+ shift
69
+ local prefix=""
70
+
71
+ while [[ $# -gt 0 ]]; do
72
+ case "$1" in
73
+ --prefix) require_value --prefix "${2-}"; prefix="$2"; shift 2 ;;
74
+ --limit) require_value --limit "${2-}"; LIMIT="$2"; shift 2 ;;
75
+ *) shift ;;
76
+ esac
77
+ done
78
+
79
+ local encoded_query
80
+ encoded_query="$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "$query")"
81
+ local url="${API_BASE}/search?query=${encoded_query}&limit=${LIMIT}"
82
+ if [[ -n "$prefix" ]]; then
83
+ url="${url}&prefix=${prefix}"
84
+ fi
85
+
86
+ local response
87
+ response=$(curl "${CURL_OPTS[@]}" "$url") || { echo "ERROR: Search request failed"; exit 1; }
88
+
89
+ local total
90
+ total=$(echo "$response" | python3 -c "import sys,json; print(json.load(sys.stdin).get('total',0))")
91
+
92
+ echo "Found ${total} icons for '${query}':"
93
+ echo ""
94
+ echo "$response" | python3 -c "
95
+ import sys, json
96
+ data = json.load(sys.stdin)
97
+ for icon in data.get('icons', []):
98
+ print(f' {icon}')
99
+ "
100
+ echo ""
101
+ echo "Generate with: iconify_gen.sh <icon-id> <asset-name>"
102
+ echo "Preview with: iconify_gen.sh preview <icon-id>"
103
+ }
104
+
105
+ list_collections() {
106
+ echo "Popular Iconify collections:"
107
+ echo ""
108
+ local resp
109
+ resp=$(curl "${CURL_OPTS[@]}" "${API_BASE}/collections") || { echo "ERROR: Failed to fetch collections list"; exit 1; }
110
+ echo "$resp" | python3 -c "
111
+ import sys, json
112
+ data = json.load(sys.stdin)
113
+ popular = ['mdi','lucide','tabler','ph','ri','carbon','solar','heroicons','bi','octicon','ion','fe','charm','ci','iconoir','basil','uil','mingcute','flowbite','mynaui']
114
+ for k in popular:
115
+ if k in data:
116
+ v = data[k]
117
+ name = v.get('name','')
118
+ total = v.get('total',0)
119
+ print(f' {k:12s} {name} ({total} icons)')
120
+ "
121
+ echo ""
122
+ echo "Full list: https://icon-sets.iconify.design/"
123
+ }
124
+
125
+ preview_icon() {
126
+ local icon_id="$1"
127
+ local collection="${icon_id%%:*}"
128
+ local name="${icon_id#*:}"
129
+ local url="${API_BASE}/${collection}/${name}.svg?width=136&height=136&color=%23${COLOR}"
130
+ local outfile="/tmp/iconify_preview_${collection}_${name}.svg"
131
+
132
+ curl "${CURL_OPTS[@]}" "$url" -o "$outfile" || { echo "ERROR: Icon '${icon_id}' not found"; exit 1; }
133
+ echo "Preview SVG: ${outfile}"
134
+ echo "URL: ${url}"
135
+
136
+ # Also convert to PNG for visual check
137
+ local pngfile="/tmp/iconify_preview_${collection}_${name}.png"
138
+ sips -s format png "$outfile" --out "$pngfile" >/dev/null 2>&1 || echo "WARNING: sips conversion failed; PNG may be incorrect"
139
+ echo "Preview PNG: ${pngfile}"
140
+ }
141
+
142
+ generate_icon() {
143
+ local icon_id="$1"
144
+ local asset_name="$2"
145
+ shift 2
146
+
147
+ while [[ $# -gt 0 ]]; do
148
+ case "$1" in
149
+ --size) require_value --size "${2-}"; SIZE="$2"; shift 2 ;;
150
+ --color) require_value --color "${2-}"; COLOR="$2"; shift 2 ;;
151
+ --output) require_value --output "${2-}"; OUTPUT="$2"; shift 2 ;;
152
+ *) shift ;;
153
+ esac
154
+ done
155
+
156
+ local collection="${icon_id%%:*}"
157
+ local name="${icon_id#*:}"
158
+ local imageset_dir="${OUTPUT}/${asset_name}.imageset"
159
+
160
+ mkdir -p "$imageset_dir"
161
+
162
+ echo "Generating ${asset_name} from Iconify '${icon_id}':"
163
+
164
+ local scales=("1:${SIZE}" "2:$((SIZE * 2))" "3:$((SIZE * 3))")
165
+
166
+ for scale_info in "${scales[@]}"; do
167
+ local scale="${scale_info%%:*}"
168
+ local px="${scale_info#*:}"
169
+ local suffix=""
170
+ [[ "$scale" != "1" ]] && suffix="@${scale}x"
171
+
172
+ local svg_url="${API_BASE}/${collection}/${name}.svg?width=${px}&height=${px}&color=%23${COLOR}"
173
+ local svg_file="${imageset_dir}/${asset_name}${suffix}.svg"
174
+ local png_file="${imageset_dir}/${asset_name}${suffix}.png"
175
+
176
+ curl "${CURL_OPTS[@]}" "$svg_url" -o "$svg_file" || { echo "ERROR: Failed to download icon '${icon_id}'"; exit 1; }
177
+ sips -s format png "$svg_file" --out "$png_file" >/dev/null 2>&1 || echo "WARNING: sips conversion may have failed for ${svg_file}"
178
+ rm "$svg_file"
179
+
180
+ echo " ${asset_name}${suffix}.png (${px}x${px})"
181
+ done
182
+
183
+ # Write Contents.json
184
+ cat > "${imageset_dir}/Contents.json" <<JSONEOF
185
+ {
186
+ "images" : [
187
+ {
188
+ "filename" : "${asset_name}.png",
189
+ "idiom" : "universal",
190
+ "scale" : "1x"
191
+ },
192
+ {
193
+ "filename" : "${asset_name}@2x.png",
194
+ "idiom" : "universal",
195
+ "scale" : "2x"
196
+ },
197
+ {
198
+ "filename" : "${asset_name}@3x.png",
199
+ "idiom" : "universal",
200
+ "scale" : "3x"
201
+ }
202
+ ],
203
+ "info" : {
204
+ "author" : "xcode",
205
+ "version" : 1
206
+ }
207
+ }
208
+ JSONEOF
209
+
210
+ echo "Output: ${imageset_dir}/"
211
+ }
212
+
213
+ # Main
214
+ [[ $# -eq 0 ]] && usage
215
+ [[ "$1" == "--help" || "$1" == "-h" ]] && usage
216
+
217
+ case "$1" in
218
+ search)
219
+ shift
220
+ [[ $# -eq 0 ]] && { echo "Usage: iconify_gen.sh search <query>"; exit 1; }
221
+ search_icons "$@"
222
+ ;;
223
+ preview)
224
+ shift
225
+ [[ $# -eq 0 ]] && { echo "Usage: iconify_gen.sh preview <icon-id>"; exit 1; }
226
+ preview_icon "$1"
227
+ ;;
228
+ collections)
229
+ list_collections
230
+ ;;
231
+ *)
232
+ [[ $# -lt 2 ]] && { echo "Usage: iconify_gen.sh <icon-id> <asset-name> [options]"; exit 1; }
233
+ generate_icon "$@"
234
+ ;;
235
+ esac