@bastani/atomic 0.5.11 → 0.5.12-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 (506) 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/providers/claude.ts +42 -0
  385. package/src/sdk/runtime/executor.ts +111 -32
  386. package/src/sdk/types.ts +7 -0
  387. package/src/sdk/workflows/builtin/ralph/claude/index.ts +132 -76
  388. package/src/sdk/workflows/builtin/ralph/copilot/index.ts +129 -71
  389. package/src/sdk/workflows/builtin/ralph/helpers/git.ts +184 -17
  390. package/src/sdk/workflows/builtin/ralph/helpers/prompts.ts +463 -79
  391. package/src/sdk/workflows/builtin/ralph/opencode/index.ts +124 -80
  392. package/src/services/system/auto-sync.ts +31 -51
  393. package/src/services/system/skills.ts +56 -60
  394. package/dist/lib/path-root-guard.d.ts +0 -4
  395. package/dist/lib/path-root-guard.d.ts.map +0 -1
  396. package/dist/sdk/components/color-utils.d.ts +0 -4
  397. package/dist/sdk/components/color-utils.d.ts.map +0 -1
  398. package/dist/sdk/components/compact-switcher.d.ts +0 -10
  399. package/dist/sdk/components/compact-switcher.d.ts.map +0 -1
  400. package/dist/sdk/components/connectors.d.ts +0 -15
  401. package/dist/sdk/components/connectors.d.ts.map +0 -1
  402. package/dist/sdk/components/connectors.test.d.ts +0 -2
  403. package/dist/sdk/components/connectors.test.d.ts.map +0 -1
  404. package/dist/sdk/components/edge.d.ts +0 -4
  405. package/dist/sdk/components/edge.d.ts.map +0 -1
  406. package/dist/sdk/components/error-boundary.d.ts +0 -23
  407. package/dist/sdk/components/error-boundary.d.ts.map +0 -1
  408. package/dist/sdk/components/graph-theme.d.ts +0 -17
  409. package/dist/sdk/components/graph-theme.d.ts.map +0 -1
  410. package/dist/sdk/components/header.d.ts +0 -3
  411. package/dist/sdk/components/header.d.ts.map +0 -1
  412. package/dist/sdk/components/hooks.d.ts +0 -15
  413. package/dist/sdk/components/hooks.d.ts.map +0 -1
  414. package/dist/sdk/components/layout.d.ts +0 -27
  415. package/dist/sdk/components/layout.d.ts.map +0 -1
  416. package/dist/sdk/components/layout.test.d.ts +0 -2
  417. package/dist/sdk/components/layout.test.d.ts.map +0 -1
  418. package/dist/sdk/components/node-card.d.ts +0 -10
  419. package/dist/sdk/components/node-card.d.ts.map +0 -1
  420. package/dist/sdk/components/orchestrator-panel-contexts.d.ts +0 -16
  421. package/dist/sdk/components/orchestrator-panel-contexts.d.ts.map +0 -1
  422. package/dist/sdk/components/orchestrator-panel-store.d.ts +0 -46
  423. package/dist/sdk/components/orchestrator-panel-store.d.ts.map +0 -1
  424. package/dist/sdk/components/orchestrator-panel-store.test.d.ts +0 -2
  425. package/dist/sdk/components/orchestrator-panel-store.test.d.ts.map +0 -1
  426. package/dist/sdk/components/orchestrator-panel-types.d.ts +0 -18
  427. package/dist/sdk/components/orchestrator-panel-types.d.ts.map +0 -1
  428. package/dist/sdk/components/orchestrator-panel.d.ts +0 -52
  429. package/dist/sdk/components/orchestrator-panel.d.ts.map +0 -1
  430. package/dist/sdk/components/session-graph-panel.d.ts +0 -7
  431. package/dist/sdk/components/session-graph-panel.d.ts.map +0 -1
  432. package/dist/sdk/components/status-helpers.d.ts +0 -6
  433. package/dist/sdk/components/status-helpers.d.ts.map +0 -1
  434. package/dist/sdk/components/statusline.d.ts +0 -7
  435. package/dist/sdk/components/statusline.d.ts.map +0 -1
  436. package/dist/sdk/components/workflow-picker-panel.d.ts +0 -123
  437. package/dist/sdk/components/workflow-picker-panel.d.ts.map +0 -1
  438. package/dist/sdk/define-workflow.d.ts +0 -78
  439. package/dist/sdk/define-workflow.d.ts.map +0 -1
  440. package/dist/sdk/define-workflow.test.d.ts +0 -2
  441. package/dist/sdk/define-workflow.test.d.ts.map +0 -1
  442. package/dist/sdk/errors.d.ts +0 -24
  443. package/dist/sdk/errors.d.ts.map +0 -1
  444. package/dist/sdk/errors.test.d.ts +0 -2
  445. package/dist/sdk/errors.test.d.ts.map +0 -1
  446. package/dist/sdk/index.d.ts +0 -13
  447. package/dist/sdk/index.d.ts.map +0 -1
  448. package/dist/sdk/providers/claude.d.ts +0 -170
  449. package/dist/sdk/providers/claude.d.ts.map +0 -1
  450. package/dist/sdk/providers/copilot.d.ts +0 -11
  451. package/dist/sdk/providers/copilot.d.ts.map +0 -1
  452. package/dist/sdk/providers/opencode.d.ts +0 -11
  453. package/dist/sdk/providers/opencode.d.ts.map +0 -1
  454. package/dist/sdk/runtime/discovery.d.ts +0 -86
  455. package/dist/sdk/runtime/discovery.d.ts.map +0 -1
  456. package/dist/sdk/runtime/executor-entry.d.ts +0 -11
  457. package/dist/sdk/runtime/executor-entry.d.ts.map +0 -1
  458. package/dist/sdk/runtime/executor.d.ts +0 -72
  459. package/dist/sdk/runtime/executor.d.ts.map +0 -1
  460. package/dist/sdk/runtime/executor.test.d.ts +0 -2
  461. package/dist/sdk/runtime/executor.test.d.ts.map +0 -1
  462. package/dist/sdk/runtime/graph-inference.d.ts +0 -35
  463. package/dist/sdk/runtime/graph-inference.d.ts.map +0 -1
  464. package/dist/sdk/runtime/loader.d.ts +0 -70
  465. package/dist/sdk/runtime/loader.d.ts.map +0 -1
  466. package/dist/sdk/runtime/panel.d.ts +0 -9
  467. package/dist/sdk/runtime/panel.d.ts.map +0 -1
  468. package/dist/sdk/runtime/theme.d.ts +0 -28
  469. package/dist/sdk/runtime/theme.d.ts.map +0 -1
  470. package/dist/sdk/runtime/tmux.d.ts +0 -297
  471. package/dist/sdk/runtime/tmux.d.ts.map +0 -1
  472. package/dist/sdk/types.d.ts +0 -295
  473. package/dist/sdk/types.d.ts.map +0 -1
  474. package/dist/sdk/workflows/builtin/deep-research-codebase/claude/index.d.ts +0 -62
  475. package/dist/sdk/workflows/builtin/deep-research-codebase/claude/index.d.ts.map +0 -1
  476. package/dist/sdk/workflows/builtin/deep-research-codebase/copilot/index.d.ts +0 -46
  477. package/dist/sdk/workflows/builtin/deep-research-codebase/copilot/index.d.ts.map +0 -1
  478. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/heuristic.d.ts +0 -26
  479. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/heuristic.d.ts.map +0 -1
  480. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.d.ts +0 -92
  481. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.d.ts.map +0 -1
  482. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scout.d.ts +0 -57
  483. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scout.d.ts.map +0 -1
  484. package/dist/sdk/workflows/builtin/deep-research-codebase/opencode/index.d.ts +0 -49
  485. package/dist/sdk/workflows/builtin/deep-research-codebase/opencode/index.d.ts.map +0 -1
  486. package/dist/sdk/workflows/builtin/ralph/claude/index.d.ts +0 -14
  487. package/dist/sdk/workflows/builtin/ralph/claude/index.d.ts.map +0 -1
  488. package/dist/sdk/workflows/builtin/ralph/copilot/index.d.ts +0 -14
  489. package/dist/sdk/workflows/builtin/ralph/copilot/index.d.ts.map +0 -1
  490. package/dist/sdk/workflows/builtin/ralph/helpers/git.d.ts +0 -17
  491. package/dist/sdk/workflows/builtin/ralph/helpers/git.d.ts.map +0 -1
  492. package/dist/sdk/workflows/builtin/ralph/helpers/prompts.d.ts +0 -119
  493. package/dist/sdk/workflows/builtin/ralph/helpers/prompts.d.ts.map +0 -1
  494. package/dist/sdk/workflows/builtin/ralph/helpers/review.d.ts +0 -20
  495. package/dist/sdk/workflows/builtin/ralph/helpers/review.d.ts.map +0 -1
  496. package/dist/sdk/workflows/builtin/ralph/opencode/index.d.ts +0 -14
  497. package/dist/sdk/workflows/builtin/ralph/opencode/index.d.ts.map +0 -1
  498. package/dist/sdk/workflows/index.d.ts +0 -24
  499. package/dist/sdk/workflows/index.d.ts.map +0 -1
  500. package/dist/services/config/definitions.d.ts +0 -85
  501. package/dist/services/config/definitions.d.ts.map +0 -1
  502. package/dist/services/system/copy.d.ts +0 -77
  503. package/dist/services/system/copy.d.ts.map +0 -1
  504. package/dist/services/system/detect.d.ts +0 -75
  505. package/dist/services/system/detect.d.ts.map +0 -1
  506. package/tsconfig.json +0 -33
@@ -0,0 +1,613 @@
1
+ """
2
+ Multi-Agent Coordination Utilities
3
+
4
+ Provides reusable building blocks for multi-agent coordination patterns:
5
+ supervisor/orchestrator, peer-to-peer handoffs, consensus mechanisms,
6
+ and failure handling with circuit breakers.
7
+
8
+ Use when: building multi-agent systems that need structured communication,
9
+ task delegation, consensus voting, or fault-tolerant agent coordination.
10
+
11
+ Designed for composability — import individual classes or use the
12
+ ``if __name__ == "__main__"`` demo to see all patterns in action.
13
+ """
14
+
15
+ from typing import Dict, List, Any, Optional
16
+ from dataclasses import dataclass, field
17
+ from enum import Enum
18
+ import time
19
+ import uuid
20
+
21
+ __all__ = [
22
+ "MessageType",
23
+ "AgentMessage",
24
+ "AgentCommunication",
25
+ "SupervisorAgent",
26
+ "HandoffProtocol",
27
+ "ConsensusManager",
28
+ "AgentFailureHandler",
29
+ ]
30
+
31
+
32
+ class MessageType(Enum):
33
+ """Types of messages exchanged between agents."""
34
+
35
+ REQUEST = "request"
36
+ RESPONSE = "response"
37
+ HANDOVER = "handover"
38
+ FEEDBACK = "feedback"
39
+ ALERT = "alert"
40
+
41
+
42
+ @dataclass
43
+ class AgentMessage:
44
+ """Message exchanged between agents.
45
+
46
+ Use when: agents need a structured envelope for inter-agent communication
47
+ that carries sender/receiver identity, type, priority, and payload.
48
+ """
49
+
50
+ sender: str
51
+ receiver: str
52
+ message_type: MessageType
53
+ content: Dict[str, Any]
54
+ timestamp: float = field(default_factory=time.time)
55
+ message_id: str = field(default_factory=lambda: str(uuid.uuid4()))
56
+ requires_response: bool = False
57
+ priority: int = 0 # 0 = normal, higher = more urgent
58
+
59
+
60
+ class AgentCommunication:
61
+ """Communication channel for multi-agent systems.
62
+
63
+ Use when: multiple agents need an in-process message bus for sending,
64
+ receiving, and broadcasting messages with history tracking.
65
+ """
66
+
67
+ def __init__(self) -> None:
68
+ self.inbox: Dict[str, List[AgentMessage]] = {}
69
+ self.outbox: List[AgentMessage] = []
70
+ self.message_history: List[AgentMessage] = []
71
+
72
+ def send(self, message: AgentMessage) -> None:
73
+ """Send a message to an agent."""
74
+ if message.receiver not in self.inbox:
75
+ self.inbox[message.receiver] = []
76
+ self.inbox[message.receiver].append(message)
77
+ self.outbox.append(message)
78
+ self.message_history.append(message)
79
+
80
+ def receive(self, agent_id: str) -> List[AgentMessage]:
81
+ """Receive all messages for an agent, clearing its inbox."""
82
+ messages = self.inbox.get(agent_id, [])
83
+ self.inbox[agent_id] = []
84
+ return messages
85
+
86
+ def broadcast(
87
+ self,
88
+ sender: str,
89
+ message_type: MessageType,
90
+ content: Dict[str, Any],
91
+ receivers: List[str],
92
+ ) -> None:
93
+ """Broadcast a message to multiple agents."""
94
+ for receiver in receivers:
95
+ self.send(
96
+ AgentMessage(
97
+ sender=sender,
98
+ receiver=receiver,
99
+ message_type=message_type,
100
+ content=content,
101
+ )
102
+ )
103
+
104
+
105
+ # ---------------------------------------------------------------------------
106
+ # Supervisor Pattern
107
+ # ---------------------------------------------------------------------------
108
+
109
+
110
+ class SupervisorAgent:
111
+ """Central supervisor agent that coordinates worker agents.
112
+
113
+ Use when: tasks have clear decomposition and a single coordinator should
114
+ delegate subtasks, track worker status, and aggregate results.
115
+ """
116
+
117
+ def __init__(self, name: str, communication: AgentCommunication) -> None:
118
+ self.name = name
119
+ self.communication = communication
120
+ self.workers: Dict[str, Dict[str, Any]] = {}
121
+ self.task_queue: List[Dict[str, Any]] = []
122
+ self.completed_tasks: List[Dict[str, Any]] = []
123
+ self.current_state: Dict[str, Any] = {}
124
+
125
+ def register_worker(self, worker_id: str, capabilities: List[str]) -> None:
126
+ """Register a worker agent with the supervisor."""
127
+ self.workers[worker_id] = {
128
+ "capabilities": capabilities,
129
+ "status": "available",
130
+ "current_task": None,
131
+ "metrics": {"tasks_completed": 0, "avg_response_time": 0.0},
132
+ }
133
+
134
+ def decompose_task(self, task: Dict[str, Any]) -> List[Dict[str, Any]]:
135
+ """Decompose a task into subtasks.
136
+
137
+ Use when: a high-level task needs to be broken into assignable units.
138
+ In production, replace the rule-based logic with LLM-driven planning.
139
+ """
140
+ subtasks: List[Dict[str, Any]] = []
141
+ task_type = task.get("type", "general")
142
+
143
+ if task_type == "research":
144
+ subtasks = [
145
+ {"type": "search", "description": "Gather information"},
146
+ {"type": "analyze", "description": "Analyze findings"},
147
+ {"type": "synthesize", "description": "Synthesize results"},
148
+ ]
149
+ elif task_type == "create":
150
+ subtasks = [
151
+ {"type": "plan", "description": "Create plan"},
152
+ {"type": "draft", "description": "Draft content"},
153
+ {"type": "review", "description": "Review and refine"},
154
+ ]
155
+ else:
156
+ subtasks = [
157
+ {
158
+ "type": "execute",
159
+ "description": task.get("description", "Execute task"),
160
+ }
161
+ ]
162
+
163
+ for subtask in subtasks:
164
+ subtask["parent_task"] = task.get("id")
165
+ subtask["priority"] = task.get("priority", 0)
166
+
167
+ return subtasks
168
+
169
+ def assign_task(self, subtask: Dict[str, Any], worker_id: str) -> None:
170
+ """Assign a subtask to a worker agent."""
171
+ if worker_id not in self.workers:
172
+ raise ValueError(f"Unknown worker: {worker_id}")
173
+
174
+ self.workers[worker_id]["status"] = "busy"
175
+ self.workers[worker_id]["current_task"] = subtask.get("id")
176
+
177
+ self._send(
178
+ AgentMessage(
179
+ sender=self.name,
180
+ receiver=worker_id,
181
+ message_type=MessageType.REQUEST,
182
+ content={"action": "execute_task", "task": subtask},
183
+ requires_response=True,
184
+ priority=subtask.get("priority", 0),
185
+ )
186
+ )
187
+
188
+ def select_worker(self, subtask: Dict[str, Any]) -> str:
189
+ """Select the best available worker for a subtask.
190
+
191
+ Use when: the supervisor needs capability-aware routing with
192
+ load-balancing (fewest completed tasks chosen first).
193
+ """
194
+ required_capability = subtask.get("type", "general")
195
+
196
+ candidates = [
197
+ wid
198
+ for wid, info in self.workers.items()
199
+ if info["status"] == "available"
200
+ and required_capability in info["capabilities"]
201
+ ]
202
+
203
+ if not candidates:
204
+ candidates = [
205
+ wid
206
+ for wid, info in self.workers.items()
207
+ if info["status"] == "available"
208
+ ]
209
+
210
+ if not candidates:
211
+ raise ValueError("No available workers")
212
+
213
+ return min(
214
+ candidates,
215
+ key=lambda w: self.workers[w]["metrics"]["tasks_completed"],
216
+ )
217
+
218
+ def aggregate_results(
219
+ self, subtask_results: List[Dict[str, Any]]
220
+ ) -> Dict[str, Any]:
221
+ """Aggregate results from completed subtasks."""
222
+ summaries = [
223
+ r.get("summary", "")
224
+ for r in subtask_results
225
+ if r.get("success")
226
+ ]
227
+ successful = sum(
228
+ 1 for r in subtask_results if r.get("success", False)
229
+ )
230
+ quality = successful / len(subtask_results) if subtask_results else 0.0
231
+
232
+ return {
233
+ "results": subtask_results,
234
+ "summary": " | ".join(summaries),
235
+ "quality_score": quality,
236
+ }
237
+
238
+ def run_workflow(self, task: Dict[str, Any]) -> Dict[str, Any]:
239
+ """Execute a complete workflow with supervision.
240
+
241
+ Use when: running an end-to-end supervised pipeline that decomposes
242
+ a task, assigns subtasks, collects results, and aggregates them.
243
+
244
+ Note: This is a synchronous simulation. Workers do not execute
245
+ asynchronously — each subtask is simulated inline. In production,
246
+ replace ``_simulate_worker_response`` with actual async worker
247
+ execution and message passing.
248
+ """
249
+ subtasks = self.decompose_task(task)
250
+
251
+ results: List[Dict[str, Any]] = []
252
+ for subtask in subtasks:
253
+ worker = self.select_worker(subtask)
254
+ self.assign_task(subtask, worker)
255
+
256
+ # Simulate worker executing and responding
257
+ response = self._simulate_worker_response(worker, subtask)
258
+ self.communication.send(
259
+ AgentMessage(
260
+ sender=worker,
261
+ receiver=self.name,
262
+ message_type=MessageType.RESPONSE,
263
+ content=response,
264
+ )
265
+ )
266
+ self.workers[worker]["status"] = "available"
267
+ self.workers[worker]["metrics"]["tasks_completed"] += 1
268
+
269
+ messages = self.communication.receive(self.name)
270
+ for msg in messages:
271
+ if msg.message_type == MessageType.RESPONSE:
272
+ results.append(msg.content)
273
+
274
+ final_result = self.aggregate_results(results)
275
+
276
+ return {
277
+ "task": task,
278
+ "subtask_results": results,
279
+ "final_result": final_result,
280
+ "success": final_result["quality_score"] >= 0.8,
281
+ }
282
+
283
+ def _simulate_worker_response(
284
+ self, worker_id: str, subtask: Dict[str, Any]
285
+ ) -> Dict[str, Any]:
286
+ """Simulate a worker completing a subtask.
287
+
288
+ In production, replace with actual agent execution that sends
289
+ the subtask to a worker process and awaits a real response.
290
+ """
291
+ return {
292
+ "success": True,
293
+ "summary": f"{worker_id} completed: {subtask.get('description', subtask.get('type', 'task'))}",
294
+ "worker": worker_id,
295
+ "subtask_type": subtask.get("type"),
296
+ }
297
+
298
+ def _send(self, message: AgentMessage) -> None:
299
+ """Send message through the communication channel."""
300
+ self.communication.send(message)
301
+
302
+
303
+ # ---------------------------------------------------------------------------
304
+ # Handoff Protocol
305
+ # ---------------------------------------------------------------------------
306
+
307
+
308
+ class HandoffProtocol:
309
+ """Protocol for agent-to-agent handoffs.
310
+
311
+ Use when: implementing peer-to-peer or swarm patterns where agents
312
+ transfer control and task state to one another.
313
+ """
314
+
315
+ def __init__(self, communication: AgentCommunication) -> None:
316
+ self.communication = communication
317
+
318
+ def create_handoff(
319
+ self,
320
+ from_agent: str,
321
+ to_agent: str,
322
+ context: Dict[str, Any],
323
+ reason: str,
324
+ ) -> AgentMessage:
325
+ """Create a handoff message with transferred context."""
326
+ return AgentMessage(
327
+ sender=from_agent,
328
+ receiver=to_agent,
329
+ message_type=MessageType.HANDOVER,
330
+ content={
331
+ "handoff_reason": reason,
332
+ "transferred_context": context,
333
+ "handoff_timestamp": time.time(),
334
+ },
335
+ priority=1,
336
+ )
337
+
338
+ def accept_handoff(self, agent_id: str) -> Optional[AgentMessage]:
339
+ """Accept the first pending handoff for an agent, if any."""
340
+ messages = self.communication.receive(agent_id)
341
+
342
+ for msg in messages:
343
+ if msg.message_type == MessageType.HANDOVER:
344
+ return msg
345
+
346
+ return None
347
+
348
+ def transfer_with_state(
349
+ self,
350
+ from_agent: str,
351
+ to_agent: str,
352
+ state: Dict[str, Any],
353
+ task: Dict[str, Any],
354
+ ) -> bool:
355
+ """Transfer task state from one agent to another.
356
+
357
+ Use when: a handoff must carry full task state and progress so the
358
+ receiving agent can resume without re-deriving context.
359
+
360
+ Returns True if the receiving agent acknowledged the handoff.
361
+ """
362
+ handoff = self.create_handoff(
363
+ from_agent=from_agent,
364
+ to_agent=to_agent,
365
+ context={
366
+ "task_state": state,
367
+ "task_details": task,
368
+ "progress": state.get("progress", 0),
369
+ },
370
+ reason="task_transfer",
371
+ )
372
+
373
+ self.communication.send(handoff)
374
+
375
+ # In production, replace sleep with async await + timeout
376
+ time.sleep(0.1)
377
+ ack = self.communication.receive(from_agent)
378
+
379
+ return any(
380
+ m.message_type == MessageType.RESPONSE
381
+ and m.content.get("status") == "handoff_received"
382
+ for m in ack
383
+ )
384
+
385
+
386
+ # ---------------------------------------------------------------------------
387
+ # Consensus Mechanism
388
+ # ---------------------------------------------------------------------------
389
+
390
+
391
+ class ConsensusManager:
392
+ """Manager for multi-agent consensus building.
393
+
394
+ Use when: multiple agents must vote on a decision and the system needs
395
+ weighted consensus that accounts for confidence and expertise rather
396
+ than naive majority voting.
397
+ """
398
+
399
+ def __init__(self) -> None:
400
+ self.votes: Dict[str, List[Dict[str, Any]]] = {}
401
+ self.debates: Dict[str, List[Dict[str, Any]]] = {}
402
+
403
+ def initiate_vote(
404
+ self, topic_id: str, agents: List[str], options: List[str]
405
+ ) -> None:
406
+ """Initiate a voting round on a topic."""
407
+ self.votes[topic_id] = [
408
+ {
409
+ "agent": agent,
410
+ "topic": topic_id,
411
+ "options": options,
412
+ "status": "pending",
413
+ }
414
+ for agent in agents
415
+ ]
416
+
417
+ def submit_vote(
418
+ self,
419
+ topic_id: str,
420
+ agent_id: str,
421
+ selection: str,
422
+ confidence: float,
423
+ ) -> None:
424
+ """Submit a vote for a topic with a confidence weight."""
425
+ if topic_id not in self.votes:
426
+ raise ValueError(f"Unknown topic: {topic_id}")
427
+
428
+ for vote in self.votes[topic_id]:
429
+ if vote["agent"] == agent_id:
430
+ vote["status"] = "cast"
431
+ vote["selection"] = selection
432
+ vote["confidence"] = confidence
433
+ break
434
+
435
+ def calculate_weighted_consensus(self, topic_id: str) -> Dict[str, Any]:
436
+ """Calculate weighted consensus from cast votes.
437
+
438
+ Use when: votes are in and the system needs to determine a winner
439
+ weighted by each agent's confidence rather than simple majority.
440
+ Weight = confidence * expertise_factor.
441
+ """
442
+ if topic_id not in self.votes:
443
+ raise ValueError(f"Unknown topic: {topic_id}")
444
+
445
+ votes = [
446
+ v for v in self.votes[topic_id] if v.get("status") == "cast"
447
+ ]
448
+
449
+ if not votes:
450
+ return {"status": "no_votes", "result": None}
451
+
452
+ # Group by selection
453
+ selections: Dict[str, List[Dict[str, Any]]] = {}
454
+ for vote in votes:
455
+ selection = vote["selection"]
456
+ if selection not in selections:
457
+ selections[selection] = []
458
+ selections[selection].append(vote)
459
+
460
+ # Calculate weighted score for each selection
461
+ results: Dict[str, Dict[str, Any]] = {}
462
+ for selection, selection_votes in selections.items():
463
+ weighted_sum = sum(v["confidence"] for v in selection_votes)
464
+ avg_confidence = (
465
+ weighted_sum / len(selection_votes) if selection_votes else 0.0
466
+ )
467
+ results[selection] = {
468
+ "weighted_score": weighted_sum,
469
+ "avg_confidence": avg_confidence,
470
+ "vote_count": len(selection_votes),
471
+ }
472
+
473
+ winner = max(results.keys(), key=lambda s: results[s]["weighted_score"])
474
+
475
+ return {
476
+ "status": "complete",
477
+ "result": winner,
478
+ "details": results,
479
+ "consensus_strength": (
480
+ results[winner]["weighted_score"] / len(votes) if votes else 0.0
481
+ ),
482
+ }
483
+
484
+
485
+ # ---------------------------------------------------------------------------
486
+ # Failure Handling
487
+ # ---------------------------------------------------------------------------
488
+
489
+
490
+ class AgentFailureHandler:
491
+ """Handler for agent failures in multi-agent systems.
492
+
493
+ Use when: agents may fail and the system needs retry logic with
494
+ exponential backoff, circuit breakers, and automatic rerouting to
495
+ backup agents.
496
+ """
497
+
498
+ def __init__(
499
+ self,
500
+ communication: AgentCommunication,
501
+ max_retries: int = 3,
502
+ ) -> None:
503
+ self.communication = communication
504
+ self.max_retries = max_retries
505
+ self.failure_counts: Dict[str, int] = {}
506
+ self.circuit_breakers: Dict[str, float] = {} # agent -> unlock time
507
+
508
+ def handle_failure(
509
+ self, agent_id: str, task_id: str, error: str
510
+ ) -> Dict[str, Any]:
511
+ """Handle a failure from an agent.
512
+
513
+ Use when: an agent reports an error and the system must decide
514
+ whether to retry (with backoff) or reroute to a backup agent.
515
+ """
516
+ self.failure_counts[agent_id] = (
517
+ self.failure_counts.get(agent_id, 0) + 1
518
+ )
519
+
520
+ if self.failure_counts[agent_id] >= self.max_retries:
521
+ self._activate_circuit_breaker(agent_id)
522
+ return {
523
+ "action": "reroute",
524
+ "reason": "circuit_breaker_activated",
525
+ "alternative": self._find_alternative_agent(agent_id),
526
+ }
527
+
528
+ return {
529
+ "action": "retry",
530
+ "reason": error,
531
+ "retry_count": self.failure_counts[agent_id],
532
+ "delay": min(2 ** self.failure_counts[agent_id], 60),
533
+ }
534
+
535
+ def _activate_circuit_breaker(self, agent_id: str) -> None:
536
+ """Temporarily disable an agent (1-minute cooldown)."""
537
+ self.circuit_breakers[agent_id] = time.time() + 60
538
+
539
+ def _find_alternative_agent(self, failed_agent: str) -> str:
540
+ """Find an alternative agent to handle the task.
541
+
542
+ In production, check agent capabilities and availability.
543
+ """
544
+ return "default_backup_agent"
545
+
546
+ def is_available(self, agent_id: str) -> bool:
547
+ """Check if an agent is available (circuit breaker not active)."""
548
+ if agent_id in self.circuit_breakers:
549
+ if time.time() < self.circuit_breakers[agent_id]:
550
+ return False
551
+ del self.circuit_breakers[agent_id]
552
+ self.failure_counts[agent_id] = 0
553
+ return True
554
+
555
+ def record_success(self, agent_id: str) -> None:
556
+ """Record a successful task completion, resetting failure count."""
557
+ self.failure_counts[agent_id] = 0
558
+
559
+
560
+ # ---------------------------------------------------------------------------
561
+ # Demo / CLI entry point
562
+ # ---------------------------------------------------------------------------
563
+
564
+
565
+ if __name__ == "__main__":
566
+ print("=== Multi-Agent Coordination Demo ===\n")
567
+
568
+ # 1. Communication channel
569
+ comm = AgentCommunication()
570
+ print("1. Created communication channel")
571
+
572
+ # 2. Supervisor pattern
573
+ supervisor = SupervisorAgent("supervisor", comm)
574
+ supervisor.register_worker("researcher", ["search", "analyze"])
575
+ supervisor.register_worker("writer", ["synthesize", "draft"])
576
+ print("2. Registered supervisor with 2 workers: researcher, writer")
577
+
578
+ # 3. Handoff protocol
579
+ protocol = HandoffProtocol(comm)
580
+ handoff_msg = protocol.create_handoff(
581
+ from_agent="researcher",
582
+ to_agent="writer",
583
+ context={"findings": ["item1", "item2"]},
584
+ reason="research_complete",
585
+ )
586
+ comm.send(handoff_msg)
587
+ received = protocol.accept_handoff("writer")
588
+ print(
589
+ f"3. Handoff from researcher -> writer: "
590
+ f"{'accepted' if received else 'none pending'}"
591
+ )
592
+
593
+ # 4. Consensus mechanism
594
+ consensus = ConsensusManager()
595
+ consensus.initiate_vote("best_approach", ["agent_a", "agent_b", "agent_c"], ["A", "B"])
596
+ consensus.submit_vote("best_approach", "agent_a", "A", confidence=0.9)
597
+ consensus.submit_vote("best_approach", "agent_b", "B", confidence=0.6)
598
+ consensus.submit_vote("best_approach", "agent_c", "A", confidence=0.8)
599
+ result = consensus.calculate_weighted_consensus("best_approach")
600
+ print(
601
+ f"4. Consensus result: {result['result']} "
602
+ f"(strength: {result['consensus_strength']:.2f})"
603
+ )
604
+
605
+ # 5. Failure handling
606
+ handler = AgentFailureHandler(comm, max_retries=3)
607
+ action1 = handler.handle_failure("flaky_agent", "task_1", "timeout")
608
+ action2 = handler.handle_failure("flaky_agent", "task_1", "timeout")
609
+ action3 = handler.handle_failure("flaky_agent", "task_1", "timeout")
610
+ print(f"5. After 3 failures: action={action3['action']}")
611
+ print(f" Agent available? {handler.is_available('flaky_agent')}")
612
+
613
+ print("\n=== Demo Complete ===")
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: normalize
3
+ description: Audits and realigns UI to match design system standards, spacing, tokens, and patterns. Use when the user mentions consistency, design drift, mismatched styles, tokens, or wants to bring a feature back in line with the system.
4
+ user-invocable: true
5
+ argument-hint: "[feature (page, route, component...)]"
6
+ ---
7
+
8
+ Analyze and redesign the feature to perfectly match our design system standards, aesthetics, and established patterns.
9
+
10
+ ## MANDATORY PREPARATION
11
+
12
+ Invoke /frontend-design — 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 /teach-impeccable first.
13
+
14
+ ---
15
+
16
+ ## Plan
17
+
18
+ Before making changes, deeply understand the context:
19
+
20
+ 1. **Discover the design system**: Search for design system documentation, UI guidelines, component libraries, or style guides (grep for "design system", "ui guide", "style guide", etc.). Study it thoroughly until you understand:
21
+ - Core design principles and aesthetic direction
22
+ - Target audience and personas
23
+ - Component patterns and conventions
24
+ - Design tokens (colors, typography, spacing)
25
+
26
+ **CRITICAL**: If something isn't clear, ask. Don't guess at design system principles.
27
+
28
+ 2. **Analyze the current feature**: Assess what works and what doesn't:
29
+ - Where does it deviate from design system patterns?
30
+ - Which inconsistencies are cosmetic vs. functional?
31
+ - What's the root cause—missing tokens, one-off implementations, or conceptual misalignment?
32
+
33
+ 3. **Create a normalization plan**: Define specific changes that will align the feature with the design system:
34
+ - Which components can be replaced with design system equivalents?
35
+ - Which styles need to use design tokens instead of hard-coded values?
36
+ - How can UX patterns match established user flows?
37
+
38
+ **IMPORTANT**: Great design is effective design. Prioritize UX consistency and usability over visual polish alone. Think through the best possible experience for your use case and personas first.
39
+
40
+ ## Execute
41
+
42
+ Systematically address all inconsistencies across these dimensions:
43
+
44
+ - **Typography**: Use design system fonts, sizes, weights, and line heights. Replace hard-coded values with typographic tokens or classes.
45
+ - **Color & Theme**: Apply design system color tokens. Remove one-off color choices that break the palette.
46
+ - **Spacing & Layout**: Use spacing tokens (margins, padding, gaps). Align with grid systems and layout patterns used elsewhere.
47
+ - **Components**: Replace custom implementations with design system components. Ensure props and variants match established patterns.
48
+ - **Motion & Interaction**: Match animation timing, easing, and interaction patterns to other features.
49
+ - **Responsive Behavior**: Ensure breakpoints and responsive patterns align with design system standards.
50
+ - **Accessibility**: Verify contrast ratios, focus states, ARIA labels match design system requirements.
51
+ - **Progressive Disclosure**: Match information hierarchy and complexity management to established patterns.
52
+
53
+ **NEVER**:
54
+ - Create new one-off components when design system equivalents exist
55
+ - Hard-code values that should use design tokens
56
+ - Introduce new patterns that diverge from the design system
57
+ - Compromise accessibility for visual consistency
58
+
59
+ This is not an exhaustive list—apply judgment to identify all areas needing normalization.
60
+
61
+ ## Clean Up
62
+
63
+ After normalization, ensure code quality:
64
+
65
+ - **Consolidate reusable components**: If you created new components that should be shared, move them to the design system or shared UI component path.
66
+ - **Remove orphaned code**: Delete unused implementations, styles, or files made obsolete by normalization.
67
+ - **Verify quality**: Lint, type-check, and test according to repository guidelines. Ensure normalization didn't introduce regressions.
68
+ - **Ensure DRYness**: Look for duplication introduced during refactoring and consolidate.
69
+
70
+ Remember: You are a brilliant frontend designer with impeccable taste, equally strong in UX and UI. Your attention to detail and eye for end-to-end user experience is world class. Execute with precision and thoroughness.