@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,315 @@
1
+
2
+ CREATE TABLE IF NOT EXISTS schema_migration (
3
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
4
+ version INTEGER NOT NULL,
5
+ name TEXT NOT NULL,
6
+ checksum TEXT NOT NULL,
7
+ applied_at TEXT NOT NULL,
8
+ UNIQUE(version)
9
+ );
10
+
11
+ CREATE TABLE IF NOT EXISTS memory_receipt (
12
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
13
+ receipt_key TEXT NOT NULL UNIQUE,
14
+ operation TEXT NOT NULL,
15
+ status TEXT NOT NULL CHECK (status IN ('ok','error')),
16
+ payload_json TEXT NOT NULL DEFAULT '{}',
17
+ created_at TEXT NOT NULL
18
+ );
19
+
20
+ CREATE TABLE IF NOT EXISTS session (
21
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
22
+ session_key TEXT NOT NULL UNIQUE,
23
+ project TEXT NOT NULL,
24
+ agent TEXT NOT NULL,
25
+ started_at TEXT NOT NULL,
26
+ ended_at TEXT,
27
+ metadata_json TEXT NOT NULL DEFAULT '{}'
28
+ );
29
+
30
+ CREATE TABLE IF NOT EXISTS task (
31
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
32
+ task_key TEXT NOT NULL UNIQUE,
33
+ session_id INTEGER REFERENCES session(id) ON DELETE SET NULL,
34
+ project TEXT NOT NULL,
35
+ agent TEXT NOT NULL,
36
+ title TEXT NOT NULL,
37
+ scope_text TEXT NOT NULL DEFAULT '',
38
+ status TEXT NOT NULL CHECK (status IN ('active','blocked','completed','cancelled')),
39
+ started_at TEXT NOT NULL,
40
+ completed_at TEXT,
41
+ outcome TEXT,
42
+ metadata_json TEXT NOT NULL DEFAULT '{}'
43
+ );
44
+
45
+ CREATE TABLE IF NOT EXISTS memory_event (
46
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
47
+ session_id INTEGER REFERENCES session(id) ON DELETE SET NULL,
48
+ task_id INTEGER REFERENCES task(id) ON DELETE SET NULL,
49
+ event_type TEXT NOT NULL,
50
+ state TEXT,
51
+ summary TEXT NOT NULL DEFAULT '',
52
+ payload_json TEXT NOT NULL DEFAULT '{}',
53
+ created_at TEXT NOT NULL
54
+ );
55
+
56
+ CREATE TABLE IF NOT EXISTS memory_fact (
57
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
58
+ session_id INTEGER REFERENCES session(id) ON DELETE SET NULL,
59
+ project TEXT NOT NULL,
60
+ agent TEXT NOT NULL,
61
+ fact_key TEXT NOT NULL,
62
+ fact_text TEXT NOT NULL,
63
+ category TEXT NOT NULL,
64
+ confidence TEXT NOT NULL DEFAULT 'medium'
65
+ CHECK (confidence IN ('low','medium','high')),
66
+ status TEXT NOT NULL DEFAULT 'active'
67
+ CHECK (status IN ('active','superseded','rejected','expired')),
68
+ sensitive INTEGER NOT NULL DEFAULT 0 CHECK (sensitive IN (0,1)),
69
+ indexable INTEGER NOT NULL DEFAULT 1 CHECK (indexable IN (0,1)),
70
+ first_seen_at TEXT NOT NULL,
71
+ last_seen_at TEXT NOT NULL,
72
+ superseded_by INTEGER REFERENCES memory_fact(id),
73
+ metadata_json TEXT NOT NULL DEFAULT '{}',
74
+ UNIQUE(project, agent, fact_key)
75
+ );
76
+
77
+ CREATE TABLE IF NOT EXISTS claim (
78
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
79
+ session_id INTEGER REFERENCES session(id) ON DELETE SET NULL,
80
+ task_id INTEGER REFERENCES task(id) ON DELETE SET NULL,
81
+ project TEXT NOT NULL,
82
+ agent TEXT NOT NULL,
83
+ claim_key TEXT NOT NULL,
84
+ claim_text TEXT NOT NULL,
85
+ verification_status TEXT NOT NULL
86
+ CHECK (verification_status IN ('unverified','verified','disputed','superseded')),
87
+ evidence_summary TEXT NOT NULL DEFAULT '',
88
+ sensitive INTEGER NOT NULL DEFAULT 0 CHECK (sensitive IN (0,1)),
89
+ indexable INTEGER NOT NULL DEFAULT 1 CHECK (indexable IN (0,1)),
90
+ created_at TEXT NOT NULL,
91
+ updated_at TEXT NOT NULL,
92
+ metadata_json TEXT NOT NULL DEFAULT '{}',
93
+ UNIQUE(project, agent, claim_key)
94
+ );
95
+
96
+ CREATE TABLE IF NOT EXISTS finding (
97
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
98
+ session_id INTEGER REFERENCES session(id) ON DELETE SET NULL,
99
+ task_id INTEGER REFERENCES task(id) ON DELETE SET NULL,
100
+ project TEXT NOT NULL,
101
+ agent TEXT NOT NULL,
102
+ kind TEXT NOT NULL
103
+ CHECK (kind IN ('correction','failure','review_rejection','preference','risk','observation')),
104
+ category TEXT NOT NULL,
105
+ severity TEXT NOT NULL DEFAULT 'normal'
106
+ CHECK (severity IN ('low','normal','high','critical')),
107
+ wrong_behavior TEXT NOT NULL DEFAULT '',
108
+ correct_behavior TEXT NOT NULL DEFAULT '',
109
+ summary TEXT NOT NULL,
110
+ raw_ref TEXT NOT NULL DEFAULT '',
111
+ sensitive INTEGER NOT NULL DEFAULT 0 CHECK (sensitive IN (0,1)),
112
+ indexable INTEGER NOT NULL DEFAULT 1 CHECK (indexable IN (0,1)),
113
+ created_at TEXT NOT NULL,
114
+ metadata_json TEXT NOT NULL DEFAULT '{}'
115
+ );
116
+
117
+ CREATE TABLE IF NOT EXISTS evidence (
118
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
119
+ session_id INTEGER REFERENCES session(id) ON DELETE SET NULL,
120
+ task_id INTEGER REFERENCES task(id) ON DELETE SET NULL,
121
+ project TEXT NOT NULL,
122
+ agent TEXT NOT NULL,
123
+ source_type TEXT NOT NULL
124
+ CHECK (source_type IN ('finding','claim','memory_event','task','file','diff','test','user_confirmation')),
125
+ source_id INTEGER,
126
+ evidence_key TEXT NOT NULL,
127
+ evidence_text TEXT NOT NULL,
128
+ evidence_hash TEXT NOT NULL,
129
+ weight INTEGER NOT NULL DEFAULT 1 CHECK (weight >= 0),
130
+ sensitive INTEGER NOT NULL DEFAULT 0 CHECK (sensitive IN (0,1)),
131
+ indexable INTEGER NOT NULL DEFAULT 1 CHECK (indexable IN (0,1)),
132
+ created_at TEXT NOT NULL,
133
+ metadata_json TEXT NOT NULL DEFAULT '{}',
134
+ UNIQUE(project, agent, evidence_key)
135
+ );
136
+
137
+ CREATE TABLE IF NOT EXISTS rule_candidate (
138
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
139
+ project TEXT NOT NULL,
140
+ agent TEXT NOT NULL,
141
+ rule_key TEXT NOT NULL,
142
+ normalized_rule_hash TEXT NOT NULL,
143
+ rule_text TEXT NOT NULL,
144
+ category TEXT NOT NULL,
145
+ severity TEXT NOT NULL DEFAULT 'normal'
146
+ CHECK (severity IN ('low','normal','high','critical')),
147
+ status TEXT NOT NULL DEFAULT 'memory'
148
+ CHECK (status IN (
149
+ 'memory',
150
+ 'candidate',
151
+ 'needs_reconciliation',
152
+ 'approved',
153
+ 'promoted',
154
+ 'rejected',
155
+ 'superseded',
156
+ 'expired'
157
+ )),
158
+ score INTEGER NOT NULL DEFAULT 0 CHECK (score >= 0),
159
+ mention_count INTEGER NOT NULL DEFAULT 0 CHECK (mention_count >= 0),
160
+ session_count INTEGER NOT NULL DEFAULT 0 CHECK (session_count >= 0),
161
+ evidence_count INTEGER NOT NULL DEFAULT 0 CHECK (evidence_count >= 0),
162
+ promotion_target TEXT NOT NULL DEFAULT 'AGENTS.md',
163
+ target_scope TEXT NOT NULL DEFAULT 'project_root_agents'
164
+ CHECK (target_scope IN ('project_root_agents')),
165
+ conflicts_json TEXT NOT NULL DEFAULT '[]',
166
+ requires_user_approval INTEGER NOT NULL DEFAULT 1 CHECK (requires_user_approval IN (0,1)),
167
+ first_seen_at TEXT NOT NULL,
168
+ last_seen_at TEXT NOT NULL,
169
+ approved_at TEXT,
170
+ promoted_at TEXT,
171
+ superseded_by INTEGER REFERENCES rule_candidate(id),
172
+ metadata_json TEXT NOT NULL DEFAULT '{}',
173
+ UNIQUE(project, agent, rule_key)
174
+ );
175
+
176
+ CREATE TABLE IF NOT EXISTS rule_candidate_evidence (
177
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
178
+ rule_id INTEGER NOT NULL REFERENCES rule_candidate(id) ON DELETE CASCADE,
179
+ evidence_id INTEGER NOT NULL REFERENCES evidence(id) ON DELETE RESTRICT,
180
+ signal_type TEXT NOT NULL
181
+ CHECK (signal_type IN (
182
+ 'long_term_instruction',
183
+ 'correction_after_drift',
184
+ 'review_rejection',
185
+ 'ordinary_preference',
186
+ 'evidence_backed_failure',
187
+ 'risk_signal',
188
+ 'user_confirmation'
189
+ )),
190
+ weight INTEGER NOT NULL CHECK (weight >= 0),
191
+ created_at TEXT NOT NULL,
192
+ UNIQUE(rule_id, evidence_id)
193
+ );
194
+
195
+ CREATE TABLE IF NOT EXISTS instruction_snapshot (
196
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
197
+ target_path TEXT NOT NULL,
198
+ target_scope TEXT NOT NULL
199
+ CHECK (target_scope IN ('project_root_agents')),
200
+ hash_algorithm TEXT NOT NULL DEFAULT 'sha256',
201
+ content_hash TEXT NOT NULL,
202
+ summary TEXT NOT NULL DEFAULT '',
203
+ captured_at TEXT NOT NULL,
204
+ metadata_json TEXT NOT NULL DEFAULT '{}'
205
+ );
206
+
207
+ CREATE TABLE IF NOT EXISTS rule_patch (
208
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
209
+ rule_id INTEGER NOT NULL REFERENCES rule_candidate(id) ON DELETE CASCADE,
210
+ target_path TEXT NOT NULL DEFAULT 'AGENTS.md',
211
+ target_scope TEXT NOT NULL DEFAULT 'project_root_agents'
212
+ CHECK (target_scope IN ('project_root_agents')),
213
+ base_snapshot_id INTEGER NOT NULL REFERENCES instruction_snapshot(id),
214
+ base_hash TEXT NOT NULL,
215
+ patch_hash TEXT NOT NULL,
216
+ proposed_rule_hash TEXT NOT NULL,
217
+ patch_text TEXT NOT NULL,
218
+ status TEXT NOT NULL DEFAULT 'proposed'
219
+ CHECK (status IN ('proposed','approved','rejected','applied','stale','failed')),
220
+ created_at TEXT NOT NULL,
221
+ updated_at TEXT NOT NULL,
222
+ metadata_json TEXT NOT NULL DEFAULT '{}'
223
+ );
224
+
225
+ CREATE TABLE IF NOT EXISTS rule_decision (
226
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
227
+ rule_id INTEGER NOT NULL REFERENCES rule_candidate(id) ON DELETE CASCADE,
228
+ patch_id INTEGER NOT NULL REFERENCES rule_patch(id) ON DELETE CASCADE,
229
+ decision TEXT NOT NULL
230
+ CHECK (decision IN ('approved','rejected','superseded','needs_reconciliation')),
231
+ approved_rule_hash TEXT,
232
+ approved_patch_hash TEXT,
233
+ actor TEXT NOT NULL,
234
+ reason TEXT NOT NULL DEFAULT '',
235
+ decided_at TEXT NOT NULL,
236
+ metadata_json TEXT NOT NULL DEFAULT '{}'
237
+ );
238
+
239
+ CREATE TABLE IF NOT EXISTS rule_promotion (
240
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
241
+ rule_id INTEGER NOT NULL REFERENCES rule_candidate(id) ON DELETE CASCADE,
242
+ patch_id INTEGER NOT NULL REFERENCES rule_patch(id) ON DELETE CASCADE,
243
+ decision_id INTEGER NOT NULL REFERENCES rule_decision(id) ON DELETE RESTRICT,
244
+ mode TEXT NOT NULL CHECK (mode IN ('apply','record_applied')),
245
+ target_path TEXT NOT NULL,
246
+ old_target_hash TEXT NOT NULL,
247
+ new_target_hash TEXT NOT NULL,
248
+ applied_by TEXT NOT NULL,
249
+ applied_at TEXT NOT NULL,
250
+ metadata_json TEXT NOT NULL DEFAULT '{}',
251
+ UNIQUE(patch_id)
252
+ );
253
+
254
+ CREATE TABLE IF NOT EXISTS audit_run (
255
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
256
+ audit_key TEXT NOT NULL UNIQUE,
257
+ operation TEXT NOT NULL,
258
+ status TEXT NOT NULL CHECK (status IN ('ok','error')),
259
+ checks_json TEXT NOT NULL DEFAULT '{}',
260
+ created_at TEXT NOT NULL
261
+ );
262
+
263
+ CREATE TABLE IF NOT EXISTS search_doc (
264
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
265
+ project TEXT NOT NULL,
266
+ agent TEXT NOT NULL,
267
+ doc_type TEXT NOT NULL,
268
+ source_table TEXT,
269
+ source_id INTEGER,
270
+ title TEXT NOT NULL DEFAULT '',
271
+ body TEXT NOT NULL,
272
+ summary TEXT NOT NULL DEFAULT '',
273
+ sensitive INTEGER NOT NULL DEFAULT 0 CHECK (sensitive IN (0,1)),
274
+ indexable INTEGER NOT NULL DEFAULT 1 CHECK (indexable IN (0,1)),
275
+ created_at TEXT NOT NULL,
276
+ updated_at TEXT NOT NULL,
277
+ metadata_json TEXT NOT NULL DEFAULT '{}'
278
+ );
279
+
280
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_search_doc_source
281
+ ON search_doc(project, agent, source_table, source_id)
282
+ WHERE source_table IS NOT NULL AND source_id IS NOT NULL;
283
+
284
+ CREATE VIRTUAL TABLE IF NOT EXISTS search_fts USING fts5(
285
+ title,
286
+ body,
287
+ summary,
288
+ content='search_doc',
289
+ content_rowid='id'
290
+ );
291
+
292
+ CREATE TRIGGER IF NOT EXISTS search_doc_ai AFTER INSERT ON search_doc
293
+ WHEN new.sensitive = 0 AND new.indexable = 1
294
+ BEGIN
295
+ INSERT INTO search_fts(rowid, title, body, summary)
296
+ VALUES (new.id, new.title, new.body, new.summary);
297
+ END;
298
+
299
+ CREATE TRIGGER IF NOT EXISTS search_doc_ad AFTER DELETE ON search_doc
300
+ WHEN old.sensitive = 0 AND old.indexable = 1
301
+ BEGIN
302
+ INSERT INTO search_fts(search_fts, rowid, title, body, summary)
303
+ VALUES ('delete', old.id, old.title, old.body, old.summary);
304
+ END;
305
+
306
+ CREATE TRIGGER IF NOT EXISTS search_doc_au AFTER UPDATE ON search_doc
307
+ BEGIN
308
+ INSERT INTO search_fts(search_fts, rowid, title, body, summary)
309
+ SELECT 'delete', old.id, old.title, old.body, old.summary
310
+ WHERE old.sensitive = 0 AND old.indexable = 1;
311
+
312
+ INSERT INTO search_fts(rowid, title, body, summary)
313
+ SELECT new.id, new.title, new.body, new.summary
314
+ WHERE new.sensitive = 0 AND new.indexable = 1;
315
+ END;
@@ -0,0 +1,369 @@
1
+ ---
2
+ name: security-and-hardening
3
+ description: Perform a bounded security design/hardening pass for explicit security or threat-model intent, or a concrete auth/authorization/secret/untrusted-input/file-upload/sensitive-data risk; do not trigger for every input, data store, third-party call, implementation, review, or release.
4
+ ---
5
+
6
+ # Security and Hardening
7
+
8
+ ## Overview
9
+
10
+ Security-first development practices for web applications. Treat every external input as hostile, every secret as sacred, and every authorization check as mandatory. Security isn't a phase — it's a constraint on every line of code that touches user data, authentication, or external systems.
11
+
12
+ ## When to Use
13
+
14
+ - The user explicitly asks for security review, hardening, or threat modeling.
15
+ - The accepted scope changes authentication, authorization, sessions, secrets, permissions, sensitive/PII/payment data, uploads, or another named trust boundary.
16
+ - A concrete untrusted-input or external-callback path has a material vulnerability question the primary owner cannot resolve inline.
17
+
18
+ Near misses: ordinary validated form work, a routine API call, generic data storage, release preparation, or code review without a named security gap does not select this skill automatically.
19
+
20
+ ROSE/`aili-delivery-flow` owns lifecycle state, material decisions, exact security-sensitive operation approvals, and verification. This skill performs one bounded security loop and returns `complete`, `need-user`, `need-evidence`, `material-delta`, `blocked`, or `Unverified`. It does not invoke review, audit, testing, source research, release, or another process skill. Exact auth/security/dependency/external/secret gates and canonical claim-matched verification override generic checklist breadth below.
21
+
22
+ ## The Three-Tier Boundary System
23
+
24
+ ### Always Do (No Exceptions)
25
+
26
+ - **Validate all external input** at the system boundary (API routes, form handlers)
27
+ - **Parameterize all database queries** — never concatenate user input into SQL
28
+ - **Encode output** to prevent XSS (use framework auto-escaping, don't bypass it)
29
+ - **Use HTTPS** for all external communication
30
+ - **Hash passwords** with bcrypt/scrypt/argon2 (never store plaintext)
31
+ - **Set security headers** (CSP, HSTS, X-Frame-Options, X-Content-Type-Options)
32
+ - **Use httpOnly, secure, sameSite cookies** for sessions
33
+ - **Use current dependency-advisory evidence** when the selected release/security claim needs it; never run a network-capable audit automatically
34
+
35
+ ### Ask First (Requires Human Approval)
36
+
37
+ - Adding new authentication flows or changing auth logic
38
+ - Storing new categories of sensitive data (PII, payment info)
39
+ - Adding new external service integrations
40
+ - Changing CORS configuration
41
+ - Adding file upload handlers
42
+ - Modifying rate limiting or throttling
43
+ - Granting elevated permissions or roles
44
+
45
+ 🔴 **CHECKPOINT — High-risk security decisions:** stop for explicit approval before changing authentication/session behavior, storing or exposing new PII, relaxing CORS, adding uploads, changing authorization roles, or weakening rate limits/security headers. State the threat, data affected, and rollback path before editing.
46
+
47
+ ### Never Do
48
+
49
+ - **Never commit secrets** to version control (API keys, passwords, tokens)
50
+ - **Never log sensitive data** (passwords, tokens, full credit card numbers)
51
+ - **Never trust client-side validation** as a security boundary
52
+ - **Never disable security headers** for convenience
53
+ - **Never use `eval()` or `innerHTML`** with user-provided data
54
+ - **Never store sessions in client-accessible storage** (localStorage for auth tokens)
55
+ - **Never expose stack traces** or internal error details to users
56
+
57
+ ## Security Decision Gates
58
+
59
+ | Area | Stop before | Required evidence before implementation |
60
+ |---|---|---|
61
+ | Auth/session | New login flow, token storage change, OAuth provider, password reset | Current auth model, token lifetime/storage, revocation/error path |
62
+ | PII/payment | New field, logging, analytics, export, third-party sharing | Data classification, minimization plan, encryption/redaction rule |
63
+ | CORS | Adding wildcard, credentials, new origins, proxy bypass | Exact allowed origins, credential need, environment-specific config |
64
+ | Uploads | New file type, larger size, public storage, direct-to-cloud flow | MIME + magic-byte check, max size, storage ACL, malware/quarantine plan |
65
+
66
+ If the evidence is missing, return a clarification request instead of implementing a permissive default.
67
+
68
+ ## OWASP Top 10 Prevention
69
+
70
+ ### 1. Injection (SQL, NoSQL, OS Command)
71
+
72
+ ```typescript
73
+ // BAD: SQL injection via string concatenation
74
+ const query = `SELECT * FROM users WHERE id = '${userId}'`;
75
+
76
+ // GOOD: Parameterized query
77
+ const user = await db.query('SELECT * FROM users WHERE id = $1', [userId]);
78
+
79
+ // GOOD: ORM with parameterized input
80
+ const user = await prisma.user.findUnique({ where: { id: userId } });
81
+ ```
82
+
83
+ ### 2. Broken Authentication
84
+
85
+ ```typescript
86
+ // Password hashing
87
+ import { hash, compare } from 'bcrypt';
88
+
89
+ const SALT_ROUNDS = 12;
90
+ const hashedPassword = await hash(plaintext, SALT_ROUNDS);
91
+ const isValid = await compare(plaintext, hashedPassword);
92
+
93
+ // Session management
94
+ app.use(session({
95
+ secret: process.env.SESSION_SECRET, // From environment, not code
96
+ resave: false,
97
+ saveUninitialized: false,
98
+ cookie: {
99
+ httpOnly: true, // Not accessible via JavaScript
100
+ secure: true, // HTTPS only
101
+ sameSite: 'lax', // CSRF protection
102
+ maxAge: 24 * 60 * 60 * 1000, // 24 hours
103
+ },
104
+ }));
105
+ ```
106
+
107
+ ### 3. Cross-Site Scripting (XSS)
108
+
109
+ ```typescript
110
+ // BAD: Rendering user input as HTML
111
+ element.innerHTML = userInput;
112
+
113
+ // GOOD: Use framework auto-escaping (React does this by default)
114
+ return <div>{userInput}</div>;
115
+
116
+ // If you MUST render HTML, sanitize first
117
+ import DOMPurify from 'dompurify';
118
+ const clean = DOMPurify.sanitize(userInput);
119
+ ```
120
+
121
+ ### 4. Broken Access Control
122
+
123
+ ```typescript
124
+ // Always check authorization, not just authentication
125
+ app.patch('/api/tasks/:id', authenticate, async (req, res) => {
126
+ const task = await taskService.findById(req.params.id);
127
+
128
+ // Check that the authenticated user owns this resource
129
+ if (task.ownerId !== req.user.id) {
130
+ return res.status(403).json({
131
+ error: { code: 'FORBIDDEN', message: 'Not authorized to modify this task' }
132
+ });
133
+ }
134
+
135
+ // Proceed with update
136
+ const updated = await taskService.update(req.params.id, req.body);
137
+ return res.json(updated);
138
+ });
139
+ ```
140
+
141
+ ### 5. Security Misconfiguration
142
+
143
+ ```typescript
144
+ // Security headers (use helmet for Express)
145
+ import helmet from 'helmet';
146
+ app.use(helmet());
147
+
148
+ // Content Security Policy
149
+ app.use(helmet.contentSecurityPolicy({
150
+ directives: {
151
+ defaultSrc: ["'self'"],
152
+ scriptSrc: ["'self'"],
153
+ styleSrc: ["'self'", "'unsafe-inline'"], // Tighten if possible
154
+ imgSrc: ["'self'", 'data:', 'https:'],
155
+ connectSrc: ["'self'"],
156
+ },
157
+ }));
158
+
159
+ // CORS — restrict to known origins
160
+ app.use(cors({
161
+ origin: process.env.ALLOWED_ORIGINS?.split(',') || 'http://localhost:3000',
162
+ credentials: true,
163
+ }));
164
+ ```
165
+
166
+ ### 6. Sensitive Data Exposure
167
+
168
+ ```typescript
169
+ // Never return sensitive fields in API responses
170
+ function sanitizeUser(user: UserRecord): PublicUser {
171
+ const { passwordHash, resetToken, ...publicFields } = user;
172
+ return publicFields;
173
+ }
174
+
175
+ // Use environment variables for secrets
176
+ const API_KEY = process.env.STRIPE_API_KEY;
177
+ if (!API_KEY) throw new Error('STRIPE_API_KEY not configured');
178
+ ```
179
+
180
+ ## Input Validation Patterns
181
+
182
+ ### Schema Validation at Boundaries
183
+
184
+ ```typescript
185
+ import { z } from 'zod';
186
+
187
+ const CreateTaskSchema = z.object({
188
+ title: z.string().min(1).max(200).trim(),
189
+ description: z.string().max(2000).optional(),
190
+ priority: z.enum(['low', 'medium', 'high']).default('medium'),
191
+ dueDate: z.string().datetime().optional(),
192
+ });
193
+
194
+ // Validate at the route handler
195
+ app.post('/api/tasks', async (req, res) => {
196
+ const result = CreateTaskSchema.safeParse(req.body);
197
+ if (!result.success) {
198
+ return res.status(422).json({
199
+ error: {
200
+ code: 'VALIDATION_ERROR',
201
+ message: 'Invalid input',
202
+ details: result.error.flatten(),
203
+ },
204
+ });
205
+ }
206
+ // result.data is now typed and validated
207
+ const task = await taskService.create(result.data);
208
+ return res.status(201).json(task);
209
+ });
210
+ ```
211
+
212
+ ### File Upload Safety
213
+
214
+ ```typescript
215
+ // Restrict file types and sizes
216
+ const ALLOWED_TYPES = ['image/jpeg', 'image/png', 'image/webp'];
217
+ const MAX_SIZE = 5 * 1024 * 1024; // 5MB
218
+
219
+ function validateUpload(file: UploadedFile) {
220
+ if (!ALLOWED_TYPES.includes(file.mimetype)) {
221
+ throw new ValidationError('File type not allowed');
222
+ }
223
+ if (file.size > MAX_SIZE) {
224
+ throw new ValidationError('File too large (max 5MB)');
225
+ }
226
+ // Don't trust the file extension — check magic bytes if critical
227
+ }
228
+ ```
229
+
230
+ ## Triaging npm audit Results
231
+
232
+ Not all audit findings require immediate action. Use this decision tree:
233
+
234
+ ```
235
+ npm audit reports a vulnerability
236
+ ├── Severity: critical or high
237
+ │ ├── Is the vulnerable code reachable in your app?
238
+ │ │ ├── YES --> Fix immediately (update, patch, or replace the dependency)
239
+ │ │ └── NO (dev-only dep, unused code path) --> Fix soon, but not a blocker
240
+ │ └── Is a fix available?
241
+ │ ├── YES --> Update to the patched version
242
+ │ └── NO --> Check for workarounds, consider replacing the dependency, or add to allowlist with a review date
243
+ ├── Severity: moderate
244
+ │ ├── Reachable in production? --> Fix in the next release cycle
245
+ │ └── Dev-only? --> Fix when convenient, track in backlog
246
+ └── Severity: low
247
+ └── Track and fix during regular dependency updates
248
+ ```
249
+
250
+ **Key questions:**
251
+ - Is the vulnerable function actually called in your code path?
252
+ - Is the dependency a runtime dependency or dev-only?
253
+ - Is the vulnerability exploitable given your deployment context (e.g., a server-side vulnerability in a client-only app)?
254
+
255
+ When you defer a fix, document the reason and set a review date.
256
+
257
+ ## Rate Limiting
258
+
259
+ ```typescript
260
+ import rateLimit from 'express-rate-limit';
261
+
262
+ // General API rate limit
263
+ app.use('/api/', rateLimit({
264
+ windowMs: 15 * 60 * 1000, // 15 minutes
265
+ max: 100, // 100 requests per window
266
+ standardHeaders: true,
267
+ legacyHeaders: false,
268
+ }));
269
+
270
+ // Stricter limit for auth endpoints
271
+ app.use('/api/auth/', rateLimit({
272
+ windowMs: 15 * 60 * 1000,
273
+ max: 10, // 10 attempts per 15 minutes
274
+ }));
275
+ ```
276
+
277
+ ## Secrets Management
278
+
279
+ ```
280
+ .env files:
281
+ ├── .env.example → Committed (template with placeholder values)
282
+ ├── .env → NOT committed (contains real secrets)
283
+ └── .env.local → NOT committed (local overrides)
284
+
285
+ .gitignore must include:
286
+ .env
287
+ .env.local
288
+ .env.*.local
289
+ *.pem
290
+ *.key
291
+ ```
292
+
293
+ **Always check before committing:**
294
+ ```bash
295
+ # Check for accidentally staged secrets
296
+ git diff --cached | grep -i "password\|secret\|api_key\|token"
297
+ ```
298
+
299
+ ## Security Review Checklist
300
+
301
+ ```markdown
302
+ ### Authentication
303
+ - [ ] Passwords hashed with bcrypt/scrypt/argon2 (salt rounds ≥ 12)
304
+ - [ ] Session tokens are httpOnly, secure, sameSite
305
+ - [ ] Login has rate limiting
306
+ - [ ] Password reset tokens expire
307
+
308
+ ### Authorization
309
+ - [ ] Every endpoint checks user permissions
310
+ - [ ] Users can only access their own resources
311
+ - [ ] Admin actions require admin role verification
312
+
313
+ ### Input
314
+ - [ ] All user input validated at the boundary
315
+ - [ ] SQL queries are parameterized
316
+ - [ ] HTML output is encoded/escaped
317
+
318
+ ### Data
319
+ - [ ] No secrets in code or version control
320
+ - [ ] Sensitive fields excluded from API responses
321
+ - [ ] PII encrypted at rest (if applicable)
322
+
323
+ ### Infrastructure
324
+ - [ ] Security headers configured (CSP, HSTS, etc.)
325
+ - [ ] CORS restricted to known origins
326
+ - [ ] Dependencies audited for vulnerabilities
327
+ - [ ] Error messages don't expose internals
328
+ ```
329
+
330
+ ## Failure Handling
331
+
332
+ | Trigger | First response | If unresolved |
333
+ |---|---|---|
334
+ | Security requirement conflicts with product request | Name the conflict and preserve the safer default | Return the exact product/security decision to ROSE; do not silently weaken controls |
335
+ | Audit finding has no patch | Check reachability and documented workaround | Return allowlist-versus-dependency-change disposition to ROSE; do not mutate dependencies here |
336
+ | Secret appears in diff/log | Stop, remove it from output, and tell the user rotation may be required | Do not commit or print more context; request incident handling guidance |
337
+ | Upload/CORS/auth behavior cannot be verified | Report the unverified gate and keep restrictive behavior | Do not claim hardened/secure until evidence exists |
338
+
339
+ ## Common Rationalizations
340
+
341
+ | Rationalization | Reality |
342
+ |---|---|
343
+ | "This is an internal tool, security doesn't matter" | Internal tools get compromised. Attackers target the weakest link. |
344
+ | "We'll add security later" | Security retrofitting is 10x harder than building it in. Add it now. |
345
+ | "No one would try to exploit this" | Automated scanners will find it. Security by obscurity is not security. |
346
+ | "The framework handles security" | Frameworks provide tools, not guarantees. You still need to use them correctly. |
347
+ | "It's just a prototype" | Prototypes become production. Security habits from day one. |
348
+
349
+ ## Red Flags
350
+
351
+ - User input passed directly to database queries, shell commands, or HTML rendering
352
+ - Secrets in source code or commit history
353
+ - API endpoints without authentication or authorization checks
354
+ - Missing CORS configuration or wildcard (`*`) origins
355
+ - No rate limiting on authentication endpoints
356
+ - Stack traces or internal errors exposed to users
357
+ - Dependencies with known critical vulnerabilities
358
+
359
+ ## Verification
360
+
361
+ For the selected affected security claim, use only applicable checks chosen by the canonical verification owner:
362
+
363
+ - [ ] Dependency audit evidence is present only when dependency/release risk makes it relevant
364
+ - [ ] No secrets in source code or git history
365
+ - [ ] All user input validated at system boundaries
366
+ - [ ] Authentication and authorization checked on every protected endpoint
367
+ - [ ] Security headers present in response (check with browser DevTools)
368
+ - [ ] Error responses don't expose internal details
369
+ - [ ] Rate limiting active on auth endpoints