@rosetears/aili-pi 0.1.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 (531) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +109 -0
  3. package/THIRD_PARTY_NOTICES.md +64 -0
  4. package/extensions/index.ts +6 -0
  5. package/install.sh +5 -0
  6. package/manifests/adapter-evidence.json +45 -0
  7. package/manifests/capabilities.json +124 -0
  8. package/manifests/live-verification.json +26 -0
  9. package/manifests/provenance.json +71 -0
  10. package/manifests/roles.json +474 -0
  11. package/manifests/sbom.json +7797 -0
  12. package/manifests/skill-compatibility.json +8100 -0
  13. package/manifests/subagent-provenance.json +37 -0
  14. package/package.json +91 -0
  15. package/prompts/build.md +8 -0
  16. package/prompts/define.md +8 -0
  17. package/prompts/ideate.md +8 -0
  18. package/prompts/local-review.md +8 -0
  19. package/prompts/ship.md +8 -0
  20. package/roles/agent-evaluator.md +47 -0
  21. package/roles/ai-regression-scout.md +47 -0
  22. package/roles/browser-qa-runner.md +47 -0
  23. package/roles/code-reviewer.md +47 -0
  24. package/roles/code-scout.md +47 -0
  25. package/roles/convergence-reviewer.md +55 -0
  26. package/roles/doc-researcher.md +47 -0
  27. package/roles/e2e-artifact-runner.md +47 -0
  28. package/roles/implementer.md +47 -0
  29. package/roles/opensource-sanitizer.md +47 -0
  30. package/roles/plan-auditor.md +47 -0
  31. package/roles/pr-test-analyzer.md +47 -0
  32. package/roles/security-auditor.md +47 -0
  33. package/roles/silent-failure-reviewer.md +47 -0
  34. package/roles/spec-miner.md +47 -0
  35. package/roles/test-coverage-reviewer.md +47 -0
  36. package/roles/test-engineer.md +48 -0
  37. package/roles/web-performance-auditor.md +47 -0
  38. package/roles/web-researcher.md +47 -0
  39. package/scripts/apply-adapter-evidence.ts +73 -0
  40. package/scripts/bootstrap.sh +180 -0
  41. package/scripts/generate-provenance.ts +143 -0
  42. package/scripts/local-package-e2e.ts +51 -0
  43. package/scripts/sync-roles.ts +213 -0
  44. package/scripts/sync-skills.ts +356 -0
  45. package/scripts/validate-runtime.ts +11 -0
  46. package/skills/academic-paper-review/SKILL.md +81 -0
  47. package/skills/agents-md-initialization/SKILL.md +121 -0
  48. package/skills/agents-md-initialization/references/agents-template.md +83 -0
  49. package/skills/agents-md-initialization/references/agents_md.py +215 -0
  50. package/skills/ai-regression-scout/SKILL.md +24 -0
  51. package/skills/aili-delivery-flow/SKILL.md +125 -0
  52. package/skills/aili-delivery-flow/references/artifact-contracts.md +138 -0
  53. package/skills/aili-delivery-flow/references/backend-routing.md +40 -0
  54. package/skills/aili-delivery-flow/references/build-execution-loop.md +113 -0
  55. package/skills/aili-delivery-flow/references/build-goal-mode.md +3 -0
  56. package/skills/aili-delivery-flow/references/direct-vs-delegated-work.md +38 -0
  57. package/skills/aili-delivery-flow/references/implementation-packages.md +54 -0
  58. package/skills/aili-delivery-flow/references/lifecycle.md +127 -0
  59. package/skills/aili-delivery-flow/references/protocols/acceptance-test-plan.md +18 -0
  60. package/skills/aili-delivery-flow/references/protocols/alignment-questionnaire.md +10 -0
  61. package/skills/aili-delivery-flow/references/protocols/closeout-report.md +101 -0
  62. package/skills/aili-delivery-flow/references/protocols/compact-evidence-pack.md +46 -0
  63. package/skills/aili-delivery-flow/references/protocols/idea-brief.md +10 -0
  64. package/skills/aili-delivery-flow/references/protocols/implementation-package.md +53 -0
  65. package/skills/aili-delivery-flow/references/protocols/research-evidence-pack.md +19 -0
  66. package/skills/aili-delivery-flow/references/protocols/review-report.md +7 -0
  67. package/skills/aili-delivery-flow/references/protocols/spec-draft.md +12 -0
  68. package/skills/aili-delivery-flow/references/protocols/subagent-result.md +60 -0
  69. package/skills/aili-delivery-flow/references/protocols/subagent-task-packet.md +29 -0
  70. package/skills/aili-delivery-flow/references/protocols/worktree-context.md +109 -0
  71. package/skills/aili-delivery-flow/references/questionnaire-policy.md +62 -0
  72. package/skills/aili-delivery-flow/references/review-repair-loop.md +16 -0
  73. package/skills/aili-delivery-flow/references/test-document-policy.md +35 -0
  74. package/skills/android-native-dev/SKILL.md +722 -0
  75. package/skills/android-native-dev/references/accessibility.md +209 -0
  76. package/skills/android-native-dev/references/adaptive-screens.md +231 -0
  77. package/skills/android-native-dev/references/design-style-guide.md +365 -0
  78. package/skills/android-native-dev/references/functional-requirements.md +229 -0
  79. package/skills/android-native-dev/references/motion-system.md +203 -0
  80. package/skills/android-native-dev/references/performance-stability.md +223 -0
  81. package/skills/android-native-dev/references/privacy-security.md +244 -0
  82. package/skills/android-native-dev/references/testing.md +554 -0
  83. package/skills/android-native-dev/references/visual-design.md +246 -0
  84. package/skills/api-and-interface-design/SKILL.md +318 -0
  85. package/skills/browser-qa/SKILL.md +32 -0
  86. package/skills/browser-testing-with-devtools/SKILL.md +323 -0
  87. package/skills/build-failure-repair/SKILL.md +49 -0
  88. package/skills/chart-visualization/SKILL.md +73 -0
  89. package/skills/ci-cd-and-automation/SKILL.md +353 -0
  90. package/skills/code-review-and-quality/SKILL.md +375 -0
  91. package/skills/code-review-quality-gates/SKILL.md +132 -0
  92. package/skills/code-simplification/SKILL.md +371 -0
  93. package/skills/comment-accuracy-review/SKILL.md +37 -0
  94. package/skills/consulting-analysis/SKILL.md +69 -0
  95. package/skills/context-engineering/SKILL.md +375 -0
  96. package/skills/coverage-review/SKILL.md +24 -0
  97. package/skills/data-analysis/SKILL.md +74 -0
  98. package/skills/deprecation-and-migration/SKILL.md +222 -0
  99. package/skills/documentation-and-adrs/SKILL.md +330 -0
  100. package/skills/e2e-artifact-handling/SKILL.md +30 -0
  101. package/skills/evidence-scoped-retrospective/SKILL.md +156 -0
  102. package/skills/explain-by-allegory/SKILL.md +99 -0
  103. package/skills/flutter-dev/SKILL.md +162 -0
  104. package/skills/flutter-dev/references/animations.md +497 -0
  105. package/skills/flutter-dev/references/bloc-state.md +281 -0
  106. package/skills/flutter-dev/references/forms.md +656 -0
  107. package/skills/flutter-dev/references/gorouter-navigation.md +257 -0
  108. package/skills/flutter-dev/references/localization.md +510 -0
  109. package/skills/flutter-dev/references/networking.md +566 -0
  110. package/skills/flutter-dev/references/performance.md +305 -0
  111. package/skills/flutter-dev/references/platform-specific.md +417 -0
  112. package/skills/flutter-dev/references/project-structure.md +273 -0
  113. package/skills/flutter-dev/references/riverpod-state.md +232 -0
  114. package/skills/flutter-dev/references/testing.md +364 -0
  115. package/skills/flutter-dev/references/widget-patterns.md +233 -0
  116. package/skills/frontend-dev/SKILL.md +468 -0
  117. package/skills/frontend-dev/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  118. package/skills/frontend-dev/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  119. package/skills/frontend-dev/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  120. package/skills/frontend-dev/canvas-fonts/BigShoulders-OFL.txt +93 -0
  121. package/skills/frontend-dev/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  122. package/skills/frontend-dev/canvas-fonts/Boldonse-OFL.txt +93 -0
  123. package/skills/frontend-dev/canvas-fonts/Boldonse-Regular.ttf +0 -0
  124. package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  125. package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  126. package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  127. package/skills/frontend-dev/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  128. package/skills/frontend-dev/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  129. package/skills/frontend-dev/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  130. package/skills/frontend-dev/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  131. package/skills/frontend-dev/canvas-fonts/DMMono-OFL.txt +93 -0
  132. package/skills/frontend-dev/canvas-fonts/DMMono-Regular.ttf +0 -0
  133. package/skills/frontend-dev/canvas-fonts/EricaOne-OFL.txt +94 -0
  134. package/skills/frontend-dev/canvas-fonts/EricaOne-Regular.ttf +0 -0
  135. package/skills/frontend-dev/canvas-fonts/GeistMono-Bold.ttf +0 -0
  136. package/skills/frontend-dev/canvas-fonts/GeistMono-OFL.txt +93 -0
  137. package/skills/frontend-dev/canvas-fonts/GeistMono-Regular.ttf +0 -0
  138. package/skills/frontend-dev/canvas-fonts/Gloock-OFL.txt +93 -0
  139. package/skills/frontend-dev/canvas-fonts/Gloock-Regular.ttf +0 -0
  140. package/skills/frontend-dev/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  141. package/skills/frontend-dev/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  142. package/skills/frontend-dev/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  143. package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  144. package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  145. package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  146. package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  147. package/skills/frontend-dev/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  148. package/skills/frontend-dev/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  149. package/skills/frontend-dev/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  150. package/skills/frontend-dev/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  151. package/skills/frontend-dev/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  152. package/skills/frontend-dev/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  153. package/skills/frontend-dev/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  154. package/skills/frontend-dev/canvas-fonts/Italiana-OFL.txt +93 -0
  155. package/skills/frontend-dev/canvas-fonts/Italiana-Regular.ttf +0 -0
  156. package/skills/frontend-dev/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  157. package/skills/frontend-dev/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  158. package/skills/frontend-dev/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  159. package/skills/frontend-dev/canvas-fonts/Jura-Light.ttf +0 -0
  160. package/skills/frontend-dev/canvas-fonts/Jura-Medium.ttf +0 -0
  161. package/skills/frontend-dev/canvas-fonts/Jura-OFL.txt +93 -0
  162. package/skills/frontend-dev/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  163. package/skills/frontend-dev/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  164. package/skills/frontend-dev/canvas-fonts/Lora-Bold.ttf +0 -0
  165. package/skills/frontend-dev/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  166. package/skills/frontend-dev/canvas-fonts/Lora-Italic.ttf +0 -0
  167. package/skills/frontend-dev/canvas-fonts/Lora-OFL.txt +93 -0
  168. package/skills/frontend-dev/canvas-fonts/Lora-Regular.ttf +0 -0
  169. package/skills/frontend-dev/canvas-fonts/NationalPark-Bold.ttf +0 -0
  170. package/skills/frontend-dev/canvas-fonts/NationalPark-OFL.txt +93 -0
  171. package/skills/frontend-dev/canvas-fonts/NationalPark-Regular.ttf +0 -0
  172. package/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  173. package/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  174. package/skills/frontend-dev/canvas-fonts/Outfit-Bold.ttf +0 -0
  175. package/skills/frontend-dev/canvas-fonts/Outfit-OFL.txt +93 -0
  176. package/skills/frontend-dev/canvas-fonts/Outfit-Regular.ttf +0 -0
  177. package/skills/frontend-dev/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  178. package/skills/frontend-dev/canvas-fonts/PixelifySans-OFL.txt +93 -0
  179. package/skills/frontend-dev/canvas-fonts/PoiretOne-OFL.txt +93 -0
  180. package/skills/frontend-dev/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  181. package/skills/frontend-dev/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  182. package/skills/frontend-dev/canvas-fonts/RedHatMono-OFL.txt +93 -0
  183. package/skills/frontend-dev/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  184. package/skills/frontend-dev/canvas-fonts/Silkscreen-OFL.txt +93 -0
  185. package/skills/frontend-dev/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  186. package/skills/frontend-dev/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  187. package/skills/frontend-dev/canvas-fonts/SmoochSans-OFL.txt +93 -0
  188. package/skills/frontend-dev/canvas-fonts/Tektur-Medium.ttf +0 -0
  189. package/skills/frontend-dev/canvas-fonts/Tektur-OFL.txt +93 -0
  190. package/skills/frontend-dev/canvas-fonts/Tektur-Regular.ttf +0 -0
  191. package/skills/frontend-dev/canvas-fonts/WorkSans-Bold.ttf +0 -0
  192. package/skills/frontend-dev/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  193. package/skills/frontend-dev/canvas-fonts/WorkSans-Italic.ttf +0 -0
  194. package/skills/frontend-dev/canvas-fonts/WorkSans-OFL.txt +93 -0
  195. package/skills/frontend-dev/canvas-fonts/WorkSans-Regular.ttf +0 -0
  196. package/skills/frontend-dev/canvas-fonts/YoungSerif-OFL.txt +93 -0
  197. package/skills/frontend-dev/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  198. package/skills/frontend-dev/references/asset-prompt-guide.md +43 -0
  199. package/skills/frontend-dev/references/env-setup.md +33 -0
  200. package/skills/frontend-dev/references/minimax-cli-reference.md +133 -0
  201. package/skills/frontend-dev/references/minimax-image-guide.md +65 -0
  202. package/skills/frontend-dev/references/minimax-music-guide.md +216 -0
  203. package/skills/frontend-dev/references/minimax-tts-guide.md +78 -0
  204. package/skills/frontend-dev/references/minimax-video-guide.md +82 -0
  205. package/skills/frontend-dev/references/minimax-voice-catalog.md +685 -0
  206. package/skills/frontend-dev/references/motion-recipes.md +407 -0
  207. package/skills/frontend-dev/references/troubleshooting.md +85 -0
  208. package/skills/frontend-dev/scripts/minimax_image.py +137 -0
  209. package/skills/frontend-dev/scripts/minimax_music.py +157 -0
  210. package/skills/frontend-dev/scripts/minimax_tts.py +127 -0
  211. package/skills/frontend-dev/scripts/minimax_video.py +187 -0
  212. package/skills/frontend-dev/templates/generator_template.js +223 -0
  213. package/skills/frontend-dev/templates/viewer.html +599 -0
  214. package/skills/frontend-ui-engineering/SKILL.md +367 -0
  215. package/skills/fullstack-dev/SKILL.md +819 -0
  216. package/skills/fullstack-dev/references/api-design.md +444 -0
  217. package/skills/fullstack-dev/references/auth-flow.md +165 -0
  218. package/skills/fullstack-dev/references/db-schema.md +706 -0
  219. package/skills/fullstack-dev/references/django-best-practices.md +466 -0
  220. package/skills/fullstack-dev/references/environment-management.md +78 -0
  221. package/skills/fullstack-dev/references/release-checklist.md +278 -0
  222. package/skills/fullstack-dev/references/technology-selection.md +254 -0
  223. package/skills/fullstack-dev/references/testing-strategy.md +404 -0
  224. package/skills/git-workflow-and-versioning/SKILL.md +446 -0
  225. package/skills/github-evidence-triage/SKILL.md +115 -0
  226. package/skills/harness-evolution/SKILL.md +59 -0
  227. package/skills/harness-evolution/references/activation-matrix.md +13 -0
  228. package/skills/harness-evolution/references/approval-policy.md +20 -0
  229. package/skills/harness-evolution/references/change-report-template.md +33 -0
  230. package/skills/harness-evolution/references/component-taxonomy.md +19 -0
  231. package/skills/harness-evolution/references/verdict-policy.md +13 -0
  232. package/skills/harness-issue-triage/SKILL.md +72 -0
  233. package/skills/harness-issue-triage/references/component-diagnosis.md +25 -0
  234. package/skills/harness-issue-triage/references/triage-report-template.md +34 -0
  235. package/skills/harness-optimization-audit/SKILL.md +125 -0
  236. package/skills/idea-refine/SKILL.md +191 -0
  237. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
  238. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
  239. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/SKILL.upstream.md +178 -0
  240. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/examples.md +238 -0
  241. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/frameworks.md +99 -0
  242. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/refinement-criteria.md +113 -0
  243. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/scripts/idea-refine.upstream.sh +15 -0
  244. package/skills/incremental-implementation/SKILL.md +252 -0
  245. package/skills/ios-application-dev/SKILL.md +212 -0
  246. package/skills/ios-application-dev/references/accessibility.md +259 -0
  247. package/skills/ios-application-dev/references/graphics-animation.md +350 -0
  248. package/skills/ios-application-dev/references/layout-system.md +199 -0
  249. package/skills/ios-application-dev/references/metal-shader.md +178 -0
  250. package/skills/ios-application-dev/references/navigation-patterns.md +175 -0
  251. package/skills/ios-application-dev/references/swift-coding-standards.md +757 -0
  252. package/skills/ios-application-dev/references/swiftui-design-guidelines.md +1167 -0
  253. package/skills/ios-application-dev/references/system-integration.md +401 -0
  254. package/skills/ios-application-dev/references/uikit-components.md +297 -0
  255. package/skills/local-review-gate/SKILL.md +207 -0
  256. package/skills/local-review-gate/references/addyosmani-code-review-rubric.md +33 -0
  257. package/skills/local-review-gate/references/codex-github-compatibility.md +26 -0
  258. package/skills/local-review-gate/references/ecc-code-review-adaptation.md +40 -0
  259. package/skills/local-review-gate/references/graphify-local-review.md +33 -0
  260. package/skills/local-review-gate/references/orchestration-adaptation.md +51 -0
  261. package/skills/local-review-gate/references/review-repair-lane-adaptation.md +46 -0
  262. package/skills/local-review-gate/references/upstream-provenance.md +61 -0
  263. package/skills/mature-project-pattern-research/SKILL.md +155 -0
  264. package/skills/mature-project-pattern-research/references/research-rubric.md +45 -0
  265. package/skills/minimax-docx/LICENSE +21 -0
  266. package/skills/minimax-docx/SKILL.md +273 -0
  267. package/skills/minimax-docx/assets/styles/academic_styles.xml +250 -0
  268. package/skills/minimax-docx/assets/styles/corporate_styles.xml +284 -0
  269. package/skills/minimax-docx/assets/styles/default_styles.xml +449 -0
  270. package/skills/minimax-docx/assets/xsd/aesthetic-rules.xsd +470 -0
  271. package/skills/minimax-docx/assets/xsd/business-rules.xsd +130 -0
  272. package/skills/minimax-docx/assets/xsd/common-types.xsd +159 -0
  273. package/skills/minimax-docx/assets/xsd/wml-subset.xsd +589 -0
  274. package/skills/minimax-docx/references/cjk_typography.md +357 -0
  275. package/skills/minimax-docx/references/cjk_university_template_guide.md +184 -0
  276. package/skills/minimax-docx/references/comments_guide.md +191 -0
  277. package/skills/minimax-docx/references/design_good_bad_examples.md +829 -0
  278. package/skills/minimax-docx/references/design_principles.md +819 -0
  279. package/skills/minimax-docx/references/openxml_element_order.md +308 -0
  280. package/skills/minimax-docx/references/openxml_encyclopedia_part1.md +4061 -0
  281. package/skills/minimax-docx/references/openxml_encyclopedia_part2.md +2820 -0
  282. package/skills/minimax-docx/references/openxml_encyclopedia_part3.md +3381 -0
  283. package/skills/minimax-docx/references/openxml_namespaces.md +82 -0
  284. package/skills/minimax-docx/references/openxml_units.md +72 -0
  285. package/skills/minimax-docx/references/scenario_a_create.md +284 -0
  286. package/skills/minimax-docx/references/scenario_b_edit_content.md +295 -0
  287. package/skills/minimax-docx/references/scenario_c_apply_template.md +456 -0
  288. package/skills/minimax-docx/references/track_changes_guide.md +200 -0
  289. package/skills/minimax-docx/references/troubleshooting.md +506 -0
  290. package/skills/minimax-docx/references/typography_guide.md +294 -0
  291. package/skills/minimax-docx/references/xsd_validation_guide.md +158 -0
  292. package/skills/minimax-docx/scripts/doc_to_docx.sh +40 -0
  293. package/skills/minimax-docx/scripts/docx_preview.sh +37 -0
  294. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj +19 -0
  295. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
  296. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
  297. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
  298. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
  299. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
  300. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
  301. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
  302. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
  303. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
  304. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/MiniMaxAIDocx.Core.csproj +15 -0
  305. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
  306. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
  307. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
  308. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
  309. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
  310. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
  311. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
  312. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
  313. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
  314. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
  315. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
  316. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
  317. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
  318. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
  319. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
  320. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
  321. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
  322. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
  323. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
  324. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
  325. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
  326. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
  327. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
  328. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
  329. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
  330. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
  331. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
  332. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
  333. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
  334. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
  335. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
  336. package/skills/minimax-docx/scripts/env_check.sh +196 -0
  337. package/skills/minimax-docx/scripts/setup.ps1 +274 -0
  338. package/skills/minimax-docx/scripts/setup.sh +504 -0
  339. package/skills/minimax-pdf/README.md +222 -0
  340. package/skills/minimax-pdf/SKILL.md +218 -0
  341. package/skills/minimax-pdf/design/design.md +381 -0
  342. package/skills/minimax-pdf/scripts/cover.py +1579 -0
  343. package/skills/minimax-pdf/scripts/fill_inspect.py +200 -0
  344. package/skills/minimax-pdf/scripts/fill_write.py +242 -0
  345. package/skills/minimax-pdf/scripts/make.sh +491 -0
  346. package/skills/minimax-pdf/scripts/merge.py +112 -0
  347. package/skills/minimax-pdf/scripts/palette.py +521 -0
  348. package/skills/minimax-pdf/scripts/reformat_parse.py +374 -0
  349. package/skills/minimax-pdf/scripts/render_body.py +1052 -0
  350. package/skills/minimax-pdf/scripts/render_cover.js +111 -0
  351. package/skills/minimax-xlsx/SKILL.md +156 -0
  352. package/skills/minimax-xlsx/references/create.md +691 -0
  353. package/skills/minimax-xlsx/references/edit.md +684 -0
  354. package/skills/minimax-xlsx/references/fix.md +37 -0
  355. package/skills/minimax-xlsx/references/format.md +768 -0
  356. package/skills/minimax-xlsx/references/ooxml-cheatsheet.md +231 -0
  357. package/skills/minimax-xlsx/references/read-analyze.md +97 -0
  358. package/skills/minimax-xlsx/references/validate.md +772 -0
  359. package/skills/minimax-xlsx/scripts/formula_check.py +422 -0
  360. package/skills/minimax-xlsx/scripts/libreoffice_recalc.py +248 -0
  361. package/skills/minimax-xlsx/scripts/shared_strings_builder.py +163 -0
  362. package/skills/minimax-xlsx/scripts/style_audit.py +575 -0
  363. package/skills/minimax-xlsx/scripts/xlsx_add_column.py +395 -0
  364. package/skills/minimax-xlsx/scripts/xlsx_insert_row.py +274 -0
  365. package/skills/minimax-xlsx/scripts/xlsx_pack.py +87 -0
  366. package/skills/minimax-xlsx/scripts/xlsx_reader.py +362 -0
  367. package/skills/minimax-xlsx/scripts/xlsx_shift_rows.py +396 -0
  368. package/skills/minimax-xlsx/scripts/xlsx_unpack.py +130 -0
  369. package/skills/minimax-xlsx/templates/minimal_xlsx/[Content_Types].xml +9 -0
  370. package/skills/minimax-xlsx/templates/minimal_xlsx/_rels/.rels +6 -0
  371. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/_rels/workbook.xml.rels +19 -0
  372. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/sharedStrings.xml +33 -0
  373. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/styles.xml +160 -0
  374. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/workbook.xml +30 -0
  375. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/worksheets/sheet1.xml +70 -0
  376. package/skills/newsletter-generation/SKILL.md +71 -0
  377. package/skills/oss-release-readiness/SKILL.md +47 -0
  378. package/skills/parallel-subagent-dispatch/SKILL.md +58 -0
  379. package/skills/performance-optimization/SKILL.md +364 -0
  380. package/skills/planning-and-task-breakdown/SKILL.md +290 -0
  381. package/skills/pptx-generator/SKILL.md +275 -0
  382. package/skills/pptx-generator/references/design-system.md +392 -0
  383. package/skills/pptx-generator/references/editing.md +162 -0
  384. package/skills/pptx-generator/references/pitfalls.md +112 -0
  385. package/skills/pptx-generator/references/pptxgenjs.md +420 -0
  386. package/skills/pptx-generator/references/slide-types.md +413 -0
  387. package/skills/pr-test-analysis/SKILL.md +24 -0
  388. package/skills/react-native-dev/SKILL.md +180 -0
  389. package/skills/react-native-dev/references/animations.md +254 -0
  390. package/skills/react-native-dev/references/components.md +124 -0
  391. package/skills/react-native-dev/references/engineering.md +527 -0
  392. package/skills/react-native-dev/references/forms.md +300 -0
  393. package/skills/react-native-dev/references/native-capabilities.md +163 -0
  394. package/skills/react-native-dev/references/navigation.md +271 -0
  395. package/skills/react-native-dev/references/networking.md +346 -0
  396. package/skills/react-native-dev/references/performance.md +215 -0
  397. package/skills/react-native-dev/references/state-management.md +230 -0
  398. package/skills/react-native-dev/references/styling.md +117 -0
  399. package/skills/react-native-dev/references/testing.md +341 -0
  400. package/skills/requirements-grilling/SKILL.md +447 -0
  401. package/skills/requirements-grilling/references/ADR-FORMAT.md +46 -0
  402. package/skills/requirements-grilling/references/CONTEXT-FORMAT.md +41 -0
  403. package/skills/requirements-grilling/references/INTERVIEW-PACKET-FORMAT.md +62 -0
  404. package/skills/requirements-grilling/references/MIT-LICENSE-MATT-POCOCK.md +25 -0
  405. package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
  406. package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
  407. package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/interview-me/SKILL.upstream.md +225 -0
  408. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/LICENSE +21 -0
  409. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/NOTICE.md +12 -0
  410. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/batch-grill-me/SKILL.upstream.md +15 -0
  411. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/grill-me/SKILL.upstream.md +7 -0
  412. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/grilling/SKILL.upstream.md +12 -0
  413. package/skills/review-pipeline/SKILL.md +38 -0
  414. package/skills/rose-memory/SKILL.md +210 -0
  415. package/skills/rose-memory/references/README.md +48 -0
  416. package/skills/rose-memory/references/memory_cli.py +2384 -0
  417. package/skills/rose-memory/references/schema.sql +315 -0
  418. package/skills/security-and-hardening/SKILL.md +369 -0
  419. package/skills/session-handoff/SKILL.md +88 -0
  420. package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/LICENSE +21 -0
  421. package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/NOTICE.md +9 -0
  422. package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/handoff/SKILL.upstream.md +16 -0
  423. package/skills/session-handoff/scripts/session_handoff.py +764 -0
  424. package/skills/shader-dev/SKILL.md +316 -0
  425. package/skills/shader-dev/reference/ambient-occlusion.md +382 -0
  426. package/skills/shader-dev/reference/analytic-ray-tracing.md +651 -0
  427. package/skills/shader-dev/reference/anti-aliasing.md +71 -0
  428. package/skills/shader-dev/reference/atmospheric-scattering.md +571 -0
  429. package/skills/shader-dev/reference/camera-effects.md +80 -0
  430. package/skills/shader-dev/reference/cellular-automata.md +635 -0
  431. package/skills/shader-dev/reference/color-palette.md +481 -0
  432. package/skills/shader-dev/reference/csg-boolean-operations.md +466 -0
  433. package/skills/shader-dev/reference/domain-repetition.md +436 -0
  434. package/skills/shader-dev/reference/domain-warping.md +419 -0
  435. package/skills/shader-dev/reference/fluid-simulation.md +425 -0
  436. package/skills/shader-dev/reference/fractal-rendering.md +525 -0
  437. package/skills/shader-dev/reference/lighting-model.md +639 -0
  438. package/skills/shader-dev/reference/matrix-transform.md +535 -0
  439. package/skills/shader-dev/reference/multipass-buffer.md +571 -0
  440. package/skills/shader-dev/reference/normal-estimation.md +418 -0
  441. package/skills/shader-dev/reference/particle-system.md +589 -0
  442. package/skills/shader-dev/reference/path-tracing-gi.md +602 -0
  443. package/skills/shader-dev/reference/polar-uv-manipulation.md +521 -0
  444. package/skills/shader-dev/reference/post-processing.md +375 -0
  445. package/skills/shader-dev/reference/procedural-2d-pattern.md +439 -0
  446. package/skills/shader-dev/reference/procedural-noise.md +551 -0
  447. package/skills/shader-dev/reference/ray-marching.md +396 -0
  448. package/skills/shader-dev/reference/sdf-2d.md +724 -0
  449. package/skills/shader-dev/reference/sdf-3d.md +805 -0
  450. package/skills/shader-dev/reference/sdf-tricks.md +63 -0
  451. package/skills/shader-dev/reference/shadow-techniques.md +476 -0
  452. package/skills/shader-dev/reference/simulation-physics.md +644 -0
  453. package/skills/shader-dev/reference/sound-synthesis.md +578 -0
  454. package/skills/shader-dev/reference/terrain-rendering.md +839 -0
  455. package/skills/shader-dev/reference/texture-mapping-advanced.md +87 -0
  456. package/skills/shader-dev/reference/texture-sampling.md +553 -0
  457. package/skills/shader-dev/reference/volumetric-rendering.md +608 -0
  458. package/skills/shader-dev/reference/voronoi-cellular-noise.md +486 -0
  459. package/skills/shader-dev/reference/voxel-rendering.md +701 -0
  460. package/skills/shader-dev/reference/water-ocean.md +445 -0
  461. package/skills/shader-dev/reference/webgl-pitfalls.md +41 -0
  462. package/skills/shader-dev/techniques/ambient-occlusion.md +364 -0
  463. package/skills/shader-dev/techniques/analytic-ray-tracing.md +542 -0
  464. package/skills/shader-dev/techniques/anti-aliasing.md +124 -0
  465. package/skills/shader-dev/techniques/atmospheric-scattering.md +522 -0
  466. package/skills/shader-dev/techniques/camera-effects.md +115 -0
  467. package/skills/shader-dev/techniques/cellular-automata.md +531 -0
  468. package/skills/shader-dev/techniques/color-palette.md +380 -0
  469. package/skills/shader-dev/techniques/csg-boolean-operations.md +491 -0
  470. package/skills/shader-dev/techniques/domain-repetition.md +333 -0
  471. package/skills/shader-dev/techniques/domain-warping.md +414 -0
  472. package/skills/shader-dev/techniques/fluid-simulation.md +1175 -0
  473. package/skills/shader-dev/techniques/fractal-rendering.md +436 -0
  474. package/skills/shader-dev/techniques/lighting-model.md +527 -0
  475. package/skills/shader-dev/techniques/matrix-transform.md +455 -0
  476. package/skills/shader-dev/techniques/multipass-buffer.md +922 -0
  477. package/skills/shader-dev/techniques/normal-estimation.md +318 -0
  478. package/skills/shader-dev/techniques/particle-system.md +1203 -0
  479. package/skills/shader-dev/techniques/path-tracing-gi.md +623 -0
  480. package/skills/shader-dev/techniques/polar-uv-manipulation.md +373 -0
  481. package/skills/shader-dev/techniques/post-processing.md +788 -0
  482. package/skills/shader-dev/techniques/procedural-2d-pattern.md +346 -0
  483. package/skills/shader-dev/techniques/procedural-noise.md +554 -0
  484. package/skills/shader-dev/techniques/ray-marching.md +467 -0
  485. package/skills/shader-dev/techniques/sdf-2d.md +631 -0
  486. package/skills/shader-dev/techniques/sdf-3d.md +589 -0
  487. package/skills/shader-dev/techniques/sdf-tricks.md +100 -0
  488. package/skills/shader-dev/techniques/shadow-techniques.md +776 -0
  489. package/skills/shader-dev/techniques/simulation-physics.md +1542 -0
  490. package/skills/shader-dev/techniques/sound-synthesis.md +490 -0
  491. package/skills/shader-dev/techniques/terrain-rendering.md +408 -0
  492. package/skills/shader-dev/techniques/texture-mapping-advanced.md +121 -0
  493. package/skills/shader-dev/techniques/texture-sampling.md +382 -0
  494. package/skills/shader-dev/techniques/volumetric-rendering.md +375 -0
  495. package/skills/shader-dev/techniques/voronoi-cellular-noise.md +458 -0
  496. package/skills/shader-dev/techniques/voxel-rendering.md +985 -0
  497. package/skills/shader-dev/techniques/water-ocean.md +490 -0
  498. package/skills/shader-dev/techniques/webgl-pitfalls.md +170 -0
  499. package/skills/shipping-and-launch/SKILL.md +334 -0
  500. package/skills/silent-failure-hunting/SKILL.md +24 -0
  501. package/skills/source-driven-development/SKILL.md +223 -0
  502. package/skills/spec-driven-development/SKILL.md +235 -0
  503. package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
  504. package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
  505. package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/spec-driven-development/SKILL.upstream.md +206 -0
  506. package/skills/strategy-stress-test/SKILL.md +185 -0
  507. package/skills/systematic-literature-review/SKILL.md +77 -0
  508. package/skills/test-document-generator/SKILL.md +152 -0
  509. package/skills/test-document-generator/references/test-document-template.md +45 -0
  510. package/skills/test-driven-development/SKILL.md +399 -0
  511. package/skills/write-skills/GLOSSARY.md +113 -0
  512. package/skills/write-skills/SKILL.md +133 -0
  513. package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/LICENSE +21 -0
  514. package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/NOTICE.md +9 -0
  515. package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/writing-great-skills/GLOSSARY.md +201 -0
  516. package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/writing-great-skills/SKILL.upstream.md +83 -0
  517. package/src/runtime/child-guard.ts +70 -0
  518. package/src/runtime/conflicts.ts +25 -0
  519. package/src/runtime/contracts.ts +9 -0
  520. package/src/runtime/doctor.ts +134 -0
  521. package/src/runtime/global-resources.ts +152 -0
  522. package/src/runtime/index.ts +23 -0
  523. package/src/runtime/lifecycle.ts +19 -0
  524. package/src/runtime/native-integrations.ts +44 -0
  525. package/src/runtime/path-boundaries.ts +69 -0
  526. package/src/runtime/registry.ts +213 -0
  527. package/src/runtime/roles.ts +64 -0
  528. package/src/runtime/rose-context.ts +24 -0
  529. package/src/runtime/subagents.ts +426 -0
  530. package/templates/APPEND_SYSTEM.md +12 -0
  531. package/upstream/aili-workflows.lock.json +3226 -0
@@ -0,0 +1,491 @@
1
+ ## WebGL2 Adaptation Requirements
2
+
3
+ The code templates in this document use ShaderToy GLSL style. When generating standalone HTML pages, you must adapt for WebGL2:
4
+
5
+ - Use `canvas.getContext("webgl2")`
6
+ - First line of shaders: `#version 300 es`, add `precision highp float;` in fragment shaders
7
+ - Vertex shader: `attribute` -> `in`, `varying` -> `out`
8
+ - Fragment shader: `varying` -> `in`, `gl_FragColor` -> custom output variable (must be declared before `void main()`, e.g. `out vec4 outColor;`), `texture2D()` -> `texture()`
9
+ - ShaderToy's `void mainImage(out vec4 fragColor, in vec2 fragCoord)` must be adapted to the standard `void main()` entry point
10
+
11
+ # CSG Boolean Operations
12
+
13
+ ## Core Principles
14
+
15
+ CSG boolean operations are per-point value operations on two distance fields:
16
+
17
+ | Operation | Expression | Meaning |
18
+ |-----------|-----------|---------|
19
+ | Union | `min(d1, d2)` | Take nearest surface, keeping both shapes |
20
+ | Intersection | `max(d1, d2)` | Take farthest surface, keeping only the overlap |
21
+ | Subtraction | `max(d1, -d2)` | Cut d1 using the interior of d2 |
22
+
23
+ **Smooth booleans** (smooth min/max) introduce a blending band in the transition region. The parameter `k` controls the blend band width (larger = rounder, `k=0` degenerates to hard boolean). Multiple variants exist with different mathematical properties.
24
+
25
+ ## Implementation Steps
26
+
27
+ ### Step 1: Hard Boolean Operations
28
+
29
+ ```glsl
30
+ float opUnion(float d1, float d2) { return min(d1, d2); }
31
+ float opIntersection(float d1, float d2) { return max(d1, d2); }
32
+ float opSubtraction(float d1, float d2) { return max(d1, -d2); }
33
+ ```
34
+
35
+ ### Step 2: Smooth Union (Polynomial Version)
36
+
37
+ ```glsl
38
+ // k: blend radius, typical values 0.05~0.5
39
+ float opSmoothUnion(float d1, float d2, float k) {
40
+ float h = clamp(0.5 + 0.5 * (d2 - d1) / k, 0.0, 1.0);
41
+ return mix(d2, d1, h) - k * h * (1.0 - h);
42
+ }
43
+ ```
44
+
45
+ ### Step 3: Smooth Subtraction and Intersection (Polynomial Version)
46
+
47
+ ```glsl
48
+ float opSmoothSubtraction(float d1, float d2, float k) {
49
+ float h = clamp(0.5 - 0.5 * (d2 + d1) / k, 0.0, 1.0);
50
+ return mix(d2, -d1, h) + k * h * (1.0 - h);
51
+ }
52
+
53
+ float opSmoothIntersection(float d1, float d2, float k) {
54
+ float h = clamp(0.5 - 0.5 * (d2 - d1) / k, 0.0, 1.0);
55
+ return mix(d2, d1, h) + k * h * (1.0 - h);
56
+ }
57
+ ```
58
+
59
+ ### Step 4: Quadratic Optimized Version (Recommended as Default)
60
+
61
+ ```glsl
62
+ float smin(float a, float b, float k) {
63
+ float h = max(k - abs(a - b), 0.0);
64
+ return min(a, b) - h * h * 0.25 / k;
65
+ }
66
+
67
+ float smax(float a, float b, float k) {
68
+ float h = max(k - abs(a - b), 0.0);
69
+ return max(a, b) + h * h * 0.25 / k;
70
+ }
71
+
72
+ // Subtraction via smax
73
+ float sSub(float d1, float d2, float k) {
74
+ return smax(d1, -d2, k);
75
+ }
76
+ ```
77
+
78
+ ### Step 4b: Smooth Minimum Variant Library
79
+
80
+ Different smin implementations have different mathematical properties. Choose based on your needs:
81
+
82
+ | Variant | Rigid | Associative | Best For |
83
+ |---------|-------|-------------|----------|
84
+ | Quadratic (default above) | Yes | No | General use, fastest |
85
+ | Cubic | Yes | No | Smoother C2 transitions |
86
+ | Quartic | Yes | No | Highest quality blending |
87
+ | Exponential | No | Yes | Multi-body blending (order-independent) |
88
+ | Circular Geometric | Yes | Yes | Strict local blending |
89
+
90
+ **Rigid**: preserves original SDF shape outside the blend region (no under-estimation).
91
+ **Associative**: `smin(a, smin(b, c))` == `smin(smin(a, b), c)` — important when blending many objects where evaluation order varies.
92
+
93
+ ```glsl
94
+ // --- Cubic Polynomial smin (C2 continuous, smoother transitions) ---
95
+ float sminCubic(float a, float b, float k) {
96
+ k *= 6.0;
97
+ float h = max(k - abs(a - b), 0.0) / k;
98
+ return min(a, b) - h * h * h * k * (1.0 / 6.0);
99
+ }
100
+
101
+ // --- Quartic Polynomial smin (C3 continuous, highest quality) ---
102
+ float sminQuartic(float a, float b, float k) {
103
+ k *= 16.0 / 3.0;
104
+ float h = max(k - abs(a - b), 0.0) / k;
105
+ return min(a, b) - h * h * h * (4.0 - h) * k * (1.0 / 16.0);
106
+ }
107
+
108
+ // --- Exponential smin (associative — order independent for multi-body blending) ---
109
+ float sminExp(float a, float b, float k) {
110
+ float r = exp2(-a / k) + exp2(-b / k);
111
+ return -k * log2(r);
112
+ }
113
+
114
+ // --- Circular Geometric smin (rigid + local + associative) ---
115
+ float sminCircle(float a, float b, float k) {
116
+ k *= 1.0 / (1.0 - sqrt(0.5));
117
+ return max(k, min(a, b)) - length(max(k - vec2(a, b), 0.0));
118
+ }
119
+
120
+ // --- Gradient-aware smin (carries material/color through blending) ---
121
+ // x = distance, yzw = material properties or color components
122
+ vec4 sminColor(vec4 a, vec4 b, float k) {
123
+ k *= 4.0;
124
+ float h = max(k - abs(a.x - b.x), 0.0) / (2.0 * k);
125
+ return vec4(
126
+ min(a.x, b.x) - h * h * k,
127
+ mix(a.yzw, b.yzw, (a.x < b.x) ? h : 1.0 - h)
128
+ );
129
+ }
130
+
131
+ // --- Smooth maximum from any smin variant ---
132
+ // smax(a, b, k) = -smin(-a, -b, k)
133
+ // Smooth subtraction: smax(d1, -d2, k)
134
+ // Smooth intersection: smax(d1, d2, k)
135
+ ```
136
+
137
+ ### Step 5: Basic SDF Primitives
138
+
139
+ ```glsl
140
+ float sdSphere(vec3 p, float r) {
141
+ return length(p) - r;
142
+ }
143
+
144
+ float sdBox(vec3 p, vec3 b) {
145
+ vec3 d = abs(p) - b;
146
+ return length(max(d, 0.0)) + min(max(d.x, max(d.y, d.z)), 0.0);
147
+ }
148
+
149
+ float sdCylinder(vec3 p, float h, float r) {
150
+ vec2 d = abs(vec2(length(p.xz), p.y)) - vec2(r, h);
151
+ return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
152
+ }
153
+ ```
154
+
155
+ ### Step 6: CSG Composition for Scene Building
156
+
157
+ ```glsl
158
+ float mapScene(vec3 p) {
159
+ float cube = sdBox(p, vec3(1.0));
160
+ float sphere = sdSphere(p, 1.2);
161
+ float cylX = sdCylinder(p.yzx, 2.0, 0.4);
162
+ float cylY = sdCylinder(p.xyz, 2.0, 0.4);
163
+ float cylZ = sdCylinder(p.zxy, 2.0, 0.4);
164
+
165
+ // (cube intersect sphere) - three cylinders = nut
166
+ float shape = opIntersection(cube, sphere);
167
+ float holes = opUnion(cylX, opUnion(cylY, cylZ));
168
+ return opSubtraction(shape, holes);
169
+ }
170
+ ```
171
+
172
+ ### Step 7: Smooth CSG Modeling for Organic Forms
173
+
174
+ ```glsl
175
+ // Use different k values for different body parts: large k for major joints, small k for fine details
176
+ float mapCreature(vec3 p) {
177
+ float body = sdSphere(p, 0.5);
178
+ float head = sdSphere(p - vec3(0.0, 0.6, 0.3), 0.25);
179
+ float d = smin(body, head, 0.15); // large blend
180
+
181
+ float leg = sdCylinder(p - vec3(0.2, -0.5, 0.0), 0.3, 0.08);
182
+ d = smin(d, leg, 0.08); // medium blend
183
+
184
+ float eye = sdSphere(p - vec3(0.05, 0.75, 0.4), 0.05);
185
+ d = smax(d, -eye, 0.02); // small blend for subtraction
186
+ return d;
187
+ }
188
+ ```
189
+
190
+ ### Step 8: Ray Marching Main Loop
191
+
192
+ ```glsl
193
+ float rayMarch(vec3 ro, vec3 rd, float maxDist) {
194
+ float t = 0.0;
195
+ for (int i = 0; i < MAX_STEPS; i++) {
196
+ vec3 p = ro + rd * t;
197
+ float d = mapScene(p);
198
+ if (d < SURF_DIST) return t;
199
+ t += d;
200
+ if (t > maxDist) break;
201
+ }
202
+ return -1.0;
203
+ }
204
+ ```
205
+
206
+ ### Step 9: Normal Calculation (Tetrahedral Sampling, 4 Samples More Efficient Than 6 with Central Differences)
207
+
208
+ ```glsl
209
+ vec3 calcNormal(vec3 pos) {
210
+ vec2 e = vec2(0.001, -0.001);
211
+ return normalize(
212
+ e.xyy * mapScene(pos + e.xyy) +
213
+ e.yyx * mapScene(pos + e.yyx) +
214
+ e.yxy * mapScene(pos + e.yxy) +
215
+ e.xxx * mapScene(pos + e.xxx)
216
+ );
217
+ }
218
+ ```
219
+
220
+ ## Full Code Template
221
+
222
+ ```glsl
223
+ // === CSG Boolean Operations - WebGL2 Full Template ===
224
+ // Note: When generating HTML with this template, pass iTime, iResolution, etc. via uniforms
225
+
226
+ #define MAX_STEPS 128
227
+ #define MAX_DIST 50.0
228
+ #define SURF_DIST 0.001
229
+ #define SMOOTH_K 0.1
230
+
231
+ // === Hard Boolean Operations ===
232
+ float opUnion(float d1, float d2) { return min(d1, d2); }
233
+ float opIntersection(float d1, float d2) { return max(d1, d2); }
234
+ float opSubtraction(float d1, float d2) { return max(d1, -d2); }
235
+
236
+ // === Smooth Boolean Operations (Quadratic Optimized) ===
237
+ float smin(float a, float b, float k) {
238
+ float h = max(k - abs(a - b), 0.0);
239
+ return min(a, b) - h * h * 0.25 / k;
240
+ }
241
+
242
+ float smax(float a, float b, float k) {
243
+ float h = max(k - abs(a - b), 0.0);
244
+ return max(a, b) + h * h * 0.25 / k;
245
+ }
246
+
247
+ // === SDF Primitives ===
248
+ float sdSphere(vec3 p, float r) {
249
+ return length(p) - r;
250
+ }
251
+
252
+ float sdBox(vec3 p, vec3 b) {
253
+ vec3 d = abs(p) - b;
254
+ return length(max(d, 0.0)) + min(max(d.x, max(d.y, d.z)), 0.0);
255
+ }
256
+
257
+ float sdCylinder(vec3 p, float h, float r) {
258
+ vec2 d = abs(vec2(length(p.xz), p.y)) - vec2(r, h);
259
+ return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
260
+ }
261
+
262
+ float sdEllipsoid(vec3 p, vec3 r) {
263
+ float k0 = length(p / r);
264
+ float k1 = length(p / (r * r));
265
+ return k0 * (k0 - 1.0) / k1;
266
+ }
267
+
268
+ float sdCapsule(vec3 p, vec3 a, vec3 b, float r) {
269
+ vec3 pa = p - a, ba = b - a;
270
+ float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);
271
+ return length(pa - ba * h) - r;
272
+ }
273
+
274
+ // === Scene Definition ===
275
+ float mapScene(vec3 p) {
276
+ // Rotation animation
277
+ float angle = iTime * 0.3;
278
+ float c = cos(angle), s = sin(angle);
279
+ p.xz = mat2(c, -s, s, c) * p.xz;
280
+
281
+ // Primitives
282
+ float cube = sdBox(p, vec3(1.0));
283
+ float sphere = sdSphere(p, 1.25);
284
+ float cylR = 0.45;
285
+ float cylX = sdCylinder(p.yzx, 2.0, cylR);
286
+ float cylY = sdCylinder(p.xyz, 2.0, cylR);
287
+ float cylZ = sdCylinder(p.zxy, 2.0, cylR);
288
+
289
+ // Hard boolean combination: nut = (cube intersect sphere) - three cylinders
290
+ float nut = opSubtraction(
291
+ opIntersection(cube, sphere),
292
+ opUnion(cylX, opUnion(cylY, cylZ))
293
+ );
294
+
295
+ // Organic spheres -- smooth union blending
296
+ float blob1 = sdSphere(p - vec3(1.8, 0.0, 0.0), 0.4);
297
+ float blob2 = sdSphere(p - vec3(-1.8, 0.0, 0.0), 0.4);
298
+ float blob3 = sdSphere(p - vec3(0.0, 1.8, 0.0), 0.4);
299
+ float blobs = smin(blob1, smin(blob2, blob3, 0.3), 0.3);
300
+
301
+ return smin(nut, blobs, 0.15);
302
+ }
303
+
304
+ // === Normal Calculation (Tetrahedral Sampling) ===
305
+ vec3 calcNormal(vec3 pos) {
306
+ vec2 e = vec2(0.001, -0.001);
307
+ return normalize(
308
+ e.xyy * mapScene(pos + e.xyy) +
309
+ e.yyx * mapScene(pos + e.yyx) +
310
+ e.yxy * mapScene(pos + e.yxy) +
311
+ e.xxx * mapScene(pos + e.xxx)
312
+ );
313
+ }
314
+
315
+ // === Ray Marching ===
316
+ float rayMarch(vec3 ro, vec3 rd) {
317
+ float t = 0.0;
318
+ for (int i = 0; i < MAX_STEPS; i++) {
319
+ vec3 p = ro + rd * t;
320
+ float d = mapScene(p);
321
+ if (d < SURF_DIST) return t;
322
+ t += d;
323
+ if (t > MAX_DIST) break;
324
+ }
325
+ return -1.0;
326
+ }
327
+
328
+ // === Soft Shadows ===
329
+ float calcSoftShadow(vec3 ro, vec3 rd, float k) {
330
+ float res = 1.0;
331
+ float t = 0.02;
332
+ for (int i = 0; i < 64; i++) {
333
+ float h = mapScene(ro + rd * t);
334
+ res = min(res, k * h / t);
335
+ t += clamp(h, 0.01, 0.2);
336
+ if (res < 0.001 || t > 20.0) break;
337
+ }
338
+ return clamp(res, 0.0, 1.0);
339
+ }
340
+
341
+ // === AO (Ambient Occlusion) ===
342
+ float calcAO(vec3 pos, vec3 nor) {
343
+ float occ = 0.0;
344
+ float sca = 1.0;
345
+ for (int i = 0; i < 5; i++) {
346
+ float h = 0.01 + 0.12 * float(i);
347
+ float d = mapScene(pos + h * nor);
348
+ occ += (h - d) * sca;
349
+ sca *= 0.95;
350
+ }
351
+ return clamp(1.0 - 3.0 * occ, 0.0, 1.0);
352
+ }
353
+
354
+ // === Main Function (WebGL2 Adapted) ===
355
+ out vec4 outColor;
356
+ void main() {
357
+ vec2 uv = (gl_FragCoord.xy - 0.5 * iResolution.xy) / iResolution.y;
358
+
359
+ // Camera
360
+ float camDist = 4.0;
361
+ float camAngle = 0.3;
362
+ vec3 ro = vec3(
363
+ camDist * cos(iTime * 0.2),
364
+ camDist * sin(camAngle),
365
+ camDist * sin(iTime * 0.2)
366
+ );
367
+ vec3 ta = vec3(0.0, 0.0, 0.0);
368
+
369
+ // Camera matrix
370
+ vec3 ww = normalize(ta - ro);
371
+ vec3 uu = normalize(cross(ww, vec3(0.0, 1.0, 0.0)));
372
+ vec3 vv = cross(uu, ww);
373
+ vec3 rd = normalize(uv.x * uu + uv.y * vv + 2.0 * ww);
374
+
375
+ // Background color
376
+ vec3 col = vec3(0.4, 0.5, 0.6) - 0.3 * rd.y;
377
+
378
+ // Ray marching
379
+ float t = rayMarch(ro, rd);
380
+ if (t > 0.0) {
381
+ vec3 pos = ro + rd * t;
382
+ vec3 nor = calcNormal(pos);
383
+
384
+ vec3 lightDir = normalize(vec3(0.8, 0.6, -0.3));
385
+ float dif = clamp(dot(nor, lightDir), 0.0, 1.0);
386
+ float sha = calcSoftShadow(pos + nor * 0.01, lightDir, 16.0);
387
+ float ao = calcAO(pos, nor);
388
+ float amb = 0.5 + 0.5 * nor.y;
389
+
390
+ vec3 mate = vec3(0.2, 0.3, 0.4);
391
+ col = vec3(0.0);
392
+ col += mate * 2.0 * dif * sha;
393
+ col += mate * 0.3 * amb * ao;
394
+ }
395
+
396
+ col = pow(col, vec3(0.4545));
397
+ outColor = vec4(col, 1.0);
398
+ }
399
+ ```
400
+
401
+ ## Common Variants
402
+
403
+ ### Variant 1: Exponential Smooth Union
404
+
405
+ ```glsl
406
+ float sminExp(float a, float b, float k) {
407
+ float res = exp(-k * a) + exp(-k * b);
408
+ return -log(res) / k;
409
+ }
410
+ ```
411
+
412
+ ### Variant 2: Smooth Operations with Color Blending
413
+
414
+ ```glsl
415
+ // Returns blend factor for the caller to blend colors
416
+ float sminWithFactor(float a, float b, float k, out float blend) {
417
+ float h = clamp(0.5 + 0.5 * (b - a) / k, 0.0, 1.0);
418
+ blend = h;
419
+ return mix(b, a, h) - k * h * (1.0 - h);
420
+ }
421
+ // float blend;
422
+ // float d = sminWithFactor(d1, d2, 0.1, blend);
423
+ // vec3 color = mix(color2, color1, blend);
424
+
425
+ // vec3 overload of smax
426
+ vec3 smax(vec3 a, vec3 b, float k) {
427
+ vec3 h = max(k - abs(a - b), 0.0);
428
+ return max(a, b) + h * h * 0.25 / k;
429
+ }
430
+ ```
431
+
432
+ ### Variant 3: Stepwise CSG Modeling (Architectural/Industrial)
433
+
434
+ ```glsl
435
+ float sdBuilding(vec3 p) {
436
+ float walls = sdBox(p, vec3(1.0, 0.8, 1.0));
437
+ vec3 roofP = p;
438
+ roofP.y -= 0.8;
439
+ float roof = sdBox(roofP, vec3(1.2, 0.3, 1.2));
440
+ float d = opUnion(walls, roof);
441
+
442
+ // Cut windows (exploiting symmetry)
443
+ vec3 winP = abs(p);
444
+ winP -= vec3(1.01, 0.3, 0.4);
445
+ float window = sdBox(winP, vec3(0.1, 0.15, 0.12));
446
+ d = opSubtraction(d, window);
447
+
448
+ // Hollow out interior
449
+ float hollow = sdBox(p, vec3(0.95, 0.75, 0.95));
450
+ d = opSubtraction(d, hollow);
451
+ return d;
452
+ }
453
+ ```
454
+
455
+ ### Variant 4: Large-Scale Organic Character Modeling
456
+
457
+ ```glsl
458
+ float mapCharacter(vec3 p) {
459
+ float body = sdEllipsoid(p, vec3(0.5, 0.4, 0.6));
460
+ float head = sdEllipsoid(p - vec3(0.0, 0.5, 0.5), vec3(0.25));
461
+ float d = smin(body, head, 0.2); // large k: wide blend
462
+
463
+ float ear = sdEllipsoid(p - vec3(0.3, 0.6, 0.3), vec3(0.15, 0.2, 0.05));
464
+ d = smin(d, ear, 0.08); // medium blend
465
+
466
+ float nostril = sdSphere(p - vec3(0.0, 0.4, 0.7), 0.03);
467
+ d = smax(d, -nostril, 0.02); // small k: fine sculpting
468
+ return d;
469
+ }
470
+ ```
471
+
472
+ ## Performance & Composition Tips
473
+
474
+ **Performance:**
475
+ - Bounding volume acceleration: use AABB/bounding spheres to skip distant sub-scenes, reducing `mapScene()` calls
476
+ - Tetrahedral sampling normals (4 samples) outperform central differences (6 samples)
477
+ - Step scaling `t += d * 0.9` can reduce overshoot penetration
478
+ - Prefer quadratic optimized smin/smax (fastest); use exponential version when extreme smoothness is needed
479
+ - `k` must not be zero (division by zero error); fall back to hard boolean when near zero
480
+ - For symmetric shapes, use `abs()` to fold coordinates and define only one side
481
+
482
+ **Composition techniques:**
483
+ - **+ Domain Repetition**: `mod()`/`fract()` for infinite repetition of CSG shapes (mechanical arrays, railings)
484
+ - **+ Procedural Displacement**: overlay noise displacement on SDF for surface detail
485
+ - **+ Procedural Texturing**: use smin blend factor to simultaneously blend material ID / color
486
+ - **+ 2D SDF**: equally applicable to 2D scenes (clouds, UI shape compositing)
487
+ - **+ Animation**: bind k values, positions, and radii to `iTime` for dynamic deformation
488
+
489
+ ## Further Reading
490
+
491
+ Full step-by-step tutorials, mathematical derivations, and advanced usage in [reference](../reference/csg-boolean-operations.md)