@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,527 @@
1
+ # Lighting Models Skill
2
+
3
+ ## Use Cases
4
+ - Adding realistic lighting to raymarched or rasterized scenes
5
+ - Simulating light interaction with various materials (metal, dielectric, water, skin, etc.)
6
+ - From simple diffuse/specular to full PBR
7
+ - Multi-light compositing (sun, sky, ambient)
8
+ - Adding material appearance to SDF scenes in ShaderToy
9
+
10
+ ## Core Principles
11
+
12
+ Lighting = Diffuse + Specular Reflection:
13
+
14
+ - **Diffuse**: Lambert's law `I = max(0, N·L)`
15
+ - **Specular**: Empirical model uses Blinn-Phong `pow(max(0, N·H), shininess)`; physically-based model uses Cook-Torrance BRDF
16
+
17
+ ### Key Formulas
18
+
19
+ ```
20
+ Lambert: L_diffuse = albedo * lightColor * max(0, N·L)
21
+ Blinn-Phong: H = normalize(V + L); L_specular = lightColor * pow(max(0, N·H), shininess)
22
+ Cook-Torrance: f_specular = D(h) * F(v,h) * G(l,v,h) / (4 * (N·L) * (N·V))
23
+ Fresnel: F = F0 + (1 - F0) * (1 - V·H)^5
24
+ ```
25
+
26
+ - **D** = GGX/Trowbridge-Reitz normal distribution
27
+ - **F** = Schlick Fresnel approximation
28
+ - **G** = Smith geometric shadowing
29
+ - F0: dielectric ~0.04, metals use baseColor
30
+
31
+ ## Implementation Steps
32
+
33
+ ### Step 1: Scene Basics (Normal + Vector Setup)
34
+
35
+ ```glsl
36
+ // SDF normal (finite difference method)
37
+ vec3 calcNormal(vec3 p) {
38
+ vec2 e = vec2(0.001, 0.0);
39
+ return normalize(vec3(
40
+ map(p + e.xyy) - map(p - e.xyy),
41
+ map(p + e.yxy) - map(p - e.yxy),
42
+ map(p + e.yyx) - map(p - e.yyx)
43
+ ));
44
+ }
45
+
46
+ vec3 N = calcNormal(pos); // surface normal
47
+ vec3 V = -rd; // view direction
48
+ vec3 L = normalize(lightPos - pos); // light direction (point light)
49
+ // directional light: vec3 L = normalize(vec3(0.6, 0.8, -0.5));
50
+ ```
51
+
52
+ ### Step 2: Lambert Diffuse
53
+
54
+ ```glsl
55
+ float NdotL = max(0.0, dot(N, L));
56
+ vec3 diffuse = albedo * lightColor * NdotL;
57
+
58
+ // energy-conserving version
59
+ vec3 diffuse_conserved = albedo / PI * lightColor * NdotL;
60
+
61
+ // Half-Lambert (reduces over-darkening on backlit faces, commonly used for SSS approximation)
62
+ float halfLambert = NdotL * 0.5 + 0.5;
63
+ vec3 diffuse_wrapped = albedo * lightColor * halfLambert;
64
+ ```
65
+
66
+ ### Step 3: Blinn-Phong Specular
67
+
68
+ ```glsl
69
+ vec3 H = normalize(V + L);
70
+ float NdotH = max(0.0, dot(N, H));
71
+ float SHININESS = 32.0; // 4.0 (rough) ~ 256.0 (smooth)
72
+
73
+ // with normalization factor for energy conservation
74
+ float normFactor = (SHININESS + 8.0) / (8.0 * PI);
75
+ float spec = normFactor * pow(NdotH, SHININESS);
76
+ vec3 specular = lightColor * spec;
77
+ ```
78
+
79
+ ### Step 4: Fresnel-Schlick
80
+
81
+ ```glsl
82
+ vec3 fresnelSchlick(vec3 F0, float cosTheta) {
83
+ return F0 + (1.0 - F0) * pow(1.0 - cosTheta, 5.0);
84
+ }
85
+
86
+ // metallic workflow
87
+ vec3 F0 = mix(vec3(0.04), baseColor, metallic);
88
+
89
+ // computed with V·H (specular reflection BRDF)
90
+ float VdotH = max(0.0, dot(V, H));
91
+ vec3 F = fresnelSchlick(F0, VdotH);
92
+
93
+ // computed with N·V (environment reflection, rim light)
94
+ float NdotV = max(0.0, dot(N, V));
95
+ vec3 F_env = fresnelSchlick(F0, NdotV);
96
+ ```
97
+
98
+ ### Step 5: GGX Normal Distribution (D Term)
99
+
100
+ ```glsl
101
+ float distributionGGX(float NdotH, float roughness) {
102
+ float a = roughness * roughness; // roughness must be squared first
103
+ float a2 = a * a;
104
+ float denom = NdotH * NdotH * (a2 - 1.0) + 1.0;
105
+ return a2 / (PI * denom * denom);
106
+ }
107
+ ```
108
+
109
+ ### Step 6: Geometric Shadowing (G Term)
110
+
111
+ ```glsl
112
+ // Method 1: Schlick-GGX
113
+ float geometrySchlickGGX(float NdotV, float roughness) {
114
+ float r = roughness + 1.0;
115
+ float k = (r * r) / 8.0;
116
+ return NdotV / (NdotV * (1.0 - k) + k);
117
+ }
118
+ float geometrySmith(float NdotV, float NdotL, float roughness) {
119
+ return geometrySchlickGGX(NdotV, roughness) * geometrySchlickGGX(NdotL, roughness);
120
+ }
121
+
122
+ // Method 2: Height-Correlated Smith (more accurate, directly returns the visibility term)
123
+ float visibilitySmith(float NdotV, float NdotL, float roughness) {
124
+ float a2 = roughness * roughness;
125
+ float gv = NdotL * sqrt(NdotV * (NdotV - NdotV * a2) + a2);
126
+ float gl = NdotV * sqrt(NdotL * (NdotL - NdotL * a2) + a2);
127
+ return 0.5 / max(gv + gl, 0.00001);
128
+ }
129
+
130
+ // Method 3: Simplified approximation
131
+ float G1V(float dotNV, float k) {
132
+ return 1.0 / (dotNV * (1.0 - k) + k);
133
+ }
134
+ // Usage: float vis = G1V(NdotL, k) * G1V(NdotV, k); where k = roughness/2
135
+ ```
136
+
137
+ ### Step 7: Assembling Cook-Torrance BRDF
138
+
139
+ ```glsl
140
+ vec3 cookTorranceBRDF(vec3 N, vec3 V, vec3 L, float roughness, vec3 F0) {
141
+ vec3 H = normalize(V + L);
142
+ float NdotL = max(0.0, dot(N, L));
143
+ float NdotV = max(0.0, dot(N, V));
144
+ float NdotH = max(0.0, dot(N, H));
145
+ float VdotH = max(0.0, dot(V, H));
146
+
147
+ float D = distributionGGX(NdotH, roughness);
148
+ vec3 F = fresnelSchlick(F0, VdotH);
149
+ float Vis = visibilitySmith(NdotV, NdotL, roughness);
150
+
151
+ // Vis version already includes the 4*NdotV*NdotL denominator
152
+ vec3 specular = D * F * Vis;
153
+ // Or with standard G term: specular = (D * F * G) / max(4.0 * NdotV * NdotL, 0.001);
154
+
155
+ return specular * NdotL;
156
+ }
157
+ ```
158
+
159
+ ### Step 8: Multi-Light Accumulation and Compositing
160
+
161
+ ```glsl
162
+ vec3 shade(vec3 pos, vec3 N, vec3 V, vec3 albedo, float roughness, float metallic) {
163
+ vec3 F0 = mix(vec3(0.04), albedo, metallic);
164
+ vec3 diffuseColor = albedo * (1.0 - metallic); // metals have no diffuse
165
+ vec3 color = vec3(0.0);
166
+
167
+ // primary light (sun)
168
+ vec3 sunDir = normalize(vec3(0.6, 0.8, -0.5));
169
+ vec3 sunColor = vec3(1.0, 0.95, 0.85) * 2.0;
170
+ vec3 H = normalize(V + sunDir);
171
+ float NdotL = max(0.0, dot(N, sunDir));
172
+ float NdotV = max(0.0, dot(N, V));
173
+ float VdotH = max(0.0, dot(V, H));
174
+ vec3 F = fresnelSchlick(F0, VdotH);
175
+ vec3 kD = (1.0 - F) * (1.0 - metallic); // energy conservation
176
+
177
+ color += kD * diffuseColor / PI * sunColor * NdotL;
178
+ color += cookTorranceBRDF(N, V, sunDir, roughness, F0) * sunColor;
179
+
180
+ // sky light (hemisphere approximation)
181
+ vec3 skyColor = vec3(0.2, 0.5, 1.0) * 0.3;
182
+ float skyDiffuse = 0.5 + 0.5 * N.y;
183
+ color += diffuseColor * skyColor * skyDiffuse;
184
+
185
+ // back light / rim light
186
+ vec3 backDir = normalize(vec3(-sunDir.x, 0.0, -sunDir.z));
187
+ float backDiffuse = clamp(dot(N, backDir) * 0.5 + 0.5, 0.0, 1.0);
188
+ color += diffuseColor * vec3(0.25, 0.15, 0.1) * backDiffuse;
189
+
190
+ return color;
191
+ }
192
+ ```
193
+
194
+ ### Step 9: Ambient Occlusion (AO)
195
+
196
+ ```glsl
197
+ // Raymarching AO (using SDF queries)
198
+ float calcAO(vec3 pos, vec3 nor) {
199
+ float occ = 0.0;
200
+ float sca = 1.0;
201
+ for (int i = 0; i < 5; i++) {
202
+ float h = 0.01 + 0.12 * float(i) / 4.0;
203
+ float d = map(pos + h * nor);
204
+ occ += (h - d) * sca;
205
+ sca *= 0.95;
206
+ }
207
+ return clamp(1.0 - 3.0 * occ, 0.0, 1.0);
208
+ }
209
+
210
+ float ao = calcAO(pos, N);
211
+ diffuseLight *= ao;
212
+ // specular AO (more subtle):
213
+ specularLight *= clamp(pow(NdotV + ao, roughness * roughness) - 1.0 + ao, 0.0, 1.0);
214
+ ```
215
+
216
+ ### Outdoor Three-Light Model
217
+
218
+ The go-to lighting setup for outdoor SDF scenes. Uses three directional sources to approximate full global illumination with minimal cost:
219
+
220
+ ```glsl
221
+ // === Outdoor Three-Light Lighting ===
222
+ // Compute material, occlusion, and shadow first
223
+ vec3 material = getMaterial(pos, nor); // albedo, keep ≤ 0.2 for realism
224
+ float occ = calcAO(pos, nor); // ambient occlusion
225
+ float sha = calcSoftShadow(pos, sunDir, 0.02, 8.0);
226
+
227
+ // Three light contributions
228
+ float sun = clamp(dot(nor, sunDir), 0.0, 1.0); // direct sunlight
229
+ float sky = clamp(0.5 + 0.5 * nor.y, 0.0, 1.0); // hemisphere sky light
230
+ float ind = clamp(dot(nor, normalize(sunDir * vec3(-1.0, 0.0, -1.0))), 0.0, 1.0); // indirect bounce
231
+
232
+ // Combine with colored shadows (key technique: shadow penumbra tints blue)
233
+ vec3 lin = vec3(0.0);
234
+ lin += sun * vec3(1.64, 1.27, 0.99) * pow(vec3(sha), vec3(1.0, 1.2, 1.5)); // warm sun, colored shadow
235
+ lin += sky * vec3(0.16, 0.20, 0.28) * occ; // cool sky fill
236
+ lin += ind * vec3(0.40, 0.28, 0.20) * occ; // warm ground bounce
237
+
238
+ vec3 color = material * lin;
239
+ ```
240
+
241
+ Key principles:
242
+ - **Colored shadow penumbra**: `pow(vec3(sha), vec3(1.0, 1.2, 1.5))` makes shadow edges slightly blue/cool, mimicking real subsurface scattering in penumbra regions
243
+ - **Material albedo rule**: Keep diffuse albedo ≤ 0.2; adjust light intensities for brightness, not material values. Real-world surfaces rarely exceed 0.3 albedo
244
+ - **Linear workflow**: All computations in linear space, apply gamma `pow(color, vec3(1.0/2.2))` at the very end
245
+ - **Sky light approximation**: `0.5 + 0.5 * nor.y` is a cheap hemisphere integral — surfaces pointing up get full sky, pointing down get none
246
+ - Do NOT apply ambient occlusion to the sun/key light — shadows handle that
247
+
248
+ ## Complete Code Template
249
+
250
+ ```glsl
251
+ // Lighting Model Complete Template - Runs directly in ShaderToy
252
+ // Progressive implementation from Lambert to Cook-Torrance PBR
253
+
254
+ #define PI 3.14159265359
255
+
256
+ // ========== Adjustable Parameters ==========
257
+ #define ROUGHNESS 0.35
258
+ #define METALLIC 0.0
259
+ #define ALBEDO vec3(0.8, 0.2, 0.2)
260
+ #define SUN_DIR normalize(vec3(0.6, 0.8, -0.5))
261
+ #define SUN_COLOR vec3(1.0, 0.95, 0.85) * 2.0
262
+ #define SKY_COLOR vec3(0.2, 0.5, 1.0) * 0.4
263
+ #define BACKGROUND_TOP vec3(0.5, 0.7, 1.0)
264
+ #define BACKGROUND_BOT vec3(0.8, 0.85, 0.9)
265
+
266
+ // ========== SDF Scene ==========
267
+ float map(vec3 p) {
268
+ float sphere = length(p - vec3(0.0, 0.0, 0.0)) - 1.0;
269
+ float ground = p.y + 1.0;
270
+ return min(sphere, ground);
271
+ }
272
+
273
+ vec3 calcNormal(vec3 p) {
274
+ vec2 e = vec2(0.001, 0.0);
275
+ return normalize(vec3(
276
+ map(p + e.xyy) - map(p - e.xyy),
277
+ map(p + e.yxy) - map(p - e.yxy),
278
+ map(p + e.yyx) - map(p - e.yyx)
279
+ ));
280
+ }
281
+
282
+ // ========== AO ==========
283
+ float calcAO(vec3 pos, vec3 nor) {
284
+ float occ = 0.0;
285
+ float sca = 1.0;
286
+ for (int i = 0; i < 5; i++) {
287
+ float h = 0.01 + 0.12 * float(i) / 4.0;
288
+ float d = map(pos + h * nor);
289
+ occ += (h - d) * sca;
290
+ sca *= 0.95;
291
+ }
292
+ return clamp(1.0 - 3.0 * occ, 0.0, 1.0);
293
+ }
294
+
295
+ // ========== Soft Shadow ==========
296
+ float softShadow(vec3 ro, vec3 rd, float mint, float maxt) {
297
+ float res = 1.0;
298
+ float t = mint;
299
+ for (int i = 0; i < 24; i++) {
300
+ float h = map(ro + rd * t);
301
+ res = min(res, 8.0 * h / t);
302
+ t += clamp(h, 0.02, 0.2);
303
+ if (res < 0.001 || t > maxt) break;
304
+ }
305
+ return clamp(res, 0.0, 1.0);
306
+ }
307
+
308
+ // ========== PBR BRDF Components ==========
309
+ float D_GGX(float NdotH, float roughness) {
310
+ float a = roughness * roughness;
311
+ float a2 = a * a;
312
+ float d = NdotH * NdotH * (a2 - 1.0) + 1.0;
313
+ return a2 / (PI * d * d);
314
+ }
315
+
316
+ vec3 F_Schlick(vec3 F0, float cosTheta) {
317
+ return F0 + (1.0 - F0) * pow(1.0 - cosTheta, 5.0);
318
+ }
319
+
320
+ float V_SmithGGX(float NdotV, float NdotL, float roughness) {
321
+ float a2 = roughness * roughness;
322
+ a2 *= a2;
323
+ float gv = NdotL * sqrt(NdotV * NdotV * (1.0 - a2) + a2);
324
+ float gl = NdotV * sqrt(NdotL * NdotL * (1.0 - a2) + a2);
325
+ return 0.5 / max(gv + gl, 1e-5);
326
+ }
327
+
328
+ // ========== Complete Lighting ==========
329
+ vec3 shade(vec3 pos, vec3 N, vec3 V, vec3 albedo, float roughness, float metallic) {
330
+ vec3 F0 = mix(vec3(0.04), albedo, metallic);
331
+ vec3 diffuseColor = albedo * (1.0 - metallic);
332
+ float NdotV = max(dot(N, V), 1e-4);
333
+ float ao = calcAO(pos, N);
334
+ vec3 color = vec3(0.0);
335
+
336
+ // sunlight
337
+ {
338
+ vec3 L = SUN_DIR;
339
+ vec3 H = normalize(V + L);
340
+ float NdotL = max(dot(N, L), 0.0);
341
+ float NdotH = max(dot(N, H), 0.0);
342
+ float VdotH = max(dot(V, H), 0.0);
343
+ float D = D_GGX(NdotH, roughness);
344
+ vec3 F = F_Schlick(F0, VdotH);
345
+ float Vis = V_SmithGGX(NdotV, NdotL, roughness);
346
+ vec3 kD = (1.0 - F) * (1.0 - metallic);
347
+ vec3 diffuse = kD * diffuseColor / PI;
348
+ vec3 specular = D * F * Vis;
349
+ float shadow = softShadow(pos, L, 0.02, 5.0);
350
+ color += (diffuse + specular) * SUN_COLOR * NdotL * shadow;
351
+ }
352
+
353
+ // sky light (hemisphere approximation)
354
+ {
355
+ float skyDiff = 0.5 + 0.5 * N.y;
356
+ color += diffuseColor * SKY_COLOR * skyDiff * ao;
357
+ }
358
+
359
+ // back light / rim light
360
+ {
361
+ vec3 backDir = normalize(vec3(-SUN_DIR.x, 0.0, -SUN_DIR.z));
362
+ float backDiff = clamp(dot(N, backDir) * 0.5 + 0.5, 0.0, 1.0);
363
+ color += diffuseColor * vec3(0.15, 0.1, 0.08) * backDiff * ao;
364
+ }
365
+
366
+ // environment reflection (simplified)
367
+ {
368
+ vec3 R = reflect(-V, N);
369
+ vec3 envColor = mix(BACKGROUND_BOT, BACKGROUND_TOP, clamp(R.y * 0.5 + 0.5, 0.0, 1.0));
370
+ vec3 F_env = F_Schlick(F0, NdotV);
371
+ float envOcc = clamp(pow(NdotV + ao, roughness * roughness) - 1.0 + ao, 0.0, 1.0);
372
+ color += F_env * envColor * envOcc * (1.0 - roughness * 0.7);
373
+ }
374
+
375
+ return color;
376
+ }
377
+
378
+ // ========== Raymarching ==========
379
+ float raymarch(vec3 ro, vec3 rd) {
380
+ float t = 0.0;
381
+ for (int i = 0; i < 128; i++) {
382
+ float d = map(ro + rd * t);
383
+ if (d < 0.001) return t;
384
+ t += d;
385
+ if (t > 50.0) break;
386
+ }
387
+ return -1.0;
388
+ }
389
+
390
+ // ========== Background ==========
391
+ vec3 background(vec3 rd) {
392
+ vec3 col = mix(BACKGROUND_BOT, BACKGROUND_TOP, clamp(rd.y * 0.5 + 0.5, 0.0, 1.0));
393
+ float sun = clamp(dot(rd, SUN_DIR), 0.0, 1.0);
394
+ col += SUN_COLOR * 0.3 * pow(sun, 8.0);
395
+ col += SUN_COLOR * 1.0 * pow(sun, 256.0);
396
+ return col;
397
+ }
398
+
399
+ // ========== Main Function ==========
400
+ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
401
+ vec2 uv = (2.0 * fragCoord - iResolution.xy) / iResolution.y;
402
+
403
+ float angle = iTime * 0.3;
404
+ vec3 ro = vec3(3.0 * cos(angle), 1.5, 3.0 * sin(angle));
405
+ vec3 ta = vec3(0.0, 0.0, 0.0);
406
+ vec3 ww = normalize(ta - ro);
407
+ vec3 uu = normalize(cross(ww, vec3(0.0, 1.0, 0.0)));
408
+ vec3 vv = cross(uu, ww);
409
+ vec3 rd = normalize(uv.x * uu + uv.y * vv + 1.5 * ww);
410
+
411
+ vec3 col = background(rd);
412
+ float t = raymarch(ro, rd);
413
+
414
+ if (t > 0.0) {
415
+ vec3 pos = ro + t * rd;
416
+ vec3 N = calcNormal(pos);
417
+ vec3 V = -rd;
418
+ vec3 albedo = ALBEDO;
419
+ float roughness = ROUGHNESS;
420
+ float metallic = METALLIC;
421
+
422
+ if (pos.y < -0.99) {
423
+ roughness = 0.8;
424
+ metallic = 0.0;
425
+ float checker = mod(floor(pos.x) + floor(pos.z), 2.0);
426
+ albedo = mix(vec3(0.3), vec3(0.6), checker);
427
+ }
428
+
429
+ col = shade(pos, N, V, albedo, roughness, metallic);
430
+ }
431
+
432
+ col = col / (col + vec3(1.0)); // Tone mapping (Reinhard)
433
+ col = pow(col, vec3(1.0 / 2.2)); // Gamma
434
+ fragColor = vec4(col, 1.0);
435
+ }
436
+ ```
437
+
438
+ ## Common Variants
439
+
440
+ ### Variant 1: Classic Phong (Non-PBR)
441
+
442
+ ```glsl
443
+ vec3 R = reflect(-L, N);
444
+ float spec = pow(max(0.0, dot(R, V)), 32.0);
445
+ vec3 color = albedo * lightColor * NdotL + lightColor * spec;
446
+ ```
447
+
448
+ ### Variant 2: Point Light Attenuation
449
+
450
+ ```glsl
451
+ float dist = length(lightPos - pos);
452
+ float attenuation = 1.0 / (1.0 + dist * 0.1 + dist * dist * 0.01);
453
+ color *= attenuation;
454
+ ```
455
+
456
+ ### Variant 3: IBL (Image-Based Lighting)
457
+
458
+ ```glsl
459
+ // diffuse IBL: spherical harmonics
460
+ vec3 diffuseIBL = diffuseColor * SHIrradiance(N);
461
+
462
+ // specular IBL: EnvBRDFApprox
463
+ vec3 EnvBRDFApprox(vec3 specColor, float roughness, float NdotV) {
464
+ vec4 c0 = vec4(-1, -0.0275, -0.572, 0.022);
465
+ vec4 c1 = vec4(1, 0.0425, 1.04, -0.04);
466
+ vec4 r = roughness * c0 + c1;
467
+ float a004 = min(r.x * r.x, exp2(-9.28 * NdotV)) * r.x + r.y;
468
+ vec2 AB = vec2(-1.04, 1.04) * a004 + r.zw;
469
+ return specColor * AB.x + AB.y;
470
+ }
471
+ vec3 R = reflect(-V, N);
472
+ vec3 envColor = textureLod(envMap, R, roughness * 7.0).rgb;
473
+ vec3 specularIBL = EnvBRDFApprox(F0, roughness, NdotV) * envColor;
474
+ ```
475
+
476
+ ### Variant 4: Subsurface Scattering Approximation (SSS)
477
+
478
+ ```glsl
479
+ // SDF-based interior probing
480
+ float subsurface(vec3 pos, vec3 L) {
481
+ float sss = 0.0;
482
+ for (int i = 0; i < 5; i++) {
483
+ float h = 0.05 + float(i) * 0.1;
484
+ float d = map(pos + L * h);
485
+ sss += max(0.0, h - d);
486
+ }
487
+ return clamp(1.0 - sss * 4.0, 0.0, 1.0);
488
+ }
489
+
490
+ // Henyey-Greenstein phase function
491
+ float HenyeyGreenstein(float cosTheta, float g) {
492
+ float g2 = g * g;
493
+ return (1.0 - g2) / (pow(1.0 + g2 - 2.0 * g * cosTheta, 1.5) * 4.0 * PI);
494
+ }
495
+ float sssAmount = HenyeyGreenstein(dot(V, L), 0.5);
496
+ color += sssColor * sssAmount * NdotL;
497
+ ```
498
+
499
+ ### Variant 5: Beer's Law Water Lighting
500
+
501
+ ```glsl
502
+ vec3 waterExtinction(float depth) {
503
+ float opticalDepth = depth * 6.0;
504
+ vec3 extinctColor = 1.0 - vec3(0.5, 0.4, 0.1);
505
+ return exp2(-opticalDepth * extinctColor);
506
+ }
507
+ vec3 underwaterColor = objectColor * waterExtinction(depth);
508
+ vec3 inscatter = waterDiffuse * (1.0 - exp(-depth * 0.1));
509
+ underwaterColor += inscatter;
510
+ ```
511
+
512
+ ## Performance & Composition
513
+
514
+ - **Fresnel optimization**: Use `x2*x2*x` instead of `pow(x, 5.0)`
515
+ - **Visibility term**: Use `V_SmithGGX` to directly return `G/(4*NdotV*NdotL)`, avoiding separate division
516
+ - **AO sampling**: 5 samples is sufficient; can reduce to 3 at far distances
517
+ - **Soft shadow**: `clamp(h, 0.02, 0.2)` limits step size; 14~24 steps usually sufficient; `8.0*h/t` controls softness
518
+ - **Simplified IBL**: Without cubemap, approximate with `mix(groundColor, skyColor, R.y*0.5+0.5)`
519
+ - **Branch culling**: Skip specular calculation when `NdotL <= 0`
520
+ - **Raymarching integration**: Use SDF finite differences for normals, query SDF directly for AO/shadows
521
+ - **Volume rendering integration**: Beer's Law attenuation + Henyey-Greenstein phase function; FBM noise procedural normals can be passed directly to lighting functions
522
+ - **Post-processing integration**: ACES `(col*(2.51*col+0.03))/(col*(2.43*col+0.59)+0.14)` / Reinhard `col/(col+1)` + Gamma
523
+ - **Reflection integration**: `reflect(rd, N)` to query scene again, blend result with Fresnel weighting
524
+
525
+ ## Further Reading
526
+
527
+ For complete step-by-step tutorials, mathematical derivations, and advanced usage, see [reference](../reference/lighting-model.md)