@kortix/sandbox 0.4.1

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 (246) hide show
  1. package/config/customize.sh +143 -0
  2. package/config/kortix-env-setup.sh +25 -0
  3. package/kortix-master/package.json +22 -0
  4. package/kortix-master/src/config.ts +22 -0
  5. package/kortix-master/src/index.ts +44 -0
  6. package/kortix-master/src/routes/env.ts +65 -0
  7. package/kortix-master/src/routes/proxy.ts +108 -0
  8. package/kortix-master/src/routes/update.ts +185 -0
  9. package/kortix-master/src/services/proxy.ts +43 -0
  10. package/kortix-master/src/services/secret-store.ts +156 -0
  11. package/kortix-master/tsconfig.json +14 -0
  12. package/opencode/agents/kortix-browser.md +142 -0
  13. package/opencode/agents/kortix-build.md +62 -0
  14. package/opencode/agents/kortix-explore.md +66 -0
  15. package/opencode/agents/kortix-image-gen.md +33 -0
  16. package/opencode/agents/kortix-main.md +450 -0
  17. package/opencode/agents/kortix-plan.md +100 -0
  18. package/opencode/agents/kortix-research.md +84 -0
  19. package/opencode/agents/kortix-sheets.md +61 -0
  20. package/opencode/agents/kortix-slides.md +64 -0
  21. package/opencode/agents/kortix-web-dev.md +572 -0
  22. package/opencode/commands/email.md +36 -0
  23. package/opencode/commands/init.md +43 -0
  24. package/opencode/commands/journal.md +44 -0
  25. package/opencode/commands/memory-init.md +81 -0
  26. package/opencode/commands/memory-search.md +50 -0
  27. package/opencode/commands/memory-status.md +56 -0
  28. package/opencode/commands/research.md +36 -0
  29. package/opencode/commands/search.md +38 -0
  30. package/opencode/commands/slides.md +32 -0
  31. package/opencode/commands/spreadsheet.md +30 -0
  32. package/opencode/memory.json +37 -0
  33. package/opencode/ocx.jsonc +10 -0
  34. package/opencode/opencode.jsonc +103 -0
  35. package/opencode/package.json +25 -0
  36. package/opencode/patches/apply.sh +19 -0
  37. package/opencode/patches/opencode-pty-spawn.txt +49 -0
  38. package/opencode/plugin/background-agents.ts.disabled +483 -0
  39. package/opencode/plugin/kdco-primitives/get-project-id.ts +172 -0
  40. package/opencode/plugin/kdco-primitives/index.ts +26 -0
  41. package/opencode/plugin/kdco-primitives/log-warn.ts +51 -0
  42. package/opencode/plugin/kdco-primitives/mutex.ts +122 -0
  43. package/opencode/plugin/kdco-primitives/shell.ts +138 -0
  44. package/opencode/plugin/kdco-primitives/temp.ts +36 -0
  45. package/opencode/plugin/kdco-primitives/terminal-detect.ts +34 -0
  46. package/opencode/plugin/kdco-primitives/types.ts +13 -0
  47. package/opencode/plugin/kdco-primitives/with-timeout.ts +84 -0
  48. package/opencode/plugin/memory.ts +306 -0
  49. package/opencode/plugin/worktree/state.ts +412 -0
  50. package/opencode/plugin/worktree/terminal.ts +1002 -0
  51. package/opencode/plugin/worktree.ts +861 -0
  52. package/opencode/skills/KORTIX-browser/SKILL.md +478 -0
  53. package/opencode/skills/KORTIX-cron-triggers/SKILL.md +173 -0
  54. package/opencode/skills/KORTIX-deep-research/SKILL.md +278 -0
  55. package/opencode/skills/KORTIX-docx/SKILL.md +398 -0
  56. package/opencode/skills/KORTIX-docx/scripts/__init__.py +1 -0
  57. package/opencode/skills/KORTIX-docx/scripts/accept_changes.py +104 -0
  58. package/opencode/skills/KORTIX-docx/scripts/comment.py +244 -0
  59. package/opencode/skills/KORTIX-docx/scripts/office/helpers/__init__.py +0 -0
  60. package/opencode/skills/KORTIX-docx/scripts/office/helpers/merge_runs.py +199 -0
  61. package/opencode/skills/KORTIX-docx/scripts/office/helpers/simplify_redlines.py +197 -0
  62. package/opencode/skills/KORTIX-docx/scripts/office/pack.py +159 -0
  63. package/opencode/skills/KORTIX-docx/scripts/office/soffice.py +183 -0
  64. package/opencode/skills/KORTIX-docx/scripts/office/unpack.py +132 -0
  65. package/opencode/skills/KORTIX-docx/scripts/office/validate.py +111 -0
  66. package/opencode/skills/KORTIX-docx/scripts/office/validators/__init__.py +15 -0
  67. package/opencode/skills/KORTIX-docx/scripts/office/validators/base.py +847 -0
  68. package/opencode/skills/KORTIX-docx/scripts/office/validators/docx.py +446 -0
  69. package/opencode/skills/KORTIX-docx/scripts/office/validators/pptx.py +275 -0
  70. package/opencode/skills/KORTIX-docx/scripts/office/validators/redlining.py +247 -0
  71. package/opencode/skills/KORTIX-docx/scripts/render_docx.py +179 -0
  72. package/opencode/skills/KORTIX-docx/scripts/templates/comments.xml +3 -0
  73. package/opencode/skills/KORTIX-docx/scripts/templates/commentsExtended.xml +3 -0
  74. package/opencode/skills/KORTIX-docx/scripts/templates/commentsExtensible.xml +3 -0
  75. package/opencode/skills/KORTIX-docx/scripts/templates/commentsIds.xml +3 -0
  76. package/opencode/skills/KORTIX-docx/scripts/templates/people.xml +3 -0
  77. package/opencode/skills/KORTIX-domain-research/SKILL.md +96 -0
  78. package/opencode/skills/KORTIX-domain-research/scripts/domain-lookup.py +810 -0
  79. package/opencode/skills/KORTIX-elevenlabs/SKILL.md +230 -0
  80. package/opencode/skills/KORTIX-elevenlabs/scripts/tts.py +389 -0
  81. package/opencode/skills/KORTIX-email/SKILL.md +145 -0
  82. package/opencode/skills/KORTIX-legal-writer/SKILL.md +409 -0
  83. package/opencode/skills/KORTIX-legal-writer/references/bluebook.md +152 -0
  84. package/opencode/skills/KORTIX-legal-writer/references/document-types.md +416 -0
  85. package/opencode/skills/KORTIX-legal-writer/scripts/courtlistener.py +291 -0
  86. package/opencode/skills/KORTIX-legal-writer/scripts/ecfr_lookup.py +299 -0
  87. package/opencode/skills/KORTIX-legal-writer/scripts/verify-legal.py +507 -0
  88. package/opencode/skills/KORTIX-logo-creator/SKILL.md +293 -0
  89. package/opencode/skills/KORTIX-logo-creator/references/prompt-patterns.md +134 -0
  90. package/opencode/skills/KORTIX-logo-creator/scripts/compose_logo.py +406 -0
  91. package/opencode/skills/KORTIX-logo-creator/scripts/create_logo_sheet.py +258 -0
  92. package/opencode/skills/KORTIX-logo-creator/scripts/remove_bg.py +96 -0
  93. package/opencode/skills/KORTIX-memory/SKILL.md +261 -0
  94. package/opencode/skills/KORTIX-memory/scripts/export-sessions.py +409 -0
  95. package/opencode/skills/KORTIX-paper-creator/SKILL.md +549 -0
  96. package/opencode/skills/KORTIX-paper-creator/assets/template.tex +101 -0
  97. package/opencode/skills/KORTIX-paper-creator/scripts/compile.sh +177 -0
  98. package/opencode/skills/KORTIX-paper-creator/scripts/openalex_to_bibtex.py +220 -0
  99. package/opencode/skills/KORTIX-paper-creator/scripts/verify.sh +354 -0
  100. package/opencode/skills/KORTIX-paper-search/SKILL.md +418 -0
  101. package/opencode/skills/KORTIX-pdf/SKILL.md +232 -0
  102. package/opencode/skills/KORTIX-pdf/forms.md +36 -0
  103. package/opencode/skills/KORTIX-pdf/reference.md +105 -0
  104. package/opencode/skills/KORTIX-pdf/scripts/check_bounding_boxes.py +65 -0
  105. package/opencode/skills/KORTIX-pdf/scripts/check_fillable_fields.py +11 -0
  106. package/opencode/skills/KORTIX-pdf/scripts/convert_pdf_to_images.py +33 -0
  107. package/opencode/skills/KORTIX-pdf/scripts/create_validation_image.py +37 -0
  108. package/opencode/skills/KORTIX-pdf/scripts/extract_form_field_info.py +122 -0
  109. package/opencode/skills/KORTIX-pdf/scripts/extract_form_structure.py +115 -0
  110. package/opencode/skills/KORTIX-pdf/scripts/fill_fillable_fields.py +98 -0
  111. package/opencode/skills/KORTIX-pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  112. package/opencode/skills/KORTIX-plan/SKILL.md +228 -0
  113. package/opencode/skills/KORTIX-presentation-viewer/SKILL.md +87 -0
  114. package/opencode/skills/KORTIX-presentation-viewer/serve.ts +136 -0
  115. package/opencode/skills/KORTIX-presentation-viewer/viewer.html +559 -0
  116. package/opencode/skills/KORTIX-presentations/SKILL.md +344 -0
  117. package/opencode/skills/KORTIX-remotion/SKILL.md +56 -0
  118. package/opencode/skills/KORTIX-remotion/rules/3d.md +86 -0
  119. package/opencode/skills/KORTIX-remotion/rules/animations.md +29 -0
  120. package/opencode/skills/KORTIX-remotion/rules/assets.md +78 -0
  121. package/opencode/skills/KORTIX-remotion/rules/audio-visualization.md +198 -0
  122. package/opencode/skills/KORTIX-remotion/rules/audio.md +169 -0
  123. package/opencode/skills/KORTIX-remotion/rules/calculate-metadata.md +104 -0
  124. package/opencode/skills/KORTIX-remotion/rules/can-decode.md +75 -0
  125. package/opencode/skills/KORTIX-remotion/rules/charts.md +120 -0
  126. package/opencode/skills/KORTIX-remotion/rules/compositions.md +141 -0
  127. package/opencode/skills/KORTIX-remotion/rules/display-captions.md +184 -0
  128. package/opencode/skills/KORTIX-remotion/rules/extract-frames.md +229 -0
  129. package/opencode/skills/KORTIX-remotion/rules/ffmpeg.md +38 -0
  130. package/opencode/skills/KORTIX-remotion/rules/fonts.md +152 -0
  131. package/opencode/skills/KORTIX-remotion/rules/get-audio-duration.md +58 -0
  132. package/opencode/skills/KORTIX-remotion/rules/get-video-dimensions.md +68 -0
  133. package/opencode/skills/KORTIX-remotion/rules/get-video-duration.md +58 -0
  134. package/opencode/skills/KORTIX-remotion/rules/gifs.md +141 -0
  135. package/opencode/skills/KORTIX-remotion/rules/images.md +130 -0
  136. package/opencode/skills/KORTIX-remotion/rules/import-srt-captions.md +69 -0
  137. package/opencode/skills/KORTIX-remotion/rules/light-leaks.md +73 -0
  138. package/opencode/skills/KORTIX-remotion/rules/lottie.md +68 -0
  139. package/opencode/skills/KORTIX-remotion/rules/maps.md +401 -0
  140. package/opencode/skills/KORTIX-remotion/rules/measuring-dom-nodes.md +35 -0
  141. package/opencode/skills/KORTIX-remotion/rules/measuring-text.md +143 -0
  142. package/opencode/skills/KORTIX-remotion/rules/parameters.md +98 -0
  143. package/opencode/skills/KORTIX-remotion/rules/sequencing.md +118 -0
  144. package/opencode/skills/KORTIX-remotion/rules/subtitles.md +36 -0
  145. package/opencode/skills/KORTIX-remotion/rules/tailwind.md +11 -0
  146. package/opencode/skills/KORTIX-remotion/rules/text-animations.md +20 -0
  147. package/opencode/skills/KORTIX-remotion/rules/timing.md +179 -0
  148. package/opencode/skills/KORTIX-remotion/rules/transcribe-captions.md +70 -0
  149. package/opencode/skills/KORTIX-remotion/rules/transitions.md +197 -0
  150. package/opencode/skills/KORTIX-remotion/rules/transparent-videos.md +106 -0
  151. package/opencode/skills/KORTIX-remotion/rules/trimming.md +53 -0
  152. package/opencode/skills/KORTIX-remotion/rules/videos.md +171 -0
  153. package/opencode/skills/KORTIX-secrets/SKILL.md +280 -0
  154. package/opencode/skills/KORTIX-semantic-search/SKILL.md +213 -0
  155. package/opencode/skills/KORTIX-session-search/SKILL.md +807 -0
  156. package/opencode/skills/KORTIX-session-search/Untitled +1 -0
  157. package/opencode/skills/KORTIX-skill-creator/SKILL.md +163 -0
  158. package/opencode/skills/KORTIX-web-research/SKILL.md +69 -0
  159. package/opencode/skills/KORTIX-xlsx/LICENSE.txt +30 -0
  160. package/opencode/skills/KORTIX-xlsx/SKILL.md +549 -0
  161. package/opencode/skills/KORTIX-xlsx/scripts/office/helpers/__init__.py +0 -0
  162. package/opencode/skills/KORTIX-xlsx/scripts/office/helpers/merge_runs.py +199 -0
  163. package/opencode/skills/KORTIX-xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  164. package/opencode/skills/KORTIX-xlsx/scripts/office/pack.py +159 -0
  165. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  166. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  167. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  168. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  169. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  170. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  171. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  172. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  173. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  174. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  175. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  176. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  177. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  178. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  179. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  180. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  181. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  182. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  183. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  184. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  185. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  186. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  187. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  188. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  189. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  190. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  191. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  192. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  193. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  194. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  195. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  196. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  197. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  198. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  199. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  200. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  201. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  202. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  203. package/opencode/skills/KORTIX-xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  204. package/opencode/skills/KORTIX-xlsx/scripts/office/soffice.py +183 -0
  205. package/opencode/skills/KORTIX-xlsx/scripts/office/unpack.py +132 -0
  206. package/opencode/skills/KORTIX-xlsx/scripts/office/validate.py +111 -0
  207. package/opencode/skills/KORTIX-xlsx/scripts/office/validators/__init__.py +15 -0
  208. package/opencode/skills/KORTIX-xlsx/scripts/office/validators/base.py +847 -0
  209. package/opencode/skills/KORTIX-xlsx/scripts/office/validators/docx.py +446 -0
  210. package/opencode/skills/KORTIX-xlsx/scripts/office/validators/pptx.py +275 -0
  211. package/opencode/skills/KORTIX-xlsx/scripts/office/validators/redlining.py +247 -0
  212. package/opencode/skills/KORTIX-xlsx/scripts/recalc.py +184 -0
  213. package/opencode/tools/image-gen.ts +342 -0
  214. package/opencode/tools/image-search.ts +190 -0
  215. package/opencode/tools/memory-get.ts +168 -0
  216. package/opencode/tools/memory-search.ts +247 -0
  217. package/opencode/tools/presentation-gen.ts +723 -0
  218. package/opencode/tools/scrape-webpage.ts +115 -0
  219. package/opencode/tools/scripts/.python-version +1 -0
  220. package/opencode/tools/scripts/convert_pdf.py +184 -0
  221. package/opencode/tools/scripts/convert_pptx.py +562 -0
  222. package/opencode/tools/scripts/pyproject.toml +11 -0
  223. package/opencode/tools/scripts/uv.lock +287 -0
  224. package/opencode/tools/scripts/validate_slide.py +74 -0
  225. package/opencode/tools/show-user.ts +217 -0
  226. package/opencode/tools/tests/e2e-presentation-fix.ts +277 -0
  227. package/opencode/tools/tests/image-gen.test.ts +215 -0
  228. package/opencode/tools/tests/image-search.test.ts +125 -0
  229. package/opencode/tools/tests/memory-system-benchmark.ts +1076 -0
  230. package/opencode/tools/tests/presentation-gen.test.ts +389 -0
  231. package/opencode/tools/tests/scrape-webpage.test.ts +74 -0
  232. package/opencode/tools/tests/show-user.test.ts +241 -0
  233. package/opencode/tools/tests/video-gen.test.ts +110 -0
  234. package/opencode/tools/tests/web-search.test.ts +106 -0
  235. package/opencode/tools/video-gen.ts +200 -0
  236. package/opencode/tools/web-search.ts +153 -0
  237. package/opencode/tsconfig.json +29 -0
  238. package/package.json +36 -0
  239. package/patch-agent-browser.js +100 -0
  240. package/postinstall.sh +88 -0
  241. package/services/KORTIX-presentation-viewer/run +37 -0
  242. package/services/agent-browser-viewer/run +48 -0
  243. package/services/kortix-master/run +16 -0
  244. package/services/lss-sync/run +22 -0
  245. package/services/opencode-serve/run +25 -0
  246. package/services/opencode-web/run +21 -0
@@ -0,0 +1,293 @@
1
+ ---
2
+ name: kortix-logo-creator
3
+ description: "Create professional logos through an intelligent, iterative design process. Use this skill when the user wants to create a logo, icon, favicon, brand mark, wordmark, or any visual brand identity mark. Triggers on: 'create a logo', 'design a logo', 'make me a logo', 'logo for my brand', 'I need a logo', 'brand mark', 'wordmark', 'logomark', 'icon design', 'favicon'. This is NOT a one-shot image generator — it researches, strategizes, generates symbols with AI, visually inspects every output, then programmatically composes them with real Google Fonts typography into complete logo systems (logomark, wordmark, combination marks in multiple layouts)."
4
+ ---
5
+
6
+ # Logo Creator — Intelligent Logo Design Skill
7
+
8
+ You are now a logo designer. Not an image generator — a designer. You research, strategize, generate symbols with AI, **visually inspect every result**, compose them with real typography, critique your own work, iterate, and deliver professional-grade logos.
9
+
10
+ ---
11
+
12
+ ## Core Philosophy
13
+
14
+ 1. **Research before generating.** Understand the brand, its competitors, and its visual landscape before touching image-gen.
15
+ 2. **Symbols from AI, text from fonts.** Generate symbols/icons with image-gen. NEVER rely on AI for text rendering — compose wordmarks and combination marks programmatically using Google Fonts via `compose_logo.py`.
16
+ 3. **LOOK at every image.** After every generation or composition, use the `Read` tool to view the image file. Describe what you see. Judge it. This is non-negotiable — you cannot critique what you haven't seen.
17
+ 4. **Iterate with purpose.** Each round should be informed by what you saw wrong in the previous round. Not re-rolling dice.
18
+ 5. **Monochrome first.** A logo that doesn't work in black and white doesn't work.
19
+
20
+ ---
21
+
22
+ ## Available Tools
23
+
24
+ - **`image-gen`** — Generate symbols (`generate`), remove backgrounds (`remove_bg` via BRIA RMBG 2.0), upscale (`upscale`). Always specify `output_dir`.
25
+ - **`image-search`** — Search Google Images for competitor logos, visual references. Batch with `|||`.
26
+ - **`web-search`** — Research the brand, industry, competitors. Batch with `|||`.
27
+ - **`Read` tool** — **CRITICAL.** Use to view every generated/composed image. This is how you see and judge your own work.
28
+ - **Bash** — Run scripts:
29
+ - `scripts/compose_logo.py` — Combine symbol + Google Font text into all logo layouts
30
+ - `scripts/create_logo_sheet.py` — Build HTML contact sheet for visual comparison
31
+ - `scripts/remove_bg.py` — Local background removal fallback (if `image-gen remove_bg` produces artifacts)
32
+
33
+ ---
34
+
35
+ ## Visual Critique Process
36
+
37
+ **This is the most important part of the skill.** After EVERY image operation (generation, composition, background removal), you MUST:
38
+
39
+ 1. **Read the image** using the `Read` tool on the output file path
40
+ 2. **Describe what you see** in 1-2 sentences (to yourself, not to the user)
41
+ 3. **Run the checklist** against what you see
42
+ 4. **Decide: keep, regenerate, or adjust**
43
+
44
+ ### After generating a symbol:
45
+ ```
46
+ Read("logos/brand/round-1/logomark-concept-name.webp")
47
+ → "I see a hexagonal shape with an arrow motif, centered on white. Clean lines, no text. Good."
48
+ → KEEP
49
+ ```
50
+ ```
51
+ Read("logos/brand/round-1/logomark-abstract-wave.webp")
52
+ → "This has random text 'LOGO' burned into the image and the shape is off-center with gradient effects."
53
+ → REJECT — regenerate with stronger 'no text, no gradients' anchors
54
+ ```
55
+
56
+ ### After removing a background:
57
+ ```
58
+ Read("logos/brand/round-1/symbol-transparent.png")
59
+ → "Background is removed but there are gray halos around the edges of the hexagon."
60
+ → REJECT — re-run with local fallback: python3 scripts/remove_bg.py input.webp output.png
61
+ ```
62
+
63
+ ### After composing:
64
+ ```
65
+ Read("logos/brand/composed/brand-combo-horizontal.png")
66
+ → "Symbol and text are well-balanced. Font loads correctly, spacing looks good. The symbol reads clearly at this size."
67
+ → KEEP
68
+ ```
69
+
70
+ **Never skip the Read step.** If you didn't look at it, you don't know if it's good.
71
+
72
+ ---
73
+
74
+ ## Background Removal
75
+
76
+ The `image-gen` tool uses BRIA RMBG 2.0 for background removal. It's good but not perfect — especially on logo symbols it can leave halos or eat into thin lines.
77
+
78
+ **Primary method:** `image-gen` with `action: "remove_bg"`
79
+
80
+ **If the result has artifacts** (gray halos, jagged edges, eaten details), use the local fallback:
81
+ ```bash
82
+ pip install rembg pillow onnxruntime # first time only
83
+ python3 .opencode/skills/KORTIX-logo-creator/scripts/remove_bg.py \
84
+ logos/<brand>/round-1/symbol.webp \
85
+ logos/<brand>/round-1/symbol-transparent.png
86
+ ```
87
+
88
+ **After either method:** Always `Read` the transparent PNG to check for artifacts. If both methods produce poor results, the `compose_logo.py` auto-crop can work with the original white-background image — it crops whitespace using pixel analysis instead of AI.
89
+
90
+ ---
91
+
92
+ ## Output Structure
93
+
94
+ ```
95
+ logos/<brand-name>/
96
+ round-1/ # AI-generated symbols
97
+ logomark-*.webp
98
+ logomark-*-transparent.png
99
+ composed/ # Programmatically composed logos
100
+ <brand>-logomark.png
101
+ <brand>-wordmark.png
102
+ <brand>-wordmark-tagline.png
103
+ <brand>-combo-horizontal.png
104
+ <brand>-combo-vertical.png
105
+ <brand>-combo-icon-right.png
106
+ sheet.html
107
+ final/ # Approved logos (with transparent versions)
108
+ ```
109
+
110
+ ---
111
+
112
+ ## Workflow
113
+
114
+ ### Phase 1: Brand Discovery
115
+
116
+ **Goal:** Understand what this logo needs to communicate.
117
+
118
+ 1. **Extract from user message:** brand name, what it does, any preferences.
119
+ 2. **If critical info is missing, ask — max 3 focused questions.**
120
+ 3. **If user gave enough context, proceed without asking.**
121
+ 4. **Research the landscape** — batch search:
122
+ - `web-search`: `"[brand name]" company`, `[industry] brand identity trends 2025`
123
+ - `image-search`: `[competitor1] logo`, `[competitor2] logo`, `[industry] logo design`
124
+ 5. **Synthesize internally:**
125
+ - Brand personality (2-3 adjectives)
126
+ - Visual directions to explore
127
+ - Colors to try later (start B&W)
128
+ - What to avoid (competitor similarities)
129
+ - 2-3 concept directions with different metaphors/symbols
130
+ 6. **Pick a Google Font** for the brand personality:
131
+ - `Space Grotesk` — modern tech, geometric
132
+ - `Inter` — clean, versatile, startup
133
+ - `Playfair Display` — elegant, editorial, luxury
134
+ - `DM Sans` — friendly, approachable, SaaS
135
+ - `Outfit` — contemporary, balanced
136
+ - `Sora` — futuristic, geometric
137
+ - `Libre Baskerville` — traditional, trustworthy
138
+ - `Rubik` — rounded, playful, consumer
139
+ - Or any other Google Font that fits
140
+
141
+ ### Phase 2: Symbol Generation
142
+
143
+ **Goal:** Create the core symbol/icon.
144
+
145
+ 1. **Read `references/prompt-patterns.md`** for prompt formulas and universal anchors.
146
+ 2. **Generate 4-6 symbol variations** using `image-gen`:
147
+ - Use the logomark prompt pattern from the reference
148
+ - Vary the CONCEPT across generations (different metaphors), not just style
149
+ - Start monochrome: `Using only black (#000000). Monochrome design.`
150
+ - Output to `logos/<brand-name>/round-1/`
151
+ 3. **VIEW EVERY RESULT with Read.** For each generated image:
152
+ - `Read("logos/<brand>/round-1/<filename>.webp")`
153
+ - Describe what you see: shape, composition, cleanliness, any artifacts
154
+ - Run the self-critique checklist (see below)
155
+ - **If it fails 2+ criteria: regenerate with adjusted prompt.** Note what went wrong and fix it in the next prompt.
156
+ - **If it passes: keep it and note what works well.**
157
+ 4. **Remove backgrounds** on the best 2-3 symbols:
158
+ - `image-gen` with `action: "remove_bg"`
159
+ - **Read the transparent PNG to check for halos/artifacts**
160
+ - If bad: re-run with `scripts/remove_bg.py` (local fallback)
161
+ 5. **Build contact sheet, open it, and give the user the path:**
162
+ ```bash
163
+ python3 .opencode/skills/KORTIX-logo-creator/scripts/create_logo_sheet.py \
164
+ logos/<brand-name>/round-1/ \
165
+ logos/<brand-name>/round-1/sheet.html \
166
+ --title "<Brand> Symbols — Round 1" && \
167
+ open logos/<brand-name>/round-1/sheet.html
168
+ ```
169
+ Tell the user: "The interactive contact sheet is at `logos/<brand>/round-1/sheet.html` — you can toggle light/dark backgrounds and zoom into each symbol."
170
+ 6. **Ask user:** Which direction(s) do you like? What to change?
171
+
172
+ ### Phase 3: Composition
173
+
174
+ **Goal:** Combine approved symbol + real typography into complete logo layouts.
175
+
176
+ ```bash
177
+ python3 .opencode/skills/KORTIX-logo-creator/scripts/compose_logo.py \
178
+ --brand "BrandName" \
179
+ --symbol "logos/<brand>/round-1/symbol-transparent.png" \
180
+ --output-dir "logos/<brand>/composed/" \
181
+ --font "Space Grotesk" \
182
+ --weight 700 \
183
+ --color "#1a1a2e" \
184
+ --tagline "Optional tagline" \
185
+ --layouts all
186
+ ```
187
+
188
+ Produces 6 layouts: logomark, wordmark, wordmark-tagline, combo-horizontal, combo-vertical, combo-icon-right.
189
+
190
+ **After composing — READ every output:**
191
+ - `Read("logos/<brand>/composed/<brand>-combo-horizontal.png")` — check symbol-text balance
192
+ - `Read("logos/<brand>/composed/<brand>-combo-vertical.png")` — check nothing clips
193
+ - `Read("logos/<brand>/composed/<brand>-wordmark.png")` — check font rendered correctly
194
+
195
+ If anything looks wrong (font didn't load, proportions off, text clipped), re-run with adjusted parameters.
196
+
197
+ **Build contact sheet, open it, and tell the user:**
198
+ ```bash
199
+ python3 .opencode/skills/KORTIX-logo-creator/scripts/create_logo_sheet.py \
200
+ logos/<brand>/composed/ \
201
+ logos/<brand>/composed/sheet.html \
202
+ --title "<Brand> — Compositions" --cols 2 && \
203
+ open logos/<brand>/composed/sheet.html
204
+ ```
205
+ Tell the user: "All compositions are at `logos/<brand>/composed/sheet.html` — the contact sheet lets you compare all layouts side by side with light/dark background toggles."
206
+
207
+ ### Phase 4: Iterate & Refine
208
+
209
+ Possible refinements:
210
+ - **Different font** — try another Google Font family
211
+ - **Different weight** — 400 for elegance, 800+ for boldness
212
+ - **Color** — `--color "#2563eb"` for brand color
213
+ - **Letter spacing** — `-0.01em` tighter, `0.05em` more open
214
+ - **Uppercase** — `--text-transform uppercase`
215
+ - **Different symbol** — generate new ones if concept is wrong
216
+ - **Dark mode** — `--bg "#1a1a2e" --color "#ffffff"`
217
+
218
+ Each iteration = adjust parameters → re-run compose → **Read to verify** → rebuild contact sheet.
219
+
220
+ **Max 3 rounds.** If stuck, rethink the concept.
221
+
222
+ ### Phase 5: Finalize & Deliver
223
+
224
+ 1. **Transparent versions** of approved compositions:
225
+ - `image-gen` `remove_bg` on final PNGs
226
+ - **Read to verify** clean edges
227
+ - Fallback to `scripts/remove_bg.py` if needed
228
+ 2. **Dark-mode versions** if useful
229
+ 3. **Build and open final contact sheet:**
230
+ ```bash
231
+ python3 .opencode/skills/KORTIX-logo-creator/scripts/create_logo_sheet.py \
232
+ logos/<brand>/final/ logos/<brand>/final/sheet.html \
233
+ --title "<Brand> — Final Logo Package" --cols 2 && \
234
+ open logos/<brand>/final/sheet.html
235
+ ```
236
+ 4. **Present to user with explicit paths:**
237
+ - List all files in `logos/<brand>/final/` with what each one is (logomark, wordmark, combo, etc.)
238
+ - Tell user: "The interactive contact sheet is at `logos/<brand>/final/sheet.html`"
239
+ - Note the Google Font used so they can use it in their own materials
240
+ - Suggest next steps (test at small sizes, create social media profiles, etc.)
241
+
242
+ ---
243
+
244
+ ## compose_logo.py Reference
245
+
246
+ | Flag | Default | Description |
247
+ |---|---|---|
248
+ | `--brand` | required | Brand name (rendered as text) |
249
+ | `--symbol` | optional | Path to symbol image |
250
+ | `--output-dir` | `logos/composed/` | Where to save outputs |
251
+ | `--font` | `Inter` | Google Font family name |
252
+ | `--weight` | `700` | Font weight (100-900) |
253
+ | `--color` | `#000000` | Text color |
254
+ | `--bg` | `#ffffff` | Background color |
255
+ | `--tagline` | empty | Optional tagline text |
256
+ | `--letter-spacing` | `0.02em` | CSS letter-spacing |
257
+ | `--text-transform` | `none` | `none`, `uppercase`, `lowercase` |
258
+ | `--layouts` | `all` | Comma-separated or `all` |
259
+
260
+ Also accepts a JSON config file as first positional argument.
261
+
262
+ Features: auto-crops symbol whitespace, loads Google Fonts live via Playwright, single browser instance, transparent PNG support.
263
+
264
+ ---
265
+
266
+ ## Self-Critique Checklist
267
+
268
+ Run against what you SEE (via Read) after EVERY generated image. Discard and regenerate if 2+ fail:
269
+
270
+ - [ ] **Centered?** Design is centered in frame, not drifting
271
+ - [ ] **Clean background?** Solid white, no noise or gray patches
272
+ - [ ] **Simple enough?** Could be recognized at 32x32 pixels
273
+ - [ ] **No unwanted text?** No random letters, words, or watermarks
274
+ - [ ] **Scalable?** No fine detail that vanishes small
275
+ - [ ] **Professional?** Looks like a real product's logo, not clip art
276
+ - [ ] **Unique?** Doesn't obviously copy a well-known logo
277
+ - [ ] **On-brand?** Communicates the intended personality
278
+ - [ ] **Clean edges?** (after remove_bg) No halos, no eaten lines, no gray fringe
279
+
280
+ ---
281
+
282
+ ## Rules
283
+
284
+ 1. **ALWAYS Read images after generating/composing.** No blind trust. Look at your work.
285
+ 2. **ALWAYS give the user file paths and open contact sheets.** After building a contact sheet, run `open <path>` AND tell the user the path. Never just say "here are your logos" without showing where they are.
286
+ 3. **Never present more than 6 options at once.** Curate ruthlessly.
287
+ 4. **Never generate without universal anchors.** See `references/prompt-patterns.md`.
288
+ 5. **Always start monochrome.** Color comes in refinement rounds.
289
+ 6. **Always use compose_logo.py for text.** Never ask AI to render text.
290
+ 7. **Always build contact sheets.** Visual comparison is essential. Always `open` the HTML after building it.
291
+ 8. **Descriptive filenames.** `logomark-arrow-minimal.png` not `image_abc123.png`.
292
+ 9. **Max 3 refinement rounds.** If stuck, rethink the concept.
293
+ 10. **Verify remove_bg quality.** Read the transparent PNG. If it has artifacts, use the local fallback script.
@@ -0,0 +1,134 @@
1
+ # Symbol Generation Prompt Patterns
2
+
3
+ Proven prompt formulas for generating logo symbols with image-gen (Flux Schnell).
4
+
5
+ **IMPORTANT:** Only use AI for symbols/icons. All text rendering (wordmarks, combination marks) is handled by `compose_logo.py` using real Google Fonts. Never ask the AI to render text.
6
+
7
+ ---
8
+
9
+ ## Universal Anchors (include in EVERY symbol prompt)
10
+
11
+ ```
12
+ on a solid pure white (#FFFFFF) background, centered composition, isolated design,
13
+ clean vector style, professional logo design, high contrast,
14
+ simple and scalable, no text, no letters, no words, no writing,
15
+ flat colors only, no gradients, no glow, no shadows, no 3D, no photorealism
16
+ ```
17
+
18
+ Why each matters:
19
+ - **solid pure white background** — clean extraction for `remove_bg`, clean composition
20
+ - **centered composition** — keeps subject in frame
21
+ - **isolated design** — prevents scene generation
22
+ - **clean vector style** — flat, print-ready aesthetics
23
+ - **no text/letters/words/writing** — models love adding random text. Block it aggressively.
24
+ - **flat colors only** — prevents gradients and effects that don't scale
25
+
26
+ ---
27
+
28
+ ## Logomark (Symbol / Icon) — The Primary Prompt
29
+
30
+ ```
31
+ A [STYLE] logomark symbol for a [INDUSTRY] brand.
32
+ The symbol represents [CONCEPT/METAPHOR].
33
+ [COLOR INSTRUCTION].
34
+ On a solid pure white (#FFFFFF) background, centered composition, isolated design,
35
+ clean vector style, professional logo design, high contrast,
36
+ simple geometric shapes, minimal detail, scalable icon,
37
+ no text, no letters, no words, no writing,
38
+ flat colors only, no gradients, no glow, no shadows.
39
+ ```
40
+
41
+ ### Style Modifiers (pick one)
42
+
43
+ - `minimalist flat` — fewest shapes, strongest silhouette
44
+ - `geometric abstract` — interlocking shapes, mathematical feel
45
+ - `organic flowing` — curves, natural forms, movement
46
+ - `bold and solid` — thick lines, heavy fills, high impact
47
+ - `line art` — single-weight strokes, no fills
48
+ - `negative space` — clever use of background as part of the design
49
+
50
+ ### Lettermark Variant (for monogram symbols)
51
+
52
+ ```
53
+ A [STYLE] lettermark monogram symbol using the letters "[INITIALS]".
54
+ [COLOR INSTRUCTION].
55
+ On a solid pure white (#FFFFFF) background, centered composition, isolated design,
56
+ clean vector style, professional monogram design,
57
+ the letters "[INITIALS]" are stylized and interlocking,
58
+ bold and readable, no additional imagery, no icons beyond the letters.
59
+ ```
60
+
61
+ ---
62
+
63
+ ## Color Instructions
64
+
65
+ Always start with black. Add color in refinement rounds.
66
+
67
+ **Monochrome (round 1 — always start here):**
68
+ ```
69
+ Using only black (#000000). Monochrome design.
70
+ ```
71
+
72
+ **Single brand color (round 2+):**
73
+ ```
74
+ Using [COLOR NAME] (#HEX) as the primary color with white negative space.
75
+ ```
76
+
77
+ **Two-tone (round 2+):**
78
+ ```
79
+ Using [COLOR1] (#HEX1) and [COLOR2] (#HEX2) only. Two-color palette, no gradients.
80
+ ```
81
+
82
+ ---
83
+
84
+ ## Style Boosters
85
+
86
+ ### Tech / Startup
87
+ ```
88
+ modern, geometric, precise edges, silicon valley aesthetic, forward-looking
89
+ ```
90
+
91
+ ### Luxury / Premium
92
+ ```
93
+ refined, sophisticated, understated elegance, thin precise lines, generous whitespace
94
+ ```
95
+
96
+ ### Playful / Consumer
97
+ ```
98
+ friendly, approachable, rounded shapes, warm personality, slightly whimsical
99
+ ```
100
+
101
+ ### Bold / Athletic
102
+ ```
103
+ powerful, dynamic, strong angles, heavy weight, commanding presence, energetic
104
+ ```
105
+
106
+ ### Organic / Natural
107
+ ```
108
+ flowing curves, natural forms, earthy, hand-crafted feel, growth metaphor
109
+ ```
110
+
111
+ ---
112
+
113
+ ## Common Failures & Fixes
114
+
115
+ | Problem | Fix |
116
+ |---|---|
117
+ | Random text in image | Add `no text, no letters, no words, no writing, no characters` |
118
+ | Too complex | Strip adjectives, add `extreme simplicity, fewest possible shapes` |
119
+ | Not centered | Add `centered on canvas, isolated, nothing else in frame` |
120
+ | Photorealistic | Add `flat vector illustration style, no 3D, no photorealism, no rendering` |
121
+ | Gradient/glow effects | Add `flat colors only, no gradients, no glow, no shadows, no effects` |
122
+ | Too much detail | Add `minimal detail, simple shapes only, works at 32x32 pixels` |
123
+ | Background not white | Use `on a pure white (#FFFFFF) background, nothing else visible` |
124
+
125
+ ---
126
+
127
+ ## Generation Strategy
128
+
129
+ 1. **Start monochrome.** If the shape works in B&W, it works everywhere.
130
+ 2. **Vary the metaphor, not just the style.** "Shield" vs "arrow" vs "abstract wave" are more different than "minimalist shield" vs "geometric shield."
131
+ 3. **Generate 4-6 per round.** Not 1 at a time, not 20.
132
+ 4. **Name files descriptively.** `logomark-hexagon-growth.webp` not `image-01.webp`.
133
+ 5. **Always remove_bg** on symbols you plan to compose — transparent PNGs compose cleanly.
134
+ 6. **Curate to 3-5 strong options.** Don't show everything.