@bastani/atomic 0.5.11 → 0.5.12-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 (507) hide show
  1. package/.agents/skills/adapt/SKILL.md +199 -0
  2. package/.agents/skills/advanced-evaluation/SKILL.md +402 -0
  3. package/.agents/skills/advanced-evaluation/references/bias-mitigation.md +288 -0
  4. package/.agents/skills/advanced-evaluation/references/evaluation-pipeline.md +43 -0
  5. package/.agents/skills/advanced-evaluation/references/implementation-patterns.md +315 -0
  6. package/.agents/skills/advanced-evaluation/references/metrics-guide.md +331 -0
  7. package/.agents/skills/advanced-evaluation/scripts/evaluation_example.py +392 -0
  8. package/.agents/skills/animate/SKILL.md +175 -0
  9. package/.agents/skills/arrange/SKILL.md +124 -0
  10. package/.agents/skills/audit/SKILL.md +148 -0
  11. package/.agents/skills/bdi-mental-states/SKILL.md +311 -0
  12. package/.agents/skills/bdi-mental-states/references/bdi-ontology-core.md +207 -0
  13. package/.agents/skills/bdi-mental-states/references/framework-integration.md +582 -0
  14. package/.agents/skills/bdi-mental-states/references/rdf-examples.md +315 -0
  15. package/.agents/skills/bdi-mental-states/references/sparql-competency.md +420 -0
  16. package/.agents/skills/bolder/SKILL.md +117 -0
  17. package/.agents/skills/bun/SKILL.md +199 -0
  18. package/.agents/skills/clarify/SKILL.md +183 -0
  19. package/.agents/skills/colorize/SKILL.md +143 -0
  20. package/.agents/skills/context-compression/SKILL.md +272 -0
  21. package/.agents/skills/context-compression/references/evaluation-framework.md +213 -0
  22. package/.agents/skills/context-compression/scripts/compression_evaluator.py +862 -0
  23. package/.agents/skills/context-compression/tests/test_compression_evaluator.py +56 -0
  24. package/.agents/skills/context-degradation/SKILL.md +206 -0
  25. package/.agents/skills/context-degradation/references/patterns.md +314 -0
  26. package/.agents/skills/context-degradation/scripts/degradation_detector.py +614 -0
  27. package/.agents/skills/context-fundamentals/SKILL.md +201 -0
  28. package/.agents/skills/context-fundamentals/references/context-components.md +283 -0
  29. package/.agents/skills/context-fundamentals/scripts/context_manager.py +533 -0
  30. package/.agents/skills/context-optimization/SKILL.md +195 -0
  31. package/.agents/skills/context-optimization/references/optimization_techniques.md +272 -0
  32. package/.agents/skills/context-optimization/scripts/compaction.py +562 -0
  33. package/.agents/skills/create-spec/SKILL.md +244 -0
  34. package/.agents/skills/critique/SKILL.md +225 -0
  35. package/.agents/skills/critique/reference/cognitive-load.md +106 -0
  36. package/.agents/skills/critique/reference/heuristics-scoring.md +234 -0
  37. package/.agents/skills/critique/reference/personas.md +178 -0
  38. package/.agents/skills/delight/SKILL.md +304 -0
  39. package/.agents/skills/distill/SKILL.md +122 -0
  40. package/.agents/skills/docx/LICENSE.txt +30 -0
  41. package/.agents/skills/docx/SKILL.md +590 -0
  42. package/.agents/skills/docx/scripts/__init__.py +1 -0
  43. package/.agents/skills/docx/scripts/accept_changes.py +135 -0
  44. package/.agents/skills/docx/scripts/comment.py +318 -0
  45. package/.agents/skills/docx/scripts/office/helpers/__init__.py +0 -0
  46. package/.agents/skills/docx/scripts/office/helpers/merge_runs.py +199 -0
  47. package/.agents/skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
  48. package/.agents/skills/docx/scripts/office/pack.py +159 -0
  49. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  50. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  51. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  52. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  53. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  54. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  55. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  56. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  57. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  58. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  59. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  60. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  61. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  62. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  63. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  64. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  65. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  66. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  67. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  68. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  69. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  70. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  71. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  72. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  73. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  74. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  75. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  76. package/.agents/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  77. package/.agents/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  78. package/.agents/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  79. package/.agents/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  80. package/.agents/skills/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  81. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  82. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  83. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  84. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  85. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  86. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  87. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  88. package/.agents/skills/docx/scripts/office/soffice.py +183 -0
  89. package/.agents/skills/docx/scripts/office/unpack.py +132 -0
  90. package/.agents/skills/docx/scripts/office/validate.py +111 -0
  91. package/.agents/skills/docx/scripts/office/validators/__init__.py +15 -0
  92. package/.agents/skills/docx/scripts/office/validators/base.py +847 -0
  93. package/.agents/skills/docx/scripts/office/validators/docx.py +446 -0
  94. package/.agents/skills/docx/scripts/office/validators/pptx.py +275 -0
  95. package/.agents/skills/docx/scripts/office/validators/redlining.py +247 -0
  96. package/.agents/skills/docx/scripts/templates/comments.xml +3 -0
  97. package/.agents/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  98. package/.agents/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  99. package/.agents/skills/docx/scripts/templates/commentsIds.xml +3 -0
  100. package/.agents/skills/docx/scripts/templates/people.xml +3 -0
  101. package/.agents/skills/evaluation/SKILL.md +251 -0
  102. package/.agents/skills/evaluation/references/metrics.md +339 -0
  103. package/.agents/skills/evaluation/scripts/evaluator.py +627 -0
  104. package/.agents/skills/explain-code/SKILL.md +230 -0
  105. package/.agents/skills/extract/SKILL.md +91 -0
  106. package/.agents/skills/filesystem-context/SKILL.md +287 -0
  107. package/.agents/skills/filesystem-context/references/implementation-patterns.md +549 -0
  108. package/.agents/skills/filesystem-context/scripts/filesystem_context.py +425 -0
  109. package/.agents/skills/find-skills/SKILL.md +142 -0
  110. package/.agents/skills/frontend-design/SKILL.md +147 -0
  111. package/.agents/skills/frontend-design/reference/color-and-contrast.md +132 -0
  112. package/.agents/skills/frontend-design/reference/interaction-design.md +195 -0
  113. package/.agents/skills/frontend-design/reference/motion-design.md +99 -0
  114. package/.agents/skills/frontend-design/reference/responsive-design.md +114 -0
  115. package/.agents/skills/frontend-design/reference/spatial-design.md +100 -0
  116. package/.agents/skills/frontend-design/reference/typography.md +133 -0
  117. package/.agents/skills/frontend-design/reference/ux-writing.md +107 -0
  118. package/.agents/skills/gh-commit/SKILL.md +243 -0
  119. package/.agents/skills/gh-create-pr/SKILL.md +93 -0
  120. package/.agents/skills/harden/SKILL.md +354 -0
  121. package/.agents/skills/hosted-agents/SKILL.md +260 -0
  122. package/.agents/skills/hosted-agents/references/infrastructure-patterns.md +700 -0
  123. package/.agents/skills/hosted-agents/scripts/sandbox_manager.py +590 -0
  124. package/.agents/skills/impeccable/SKILL.md +365 -0
  125. package/.agents/skills/impeccable/reference/color-and-contrast.md +105 -0
  126. package/.agents/skills/impeccable/reference/craft.md +70 -0
  127. package/.agents/skills/impeccable/reference/extract.md +70 -0
  128. package/.agents/skills/impeccable/reference/interaction-design.md +195 -0
  129. package/.agents/skills/impeccable/reference/motion-design.md +99 -0
  130. package/.agents/skills/impeccable/reference/responsive-design.md +114 -0
  131. package/.agents/skills/impeccable/reference/spatial-design.md +100 -0
  132. package/.agents/skills/impeccable/reference/typography.md +142 -0
  133. package/.agents/skills/impeccable/reference/ux-writing.md +107 -0
  134. package/.agents/skills/impeccable/scripts/cleanup-deprecated.mjs +214 -0
  135. package/.agents/skills/init/SKILL.md +138 -0
  136. package/.agents/skills/layout/SKILL.md +125 -0
  137. package/.agents/skills/liteparse/SKILL.md +222 -0
  138. package/.agents/skills/memory-systems/SKILL.md +219 -0
  139. package/.agents/skills/memory-systems/references/implementation.md +551 -0
  140. package/.agents/skills/memory-systems/scripts/memory_store.py +616 -0
  141. package/.agents/skills/multi-agent-patterns/SKILL.md +257 -0
  142. package/.agents/skills/multi-agent-patterns/references/frameworks.md +433 -0
  143. package/.agents/skills/multi-agent-patterns/scripts/coordination.py +613 -0
  144. package/.agents/skills/normalize/SKILL.md +70 -0
  145. package/.agents/skills/onboard/SKILL.md +245 -0
  146. package/.agents/skills/opentui/SKILL.md +201 -0
  147. package/.agents/skills/opentui/references/animation/REFERENCE.md +431 -0
  148. package/.agents/skills/opentui/references/components/REFERENCE.md +144 -0
  149. package/.agents/skills/opentui/references/components/code-diff.md +672 -0
  150. package/.agents/skills/opentui/references/components/containers.md +417 -0
  151. package/.agents/skills/opentui/references/components/inputs.md +531 -0
  152. package/.agents/skills/opentui/references/components/text-display.md +386 -0
  153. package/.agents/skills/opentui/references/core/REFERENCE.md +145 -0
  154. package/.agents/skills/opentui/references/core/api.md +543 -0
  155. package/.agents/skills/opentui/references/core/configuration.md +168 -0
  156. package/.agents/skills/opentui/references/core/gotchas.md +393 -0
  157. package/.agents/skills/opentui/references/core/patterns.md +449 -0
  158. package/.agents/skills/opentui/references/keyboard/REFERENCE.md +617 -0
  159. package/.agents/skills/opentui/references/layout/REFERENCE.md +337 -0
  160. package/.agents/skills/opentui/references/layout/patterns.md +444 -0
  161. package/.agents/skills/opentui/references/react/REFERENCE.md +174 -0
  162. package/.agents/skills/opentui/references/react/api.md +436 -0
  163. package/.agents/skills/opentui/references/react/configuration.md +302 -0
  164. package/.agents/skills/opentui/references/react/gotchas.md +443 -0
  165. package/.agents/skills/opentui/references/react/patterns.md +501 -0
  166. package/.agents/skills/opentui/references/solid/REFERENCE.md +201 -0
  167. package/.agents/skills/opentui/references/solid/api.md +564 -0
  168. package/.agents/skills/opentui/references/solid/configuration.md +316 -0
  169. package/.agents/skills/opentui/references/solid/gotchas.md +427 -0
  170. package/.agents/skills/opentui/references/solid/patterns.md +560 -0
  171. package/.agents/skills/opentui/references/testing/REFERENCE.md +614 -0
  172. package/.agents/skills/optimize/SKILL.md +266 -0
  173. package/.agents/skills/overdrive/SKILL.md +142 -0
  174. package/.agents/skills/pdf/LICENSE.txt +30 -0
  175. package/.agents/skills/pdf/SKILL.md +314 -0
  176. package/.agents/skills/pdf/forms.md +294 -0
  177. package/.agents/skills/pdf/reference.md +612 -0
  178. package/.agents/skills/pdf/scripts/check_bounding_boxes.py +65 -0
  179. package/.agents/skills/pdf/scripts/check_fillable_fields.py +11 -0
  180. package/.agents/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
  181. package/.agents/skills/pdf/scripts/create_validation_image.py +37 -0
  182. package/.agents/skills/pdf/scripts/extract_form_field_info.py +122 -0
  183. package/.agents/skills/pdf/scripts/extract_form_structure.py +115 -0
  184. package/.agents/skills/pdf/scripts/fill_fillable_fields.py +98 -0
  185. package/.agents/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  186. package/.agents/skills/playwright-cli/SKILL.md +344 -0
  187. package/.agents/skills/playwright-cli/references/element-attributes.md +23 -0
  188. package/.agents/skills/playwright-cli/references/playwright-tests.md +39 -0
  189. package/.agents/skills/playwright-cli/references/request-mocking.md +87 -0
  190. package/.agents/skills/playwright-cli/references/running-code.md +231 -0
  191. package/.agents/skills/playwright-cli/references/session-management.md +169 -0
  192. package/.agents/skills/playwright-cli/references/storage-state.md +275 -0
  193. package/.agents/skills/playwright-cli/references/test-generation.md +88 -0
  194. package/.agents/skills/playwright-cli/references/tracing.md +139 -0
  195. package/.agents/skills/playwright-cli/references/video-recording.md +143 -0
  196. package/.agents/skills/polish/SKILL.md +224 -0
  197. package/.agents/skills/pptx/LICENSE.txt +30 -0
  198. package/.agents/skills/pptx/SKILL.md +232 -0
  199. package/.agents/skills/pptx/editing.md +205 -0
  200. package/.agents/skills/pptx/pptxgenjs.md +420 -0
  201. package/.agents/skills/pptx/scripts/__init__.py +0 -0
  202. package/.agents/skills/pptx/scripts/add_slide.py +195 -0
  203. package/.agents/skills/pptx/scripts/clean.py +286 -0
  204. package/.agents/skills/pptx/scripts/office/helpers/__init__.py +0 -0
  205. package/.agents/skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
  206. package/.agents/skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
  207. package/.agents/skills/pptx/scripts/office/pack.py +159 -0
  208. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  209. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  210. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  211. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  212. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  213. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  214. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  215. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  216. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  217. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  218. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  219. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  220. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  221. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  222. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  223. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  224. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  225. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  226. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  227. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  228. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  229. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  230. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  231. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  232. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  233. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  234. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  235. package/.agents/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  236. package/.agents/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  237. package/.agents/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  238. package/.agents/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  239. package/.agents/skills/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
  240. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  241. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  242. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  243. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  244. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  245. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  246. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  247. package/.agents/skills/pptx/scripts/office/soffice.py +183 -0
  248. package/.agents/skills/pptx/scripts/office/unpack.py +132 -0
  249. package/.agents/skills/pptx/scripts/office/validate.py +111 -0
  250. package/.agents/skills/pptx/scripts/office/validators/__init__.py +15 -0
  251. package/.agents/skills/pptx/scripts/office/validators/base.py +847 -0
  252. package/.agents/skills/pptx/scripts/office/validators/docx.py +446 -0
  253. package/.agents/skills/pptx/scripts/office/validators/pptx.py +275 -0
  254. package/.agents/skills/pptx/scripts/office/validators/redlining.py +247 -0
  255. package/.agents/skills/pptx/scripts/thumbnail.py +289 -0
  256. package/.agents/skills/project-development/SKILL.md +291 -0
  257. package/.agents/skills/project-development/references/case-studies.md +388 -0
  258. package/.agents/skills/project-development/references/pipeline-patterns.md +610 -0
  259. package/.agents/skills/project-development/scripts/pipeline_template.py +796 -0
  260. package/.agents/skills/prompt-engineer/SKILL.md +263 -0
  261. package/.agents/skills/prompt-engineer/references/advanced_patterns.md +271 -0
  262. package/.agents/skills/prompt-engineer/references/core_prompting.md +137 -0
  263. package/.agents/skills/prompt-engineer/references/quality_improvement.md +193 -0
  264. package/.agents/skills/quieter/SKILL.md +103 -0
  265. package/.agents/skills/research-codebase/SKILL.md +227 -0
  266. package/.agents/skills/shape/SKILL.md +96 -0
  267. package/.agents/skills/skill-creator/LICENSE.txt +202 -0
  268. package/.agents/skills/skill-creator/SKILL.md +485 -0
  269. package/.agents/skills/skill-creator/agents/analyzer.md +274 -0
  270. package/.agents/skills/skill-creator/agents/comparator.md +202 -0
  271. package/.agents/skills/skill-creator/agents/grader.md +223 -0
  272. package/.agents/skills/skill-creator/assets/eval_review.html +146 -0
  273. package/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  274. package/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  275. package/.agents/skills/skill-creator/references/schemas.md +430 -0
  276. package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
  277. package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  278. package/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
  279. package/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
  280. package/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
  281. package/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
  282. package/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
  283. package/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
  284. package/.agents/skills/skill-creator/scripts/utils.py +47 -0
  285. package/.agents/skills/sl-commit/SKILL.md +51 -0
  286. package/.agents/skills/sl-submit-diff/SKILL.md +55 -0
  287. package/.agents/skills/teach-impeccable/SKILL.md +71 -0
  288. package/.agents/skills/test-driven-development/SKILL.md +371 -0
  289. package/.agents/skills/test-driven-development/testing-anti-patterns.md +299 -0
  290. package/.agents/skills/tool-design/SKILL.md +271 -0
  291. package/.agents/skills/tool-design/references/architectural_reduction.md +210 -0
  292. package/.agents/skills/tool-design/references/best_practices.md +176 -0
  293. package/.agents/skills/tool-design/scripts/description_generator.py +528 -0
  294. package/.agents/skills/typescript-advanced-types/SKILL.md +719 -0
  295. package/.agents/skills/typescript-expert/SKILL.md +428 -0
  296. package/.agents/skills/typescript-expert/references/tsconfig-strict.json +92 -0
  297. package/.agents/skills/typescript-expert/references/typescript-cheatsheet.md +383 -0
  298. package/.agents/skills/typescript-expert/references/utility-types.ts +335 -0
  299. package/.agents/skills/typescript-expert/scripts/ts_diagnostic.py +203 -0
  300. package/.agents/skills/typescript-react-reviewer/SKILL.md +200 -0
  301. package/.agents/skills/typescript-react-reviewer/references/antipatterns.md +510 -0
  302. package/.agents/skills/typescript-react-reviewer/references/checklist.md +267 -0
  303. package/.agents/skills/typescript-react-reviewer/references/react19-patterns.md +305 -0
  304. package/.agents/skills/typeset/SKILL.md +116 -0
  305. package/.agents/skills/workflow-creator/SKILL.md +337 -0
  306. package/.agents/skills/workflow-creator/references/agent-sessions.md +789 -0
  307. package/.agents/skills/workflow-creator/references/computation-and-validation.md +224 -0
  308. package/.agents/skills/workflow-creator/references/control-flow.md +450 -0
  309. package/.agents/skills/workflow-creator/references/discovery-and-verification.md +156 -0
  310. package/.agents/skills/workflow-creator/references/failure-modes.md +732 -0
  311. package/.agents/skills/workflow-creator/references/getting-started.md +289 -0
  312. package/.agents/skills/workflow-creator/references/session-config.md +355 -0
  313. package/.agents/skills/workflow-creator/references/state-and-data-flow.md +374 -0
  314. package/.agents/skills/workflow-creator/references/user-input.md +206 -0
  315. package/.agents/skills/workflow-creator/references/workflow-inputs.md +274 -0
  316. package/.agents/skills/xlsx/LICENSE.txt +30 -0
  317. package/.agents/skills/xlsx/SKILL.md +292 -0
  318. package/.agents/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
  319. package/.agents/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
  320. package/.agents/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  321. package/.agents/skills/xlsx/scripts/office/pack.py +159 -0
  322. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  323. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  324. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  325. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  326. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  327. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  328. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  329. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  330. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  331. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  332. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  333. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  334. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  335. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  336. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  337. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  338. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  339. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  340. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  341. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  342. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  343. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  344. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  345. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  346. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  347. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  348. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  349. package/.agents/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  350. package/.agents/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  351. package/.agents/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  352. package/.agents/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  353. package/.agents/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  354. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  355. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  356. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  357. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  358. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  359. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  360. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  361. package/.agents/skills/xlsx/scripts/office/soffice.py +183 -0
  362. package/.agents/skills/xlsx/scripts/office/unpack.py +132 -0
  363. package/.agents/skills/xlsx/scripts/office/validate.py +111 -0
  364. package/.agents/skills/xlsx/scripts/office/validators/__init__.py +15 -0
  365. package/.agents/skills/xlsx/scripts/office/validators/base.py +847 -0
  366. package/.agents/skills/xlsx/scripts/office/validators/docx.py +446 -0
  367. package/.agents/skills/xlsx/scripts/office/validators/pptx.py +275 -0
  368. package/.agents/skills/xlsx/scripts/office/validators/redlining.py +247 -0
  369. package/.agents/skills/xlsx/scripts/recalc.py +184 -0
  370. package/.claude/agents/reviewer.md +1 -0
  371. package/.github/agents/reviewer.md +1 -0
  372. package/.opencode/agents/reviewer.md +1 -0
  373. package/README.md +274 -169
  374. package/package.json +6 -7
  375. package/src/commands/cli/init/index.ts +2 -2
  376. package/src/commands/cli/init/scm.ts +7 -8
  377. package/src/commands/cli/workflow-command.test.ts +74 -0
  378. package/src/commands/cli/workflow.ts +7 -2
  379. package/src/scripts/bundle-configs.ts +128 -0
  380. package/src/sdk/components/compact-switcher.tsx +1 -1
  381. package/src/sdk/components/orchestrator-panel-store.ts +13 -0
  382. package/src/sdk/components/orchestrator-panel.tsx +10 -0
  383. package/src/sdk/components/statusline.tsx +13 -1
  384. package/src/sdk/components/workflow-picker-panel.tsx +407 -296
  385. package/src/sdk/providers/claude.ts +50 -0
  386. package/src/sdk/runtime/executor.ts +111 -32
  387. package/src/sdk/types.ts +7 -0
  388. package/src/sdk/workflows/builtin/ralph/claude/index.ts +132 -76
  389. package/src/sdk/workflows/builtin/ralph/copilot/index.ts +129 -71
  390. package/src/sdk/workflows/builtin/ralph/helpers/git.ts +184 -17
  391. package/src/sdk/workflows/builtin/ralph/helpers/prompts.ts +463 -79
  392. package/src/sdk/workflows/builtin/ralph/opencode/index.ts +124 -80
  393. package/src/services/system/auto-sync.ts +31 -51
  394. package/src/services/system/skills.ts +56 -60
  395. package/dist/lib/path-root-guard.d.ts +0 -4
  396. package/dist/lib/path-root-guard.d.ts.map +0 -1
  397. package/dist/sdk/components/color-utils.d.ts +0 -4
  398. package/dist/sdk/components/color-utils.d.ts.map +0 -1
  399. package/dist/sdk/components/compact-switcher.d.ts +0 -10
  400. package/dist/sdk/components/compact-switcher.d.ts.map +0 -1
  401. package/dist/sdk/components/connectors.d.ts +0 -15
  402. package/dist/sdk/components/connectors.d.ts.map +0 -1
  403. package/dist/sdk/components/connectors.test.d.ts +0 -2
  404. package/dist/sdk/components/connectors.test.d.ts.map +0 -1
  405. package/dist/sdk/components/edge.d.ts +0 -4
  406. package/dist/sdk/components/edge.d.ts.map +0 -1
  407. package/dist/sdk/components/error-boundary.d.ts +0 -23
  408. package/dist/sdk/components/error-boundary.d.ts.map +0 -1
  409. package/dist/sdk/components/graph-theme.d.ts +0 -17
  410. package/dist/sdk/components/graph-theme.d.ts.map +0 -1
  411. package/dist/sdk/components/header.d.ts +0 -3
  412. package/dist/sdk/components/header.d.ts.map +0 -1
  413. package/dist/sdk/components/hooks.d.ts +0 -15
  414. package/dist/sdk/components/hooks.d.ts.map +0 -1
  415. package/dist/sdk/components/layout.d.ts +0 -27
  416. package/dist/sdk/components/layout.d.ts.map +0 -1
  417. package/dist/sdk/components/layout.test.d.ts +0 -2
  418. package/dist/sdk/components/layout.test.d.ts.map +0 -1
  419. package/dist/sdk/components/node-card.d.ts +0 -10
  420. package/dist/sdk/components/node-card.d.ts.map +0 -1
  421. package/dist/sdk/components/orchestrator-panel-contexts.d.ts +0 -16
  422. package/dist/sdk/components/orchestrator-panel-contexts.d.ts.map +0 -1
  423. package/dist/sdk/components/orchestrator-panel-store.d.ts +0 -46
  424. package/dist/sdk/components/orchestrator-panel-store.d.ts.map +0 -1
  425. package/dist/sdk/components/orchestrator-panel-store.test.d.ts +0 -2
  426. package/dist/sdk/components/orchestrator-panel-store.test.d.ts.map +0 -1
  427. package/dist/sdk/components/orchestrator-panel-types.d.ts +0 -18
  428. package/dist/sdk/components/orchestrator-panel-types.d.ts.map +0 -1
  429. package/dist/sdk/components/orchestrator-panel.d.ts +0 -52
  430. package/dist/sdk/components/orchestrator-panel.d.ts.map +0 -1
  431. package/dist/sdk/components/session-graph-panel.d.ts +0 -7
  432. package/dist/sdk/components/session-graph-panel.d.ts.map +0 -1
  433. package/dist/sdk/components/status-helpers.d.ts +0 -6
  434. package/dist/sdk/components/status-helpers.d.ts.map +0 -1
  435. package/dist/sdk/components/statusline.d.ts +0 -7
  436. package/dist/sdk/components/statusline.d.ts.map +0 -1
  437. package/dist/sdk/components/workflow-picker-panel.d.ts +0 -123
  438. package/dist/sdk/components/workflow-picker-panel.d.ts.map +0 -1
  439. package/dist/sdk/define-workflow.d.ts +0 -78
  440. package/dist/sdk/define-workflow.d.ts.map +0 -1
  441. package/dist/sdk/define-workflow.test.d.ts +0 -2
  442. package/dist/sdk/define-workflow.test.d.ts.map +0 -1
  443. package/dist/sdk/errors.d.ts +0 -24
  444. package/dist/sdk/errors.d.ts.map +0 -1
  445. package/dist/sdk/errors.test.d.ts +0 -2
  446. package/dist/sdk/errors.test.d.ts.map +0 -1
  447. package/dist/sdk/index.d.ts +0 -13
  448. package/dist/sdk/index.d.ts.map +0 -1
  449. package/dist/sdk/providers/claude.d.ts +0 -170
  450. package/dist/sdk/providers/claude.d.ts.map +0 -1
  451. package/dist/sdk/providers/copilot.d.ts +0 -11
  452. package/dist/sdk/providers/copilot.d.ts.map +0 -1
  453. package/dist/sdk/providers/opencode.d.ts +0 -11
  454. package/dist/sdk/providers/opencode.d.ts.map +0 -1
  455. package/dist/sdk/runtime/discovery.d.ts +0 -86
  456. package/dist/sdk/runtime/discovery.d.ts.map +0 -1
  457. package/dist/sdk/runtime/executor-entry.d.ts +0 -11
  458. package/dist/sdk/runtime/executor-entry.d.ts.map +0 -1
  459. package/dist/sdk/runtime/executor.d.ts +0 -72
  460. package/dist/sdk/runtime/executor.d.ts.map +0 -1
  461. package/dist/sdk/runtime/executor.test.d.ts +0 -2
  462. package/dist/sdk/runtime/executor.test.d.ts.map +0 -1
  463. package/dist/sdk/runtime/graph-inference.d.ts +0 -35
  464. package/dist/sdk/runtime/graph-inference.d.ts.map +0 -1
  465. package/dist/sdk/runtime/loader.d.ts +0 -70
  466. package/dist/sdk/runtime/loader.d.ts.map +0 -1
  467. package/dist/sdk/runtime/panel.d.ts +0 -9
  468. package/dist/sdk/runtime/panel.d.ts.map +0 -1
  469. package/dist/sdk/runtime/theme.d.ts +0 -28
  470. package/dist/sdk/runtime/theme.d.ts.map +0 -1
  471. package/dist/sdk/runtime/tmux.d.ts +0 -297
  472. package/dist/sdk/runtime/tmux.d.ts.map +0 -1
  473. package/dist/sdk/types.d.ts +0 -295
  474. package/dist/sdk/types.d.ts.map +0 -1
  475. package/dist/sdk/workflows/builtin/deep-research-codebase/claude/index.d.ts +0 -62
  476. package/dist/sdk/workflows/builtin/deep-research-codebase/claude/index.d.ts.map +0 -1
  477. package/dist/sdk/workflows/builtin/deep-research-codebase/copilot/index.d.ts +0 -46
  478. package/dist/sdk/workflows/builtin/deep-research-codebase/copilot/index.d.ts.map +0 -1
  479. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/heuristic.d.ts +0 -26
  480. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/heuristic.d.ts.map +0 -1
  481. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.d.ts +0 -92
  482. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.d.ts.map +0 -1
  483. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scout.d.ts +0 -57
  484. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scout.d.ts.map +0 -1
  485. package/dist/sdk/workflows/builtin/deep-research-codebase/opencode/index.d.ts +0 -49
  486. package/dist/sdk/workflows/builtin/deep-research-codebase/opencode/index.d.ts.map +0 -1
  487. package/dist/sdk/workflows/builtin/ralph/claude/index.d.ts +0 -14
  488. package/dist/sdk/workflows/builtin/ralph/claude/index.d.ts.map +0 -1
  489. package/dist/sdk/workflows/builtin/ralph/copilot/index.d.ts +0 -14
  490. package/dist/sdk/workflows/builtin/ralph/copilot/index.d.ts.map +0 -1
  491. package/dist/sdk/workflows/builtin/ralph/helpers/git.d.ts +0 -17
  492. package/dist/sdk/workflows/builtin/ralph/helpers/git.d.ts.map +0 -1
  493. package/dist/sdk/workflows/builtin/ralph/helpers/prompts.d.ts +0 -119
  494. package/dist/sdk/workflows/builtin/ralph/helpers/prompts.d.ts.map +0 -1
  495. package/dist/sdk/workflows/builtin/ralph/helpers/review.d.ts +0 -20
  496. package/dist/sdk/workflows/builtin/ralph/helpers/review.d.ts.map +0 -1
  497. package/dist/sdk/workflows/builtin/ralph/opencode/index.d.ts +0 -14
  498. package/dist/sdk/workflows/builtin/ralph/opencode/index.d.ts.map +0 -1
  499. package/dist/sdk/workflows/index.d.ts +0 -24
  500. package/dist/sdk/workflows/index.d.ts.map +0 -1
  501. package/dist/services/config/definitions.d.ts +0 -85
  502. package/dist/services/config/definitions.d.ts.map +0 -1
  503. package/dist/services/system/copy.d.ts +0 -77
  504. package/dist/services/system/copy.d.ts.map +0 -1
  505. package/dist/services/system/detect.d.ts +0 -75
  506. package/dist/services/system/detect.d.ts.map +0 -1
  507. package/tsconfig.json +0 -33
@@ -0,0 +1,267 @@
1
+ # Code Review Checklist
2
+
3
+ ## Critical Issues (Block Merge)
4
+
5
+ ### React Hooks
6
+
7
+ - [ ] No `useEffect` that only computes derived state
8
+ - [ ] No missing cleanup functions (subscriptions, timers, fetch)
9
+ - [ ] No conditional hook calls (`if (x) { useState() }`)
10
+ - [ ] Dependency arrays are complete and correct
11
+ - [ ] No `eslint-disable react-hooks/exhaustive-deps` without strong justification
12
+
13
+ ### State Management
14
+
15
+ - [ ] No direct state mutations (`.push()`, `.splice()`, `arr[i] = x`)
16
+ - [ ] No copying server data to local state (TanStack Query data → useState)
17
+ - [ ] State is colocated near where it's used
18
+
19
+ ### React 19 Specific
20
+
21
+ - [ ] `useFormStatus` called in child component, not same component as `<form>`
22
+ - [ ] Promises passed to `use()` are not created inline in render
23
+ - [ ] Server Actions have `'use server'` directive
24
+ - [ ] `'use client'` boundary is as low as possible in component tree
25
+
26
+ ### Keys
27
+
28
+ - [ ] No `index` as key in lists that can reorder, filter, or add/remove items
29
+ - [ ] Keys are stable and unique within siblings
30
+
31
+ ### TypeScript
32
+
33
+ - [ ] No `any` type without explicit justification comment
34
+ - [ ] Array access handles possible `undefined` (or `noUncheckedIndexedAccess` enabled)
35
+ - [ ] Props interfaces use discriminated unions for mutually exclusive props
36
+
37
+ ---
38
+
39
+ ## High Priority Issues
40
+
41
+ ### Component Structure
42
+
43
+ - [ ] No component defined inside another component (causes remount)
44
+ - [ ] Components under 300 lines (split if larger)
45
+ - [ ] Single responsibility - one reason to change
46
+
47
+ ### Props and State
48
+
49
+ - [ ] Controlled inputs initialized with empty string, not `undefined`
50
+ - [ ] Props typed explicitly (not using `React.FC` with generics)
51
+ - [ ] No prop drilling beyond 2-3 levels
52
+
53
+ ### Performance
54
+
55
+ - [ ] `useMemo`/`useCallback` justified by measurement or `React.memo` child
56
+ - [ ] No inline object/function in JSX passed to memoized children
57
+ - [ ] Large lists use virtualization (react-window, react-virtual)
58
+
59
+ ### Error Handling
60
+
61
+ - [ ] Error boundaries at appropriate granularity
62
+ - [ ] Async operations have error handling
63
+ - [ ] Form validation shows clear error messages
64
+
65
+ ---
66
+
67
+ ## Architecture Checks
68
+
69
+ ### Custom Hooks
70
+
71
+ - [ ] Hook names start with `use` followed by capital letter
72
+ - [ ] Hooks are reusable or significantly improve readability
73
+ - [ ] Non-hook logic extracted to utility functions instead
74
+
75
+ ### State Management Strategy
76
+
77
+ - [ ] Server state uses TanStack Query (or similar)
78
+ - [ ] Client state uses appropriate solution:
79
+ - Local: `useState`/`useReducer`
80
+ - Global simple: Zustand
81
+ - Global derived: Jotai
82
+ - [ ] Form state uses React 19 `useActionState` where appropriate
83
+
84
+ ### File Organization
85
+
86
+ - [ ] Feature-based folder structure for larger apps
87
+ - [ ] No barrel files (`index.ts`) in application code
88
+ - [ ] Shared components in `components/`
89
+ - [ ] Feature-specific code in `features/<name>/`
90
+
91
+ ---
92
+
93
+ ## TypeScript Quality
94
+
95
+ ### Type Safety
96
+
97
+ - [ ] Strict mode enabled (`"strict": true`)
98
+ - [ ] `noUncheckedIndexedAccess: true` for array safety
99
+ - [ ] Generic components preserve type inference
100
+ - [ ] Event handlers properly typed (`React.MouseEvent<HTMLButtonElement>`)
101
+
102
+ ### Type Patterns
103
+
104
+ - [ ] Discriminated unions for variant props
105
+ - [ ] `as const` for literal types where appropriate
106
+ - [ ] Explicit return types on exported functions
107
+ - [ ] No type assertions (`as`) without comment explaining why
108
+
109
+ ### Context Typing
110
+
111
+ - [ ] Context created with `null` default has custom hook with null check
112
+ - [ ] Provider value is memoized if object
113
+
114
+ ```typescript
115
+ // ✅ Correct context pattern
116
+ const MyContext = createContext<ContextType | null>(null);
117
+
118
+ function useMyContext() {
119
+ const ctx = useContext(MyContext);
120
+ if (!ctx) throw new Error('useMyContext must be within MyProvider');
121
+ return ctx;
122
+ }
123
+
124
+ function MyProvider({ children }: { children: ReactNode }) {
125
+ const value = useMemo(() => ({ /* ... */ }), [deps]);
126
+ return <MyContext value={value}>{children}</MyContext>;
127
+ }
128
+ ```
129
+
130
+ ---
131
+
132
+ ## Performance Checks
133
+
134
+ ### Re-render Prevention
135
+
136
+ - [ ] `React.memo` used for expensive pure components
137
+ - [ ] Callbacks passed to memoized children are stable (`useCallback`)
138
+ - [ ] Object props to memoized children are stable (`useMemo`)
139
+ - [ ] Zustand selectors select minimal state
140
+
141
+ ### Bundle Size
142
+
143
+ - [ ] Route-level code splitting with `React.lazy`
144
+ - [ ] Heavy libraries imported dynamically where possible
145
+ - [ ] No unused dependencies
146
+ - [ ] Tree-shaking friendly imports (no `import * as`)
147
+
148
+ ### Lists and Tables
149
+
150
+ - [ ] Virtualization for 100+ items
151
+ - [ ] Stable keys for all list items
152
+ - [ ] Filtered/sorted lists memoized if expensive
153
+
154
+ ---
155
+
156
+ ## Accessibility (a11y)
157
+
158
+ ### Semantic HTML
159
+
160
+ - [ ] Interactive elements are `<button>`, `<a>`, `<input>`, etc. (not `<div onClick>`)
161
+ - [ ] Headings follow hierarchy (`h1` → `h2` → `h3`)
162
+ - [ ] Lists use `<ul>`/`<ol>`/`<li>`
163
+
164
+ ### Forms
165
+
166
+ - [ ] All inputs have associated `<label>` (via `htmlFor` or wrapping)
167
+ - [ ] Required fields indicated visually and via `aria-required`
168
+ - [ ] Error messages associated via `aria-describedby`
169
+
170
+ ### Keyboard Navigation
171
+
172
+ - [ ] All interactive elements focusable
173
+ - [ ] Visible focus indicators (don't remove `outline`)
174
+ - [ ] `tabIndex` used appropriately (0 or -1, rarely positive)
175
+
176
+ ### Screen Readers
177
+
178
+ - [ ] Images have meaningful `alt` text (or `alt=""` if decorative)
179
+ - [ ] Icons have `aria-label` or `aria-hidden="true"`
180
+ - [ ] Dynamic content updates announced (`aria-live`)
181
+
182
+ ### Links
183
+
184
+ - [ ] External links have `rel="noopener noreferrer"` with `target="_blank"`
185
+ - [ ] Link text is descriptive (not "click here")
186
+
187
+ ---
188
+
189
+ ## Testing Standards
190
+
191
+ ### Query Priority
192
+
193
+ Use queries in this order (Testing Library best practice):
194
+
195
+ 1. `getByRole` - accessible to everyone
196
+ 2. `getByLabelText` - form fields
197
+ 3. `getByPlaceholderText` - if no label
198
+ 4. `getByText` - non-interactive elements
199
+ 5. `getByTestId` - last resort
200
+
201
+ ### Test Quality
202
+
203
+ - [ ] Tests verify behavior, not implementation
204
+ - [ ] `userEvent` used instead of `fireEvent`
205
+ - [ ] Async operations use `waitFor` or `findBy`
206
+ - [ ] Error states covered
207
+ - [ ] Edge cases covered (empty state, loading, error)
208
+
209
+ ### Test Structure
210
+
211
+ - [ ] Arrange-Act-Assert pattern
212
+ - [ ] One assertion focus per test (can have multiple asserts)
213
+ - [ ] Test descriptions explain expected behavior
214
+ - [ ] No test interdependencies
215
+
216
+ ---
217
+
218
+ ## Quick Reference: Common Issues by Symptom
219
+
220
+ | Symptom | Likely Cause | Check |
221
+ |---------|--------------|-------|
222
+ | Infinite re-renders | Object in dependency array | New object created each render? |
223
+ | Stale state in callback | Missing dependency | Closure over old value? |
224
+ | State doesn't update | Direct mutation | Using `.push()` or direct assignment? |
225
+ | Controlled input warning | `undefined` initial value | Initialize with empty string |
226
+ | Hook error | Conditional hook call | Hook inside `if`/loop? |
227
+ | Memory leak warning | Missing cleanup | Subscription/timer without cleanup? |
228
+ | Type error on array access | Missing undefined check | Enable `noUncheckedIndexedAccess` |
229
+ | Child re-renders unnecessarily | Unstable props | Inline object/function to memo child? |
230
+ | Form status always false | Wrong component | `useFormStatus` in form component? |
231
+
232
+ ---
233
+
234
+ ## Review Comment Templates
235
+
236
+ ### Critical Issue
237
+
238
+ ```
239
+ 🚫 **Critical:** [Issue description]
240
+
241
+ This will cause [bug/leak/crash] because [reason].
242
+
243
+ **Current:**
244
+ ```code```
245
+
246
+ **Should be:**
247
+ ```code```
248
+ ```
249
+
250
+ ### Suggestion
251
+
252
+ ```
253
+ 💡 **Suggestion:** [Improvement description]
254
+
255
+ This would improve [maintainability/performance/readability] by [reason].
256
+
257
+ **Consider:**
258
+ ```code```
259
+ ```
260
+
261
+ ### Question
262
+
263
+ ```
264
+ ❓ **Question:** [Clarification needed]
265
+
266
+ Is this intentional? [Context for why you're asking]
267
+ ```
@@ -0,0 +1,305 @@
1
+ # React 19 Patterns Reference
2
+
3
+ ## useActionState (Forms)
4
+
5
+ Replaces manual `isLoading`, `error`, `data` state management for form actions.
6
+
7
+ ```typescript
8
+ import { useActionState } from 'react';
9
+
10
+ interface FormState {
11
+ error: string | null;
12
+ success: boolean;
13
+ }
14
+
15
+ async function createPost(prevState: FormState, formData: FormData): Promise<FormState> {
16
+ const title = formData.get('title') as string;
17
+ if (!title) return { error: 'Title required', success: false };
18
+
19
+ await fetch('/api/posts', { method: 'POST', body: JSON.stringify({ title }) });
20
+ return { error: null, success: true };
21
+ }
22
+
23
+ function NewPostForm() {
24
+ const [state, formAction, isPending] = useActionState(createPost, {
25
+ error: null,
26
+ success: false,
27
+ });
28
+
29
+ return (
30
+ <form action={formAction}>
31
+ <input name="title" />
32
+ <button type="submit" disabled={isPending}>
33
+ {isPending ? 'Submitting...' : 'Submit'}
34
+ </button>
35
+ {state.error && <p className="error">{state.error}</p>}
36
+ </form>
37
+ );
38
+ }
39
+ ```
40
+
41
+ **Review Points:**
42
+ - Action function must return consistent object shape
43
+ - Actions should be pure (return new state, not mutate)
44
+ - Check that error handling covers all failure cases
45
+
46
+ ## useFormStatus (Submit Button State)
47
+
48
+ **Critical Rule:** Must be called in a child component of `<form>`, NOT in the same component.
49
+
50
+ ```typescript
51
+ import { useFormStatus } from 'react-dom';
52
+
53
+ // ✅ CORRECT: Child component
54
+ function SubmitButton({ children }: { children: React.ReactNode }) {
55
+ const { pending, data, method, action } = useFormStatus();
56
+ return (
57
+ <button type="submit" disabled={pending}>
58
+ {pending ? 'Submitting...' : children}
59
+ </button>
60
+ );
61
+ }
62
+
63
+ function MyForm() {
64
+ return (
65
+ <form action={submitAction}>
66
+ <input name="email" />
67
+ <SubmitButton>Send</SubmitButton>
68
+ </form>
69
+ );
70
+ }
71
+
72
+ // ❌ WRONG: Same component as form - pending is always false!
73
+ function BadForm() {
74
+ const { pending } = useFormStatus(); // BUG: Always false
75
+ return (
76
+ <form action={submitAction}>
77
+ <button disabled={pending}>Submit</button>
78
+ </form>
79
+ );
80
+ }
81
+ ```
82
+
83
+ ## useOptimistic (Instant UI Updates)
84
+
85
+ Provides instant feedback before server confirms. Automatically reverts on error.
86
+
87
+ ```typescript
88
+ import { useOptimistic, startTransition } from 'react';
89
+
90
+ interface Message {
91
+ id: string;
92
+ text: string;
93
+ sending?: boolean;
94
+ }
95
+
96
+ function MessageThread({ messages }: { messages: Message[] }) {
97
+ const [optimisticMessages, addOptimisticMessage] = useOptimistic(
98
+ messages,
99
+ (currentMessages, newText: string) => [
100
+ { id: crypto.randomUUID(), text: newText, sending: true },
101
+ ...currentMessages,
102
+ ]
103
+ );
104
+
105
+ async function sendMessage(formData: FormData) {
106
+ const text = formData.get('message') as string;
107
+ addOptimisticMessage(text);
108
+
109
+ startTransition(async () => {
110
+ await deliverMessage(text);
111
+ });
112
+ }
113
+
114
+ return (
115
+ <div>
116
+ {optimisticMessages.map(msg => (
117
+ <div key={msg.id} style={{ opacity: msg.sending ? 0.5 : 1 }}>
118
+ {msg.text}
119
+ </div>
120
+ ))}
121
+ <form action={sendMessage}>
122
+ <input name="message" />
123
+ <button type="submit">Send</button>
124
+ </form>
125
+ </div>
126
+ );
127
+ }
128
+ ```
129
+
130
+ **Review Points:**
131
+ - Optimistic state should be visually distinct (opacity, spinner)
132
+ - Consider what happens on error (automatic revert)
133
+ - Wrap async operations in `startTransition`
134
+
135
+ ## use() API (Promise and Context Reading)
136
+
137
+ Unlike hooks, `use()` can be called conditionally. Major departure from traditional React rules.
138
+
139
+ ### Reading Promises
140
+
141
+ ```typescript
142
+ import { use, Suspense } from 'react';
143
+
144
+ // ✅ CORRECT: Promise passed from parent
145
+ function Comments({ commentsPromise }: { commentsPromise: Promise<Comment[]> }) {
146
+ const comments = use(commentsPromise); // Suspends until resolved
147
+ return <ul>{comments.map(c => <li key={c.id}>{c.text}</li>)}</ul>;
148
+ }
149
+
150
+ function Page() {
151
+ const commentsPromise = fetchComments(); // Created once
152
+ return (
153
+ <Suspense fallback={<Spinner />}>
154
+ <Comments commentsPromise={commentsPromise} />
155
+ </Suspense>
156
+ );
157
+ }
158
+
159
+ // ❌ WRONG: Promise created in render - INFINITE LOOP
160
+ function BadComponent() {
161
+ const data = use(fetch('/api').then(r => r.json())); // New promise every render!
162
+ }
163
+ ```
164
+
165
+ ### Conditional Context Reading
166
+
167
+ ```typescript
168
+ import { use, createContext } from 'react';
169
+
170
+ const ThemeContext = createContext<string>('light');
171
+
172
+ // ✅ use() can be called conditionally (useContext cannot!)
173
+ function HorizontalRule({ show }: { show: boolean }) {
174
+ if (show) {
175
+ const theme = use(ThemeContext);
176
+ return <hr className={`hr-${theme}`} />;
177
+ }
178
+ return null;
179
+ }
180
+ ```
181
+
182
+ **Review Points:**
183
+ - Always wrap `use(promise)` in `<Suspense>`
184
+ - Promise must come from props, state, or outside component
185
+ - Never create promise inline in render
186
+
187
+ ## Server vs Client Components
188
+
189
+ | Server Components | Client Components |
190
+ |-------------------|-------------------|
191
+ | No directive needed | Must start with `'use client'` |
192
+ | Can access DB, filesystem | Can use useState, useEffect |
193
+ | Zero client JS | Ships JS to browser |
194
+ | Cannot use hooks | Full interactivity |
195
+
196
+ ### Boundary Placement
197
+
198
+ Push `'use client'` as low as possible in the tree.
199
+
200
+ ```typescript
201
+ // ✅ GOOD: Only interactive part is Client Component
202
+ // ProductPage.tsx (Server Component - no directive)
203
+ async function ProductPage({ id }: { id: string }) {
204
+ const product = await db.query(`SELECT * FROM products WHERE id = $1`, [id]);
205
+
206
+ return (
207
+ <article>
208
+ <h1>{product.name}</h1> {/* Server: no JS */}
209
+ <p>{product.description}</p> {/* Server: no JS */}
210
+ <AddToCartButton productId={id} /> {/* Client: needs onClick */}
211
+ </article>
212
+ );
213
+ }
214
+
215
+ // AddToCartButton.tsx
216
+ 'use client';
217
+ function AddToCartButton({ productId }: { productId: string }) {
218
+ const [adding, setAdding] = useState(false);
219
+ // Client-side interactivity
220
+ }
221
+
222
+ // ❌ BAD: Entire page is client-side unnecessarily
223
+ 'use client';
224
+ function ProductPage({ id }) {
225
+ // Everything ships to client even though most is static
226
+ }
227
+ ```
228
+
229
+ ### Serialization Constraint
230
+
231
+ Props passed from Server to Client Components must be serializable.
232
+
233
+ **Cannot pass:**
234
+ - Functions (except Server Actions)
235
+ - Classes
236
+ - Symbols
237
+ - DOM nodes
238
+
239
+ ```typescript
240
+ // ❌ WRONG: Function prop from Server to Client
241
+ async function ServerParent() {
242
+ const handleClick = () => console.log('clicked'); // Not serializable!
243
+ return <ClientChild onClick={handleClick} />;
244
+ }
245
+
246
+ // ✅ CORRECT: Use Server Action
247
+ async function ServerParent() {
248
+ async function handleSubmit(formData: FormData) {
249
+ 'use server';
250
+ // Server-side logic
251
+ }
252
+ return <ClientChild onSubmit={handleSubmit} />;
253
+ }
254
+ ```
255
+
256
+ ## ref as Prop (React 19)
257
+
258
+ No more `forwardRef` needed - ref can be passed as a regular prop.
259
+
260
+ ```typescript
261
+ // React 18: Required forwardRef
262
+ const Input = forwardRef<HTMLInputElement, InputProps>((props, ref) => (
263
+ <input ref={ref} {...props} />
264
+ ));
265
+
266
+ // React 19: ref is just a prop
267
+ function Input({ ref, ...props }: InputProps & { ref?: React.Ref<HTMLInputElement> }) {
268
+ return <input ref={ref} {...props} />;
269
+ }
270
+ ```
271
+
272
+ ## Context as Provider
273
+
274
+ `<Context>` can be used directly as provider (no `.Provider` needed).
275
+
276
+ ```typescript
277
+ // React 18
278
+ <ThemeContext.Provider value={theme}>
279
+ {children}
280
+ </ThemeContext.Provider>
281
+
282
+ // React 19
283
+ <ThemeContext value={theme}>
284
+ {children}
285
+ </ThemeContext>
286
+ ```
287
+
288
+ ## Document Metadata in Components
289
+
290
+ Title and meta tags can be rendered anywhere in the tree.
291
+
292
+ ```typescript
293
+ function BlogPost({ post }: { post: Post }) {
294
+ return (
295
+ <article>
296
+ <title>{post.title}</title>
297
+ <meta name="description" content={post.excerpt} />
298
+ <h1>{post.title}</h1>
299
+ <p>{post.content}</p>
300
+ </article>
301
+ );
302
+ }
303
+ ```
304
+
305
+ React 19 automatically hoists these to `<head>`.
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: typeset
3
+ description: Improves typography by fixing font choices, hierarchy, sizing, weight, and readability so text feels intentional. Use when the user mentions fonts, type, readability, text hierarchy, sizing looks off, or wants more polished, intentional typography.
4
+ version: 2.1.1
5
+ user-invocable: true
6
+ argument-hint: "[target]"
7
+ ---
8
+
9
+ Assess and improve typography that feels generic, inconsistent, or poorly structured — turning default-looking text into intentional, well-crafted type.
10
+
11
+ ## MANDATORY PREPARATION
12
+
13
+ Invoke /impeccable — it contains design principles, anti-patterns, and the **Context Gathering Protocol**. Follow the protocol before proceeding — if no design context exists yet, you MUST run /impeccable teach first.
14
+
15
+ ---
16
+
17
+ ## Assess Current Typography
18
+
19
+ Analyze what's weak or generic about the current type:
20
+
21
+ 1. **Font choices**:
22
+ - Are we using invisible defaults? (Inter, Roboto, Arial, Open Sans, system defaults)
23
+ - Does the font match the brand personality? (A playful brand shouldn't use a corporate typeface)
24
+ - Are there too many font families? (More than 2-3 is almost always a mess)
25
+
26
+ 2. **Hierarchy**:
27
+ - Can you tell headings from body from captions at a glance?
28
+ - Are font sizes too close together? (14px, 15px, 16px = muddy hierarchy)
29
+ - Are weight contrasts strong enough? (Medium vs Regular is barely visible)
30
+
31
+ 3. **Sizing & scale**:
32
+ - Is there a consistent type scale, or are sizes arbitrary?
33
+ - Does body text meet minimum readability? (16px+)
34
+ - Is the sizing strategy appropriate for the context? (Fixed `rem` scales for app UIs; fluid `clamp()` for marketing/content page headings)
35
+
36
+ 4. **Readability**:
37
+ - Are line lengths comfortable? (45-75 characters ideal)
38
+ - Is line-height appropriate for the font and context?
39
+ - Is there enough contrast between text and background?
40
+
41
+ 5. **Consistency**:
42
+ - Are the same elements styled the same way throughout?
43
+ - Are font weights used consistently? (Not bold in one section, semibold in another for the same role)
44
+ - Is letter-spacing intentional or default everywhere?
45
+
46
+ **CRITICAL**: The goal isn't to make text "fancier" — it's to make it clearer, more readable, and more intentional. Good typography is invisible; bad typography is distracting.
47
+
48
+ ## Plan Typography Improvements
49
+
50
+ Consult the [typography reference](reference/typography.md) from the impeccable skill for detailed guidance on scales, pairing, and loading strategies.
51
+
52
+ Create a systematic plan:
53
+
54
+ - **Font selection**: Do fonts need replacing? What fits the brand/context?
55
+ - **Type scale**: Establish a modular scale (e.g., 1.25 ratio) with clear hierarchy
56
+ - **Weight strategy**: Which weights serve which roles? (Regular for body, Semibold for labels, Bold for headings — or whatever fits)
57
+ - **Spacing**: Line-heights, letter-spacing, and margins between typographic elements
58
+
59
+ ## Improve Typography Systematically
60
+
61
+ ### Font Selection
62
+
63
+ If fonts need replacing:
64
+ - Choose fonts that reflect the brand personality
65
+ - Pair with genuine contrast (serif + sans, geometric + humanist) — or use a single family in multiple weights
66
+ - Ensure web font loading doesn't cause layout shift (`font-display: swap`, metric-matched fallbacks)
67
+
68
+ ### Establish Hierarchy
69
+
70
+ Build a clear type scale:
71
+ - **5 sizes cover most needs**: caption, secondary, body, subheading, heading
72
+ - **Use a consistent ratio** between levels (1.25, 1.333, or 1.5)
73
+ - **Combine dimensions**: Size + weight + color + space for strong hierarchy — don't rely on size alone
74
+ - **App UIs**: Use a fixed `rem`-based type scale, optionally adjusted at 1-2 breakpoints. Fluid sizing undermines the spatial predictability that dense, container-based layouts need
75
+ - **Marketing / content pages**: Use fluid sizing via `clamp(min, preferred, max)` for headings and display text. Keep body text fixed
76
+
77
+ ### Fix Readability
78
+
79
+ - Set `max-width` on text containers using `ch` units (`max-width: 65ch`)
80
+ - Adjust line-height per context: tighter for headings (1.1-1.2), looser for body (1.5-1.7)
81
+ - Increase line-height slightly for light-on-dark text
82
+ - Ensure body text is at least 16px / 1rem
83
+
84
+ ### Refine Details
85
+
86
+ - Use `tabular-nums` for data tables and numbers that should align
87
+ - Apply proper `letter-spacing`: slightly open for small caps and uppercase, default or tight for large display text
88
+ - Use semantic token names (`--text-body`, `--text-heading`), not value names (`--font-16`)
89
+ - Set `font-kerning: normal` and consider OpenType features where appropriate
90
+
91
+ ### Weight Consistency
92
+
93
+ - Define clear roles for each weight and stick to them
94
+ - Don't use more than 3-4 weights (Regular, Medium, Semibold, Bold is plenty)
95
+ - Load only the weights you actually use (each weight adds to page load)
96
+
97
+ **NEVER**:
98
+ - Use more than 2-3 font families
99
+ - Pick sizes arbitrarily — commit to a scale
100
+ - Set body text below 16px
101
+ - Use decorative/display fonts for body text
102
+ - Disable browser zoom (`user-scalable=no`)
103
+ - Use `px` for font sizes — use `rem` to respect user settings
104
+ - Default to Inter/Roboto/Open Sans when personality matters
105
+ - Pair fonts that are similar but not identical (two geometric sans-serifs)
106
+
107
+ ## Verify Typography Improvements
108
+
109
+ - **Hierarchy**: Can you identify heading vs body vs caption instantly?
110
+ - **Readability**: Is body text comfortable to read in long passages?
111
+ - **Consistency**: Are same-role elements styled identically throughout?
112
+ - **Personality**: Does the typography reflect the brand?
113
+ - **Performance**: Are web fonts loading efficiently without layout shift?
114
+ - **Accessibility**: Does text meet WCAG contrast ratios? Is it zoomable to 200%?
115
+
116
+ Remember: Typography is the foundation of interface design — it carries the majority of information. Getting it right is the highest-leverage improvement you can make.