@aslomon/effectum 0.3.3 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/bin/install.js +68 -4
  2. package/bin/lib/cli-tools.js +288 -0
  3. package/bin/lib/specializations.js +11 -1
  4. package/bin/lib/template.js +14 -0
  5. package/bin/lib/ui.js +109 -0
  6. package/package.json +1 -1
  7. package/system/agents/data-engineer.md +268 -0
  8. package/system/agents/mobile-developer.md +257 -0
  9. package/system/hooks/observe.sh +164 -0
  10. package/system/hooks/quick-diff.sh +87 -0
  11. package/system/hooks/save-results.sh +56 -0
  12. package/system/hooks/scan.sh +170 -0
  13. package/system/skills/README.md +86 -0
  14. package/system/skills/SKILL.md +117 -0
  15. package/system/skills/agents/observer.md +137 -0
  16. package/system/skills/agents/start-observer.sh +143 -0
  17. package/system/skills/algorithmic-art/LICENSE.txt +202 -0
  18. package/system/skills/algorithmic-art/SKILL.md +405 -0
  19. package/system/skills/algorithmic-art/templates/generator_template.js +223 -0
  20. package/system/skills/algorithmic-art/templates/viewer.html +599 -0
  21. package/system/skills/api-endpoint/SKILL.md +106 -0
  22. package/system/skills/canvas-design/LICENSE.txt +202 -0
  23. package/system/skills/canvas-design/SKILL.md +130 -0
  24. package/system/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  25. package/system/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  26. package/system/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  27. package/system/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  28. package/system/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  29. package/system/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  30. package/system/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  31. package/system/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  32. package/system/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  33. package/system/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  34. package/system/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  35. package/system/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  36. package/system/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  37. package/system/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  38. package/system/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  39. package/system/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  40. package/system/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  41. package/system/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  42. package/system/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  43. package/system/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  44. package/system/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  45. package/system/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  46. package/system/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  47. package/system/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  48. package/system/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  49. package/system/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  50. package/system/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  51. package/system/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  52. package/system/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  53. package/system/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  54. package/system/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  55. package/system/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  56. package/system/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  57. package/system/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  58. package/system/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  59. package/system/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  60. package/system/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  61. package/system/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  62. package/system/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  63. package/system/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  64. package/system/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  65. package/system/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  66. package/system/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  67. package/system/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  68. package/system/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  69. package/system/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  70. package/system/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  71. package/system/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  72. package/system/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  73. package/system/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  74. package/system/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  75. package/system/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  76. package/system/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  77. package/system/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  78. package/system/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  79. package/system/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  80. package/system/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  81. package/system/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  82. package/system/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  83. package/system/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  84. package/system/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  85. package/system/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  86. package/system/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  87. package/system/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  88. package/system/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  89. package/system/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  90. package/system/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  91. package/system/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  92. package/system/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  93. package/system/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  94. package/system/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  95. package/system/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  96. package/system/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  97. package/system/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  98. package/system/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  99. package/system/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  100. package/system/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  101. package/system/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  102. package/system/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  103. package/system/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  104. package/system/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  105. package/system/skills/component/SKILL.md +103 -0
  106. package/system/skills/config.json +18 -0
  107. package/system/skills/doc-coauthoring/SKILL.md +375 -0
  108. package/system/skills/docx/LICENSE.txt +30 -0
  109. package/system/skills/docx/SKILL.md +590 -0
  110. package/system/skills/docx/scripts/__init__.py +1 -0
  111. package/system/skills/docx/scripts/accept_changes.py +135 -0
  112. package/system/skills/docx/scripts/comment.py +318 -0
  113. package/system/skills/docx/scripts/office/helpers/__init__.py +0 -0
  114. package/system/skills/docx/scripts/office/helpers/merge_runs.py +199 -0
  115. package/system/skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
  116. package/system/skills/docx/scripts/office/pack.py +159 -0
  117. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  118. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  119. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  120. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  121. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  122. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  123. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  124. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  125. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  126. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  127. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  128. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  129. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  130. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  131. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  132. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  133. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  134. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  135. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  136. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  137. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  138. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  139. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  140. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  141. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  142. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  143. package/system/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  144. package/system/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  145. package/system/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  146. package/system/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  147. package/system/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  148. package/system/skills/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  149. package/system/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  150. package/system/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  151. package/system/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  152. package/system/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  153. package/system/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  154. package/system/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  155. package/system/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  156. package/system/skills/docx/scripts/office/soffice.py +183 -0
  157. package/system/skills/docx/scripts/office/unpack.py +132 -0
  158. package/system/skills/docx/scripts/office/validate.py +111 -0
  159. package/system/skills/docx/scripts/office/validators/__init__.py +15 -0
  160. package/system/skills/docx/scripts/office/validators/base.py +847 -0
  161. package/system/skills/docx/scripts/office/validators/docx.py +446 -0
  162. package/system/skills/docx/scripts/office/validators/pptx.py +275 -0
  163. package/system/skills/docx/scripts/office/validators/redlining.py +247 -0
  164. package/system/skills/docx/scripts/templates/comments.xml +3 -0
  165. package/system/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  166. package/system/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  167. package/system/skills/docx/scripts/templates/commentsIds.xml +3 -0
  168. package/system/skills/docx/scripts/templates/people.xml +3 -0
  169. package/system/skills/evaluate-session.sh +69 -0
  170. package/system/skills/feature/SKILL.md +73 -0
  171. package/system/skills/frontend-design/LICENSE.txt +177 -0
  172. package/system/skills/frontend-design/SKILL.md +52 -0
  173. package/system/skills/hooks/observe.sh +164 -0
  174. package/system/skills/mcp-builder/LICENSE.txt +202 -0
  175. package/system/skills/mcp-builder/SKILL.md +236 -0
  176. package/system/skills/mcp-builder/reference/evaluation.md +602 -0
  177. package/system/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  178. package/system/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  179. package/system/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  180. package/system/skills/mcp-builder/scripts/connections.py +151 -0
  181. package/system/skills/mcp-builder/scripts/evaluation.py +373 -0
  182. package/system/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  183. package/system/skills/mcp-builder/scripts/requirements.txt +2 -0
  184. package/system/skills/pdf/LICENSE.txt +30 -0
  185. package/system/skills/pdf/SKILL.md +314 -0
  186. package/system/skills/pdf/forms.md +294 -0
  187. package/system/skills/pdf/reference.md +612 -0
  188. package/system/skills/pdf/scripts/check_bounding_boxes.py +65 -0
  189. package/system/skills/pdf/scripts/check_fillable_fields.py +11 -0
  190. package/system/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
  191. package/system/skills/pdf/scripts/create_validation_image.py +37 -0
  192. package/system/skills/pdf/scripts/extract_form_field_info.py +122 -0
  193. package/system/skills/pdf/scripts/extract_form_structure.py +115 -0
  194. package/system/skills/pdf/scripts/fill_fillable_fields.py +98 -0
  195. package/system/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  196. package/system/skills/pptx/LICENSE.txt +30 -0
  197. package/system/skills/pptx/SKILL.md +232 -0
  198. package/system/skills/pptx/editing.md +205 -0
  199. package/system/skills/pptx/pptxgenjs.md +420 -0
  200. package/system/skills/pptx/scripts/__init__.py +0 -0
  201. package/system/skills/pptx/scripts/add_slide.py +195 -0
  202. package/system/skills/pptx/scripts/clean.py +286 -0
  203. package/system/skills/pptx/scripts/office/helpers/__init__.py +0 -0
  204. package/system/skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
  205. package/system/skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
  206. package/system/skills/pptx/scripts/office/pack.py +159 -0
  207. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  208. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  209. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  210. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  211. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  212. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  213. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  214. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  215. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  216. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  217. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  218. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  219. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  220. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  221. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  222. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  223. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  224. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  225. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  226. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  227. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  228. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  229. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  230. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  231. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  232. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  233. package/system/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  234. package/system/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  235. package/system/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  236. package/system/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  237. package/system/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  238. package/system/skills/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
  239. package/system/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  240. package/system/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  241. package/system/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  242. package/system/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  243. package/system/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  244. package/system/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  245. package/system/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  246. package/system/skills/pptx/scripts/office/soffice.py +183 -0
  247. package/system/skills/pptx/scripts/office/unpack.py +132 -0
  248. package/system/skills/pptx/scripts/office/validate.py +111 -0
  249. package/system/skills/pptx/scripts/office/validators/__init__.py +15 -0
  250. package/system/skills/pptx/scripts/office/validators/base.py +847 -0
  251. package/system/skills/pptx/scripts/office/validators/docx.py +446 -0
  252. package/system/skills/pptx/scripts/office/validators/pptx.py +275 -0
  253. package/system/skills/pptx/scripts/office/validators/redlining.py +247 -0
  254. package/system/skills/pptx/scripts/thumbnail.py +289 -0
  255. package/system/skills/scripts/quick-diff.sh +87 -0
  256. package/system/skills/scripts/save-results.sh +56 -0
  257. package/system/skills/scripts/scan.sh +170 -0
  258. package/system/skills/security-check/SKILL.md +70 -0
  259. package/system/skills/skill-creator/LICENSE.txt +202 -0
  260. package/system/skills/skill-creator/SKILL.md +479 -0
  261. package/system/skills/skill-creator/agents/analyzer.md +274 -0
  262. package/system/skills/skill-creator/agents/comparator.md +202 -0
  263. package/system/skills/skill-creator/agents/grader.md +223 -0
  264. package/system/skills/skill-creator/assets/eval_review.html +146 -0
  265. package/system/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  266. package/system/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  267. package/system/skills/skill-creator/references/schemas.md +430 -0
  268. package/system/skills/skill-creator/scripts/__init__.py +0 -0
  269. package/system/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  270. package/system/skills/skill-creator/scripts/generate_report.py +326 -0
  271. package/system/skills/skill-creator/scripts/improve_description.py +248 -0
  272. package/system/skills/skill-creator/scripts/package_skill.py +136 -0
  273. package/system/skills/skill-creator/scripts/quick_validate.py +103 -0
  274. package/system/skills/skill-creator/scripts/run_eval.py +310 -0
  275. package/system/skills/skill-creator/scripts/run_loop.py +332 -0
  276. package/system/skills/skill-creator/scripts/utils.py +47 -0
  277. package/system/skills/suggest-compact.sh +54 -0
  278. package/system/skills/supabase-migration/SKILL.md +59 -0
  279. package/system/skills/theme-factory/LICENSE.txt +202 -0
  280. package/system/skills/theme-factory/SKILL.md +59 -0
  281. package/system/skills/theme-factory/theme-showcase.pdf +0 -0
  282. package/system/skills/theme-factory/themes/arctic-frost.md +19 -0
  283. package/system/skills/theme-factory/themes/botanical-garden.md +19 -0
  284. package/system/skills/theme-factory/themes/desert-rose.md +19 -0
  285. package/system/skills/theme-factory/themes/forest-canopy.md +19 -0
  286. package/system/skills/theme-factory/themes/golden-hour.md +19 -0
  287. package/system/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  288. package/system/skills/theme-factory/themes/modern-minimalist.md +19 -0
  289. package/system/skills/theme-factory/themes/ocean-depths.md +19 -0
  290. package/system/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  291. package/system/skills/theme-factory/themes/tech-innovation.md +19 -0
  292. package/system/skills/web-artifacts-builder/LICENSE.txt +202 -0
  293. package/system/skills/web-artifacts-builder/SKILL.md +74 -0
  294. package/system/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  295. package/system/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  296. package/system/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  297. package/system/skills/webapp-testing/LICENSE.txt +202 -0
  298. package/system/skills/webapp-testing/SKILL.md +96 -0
  299. package/system/skills/webapp-testing/examples/console_logging.py +35 -0
  300. package/system/skills/webapp-testing/examples/element_discovery.py +40 -0
  301. package/system/skills/webapp-testing/examples/static_html_automation.py +33 -0
  302. package/system/skills/webapp-testing/scripts/with_server.py +106 -0
  303. package/system/skills/xlsx/LICENSE.txt +30 -0
  304. package/system/skills/xlsx/SKILL.md +292 -0
  305. package/system/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
  306. package/system/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
  307. package/system/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  308. package/system/skills/xlsx/scripts/office/pack.py +159 -0
  309. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  310. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  311. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  312. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  313. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  314. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  315. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  316. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  317. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  318. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  319. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  320. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  321. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  322. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  323. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  324. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  325. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  326. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  327. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  328. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  329. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  330. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  331. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  332. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  333. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  334. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  335. package/system/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  336. package/system/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  337. package/system/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  338. package/system/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  339. package/system/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  340. package/system/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  341. package/system/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  342. package/system/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  343. package/system/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  344. package/system/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  345. package/system/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  346. package/system/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  347. package/system/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  348. package/system/skills/xlsx/scripts/office/soffice.py +183 -0
  349. package/system/skills/xlsx/scripts/office/unpack.py +132 -0
  350. package/system/skills/xlsx/scripts/office/validate.py +111 -0
  351. package/system/skills/xlsx/scripts/office/validators/__init__.py +15 -0
  352. package/system/skills/xlsx/scripts/office/validators/base.py +847 -0
  353. package/system/skills/xlsx/scripts/office/validators/docx.py +446 -0
  354. package/system/skills/xlsx/scripts/office/validators/pptx.py +275 -0
  355. package/system/skills/xlsx/scripts/office/validators/redlining.py +247 -0
  356. package/system/skills/xlsx/scripts/recalc.py +184 -0
  357. package/system/teams/profiles.md +76 -0
  358. package/system/templates/CLAUDE.md.tmpl +6 -0
  359. package/system/templates/settings.json.tmpl +11 -0
@@ -0,0 +1,599 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ THIS IS A TEMPLATE THAT SHOULD BE USED EVERY TIME AND MODIFIED.
4
+ WHAT TO KEEP:
5
+ ✓ Overall structure (header, sidebar, main content)
6
+ ✓ Anthropic branding (colors, fonts, layout)
7
+ ✓ Seed navigation section (always include this)
8
+ ✓ Self-contained artifact (everything inline)
9
+
10
+ WHAT TO CREATIVELY EDIT:
11
+ ✗ The p5.js algorithm (implement YOUR vision)
12
+ ✗ The parameters (define what YOUR art needs)
13
+ ✗ The UI controls (match YOUR parameters)
14
+
15
+ Let your philosophy guide the implementation.
16
+ The world is your oyster - be creative!
17
+ -->
18
+ <html lang="en">
19
+ <head>
20
+ <meta charset="UTF-8">
21
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
22
+ <title>Generative Art Viewer</title>
23
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.7.0/p5.min.js"></script>
24
+ <link rel="preconnect" href="https://fonts.googleapis.com">
25
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
26
+ <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&family=Lora:wght@400;500&display=swap" rel="stylesheet">
27
+ <style>
28
+ /* Anthropic Brand Colors */
29
+ :root {
30
+ --anthropic-dark: #141413;
31
+ --anthropic-light: #faf9f5;
32
+ --anthropic-mid-gray: #b0aea5;
33
+ --anthropic-light-gray: #e8e6dc;
34
+ --anthropic-orange: #d97757;
35
+ --anthropic-blue: #6a9bcc;
36
+ --anthropic-green: #788c5d;
37
+ }
38
+
39
+ * {
40
+ margin: 0;
41
+ padding: 0;
42
+ box-sizing: border-box;
43
+ }
44
+
45
+ body {
46
+ font-family: 'Poppins', sans-serif;
47
+ background: linear-gradient(135deg, var(--anthropic-light) 0%, #f5f3ee 100%);
48
+ min-height: 100vh;
49
+ color: var(--anthropic-dark);
50
+ }
51
+
52
+ .container {
53
+ display: flex;
54
+ min-height: 100vh;
55
+ padding: 20px;
56
+ gap: 20px;
57
+ }
58
+
59
+ /* Sidebar */
60
+ .sidebar {
61
+ width: 320px;
62
+ flex-shrink: 0;
63
+ background: rgba(255, 255, 255, 0.95);
64
+ backdrop-filter: blur(10px);
65
+ padding: 24px;
66
+ border-radius: 12px;
67
+ box-shadow: 0 10px 30px rgba(20, 20, 19, 0.1);
68
+ overflow-y: auto;
69
+ overflow-x: hidden;
70
+ }
71
+
72
+ .sidebar h1 {
73
+ font-family: 'Lora', serif;
74
+ font-size: 24px;
75
+ font-weight: 500;
76
+ color: var(--anthropic-dark);
77
+ margin-bottom: 8px;
78
+ }
79
+
80
+ .sidebar .subtitle {
81
+ color: var(--anthropic-mid-gray);
82
+ font-size: 14px;
83
+ margin-bottom: 32px;
84
+ line-height: 1.4;
85
+ }
86
+
87
+ /* Control Sections */
88
+ .control-section {
89
+ margin-bottom: 32px;
90
+ }
91
+
92
+ .control-section h3 {
93
+ font-size: 16px;
94
+ font-weight: 600;
95
+ color: var(--anthropic-dark);
96
+ margin-bottom: 16px;
97
+ display: flex;
98
+ align-items: center;
99
+ gap: 8px;
100
+ }
101
+
102
+ .control-section h3::before {
103
+ content: '•';
104
+ color: var(--anthropic-orange);
105
+ font-weight: bold;
106
+ }
107
+
108
+ /* Seed Controls */
109
+ .seed-input {
110
+ width: 100%;
111
+ background: var(--anthropic-light);
112
+ padding: 12px;
113
+ border-radius: 8px;
114
+ font-family: 'Courier New', monospace;
115
+ font-size: 14px;
116
+ margin-bottom: 12px;
117
+ border: 1px solid var(--anthropic-light-gray);
118
+ text-align: center;
119
+ }
120
+
121
+ .seed-input:focus {
122
+ outline: none;
123
+ border-color: var(--anthropic-orange);
124
+ box-shadow: 0 0 0 2px rgba(217, 119, 87, 0.1);
125
+ background: white;
126
+ }
127
+
128
+ .seed-controls {
129
+ display: grid;
130
+ grid-template-columns: 1fr 1fr;
131
+ gap: 8px;
132
+ margin-bottom: 8px;
133
+ }
134
+
135
+ .regen-button {
136
+ margin-bottom: 0;
137
+ }
138
+
139
+ /* Parameter Controls */
140
+ .control-group {
141
+ margin-bottom: 20px;
142
+ }
143
+
144
+ .control-group label {
145
+ display: block;
146
+ font-size: 14px;
147
+ font-weight: 500;
148
+ color: var(--anthropic-dark);
149
+ margin-bottom: 8px;
150
+ }
151
+
152
+ .slider-container {
153
+ display: flex;
154
+ align-items: center;
155
+ gap: 12px;
156
+ }
157
+
158
+ .slider-container input[type="range"] {
159
+ flex: 1;
160
+ height: 4px;
161
+ background: var(--anthropic-light-gray);
162
+ border-radius: 2px;
163
+ outline: none;
164
+ -webkit-appearance: none;
165
+ }
166
+
167
+ .slider-container input[type="range"]::-webkit-slider-thumb {
168
+ -webkit-appearance: none;
169
+ width: 16px;
170
+ height: 16px;
171
+ background: var(--anthropic-orange);
172
+ border-radius: 50%;
173
+ cursor: pointer;
174
+ transition: all 0.2s ease;
175
+ }
176
+
177
+ .slider-container input[type="range"]::-webkit-slider-thumb:hover {
178
+ transform: scale(1.1);
179
+ background: #c86641;
180
+ }
181
+
182
+ .slider-container input[type="range"]::-moz-range-thumb {
183
+ width: 16px;
184
+ height: 16px;
185
+ background: var(--anthropic-orange);
186
+ border-radius: 50%;
187
+ border: none;
188
+ cursor: pointer;
189
+ transition: all 0.2s ease;
190
+ }
191
+
192
+ .value-display {
193
+ font-family: 'Courier New', monospace;
194
+ font-size: 12px;
195
+ color: var(--anthropic-mid-gray);
196
+ min-width: 60px;
197
+ text-align: right;
198
+ }
199
+
200
+ /* Color Pickers */
201
+ .color-group {
202
+ margin-bottom: 16px;
203
+ }
204
+
205
+ .color-group label {
206
+ display: block;
207
+ font-size: 12px;
208
+ color: var(--anthropic-mid-gray);
209
+ margin-bottom: 4px;
210
+ }
211
+
212
+ .color-picker-container {
213
+ display: flex;
214
+ align-items: center;
215
+ gap: 8px;
216
+ }
217
+
218
+ .color-picker-container input[type="color"] {
219
+ width: 32px;
220
+ height: 32px;
221
+ border: none;
222
+ border-radius: 6px;
223
+ cursor: pointer;
224
+ background: none;
225
+ padding: 0;
226
+ }
227
+
228
+ .color-value {
229
+ font-family: 'Courier New', monospace;
230
+ font-size: 12px;
231
+ color: var(--anthropic-mid-gray);
232
+ }
233
+
234
+ /* Buttons */
235
+ .button {
236
+ background: var(--anthropic-orange);
237
+ color: white;
238
+ border: none;
239
+ padding: 10px 16px;
240
+ border-radius: 6px;
241
+ font-size: 14px;
242
+ font-weight: 500;
243
+ cursor: pointer;
244
+ transition: all 0.2s ease;
245
+ width: 100%;
246
+ }
247
+
248
+ .button:hover {
249
+ background: #c86641;
250
+ transform: translateY(-1px);
251
+ }
252
+
253
+ .button:active {
254
+ transform: translateY(0);
255
+ }
256
+
257
+ .button.secondary {
258
+ background: var(--anthropic-blue);
259
+ }
260
+
261
+ .button.secondary:hover {
262
+ background: #5a8bb8;
263
+ }
264
+
265
+ .button.tertiary {
266
+ background: var(--anthropic-green);
267
+ }
268
+
269
+ .button.tertiary:hover {
270
+ background: #6b7b52;
271
+ }
272
+
273
+ .button-row {
274
+ display: flex;
275
+ gap: 8px;
276
+ }
277
+
278
+ .button-row .button {
279
+ flex: 1;
280
+ }
281
+
282
+ /* Canvas Area */
283
+ .canvas-area {
284
+ flex: 1;
285
+ display: flex;
286
+ align-items: center;
287
+ justify-content: center;
288
+ min-width: 0;
289
+ }
290
+
291
+ #canvas-container {
292
+ width: 100%;
293
+ max-width: 1000px;
294
+ border-radius: 12px;
295
+ overflow: hidden;
296
+ box-shadow: 0 20px 40px rgba(20, 20, 19, 0.1);
297
+ background: white;
298
+ }
299
+
300
+ #canvas-container canvas {
301
+ display: block;
302
+ width: 100% !important;
303
+ height: auto !important;
304
+ }
305
+
306
+ /* Loading State */
307
+ .loading {
308
+ display: flex;
309
+ align-items: center;
310
+ justify-content: center;
311
+ font-size: 18px;
312
+ color: var(--anthropic-mid-gray);
313
+ }
314
+
315
+ /* Responsive - Stack on mobile */
316
+ @media (max-width: 600px) {
317
+ .container {
318
+ flex-direction: column;
319
+ }
320
+
321
+ .sidebar {
322
+ width: 100%;
323
+ }
324
+
325
+ .canvas-area {
326
+ padding: 20px;
327
+ }
328
+ }
329
+ </style>
330
+ </head>
331
+ <body>
332
+ <div class="container">
333
+ <!-- Control Sidebar -->
334
+ <div class="sidebar">
335
+ <!-- Headers (CUSTOMIZE THIS FOR YOUR ART) -->
336
+ <h1>TITLE - EDIT</h1>
337
+ <div class="subtitle">SUBHEADER - EDIT</div>
338
+
339
+ <!-- Seed Section (ALWAYS KEEP THIS) -->
340
+ <div class="control-section">
341
+ <h3>Seed</h3>
342
+ <input type="number" id="seed-input" class="seed-input" value="12345" onchange="updateSeed()">
343
+ <div class="seed-controls">
344
+ <button class="button secondary" onclick="previousSeed()">← Prev</button>
345
+ <button class="button secondary" onclick="nextSeed()">Next →</button>
346
+ </div>
347
+ <button class="button tertiary regen-button" onclick="randomSeedAndUpdate()">↻ Random</button>
348
+ </div>
349
+
350
+ <!-- Parameters Section (CUSTOMIZE THIS FOR YOUR ART) -->
351
+ <div class="control-section">
352
+ <h3>Parameters</h3>
353
+
354
+ <!-- Particle Count -->
355
+ <div class="control-group">
356
+ <label>Particle Count</label>
357
+ <div class="slider-container">
358
+ <input type="range" id="particleCount" min="1000" max="10000" step="500" value="5000" oninput="updateParam('particleCount', this.value)">
359
+ <span class="value-display" id="particleCount-value">5000</span>
360
+ </div>
361
+ </div>
362
+
363
+ <!-- Flow Speed -->
364
+ <div class="control-group">
365
+ <label>Flow Speed</label>
366
+ <div class="slider-container">
367
+ <input type="range" id="flowSpeed" min="0.1" max="2.0" step="0.1" value="0.5" oninput="updateParam('flowSpeed', this.value)">
368
+ <span class="value-display" id="flowSpeed-value">0.5</span>
369
+ </div>
370
+ </div>
371
+
372
+ <!-- Noise Scale -->
373
+ <div class="control-group">
374
+ <label>Noise Scale</label>
375
+ <div class="slider-container">
376
+ <input type="range" id="noiseScale" min="0.001" max="0.02" step="0.001" value="0.005" oninput="updateParam('noiseScale', this.value)">
377
+ <span class="value-display" id="noiseScale-value">0.005</span>
378
+ </div>
379
+ </div>
380
+
381
+ <!-- Trail Length -->
382
+ <div class="control-group">
383
+ <label>Trail Length</label>
384
+ <div class="slider-container">
385
+ <input type="range" id="trailLength" min="2" max="20" step="1" value="8" oninput="updateParam('trailLength', this.value)">
386
+ <span class="value-display" id="trailLength-value">8</span>
387
+ </div>
388
+ </div>
389
+ </div>
390
+
391
+ <!-- Colors Section (OPTIONAL - CUSTOMIZE OR REMOVE) -->
392
+ <div class="control-section">
393
+ <h3>Colors</h3>
394
+
395
+ <!-- Color 1 -->
396
+ <div class="color-group">
397
+ <label>Primary Color</label>
398
+ <div class="color-picker-container">
399
+ <input type="color" id="color1" value="#d97757" onchange="updateColor('color1', this.value)">
400
+ <span class="color-value" id="color1-value">#d97757</span>
401
+ </div>
402
+ </div>
403
+
404
+ <!-- Color 2 -->
405
+ <div class="color-group">
406
+ <label>Secondary Color</label>
407
+ <div class="color-picker-container">
408
+ <input type="color" id="color2" value="#6a9bcc" onchange="updateColor('color2', this.value)">
409
+ <span class="color-value" id="color2-value">#6a9bcc</span>
410
+ </div>
411
+ </div>
412
+
413
+ <!-- Color 3 -->
414
+ <div class="color-group">
415
+ <label>Accent Color</label>
416
+ <div class="color-picker-container">
417
+ <input type="color" id="color3" value="#788c5d" onchange="updateColor('color3', this.value)">
418
+ <span class="color-value" id="color3-value">#788c5d</span>
419
+ </div>
420
+ </div>
421
+ </div>
422
+
423
+ <!-- Actions Section (ALWAYS KEEP THIS) -->
424
+ <div class="control-section">
425
+ <h3>Actions</h3>
426
+ <div class="button-row">
427
+ <button class="button" onclick="resetParameters()">Reset</button>
428
+ </div>
429
+ </div>
430
+ </div>
431
+
432
+ <!-- Main Canvas Area -->
433
+ <div class="canvas-area">
434
+ <div id="canvas-container">
435
+ <div class="loading">Initializing generative art...</div>
436
+ </div>
437
+ </div>
438
+ </div>
439
+
440
+ <script>
441
+ // ═══════════════════════════════════════════════════════════════════════
442
+ // GENERATIVE ART PARAMETERS - CUSTOMIZE FOR YOUR ALGORITHM
443
+ // ═══════════════════════════════════════════════════════════════════════
444
+
445
+ let params = {
446
+ seed: 12345,
447
+ particleCount: 5000,
448
+ flowSpeed: 0.5,
449
+ noiseScale: 0.005,
450
+ trailLength: 8,
451
+ colorPalette: ['#d97757', '#6a9bcc', '#788c5d']
452
+ };
453
+
454
+ let defaultParams = {...params}; // Store defaults for reset
455
+
456
+ // ═══════════════════════════════════════════════════════════════════════
457
+ // P5.JS GENERATIVE ART ALGORITHM - REPLACE WITH YOUR VISION
458
+ // ═══════════════════════════════════════════════════════════════════════
459
+
460
+ let particles = [];
461
+ let flowField = [];
462
+ let cols, rows;
463
+ let scl = 10; // Flow field resolution
464
+
465
+ function setup() {
466
+ let canvas = createCanvas(1200, 1200);
467
+ canvas.parent('canvas-container');
468
+
469
+ initializeSystem();
470
+
471
+ // Remove loading message
472
+ document.querySelector('.loading').style.display = 'none';
473
+ }
474
+
475
+ function initializeSystem() {
476
+ // Seed the randomness for reproducibility
477
+ randomSeed(params.seed);
478
+ noiseSeed(params.seed);
479
+
480
+ // Clear particles and recreate
481
+ particles = [];
482
+
483
+ // Initialize particles
484
+ for (let i = 0; i < params.particleCount; i++) {
485
+ particles.push(new Particle());
486
+ }
487
+
488
+ // Calculate flow field dimensions
489
+ cols = floor(width / scl);
490
+ rows = floor(height / scl);
491
+
492
+ // Generate flow field
493
+ generateFlowField();
494
+
495
+ // Clear background
496
+ background(250, 249, 245); // Anthropic light background
497
+ }
498
+
499
+ function generateFlowField() {
500
+ // fill this in
501
+ }
502
+
503
+ function draw() {
504
+ // fill this in
505
+ }
506
+
507
+ // ═══════════════════════════════════════════════════════════════════════
508
+ // PARTICLE SYSTEM - CUSTOMIZE FOR YOUR ALGORITHM
509
+ // ═══════════════════════════════════════════════════════════════════════
510
+
511
+ class Particle {
512
+ constructor() {
513
+ // fill this in
514
+ }
515
+ // fill this in
516
+ }
517
+
518
+ // ═══════════════════════════════════════════════════════════════════════
519
+ // UI CONTROL HANDLERS - CUSTOMIZE FOR YOUR PARAMETERS
520
+ // ═══════════════════════════════════════════════════════════════════════
521
+
522
+ function updateParam(paramName, value) {
523
+ // fill this in
524
+ }
525
+
526
+ function updateColor(colorId, value) {
527
+ // fill this in
528
+ }
529
+
530
+ // ═══════════════════════════════════════════════════════════════════════
531
+ // SEED CONTROL FUNCTIONS - ALWAYS KEEP THESE
532
+ // ═══════════════════════════════════════════════════════════════════════
533
+
534
+ function updateSeedDisplay() {
535
+ document.getElementById('seed-input').value = params.seed;
536
+ }
537
+
538
+ function updateSeed() {
539
+ let input = document.getElementById('seed-input');
540
+ let newSeed = parseInt(input.value);
541
+ if (newSeed && newSeed > 0) {
542
+ params.seed = newSeed;
543
+ initializeSystem();
544
+ } else {
545
+ // Reset to current seed if invalid
546
+ updateSeedDisplay();
547
+ }
548
+ }
549
+
550
+ function previousSeed() {
551
+ params.seed = Math.max(1, params.seed - 1);
552
+ updateSeedDisplay();
553
+ initializeSystem();
554
+ }
555
+
556
+ function nextSeed() {
557
+ params.seed = params.seed + 1;
558
+ updateSeedDisplay();
559
+ initializeSystem();
560
+ }
561
+
562
+ function randomSeedAndUpdate() {
563
+ params.seed = Math.floor(Math.random() * 999999) + 1;
564
+ updateSeedDisplay();
565
+ initializeSystem();
566
+ }
567
+
568
+ function resetParameters() {
569
+ params = {...defaultParams};
570
+
571
+ // Update UI elements
572
+ document.getElementById('particleCount').value = params.particleCount;
573
+ document.getElementById('particleCount-value').textContent = params.particleCount;
574
+ document.getElementById('flowSpeed').value = params.flowSpeed;
575
+ document.getElementById('flowSpeed-value').textContent = params.flowSpeed;
576
+ document.getElementById('noiseScale').value = params.noiseScale;
577
+ document.getElementById('noiseScale-value').textContent = params.noiseScale;
578
+ document.getElementById('trailLength').value = params.trailLength;
579
+ document.getElementById('trailLength-value').textContent = params.trailLength;
580
+
581
+ // Reset colors
582
+ document.getElementById('color1').value = params.colorPalette[0];
583
+ document.getElementById('color1-value').textContent = params.colorPalette[0];
584
+ document.getElementById('color2').value = params.colorPalette[1];
585
+ document.getElementById('color2-value').textContent = params.colorPalette[1];
586
+ document.getElementById('color3').value = params.colorPalette[2];
587
+ document.getElementById('color3-value').textContent = params.colorPalette[2];
588
+
589
+ updateSeedDisplay();
590
+ initializeSystem();
591
+ }
592
+
593
+ // Initialize UI on load
594
+ window.addEventListener('load', function() {
595
+ updateSeedDisplay();
596
+ });
597
+ </script>
598
+ </body>
599
+ </html>
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: api-endpoint
3
+ description: Create a new Next.js API Route Handler with Zod validation, Supabase integration, typed responses, error handling, and tests. Agent-native — every endpoint is discoverable and callable by AI agents.
4
+ disable-model-invocation: true
5
+ argument-hint: "[HTTP method] [resource path] [description]"
6
+ ---
7
+
8
+ Create API endpoint: $ARGUMENTS
9
+
10
+ ## Process
11
+
12
+ 1. **Parse the request** — Extract HTTP method, resource path, and purpose
13
+ 2. **Check existing patterns** — Find similar endpoints in `src/app/api/` to match conventions
14
+ 3. **Create the endpoint** — Route Handler + Zod schemas + tests
15
+ 4. **Verify** — Types compile, tests pass
16
+
17
+ ## File Structure
18
+
19
+ For endpoint `GET /api/[resource]`:
20
+ ```
21
+ src/app/api/[resource]/
22
+ route.ts # Route Handler
23
+ src/lib/[resource]/
24
+ schemas.ts # Zod schemas (input + output)
25
+ service.ts # Business logic (if complex)
26
+ [resource].test.ts # Tests
27
+ ```
28
+
29
+ ## Route Handler Template
30
+
31
+ ```typescript
32
+ import { NextRequest, NextResponse } from 'next/server'
33
+ import { createServerClient } from '@/lib/supabase/server'
34
+ import { [Schema]Request, [Schema]Response } from '@/lib/[resource]/schemas'
35
+
36
+ export async function [METHOD](request: NextRequest) {
37
+ try {
38
+ // 1. Parse and validate input
39
+ const body = await request.json()
40
+ const input = [Schema]Request.parse(body)
41
+
42
+ // 2. Auth
43
+ const supabase = await createServerClient()
44
+ const { data: { user }, error: authError } = await supabase.auth.getUser()
45
+ if (authError || !user) {
46
+ return NextResponse.json({ error: 'Unauthorized' }, { status: 401 })
47
+ }
48
+
49
+ // 3. Business logic (RLS handles tenant isolation)
50
+ const { data, error } = await supabase
51
+ .from('[table]')
52
+ .select('*')
53
+ .eq('id', input.id)
54
+ .single()
55
+
56
+ if (error) {
57
+ return NextResponse.json({ error: error.message }, { status: 400 })
58
+ }
59
+
60
+ // 4. Validate output and return
61
+ return NextResponse.json({ data })
62
+ } catch (error) {
63
+ if (error instanceof z.ZodError) {
64
+ return NextResponse.json(
65
+ { error: 'Validation failed', details: error.errors },
66
+ { status: 422 }
67
+ )
68
+ }
69
+ return NextResponse.json(
70
+ { error: 'Internal server error' },
71
+ { status: 500 }
72
+ )
73
+ }
74
+ }
75
+ ```
76
+
77
+ ## Rules
78
+
79
+ ### Input Validation
80
+ - ALWAYS validate with Zod — never trust raw input
81
+ - Parse path params, query params, and body separately
82
+ - Return 422 with Zod error details on validation failure
83
+
84
+ ### Authentication
85
+ - ALWAYS check auth via `supabase.auth.getUser()`
86
+ - Return 401 for unauthenticated requests
87
+ - Let RLS handle authorization (tenant isolation)
88
+
89
+ ### Response Format
90
+ - Success: `{ data: T }` with 200/201
91
+ - Client error: `{ error: string, details?: any }` with 400/401/404/422
92
+ - Server error: `{ error: 'Internal server error' }` with 500
93
+ - Never leak internal error details to clients
94
+
95
+ ### Agent-Native Design
96
+ - Predictable URL pattern: `/api/[resource]` for collections, `/api/[resource]/[id]` for items
97
+ - Support filtering via query params: `?status=active&limit=10`
98
+ - Return pagination metadata: `{ data, count, page, pageSize }`
99
+ - Every endpoint MUST be callable without UI context
100
+
101
+ ### Testing
102
+ - Test happy path for each HTTP method
103
+ - Test validation failures (bad input)
104
+ - Test auth failures (no token, invalid token)
105
+ - Test not found cases
106
+ - Mock Supabase client in tests