opencode-skills-collection 3.0.51 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/README.md +44 -12
  2. package/bundled-skills/.antigravity-install-manifest.json +84 -1
  3. package/bundled-skills/android-ui-journey-testing/SKILL.md +191 -0
  4. package/bundled-skills/ask-matt/SKILL.md +92 -0
  5. package/bundled-skills/bugs-are-annoying/SKILL.md +137 -0
  6. package/bundled-skills/codebase-design/DEEPENING.md +37 -0
  7. package/bundled-skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  8. package/bundled-skills/codebase-design/SKILL.md +145 -0
  9. package/bundled-skills/competitor-analysis/LICENSE.txt +21 -0
  10. package/bundled-skills/competitor-analysis/SKILL.md +434 -0
  11. package/bundled-skills/competitor-analysis/references/battle-card-subagent.md +127 -0
  12. package/bundled-skills/competitor-analysis/references/battle-card.md +91 -0
  13. package/bundled-skills/competitor-analysis/references/example-research.md +130 -0
  14. package/bundled-skills/competitor-analysis/references/report-template.html +127 -0
  15. package/bundled-skills/competitor-analysis/references/research-patterns.md +217 -0
  16. package/bundled-skills/competitor-analysis/references/workflow.md +434 -0
  17. package/bundled-skills/competitor-analysis/scripts/capture_screenshots.mjs +142 -0
  18. package/bundled-skills/competitor-analysis/scripts/compile_report.mjs +929 -0
  19. package/bundled-skills/competitor-analysis/scripts/extract_vs_names.mjs +140 -0
  20. package/bundled-skills/competitor-analysis/scripts/gate_candidates.mjs +194 -0
  21. package/bundled-skills/competitor-analysis/scripts/list_urls.mjs +90 -0
  22. package/bundled-skills/competitor-analysis/scripts/md_utils.mjs +50 -0
  23. package/bundled-skills/competitor-analysis/scripts/merge_partials.mjs +291 -0
  24. package/bundled-skills/competitor-analysis/scripts/package.json +6 -0
  25. package/bundled-skills/design-it/3d-ui/SKILL.md +259 -0
  26. package/bundled-skills/design-it/SKILL.md +170 -0
  27. package/bundled-skills/design-it/ai-native-ui/SKILL.md +295 -0
  28. package/bundled-skills/design-it/aurora-ui/SKILL.md +307 -0
  29. package/bundled-skills/design-it/bento-ui/SKILL.md +314 -0
  30. package/bundled-skills/design-it/brutalism/SKILL.md +270 -0
  31. package/bundled-skills/design-it/brutalist-typography/SKILL.md +287 -0
  32. package/bundled-skills/design-it/card-based-design/SKILL.md +262 -0
  33. package/bundled-skills/design-it/claymorphism/SKILL.md +287 -0
  34. package/bundled-skills/design-it/color-blocking/SKILL.md +278 -0
  35. package/bundled-skills/design-it/command-center-ui/SKILL.md +345 -0
  36. package/bundled-skills/design-it/cyber-y2k/SKILL.md +312 -0
  37. package/bundled-skills/design-it/cyberpunk-ui/SKILL.md +262 -0
  38. package/bundled-skills/design-it/dark-mode/SKILL.md +289 -0
  39. package/bundled-skills/design-it/dashboard-design/SKILL.md +331 -0
  40. package/bundled-skills/design-it/data-dense-design/SKILL.md +322 -0
  41. package/bundled-skills/design-it/duotone-design/SKILL.md +248 -0
  42. package/bundled-skills/design-it/editorial-design/SKILL.md +328 -0
  43. package/bundled-skills/design-it/flat-design/SKILL.md +221 -0
  44. package/bundled-skills/design-it/flat-design-2/SKILL.md +240 -0
  45. package/bundled-skills/design-it/floating-ui/SKILL.md +299 -0
  46. package/bundled-skills/design-it/frutiger-aero/SKILL.md +274 -0
  47. package/bundled-skills/design-it/glassmorphism/SKILL.md +272 -0
  48. package/bundled-skills/design-it/gradient-design/SKILL.md +309 -0
  49. package/bundled-skills/design-it/high-contrast/SKILL.md +288 -0
  50. package/bundled-skills/design-it/holographic-ui/SKILL.md +310 -0
  51. package/bundled-skills/design-it/isometric-design/SKILL.md +228 -0
  52. package/bundled-skills/design-it/layered-design/SKILL.md +247 -0
  53. package/bundled-skills/design-it/material-design/SKILL.md +275 -0
  54. package/bundled-skills/design-it/maximalism/SKILL.md +297 -0
  55. package/bundled-skills/design-it/minimalism/SKILL.md +267 -0
  56. package/bundled-skills/design-it/monochromatic-ui/SKILL.md +296 -0
  57. package/bundled-skills/design-it/neo-brutalism/SKILL.md +270 -0
  58. package/bundled-skills/design-it/neumorphism/SKILL.md +248 -0
  59. package/bundled-skills/design-it/retro-design/SKILL.md +283 -0
  60. package/bundled-skills/design-it/retro-futurism/SKILL.md +259 -0
  61. package/bundled-skills/design-it/sci-fi-interface/SKILL.md +309 -0
  62. package/bundled-skills/design-it/skeuomorphism/SKILL.md +280 -0
  63. package/bundled-skills/design-it/soft-pastel/SKILL.md +307 -0
  64. package/bundled-skills/design-it/spatial-computing-ui/SKILL.md +300 -0
  65. package/bundled-skills/design-it/spatial-design/SKILL.md +268 -0
  66. package/bundled-skills/design-it/swiss-design/SKILL.md +293 -0
  67. package/bundled-skills/design-it/synthwave/SKILL.md +257 -0
  68. package/bundled-skills/design-it/tile-design/SKILL.md +297 -0
  69. package/bundled-skills/design-it/typography-first/SKILL.md +247 -0
  70. package/bundled-skills/design-it/vaporwave/SKILL.md +331 -0
  71. package/bundled-skills/design-it/vibrant-maximalism/SKILL.md +291 -0
  72. package/bundled-skills/design-it/widget-based-design/SKILL.md +274 -0
  73. package/bundled-skills/design-it/y2k-design/SKILL.md +268 -0
  74. package/bundled-skills/diagnosing-bugs/SKILL.md +165 -0
  75. package/bundled-skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  76. package/bundled-skills/docs/contributors/skill-scoring.md +235 -0
  77. package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
  78. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
  79. package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
  80. package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
  81. package/bundled-skills/docs/users/bundles.md +1 -1
  82. package/bundled-skills/docs/users/claude-code-skills.md +1 -1
  83. package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
  84. package/bundled-skills/docs/users/getting-started.md +1 -1
  85. package/bundled-skills/docs/users/kiro-integration.md +1 -1
  86. package/bundled-skills/docs/users/usage.md +4 -4
  87. package/bundled-skills/docs/users/visual-guide.md +4 -4
  88. package/bundled-skills/domain-modeling/ADR-FORMAT.md +47 -0
  89. package/bundled-skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  90. package/bundled-skills/domain-modeling/SKILL.md +105 -0
  91. package/bundled-skills/grill-me/SKILL.md +36 -0
  92. package/bundled-skills/grill-with-docs/SKILL.md +36 -0
  93. package/bundled-skills/grilling/SKILL.md +39 -0
  94. package/bundled-skills/handoff/SKILL.md +45 -0
  95. package/bundled-skills/image-generator/.env.example +7 -0
  96. package/bundled-skills/image-generator/SKILL.md +509 -0
  97. package/bundled-skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
  98. package/bundled-skills/improve-codebase-architecture/SKILL.md +97 -0
  99. package/bundled-skills/learn/SKILL.md +156 -0
  100. package/bundled-skills/lesson-generator/SKILL.md +90 -0
  101. package/bundled-skills/llm-council/.env.example +7 -0
  102. package/bundled-skills/llm-council/SKILL.md +602 -0
  103. package/bundled-skills/loop-library/SKILL.md +205 -0
  104. package/bundled-skills/loop-library/agents/openai.yaml +4 -0
  105. package/bundled-skills/loop-library/references/catalog.md +270 -0
  106. package/bundled-skills/mailtrap-managing-contacts/SKILL.md +112 -0
  107. package/bundled-skills/mailtrap-sending-emails/SKILL.md +167 -0
  108. package/bundled-skills/mailtrap-setting-up-sending-domain/SKILL.md +77 -0
  109. package/bundled-skills/mailtrap-testing-with-sandbox/SKILL.md +110 -0
  110. package/bundled-skills/prototype/LOGIC.md +79 -0
  111. package/bundled-skills/prototype/SKILL.md +62 -0
  112. package/bundled-skills/prototype/UI.md +112 -0
  113. package/bundled-skills/setup-matt-pocock-skills/SKILL.md +158 -0
  114. package/bundled-skills/setup-matt-pocock-skills/domain.md +51 -0
  115. package/bundled-skills/setup-matt-pocock-skills/issue-tracker-github.md +34 -0
  116. package/bundled-skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +35 -0
  117. package/bundled-skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
  118. package/bundled-skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  119. package/bundled-skills/survey-generator/LICENSE +21 -0
  120. package/bundled-skills/survey-generator/SKILL.md +143 -0
  121. package/bundled-skills/survey-generator/build_artifact.py +208 -0
  122. package/bundled-skills/survey-generator/examples/agentic-engineering/research_bundle.json +1196 -0
  123. package/bundled-skills/survey-generator/examples/agentic-engineering/survey.html +706 -0
  124. package/bundled-skills/survey-generator/style_spec.json +85 -0
  125. package/bundled-skills/survey-generator/templates/research_bundle_template.json +69 -0
  126. package/bundled-skills/tdd/SKILL.md +139 -0
  127. package/bundled-skills/tdd/mocking.md +59 -0
  128. package/bundled-skills/tdd/refactoring.md +10 -0
  129. package/bundled-skills/tdd/tests.md +61 -0
  130. package/bundled-skills/teach/GLOSSARY-FORMAT.md +35 -0
  131. package/bundled-skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  132. package/bundled-skills/teach/MISSION-FORMAT.md +31 -0
  133. package/bundled-skills/teach/RESOURCES-FORMAT.md +32 -0
  134. package/bundled-skills/teach/SKILL.md +169 -0
  135. package/bundled-skills/to-issues/SKILL.md +115 -0
  136. package/bundled-skills/to-prd/SKILL.md +104 -0
  137. package/bundled-skills/tools-page-seo-optimizer/SKILL.md +616 -0
  138. package/bundled-skills/triage/AGENT-BRIEF.md +207 -0
  139. package/bundled-skills/triage/OUT-OF-SCOPE.md +105 -0
  140. package/bundled-skills/triage/SKILL.md +143 -0
  141. package/bundled-skills/vibecode-production-qa-validator/SKILL.md +371 -141
  142. package/bundled-skills/wiki-builder/SKILL.md +157 -0
  143. package/bundled-skills/wiki-builder/agents/openai.yaml +5 -0
  144. package/bundled-skills/wiki-builder/references/wiki-flavors.md +98 -0
  145. package/bundled-skills/wiki-builder/scripts/init_wiki.sh +105 -0
  146. package/bundled-skills/wiki-builder/templates/index.md +20 -0
  147. package/bundled-skills/wiki-builder/templates/maintenance-log.md +7 -0
  148. package/bundled-skills/wiki-builder/templates/prompts/compile-concept-page.md +12 -0
  149. package/bundled-skills/wiki-builder/templates/prompts/compile-index.md +11 -0
  150. package/bundled-skills/wiki-builder/templates/prompts/compile-source-page.md +12 -0
  151. package/bundled-skills/wiki-builder/templates/prompts/lint-wiki.md +10 -0
  152. package/bundled-skills/wiki-builder/templates/prompts/query-and-file.md +11 -0
  153. package/bundled-skills/wiki-builder/templates/sources.md +9 -0
  154. package/bundled-skills/wiki-builder/templates/wiki.config.md +53 -0
  155. package/bundled-skills/writing-great-skills/GLOSSARY.md +181 -0
  156. package/bundled-skills/writing-great-skills/SKILL.md +111 -0
  157. package/bundled-skills/yao-meta-skill/SKILL.md +86 -0
  158. package/bundled-skills/yao-meta-skill/agents/interface.yaml +26 -0
  159. package/bundled-skills/yao-meta-skill/manifest.json +24 -0
  160. package/bundled-skills/yao-meta-skill/references/artifact-design-doctrine.md +49 -0
  161. package/bundled-skills/yao-meta-skill/references/authoring-discipline.md +78 -0
  162. package/bundled-skills/yao-meta-skill/references/autonomous-adaptation.md +65 -0
  163. package/bundled-skills/yao-meta-skill/references/distribution-registry-method.md +60 -0
  164. package/bundled-skills/yao-meta-skill/references/eval-playbook.md +69 -0
  165. package/bundled-skills/yao-meta-skill/references/gate-selection.md +68 -0
  166. package/bundled-skills/yao-meta-skill/references/governance.md +134 -0
  167. package/bundled-skills/yao-meta-skill/references/human-review-template.md +54 -0
  168. package/bundled-skills/yao-meta-skill/references/intent-dialogue.md +138 -0
  169. package/bundled-skills/yao-meta-skill/references/iteration-philosophy.md +30 -0
  170. package/bundled-skills/yao-meta-skill/references/non-skill-decision-tree.md +39 -0
  171. package/bundled-skills/yao-meta-skill/references/operating-modes.md +107 -0
  172. package/bundled-skills/yao-meta-skill/references/output-eval-method.md +113 -0
  173. package/bundled-skills/yao-meta-skill/references/output-quality-risk.md +41 -0
  174. package/bundled-skills/yao-meta-skill/references/output-visual-quality.md +53 -0
  175. package/bundled-skills/yao-meta-skill/references/packaging-contracts.md +70 -0
  176. package/bundled-skills/yao-meta-skill/references/pattern-extraction-doctrine.md +76 -0
  177. package/bundled-skills/yao-meta-skill/references/platform-capability-matrix.md +49 -0
  178. package/bundled-skills/yao-meta-skill/references/prompt-engineering-doctrine.md +76 -0
  179. package/bundled-skills/yao-meta-skill/references/qa-ladder.md +57 -0
  180. package/bundled-skills/yao-meta-skill/references/reference-scan.md +126 -0
  181. package/bundled-skills/yao-meta-skill/references/regression-cause-taxonomy.md +80 -0
  182. package/bundled-skills/yao-meta-skill/references/resource-boundaries.md +120 -0
  183. package/bundled-skills/yao-meta-skill/references/review-studio-method.md +87 -0
  184. package/bundled-skills/yao-meta-skill/references/review-waiver-method.md +76 -0
  185. package/bundled-skills/yao-meta-skill/references/runtime-conformance-method.md +21 -0
  186. package/bundled-skills/yao-meta-skill/references/skill-archetypes.md +86 -0
  187. package/bundled-skills/yao-meta-skill/references/skill-atlas-method.md +35 -0
  188. package/bundled-skills/yao-meta-skill/references/skill-engineering-method.md +210 -0
  189. package/bundled-skills/yao-meta-skill/references/skill-ir-method.md +41 -0
  190. package/bundled-skills/yao-meta-skill/references/skillops-decision-policy.md +53 -0
  191. package/bundled-skills/yao-meta-skill/references/systems-thinking-doctrine.md +75 -0
  192. package/bundled-skills/yao-meta-skill/references/telemetry-drift-method.md +182 -0
  193. package/bundled-skills/yao-meta-skill/references/trust-security-method.md +79 -0
  194. package/bundled-skills/yao-meta-skill/references/user-memory-policy.md +35 -0
  195. package/bundled-skills/youtube-notetaker/SKILL.md +209 -0
  196. package/bundled-skills/youtube-notetaker/reference/artifact.html +269 -0
  197. package/bundled-skills/youtube-notetaker/scripts/contact_sheet.py +53 -0
  198. package/bundled-skills/youtube-notetaker/scripts/detect_slides.sh +19 -0
  199. package/bundled-skills/youtube-notetaker/scripts/download.sh +24 -0
  200. package/bundled-skills/youtube-notetaker/scripts/extract_slides.py +43 -0
  201. package/bundled-skills/youtube-notetaker/scripts/serve.py +173 -0
  202. package/bundled-skills/youtube-notetaker/scripts/setup.sh +27 -0
  203. package/bundled-skills/youtube-notetaker/scripts/verify.sh +31 -0
  204. package/bundled-skills/youtube-notetaker/scripts/vtt_to_transcript.py +59 -0
  205. package/bundled-skills/youtube-notetaker/scripts/write_library_item.py +69 -0
  206. package/dist/skill-pointer/config-loader.d.ts +14 -0
  207. package/dist/skill-pointer/config-loader.js +30 -3
  208. package/dist/skill-pointer/content-scanner.d.ts +38 -0
  209. package/dist/skill-pointer/content-scanner.js +118 -0
  210. package/dist/skill-pointer/index.d.ts +7 -2
  211. package/dist/skill-pointer/index.js +14 -4
  212. package/dist/skill-pointer/pointer-generator.js +2 -0
  213. package/dist/skill-pointer/skill-patcher.d.ts +13 -0
  214. package/dist/skill-pointer/skill-patcher.js +99 -0
  215. package/package.json +1 -1
  216. package/skills_index.json +1956 -286
  217. package/bundled-skills/ai-md/SKILL.md +0 -523
  218. package/bundled-skills/atlas-contract/SKILL.md +0 -650
  219. package/bundled-skills/busybox-on-windows/SKILL.md +0 -40
  220. package/bundled-skills/monte-carlo-prevent/SKILL.md +0 -257
  221. package/bundled-skills/monte-carlo-prevent/references/TROUBLESHOOTING.md +0 -23
  222. package/bundled-skills/monte-carlo-prevent/references/parameters.md +0 -32
  223. package/bundled-skills/monte-carlo-prevent/references/workflows.md +0 -478
  224. package/bundled-skills/monte-carlo-push-ingestion/SKILL.md +0 -372
  225. package/bundled-skills/monte-carlo-push-ingestion/references/anomaly-detection.md +0 -87
  226. package/bundled-skills/monte-carlo-push-ingestion/references/custom-lineage.md +0 -203
  227. package/bundled-skills/monte-carlo-push-ingestion/references/direct-http-api.md +0 -207
  228. package/bundled-skills/monte-carlo-push-ingestion/references/prerequisites.md +0 -150
  229. package/bundled-skills/monte-carlo-push-ingestion/references/push-lineage.md +0 -160
  230. package/bundled-skills/monte-carlo-push-ingestion/references/push-metadata.md +0 -158
  231. package/bundled-skills/monte-carlo-push-ingestion/references/push-query-logs.md +0 -219
  232. package/bundled-skills/monte-carlo-push-ingestion/references/validation.md +0 -257
  233. package/bundled-skills/monte-carlo-push-ingestion/scripts/sample_verify.py +0 -357
  234. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_and_push_lineage.py +0 -70
  235. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_and_push_metadata.py +0 -65
  236. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_and_push_query_logs.py +0 -70
  237. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_lineage.py +0 -214
  238. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_metadata.py +0 -160
  239. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_query_logs.py +0 -164
  240. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/push_lineage.py +0 -198
  241. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/push_metadata.py +0 -193
  242. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/push_query_logs.py +0 -207
  243. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_and_push_metadata.py +0 -71
  244. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_and_push_query_logs.py +0 -64
  245. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_metadata.py +0 -253
  246. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_query_logs.py +0 -149
  247. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/push_metadata.py +0 -190
  248. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/push_query_logs.py +0 -208
  249. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_and_push_lineage.py +0 -83
  250. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_and_push_metadata.py +0 -77
  251. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_and_push_query_logs.py +0 -83
  252. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_lineage.py +0 -240
  253. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_metadata.py +0 -212
  254. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_query_logs.py +0 -204
  255. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/push_lineage.py +0 -192
  256. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/push_metadata.py +0 -178
  257. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/push_query_logs.py +0 -200
  258. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_and_push_lineage.py +0 -119
  259. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_and_push_metadata.py +0 -119
  260. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_and_push_query_logs.py +0 -117
  261. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_lineage.py +0 -265
  262. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_metadata.py +0 -313
  263. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_query_logs.py +0 -284
  264. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/push_lineage.py +0 -309
  265. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/push_metadata.py +0 -245
  266. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/push_query_logs.py +0 -255
  267. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_and_push_lineage.py +0 -78
  268. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_and_push_metadata.py +0 -80
  269. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_and_push_query_logs.py +0 -88
  270. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_lineage.py +0 -235
  271. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_metadata.py +0 -219
  272. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_query_logs.py +0 -239
  273. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/push_lineage.py +0 -178
  274. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/push_metadata.py +0 -178
  275. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/push_query_logs.py +0 -196
  276. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_and_push_lineage.py +0 -154
  277. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_and_push_metadata.py +0 -137
  278. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_and_push_query_logs.py +0 -137
  279. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_lineage.py +0 -349
  280. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_metadata.py +0 -329
  281. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_query_logs.py +0 -254
  282. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/push_lineage.py +0 -307
  283. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/push_metadata.py +0 -228
  284. package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/push_query_logs.py +0 -248
  285. package/bundled-skills/monte-carlo-push-ingestion/scripts/test_template_sdk_usage.py +0 -340
  286. package/bundled-skills/skill-optimizer/SKILL.md +0 -271
  287. package/bundled-skills/using-superpowers/SKILL.md +0 -98
@@ -0,0 +1,509 @@
1
+ ---
2
+ name: image-generator
3
+ description: Generate and edit images using Gemini's Nano Banana Pro model (gemini-3-pro-image-preview). Use this skill when the user asks you to generate images, create visuals, edit photos, create logos, generate product mockups, or perform any image generation/editing task.
4
+ allowed-tools: Read, Write, Bash, WebFetch
5
+ category: "media"
6
+ risk: "safe"
7
+ source: "official"
8
+ source_repo: "dair-ai/dair-academy-plugins"
9
+ source_type: "official"
10
+ date_added: "2026-06-19"
11
+ author: "DAIR.AI"
12
+ license: "MIT"
13
+ license_source: "https://github.com/dair-ai/dair-academy-plugins/blob/main/README.md#license"
14
+ tags:
15
+ - dair-academy
16
+ - ai
17
+ - workflow
18
+ tools:
19
+ - claude-code
20
+ - codex-cli
21
+ - cursor
22
+ ---
23
+
24
+ # Image Generator
25
+
26
+ ## When to Use
27
+
28
+ Use when this workflow matches the user request: Generate and edit images using Gemini's Nano Banana Pro model (gemini-3-pro-image-preview). Use this skill when the user asks you to generate images, create visuals, edit photos, create logos, generate product mockups, or perform any image generation/editing task.
29
+
30
+
31
+ _Source: [dair-ai/dair-academy-plugins](https://github.com/dair-ai/dair-academy-plugins) (MIT)._
32
+
33
+ This skill generates and edits images using Google's Gemini Nano Banana Pro model (`gemini-3-pro-image-preview`).
34
+
35
+ ## IMPORTANT: Setup Required
36
+
37
+ Before using this skill, the user must set the `GEMINI_API_KEY` environment variable:
38
+
39
+ 1. Get a free API key from [Google AI Studio](https://aistudio.google.com/)
40
+ 2. Export the key in your shell profile (`~/.zshrc`, `~/.bashrc`, etc.):
41
+ ```bash
42
+ export GEMINI_API_KEY="your_api_key_here"
43
+ ```
44
+ 3. Restart your terminal or run `source ~/.zshrc` (or `~/.bashrc`)
45
+
46
+ **The skill will not work without this configuration.**
47
+
48
+ ## Pre-flight Check
49
+
50
+ Before making any API call, verify the key is set:
51
+
52
+ ```bash
53
+ if [ -z "$GEMINI_API_KEY" ]; then
54
+ echo "ERROR: GEMINI_API_KEY is not set. Please export it in your shell profile."
55
+ exit 1
56
+ fi
57
+ ```
58
+
59
+ If the key is missing, stop and tell the user to set it using the instructions above.
60
+
61
+ ## Configuration
62
+
63
+ **Model**: `gemini-3-pro-image-preview`
64
+
65
+ **API Key**: Read from the `GEMINI_API_KEY` environment variable
66
+
67
+ ## Iterating on User-Provided Images
68
+
69
+ When the user provides a path to an image they want to edit or iterate on, use this workflow:
70
+
71
+ ### Step 1: Read and encode the image to base64
72
+
73
+ ```bash
74
+ # Get the image path from user
75
+ IMG_PATH="/path/to/user/image.png"
76
+
77
+ # Detect mime type
78
+ if [[ "$IMG_PATH" == *.png ]]; then
79
+ MIME_TYPE="image/png"
80
+ elif [[ "$IMG_PATH" == *.jpg ]] || [[ "$IMG_PATH" == *.jpeg ]]; then
81
+ MIME_TYPE="image/jpeg"
82
+ elif [[ "$IMG_PATH" == *.webp ]]; then
83
+ MIME_TYPE="image/webp"
84
+ else
85
+ MIME_TYPE="image/png"
86
+ fi
87
+
88
+ # Encode to base64 (works on both macOS and Linux)
89
+ if [[ "$(uname)" == "Darwin" ]]; then
90
+ IMG_BASE64=$(base64 -i "$IMG_PATH")
91
+ else
92
+ IMG_BASE64=$(base64 -w0 "$IMG_PATH")
93
+ fi
94
+ ```
95
+
96
+ ### Step 2: Send image with edit prompt (File-Based Approach)
97
+
98
+ **IMPORTANT:** Always use a file-based approach for the request body. Base64-encoded images are too large for command-line arguments and will cause "argument list too long" errors.
99
+
100
+ ```bash
101
+ # User's edit request
102
+ EDIT_PROMPT="Add a santa hat to the person in this image"
103
+
104
+ # Write request to a JSON file (avoids command line length limits)
105
+ cat > /tmp/gemini_request.json << JSONEOF
106
+ {
107
+ "contents": [{
108
+ "parts": [
109
+ {"text": "$EDIT_PROMPT"},
110
+ {
111
+ "inline_data": {
112
+ "mime_type": "$MIME_TYPE",
113
+ "data": "$IMG_BASE64"
114
+ }
115
+ }
116
+ ]
117
+ }],
118
+ "generationConfig": {
119
+ "responseModalities": ["TEXT", "IMAGE"]
120
+ }
121
+ }
122
+ JSONEOF
123
+
124
+ # Call the API using the file
125
+ curl -s -X POST \
126
+ "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
127
+ -H "x-goog-api-key: $GEMINI_API_KEY" \
128
+ -H "Content-Type: application/json" \
129
+ -d @/tmp/gemini_request.json > /tmp/gemini_response.json
130
+ ```
131
+
132
+ ### Step 3: Extract and save the edited image
133
+
134
+ ```bash
135
+ # Extract image from response and save
136
+ python3 -c "
137
+ import json
138
+ import base64
139
+
140
+ with open('/tmp/gemini_response.json') as f:
141
+ data = json.load(f)
142
+
143
+ for part in data['candidates'][0]['content']['parts']:
144
+ if 'inlineData' in part:
145
+ img_data = part['inlineData']['data']
146
+ mime = part['inlineData']['mimeType']
147
+ ext = 'png' if 'png' in mime else 'jpg'
148
+ with open('edited_image.' + ext, 'wb') as out:
149
+ out.write(base64.b64decode(img_data))
150
+ print(f'Saved: edited_image.{ext}')
151
+ elif 'text' in part:
152
+ print(part['text'])
153
+ "
154
+ ```
155
+
156
+ ### Complete Example (File-Based)
157
+
158
+ For iterating on images, always use file-based requests:
159
+
160
+ ```bash
161
+ # Variables
162
+ IMG_PATH="/path/to/image.png"
163
+ EDIT_PROMPT="Make the background a sunset beach"
164
+ OUTPUT_PATH="edited_output.png"
165
+ # Detect mime type and encode
166
+ MIME_TYPE=$([[ "$IMG_PATH" == *.png ]] && echo "image/png" || echo "image/jpeg")
167
+ IMG_BASE64=$(base64 -i "$IMG_PATH" 2>/dev/null || base64 -w0 "$IMG_PATH")
168
+
169
+ # Write request to file (required - base64 images are too large for command line)
170
+ cat > /tmp/gemini_request.json << JSONEOF
171
+ {
172
+ "contents": [{
173
+ "parts": [
174
+ {"text": "$EDIT_PROMPT"},
175
+ {"inline_data": {"mime_type": "$MIME_TYPE", "data": "$IMG_BASE64"}}
176
+ ]
177
+ }],
178
+ "generationConfig": {
179
+ "responseModalities": ["TEXT", "IMAGE"]
180
+ }
181
+ }
182
+ JSONEOF
183
+
184
+ # Call API and extract image
185
+ curl -s -X POST \
186
+ "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
187
+ -H "x-goog-api-key: $GEMINI_API_KEY" \
188
+ -H "Content-Type: application/json" \
189
+ -d @/tmp/gemini_request.json > /tmp/gemini_response.json
190
+
191
+ # Save the output image
192
+ python3 -c "
193
+ import json, base64
194
+ with open('/tmp/gemini_response.json') as f:
195
+ data = json.load(f)
196
+ for part in data.get('candidates', [{}])[0].get('content', {}).get('parts', []):
197
+ if 'inlineData' in part:
198
+ with open('$OUTPUT_PATH', 'wb') as f:
199
+ f.write(base64.b64decode(part['inlineData']['data']))
200
+ print('Saved: $OUTPUT_PATH')
201
+ "
202
+ ```
203
+
204
+ ### Multi-Image Input (Combine/Compose)
205
+
206
+ To combine elements from multiple images (also uses file-based approach):
207
+
208
+ ```bash
209
+ IMG1_PATH="/path/to/image1.png"
210
+ IMG2_PATH="/path/to/image2.png"
211
+ PROMPT="Put the dress from the first image on the person in the second image"
212
+ IMG1_BASE64=$(base64 -i "$IMG1_PATH" 2>/dev/null || base64 -w0 "$IMG1_PATH")
213
+ IMG2_BASE64=$(base64 -i "$IMG2_PATH" 2>/dev/null || base64 -w0 "$IMG2_PATH")
214
+
215
+ # Write request to file
216
+ cat > /tmp/gemini_request.json << JSONEOF
217
+ {
218
+ "contents": [{
219
+ "parts": [
220
+ {"text": "$PROMPT"},
221
+ {"inline_data": {"mime_type": "image/png", "data": "$IMG1_BASE64"}},
222
+ {"inline_data": {"mime_type": "image/png", "data": "$IMG2_BASE64"}}
223
+ ]
224
+ }],
225
+ "generationConfig": {"responseModalities": ["TEXT", "IMAGE"]}
226
+ }
227
+ JSONEOF
228
+
229
+ curl -s -X POST \
230
+ "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
231
+ -H "x-goog-api-key: $GEMINI_API_KEY" \
232
+ -H "Content-Type: application/json" \
233
+ -d @/tmp/gemini_request.json > /tmp/gemini_response.json
234
+ ```
235
+
236
+ ## Capabilities
237
+
238
+ ### Text-to-Image Generation
239
+ - Generate high-quality images from text descriptions
240
+ - Support for photorealistic, stylized, and artistic outputs
241
+ - Accurate text rendering in images (logos, infographics, diagrams)
242
+
243
+ ### Image Editing
244
+ - Add or remove elements from images
245
+ - Inpainting with semantic masking (edit specific parts)
246
+ - Style transfer (apply artistic styles to photos)
247
+ - Multi-image composition (combine elements from multiple images)
248
+
249
+ ### Advanced Features
250
+ - **High Resolution**: 1K, 2K, or 4K output
251
+ - **Aspect Ratios**: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9
252
+ - **Google Search Grounding**: Generate images based on real-time data
253
+ - **Multi-turn Editing**: Iteratively refine images through conversation
254
+ - **Up to 14 Reference Images**: Combine multiple inputs for complex compositions
255
+
256
+ ## API Usage
257
+
258
+ ### Basic Text-to-Image (Python)
259
+
260
+ ```python
261
+ from google import genai
262
+ from google.genai import types
263
+
264
+ client = genai.Client()
265
+
266
+ response = client.models.generate_content(
267
+ model="gemini-3-pro-image-preview",
268
+ contents=["Your prompt here"],
269
+ config=types.GenerateContentConfig(
270
+ response_modalities=['TEXT', 'IMAGE'],
271
+ image_config=types.ImageConfig(
272
+ aspect_ratio="16:9", # Optional
273
+ image_size="2K" # Optional: "1K", "2K", "4K"
274
+ )
275
+ )
276
+ )
277
+
278
+ for part in response.parts:
279
+ if part.text is not None:
280
+ print(part.text)
281
+ elif part.inline_data is not None:
282
+ image = part.as_image()
283
+ image.save("generated_image.png")
284
+ ```
285
+
286
+ ### Basic Text-to-Image (JavaScript)
287
+
288
+ ```javascript
289
+ import { GoogleGenAI } from "@google/genai";
290
+ import * as fs from "node:fs";
291
+
292
+ const ai = new GoogleGenAI({});
293
+
294
+ const response = await ai.models.generateContent({
295
+ model: "gemini-3-pro-image-preview",
296
+ contents: "Your prompt here",
297
+ config: {
298
+ responseModalities: ['TEXT', 'IMAGE'],
299
+ imageConfig: {
300
+ aspectRatio: "16:9",
301
+ imageSize: "2K"
302
+ }
303
+ }
304
+ });
305
+
306
+ for (const part of response.candidates[0].content.parts) {
307
+ if (part.text) {
308
+ console.log(part.text);
309
+ } else if (part.inlineData) {
310
+ const buffer = Buffer.from(part.inlineData.data, "base64");
311
+ fs.writeFileSync("generated_image.png", buffer);
312
+ }
313
+ }
314
+ ```
315
+
316
+ ### REST API (curl)
317
+
318
+ ```bash
319
+ curl -s -X POST \
320
+ "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
321
+ -H "x-goog-api-key: $GEMINI_API_KEY" \
322
+ -H "Content-Type: application/json" \
323
+ -d '{
324
+ "contents": [{
325
+ "parts": [{"text": "Your prompt here"}]
326
+ }],
327
+ "generationConfig": {
328
+ "responseModalities": ["TEXT", "IMAGE"],
329
+ "imageConfig": {
330
+ "aspectRatio": "16:9",
331
+ "imageSize": "2K"
332
+ }
333
+ }
334
+ }' | jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' | base64 --decode > output.png
335
+ ```
336
+
337
+ ### Image Editing (with input image)
338
+
339
+ ```python
340
+ from google import genai
341
+ from google.genai import types
342
+ from PIL import Image
343
+
344
+ client = genai.Client()
345
+
346
+ input_image = Image.open('input.png')
347
+ prompt = "Add a wizard hat to the cat in this image"
348
+
349
+ response = client.models.generate_content(
350
+ model="gemini-3-pro-image-preview",
351
+ contents=[prompt, input_image],
352
+ config=types.GenerateContentConfig(
353
+ response_modalities=['TEXT', 'IMAGE']
354
+ )
355
+ )
356
+
357
+ for part in response.parts:
358
+ if part.inline_data is not None:
359
+ image = part.as_image()
360
+ image.save("edited_image.png")
361
+ ```
362
+
363
+ ### Multi-Image Composition
364
+
365
+ ```python
366
+ from google import genai
367
+ from google.genai import types
368
+ from PIL import Image
369
+
370
+ client = genai.Client()
371
+
372
+ image1 = Image.open('dress.png')
373
+ image2 = Image.open('model.png')
374
+ prompt = "Put the dress from the first image on the model from the second image"
375
+
376
+ response = client.models.generate_content(
377
+ model="gemini-3-pro-image-preview",
378
+ contents=[image1, image2, prompt],
379
+ config=types.GenerateContentConfig(
380
+ response_modalities=['TEXT', 'IMAGE'],
381
+ image_config=types.ImageConfig(
382
+ aspect_ratio="3:4",
383
+ image_size="2K"
384
+ )
385
+ )
386
+ )
387
+ ```
388
+
389
+ ### With Google Search Grounding
390
+
391
+ ```python
392
+ from google import genai
393
+ from google.genai import types
394
+
395
+ client = genai.Client()
396
+
397
+ response = client.models.generate_content(
398
+ model="gemini-3-pro-image-preview",
399
+ contents="Visualize the current weather forecast for San Francisco",
400
+ config=types.GenerateContentConfig(
401
+ response_modalities=['TEXT', 'IMAGE'],
402
+ image_config=types.ImageConfig(aspect_ratio="16:9"),
403
+ tools=[{"google_search": {}}]
404
+ )
405
+ )
406
+ ```
407
+
408
+ ## Prompting Best Practices
409
+
410
+ ### 1. Be Descriptive, Not Keyword-Based
411
+ Instead of: `cat, wizard hat, cute`
412
+ Write: `A fluffy orange cat wearing a small knitted wizard hat, sitting on a wooden floor with soft natural lighting from a window`
413
+
414
+ ### 2. Specify Style and Mood
415
+ - Photography terms: "shot with 85mm lens", "soft bokeh background", "golden hour lighting"
416
+ - Artistic styles: "in the style of Van Gogh", "minimalist illustration", "photorealistic"
417
+ - Mood: "warm and cozy atmosphere", "dramatic noir lighting"
418
+
419
+ ### 3. For Text in Images
420
+ Be explicit about:
421
+ - The exact text to render
422
+ - Font style (descriptively): "clean, bold, sans-serif font"
423
+ - Placement and size
424
+
425
+ ### 4. For Editing
426
+ - Describe what to change and what to preserve
427
+ - Use "keep everything else unchanged"
428
+ - Reference specific elements clearly
429
+
430
+ ### 5. For Product/Commercial Images
431
+ Mention:
432
+ - Lighting setup: "three-point softbox lighting"
433
+ - Background: "clean white studio background"
434
+ - Camera angle: "slightly elevated 45-degree shot"
435
+
436
+ ## Resolution and Aspect Ratio Reference
437
+
438
+ | Aspect Ratio | 1K Resolution | 2K Resolution | 4K Resolution |
439
+ |--------------|---------------|---------------|---------------|
440
+ | 1:1 | 1024x1024 | 2048x2048 | 4096x4096 |
441
+ | 16:9 | 1376x768 | 2752x1536 | 5504x3072 |
442
+ | 9:16 | 768x1376 | 1536x2752 | 3072x5504 |
443
+ | 3:2 | 1264x848 | 2528x1696 | 5056x3392 |
444
+ | 2:3 | 848x1264 | 1696x2528 | 3392x5056 |
445
+
446
+ ## Common Use Cases
447
+
448
+ ### Logo Creation
449
+ ```
450
+ Create a modern, minimalist logo for a coffee shop called 'The Daily Grind'.
451
+ The text should be in a clean, bold, sans-serif font.
452
+ Black and white color scheme. Put the logo in a circle.
453
+ ```
454
+
455
+ ### Product Photography
456
+ ```
457
+ A high-resolution, studio-lit product photograph of a minimalist ceramic
458
+ coffee mug in matte black on a polished concrete surface. Three-point
459
+ softbox lighting with soft, diffused highlights. Slightly elevated
460
+ 45-degree camera angle. Sharp focus on steam rising from the coffee.
461
+ ```
462
+
463
+ ### Style Transfer
464
+ ```
465
+ Transform this photograph of a city street at night into Vincent van Gogh's
466
+ 'Starry Night' style. Preserve the composition but render with swirling,
467
+ impasto brushstrokes and deep blues with bright yellows.
468
+ ```
469
+
470
+ ### Infographic
471
+ ```
472
+ Create a vibrant infographic explaining photosynthesis as a recipe.
473
+ Show "ingredients" (sunlight, water, CO2) and "finished dish" (sugar/energy).
474
+ Style like a colorful kids' cookbook, suitable for 4th graders.
475
+ ```
476
+
477
+ ## Error Handling
478
+
479
+ Common issues:
480
+ - **No image returned**: Check that `response_modalities` includes `'IMAGE'`
481
+ - **Safety filters**: Some prompts may be blocked; try rephrasing
482
+ - **Rate limits**: Implement exponential backoff for retries
483
+ - **Large images**: For 4K, ensure sufficient timeout settings
484
+
485
+ ## Dependencies
486
+
487
+ To use the Python SDK:
488
+ ```bash
489
+ pip install google-genai pillow
490
+ ```
491
+
492
+ For JavaScript:
493
+ ```bash
494
+ npm install @google/genai
495
+ ```
496
+
497
+ ## Important Notes
498
+
499
+ - All generated images include a SynthID watermark
500
+ - The model uses a "thinking" process for complex prompts
501
+ - For best text rendering, generate text first, then request image with that text
502
+ - Images are not stored by the API - save outputs locally
503
+
504
+
505
+ ## Limitations
506
+
507
+ - Requires the upstream tool, account, API key, or local setup when the workflow names one.
508
+ - Does not authorize destructive, production, paid, or external-message actions without explicit user approval.
509
+ - Validate generated artifacts or recommendations against the user's real sources before treating them as final.
@@ -0,0 +1,123 @@
1
+ # HTML Report Format
2
+
3
+ The architectural review is rendered as a single self-contained HTML file in the OS temp directory. Tailwind and Mermaid both come from CDNs. Mermaid handles graph-shaped diagrams reliably; hand-built divs and inline SVG handle the more editorial visuals (mass diagrams, cross-sections). Mix the two — don't lean on Mermaid for everything, it'll start to look generic.
4
+
5
+ ## Scaffold
6
+
7
+ ```html
8
+ <!doctype html>
9
+ <html lang="en">
10
+ <head>
11
+ <meta charset="utf-8" />
12
+ <title>Architecture review — {{repo name}}</title>
13
+ <script src="https://cdn.tailwindcss.com"></script>
14
+ <script type="module">
15
+ import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs";
16
+ mermaid.initialize({ startOnLoad: true, theme: "neutral", securityLevel: "loose" });
17
+ </script>
18
+ <style>
19
+ /* small custom layer for things Tailwind doesn't cover cleanly:
20
+ dashed seam lines, hand-drawn-feeling arrow heads, etc. */
21
+ .seam { stroke-dasharray: 4 4; }
22
+ .leak { stroke: #dc2626; }
23
+ .deep { background: linear-gradient(135deg, #0f172a, #1e293b); }
24
+ </style>
25
+ </head>
26
+ <body class="bg-stone-50 text-slate-900 font-sans">
27
+ <main class="max-w-5xl mx-auto px-6 py-12 space-y-12">
28
+ <header>...</header>
29
+ <section id="candidates" class="space-y-10">...</section>
30
+ <section id="top-recommendation">...</section>
31
+ </main>
32
+ </body>
33
+ </html>
34
+ ```
35
+
36
+ ## Header
37
+
38
+ Repo name, date, and a compact legend: solid box = module, dashed line = seam, red arrow = leakage, thick dark box = deep module. No introduction paragraph — straight into the candidates.
39
+
40
+ ## Candidate card
41
+
42
+ The diagrams carry the weight. Prose is sparse, plain, and uses the glossary terms (from the `/codebase-design` skill) without ceremony.
43
+
44
+ Each candidate is one `<article>`:
45
+
46
+ - **Title** — short, names the deepening (e.g. "Collapse the Order intake pipeline").
47
+ - **Badge row** — recommendation strength (`Strong` = emerald, `Worth exploring` = amber, `Speculative` = slate), plus a tag for the dependency category (`in-process`, `local-substitutable`, `ports & adapters`, `mock`).
48
+ - **Files** — monospaced list, `font-mono text-sm`.
49
+ - **Before / After diagram** — the centrepiece. Two columns, side by side. See patterns below.
50
+ - **Problem** — one sentence. What hurts.
51
+ - **Solution** — one sentence. What changes.
52
+ - **Wins** — bullets, ≤6 words each. e.g. "Tests hit one interface", "Pricing logic stops leaking", "Delete 4 shallow wrappers".
53
+ - **ADR callout** (if applicable) — one line in an amber-tinted box.
54
+
55
+ No paragraphs of explanation. If the diagram needs a paragraph to be understood, redraw the diagram.
56
+
57
+ ## Diagram patterns
58
+
59
+ Pick the pattern that fits the candidate. Mix them. Don't make every diagram look the same — variety is part of the point.
60
+
61
+ ### Mermaid graph (the workhorse for dependencies / call flow)
62
+
63
+ Use a Mermaid `flowchart` or `graph` when the point is "X calls Y calls Z, and look at the mess." Wrap it in a Tailwind-styled card so it doesn't feel parachuted in. Style with classDef to colour leakage edges red and the deep module dark. Sequence diagrams work well for "before: 6 round-trips; after: 1."
64
+
65
+ ```html
66
+ <div class="rounded-lg border border-slate-200 bg-white p-4">
67
+ <pre class="mermaid">
68
+ flowchart LR
69
+ A[OrderHandler] --> B[OrderValidator]
70
+ B --> C[OrderRepo]
71
+ C -.leak.-> D[PricingClient]
72
+ classDef leak stroke:#dc2626,stroke-width:2px;
73
+ class C,D leak
74
+ </pre>
75
+ </div>
76
+ ```
77
+
78
+ ### Hand-built boxes-and-arrows (when Mermaid's layout fights you)
79
+
80
+ Modules as `<div>`s with borders and labels. Arrows as inline SVG `<line>` or `<path>` elements positioned absolutely over a relative container. Reach for this when you want the "after" diagram to feel like one thick-bordered deep module with greyed-out internals — Mermaid won't render that with the right weight.
81
+
82
+ ### Cross-section (good for layered shallowness)
83
+
84
+ Stack horizontal bands (`h-12 border-l-4`) to show layers a call passes through. Before: 6 thin layers each doing nothing. After: 1 thick band labelled with the consolidated responsibility.
85
+
86
+ ### Mass diagram (good for "interface as wide as implementation")
87
+
88
+ Two rectangles per module — one for interface surface area, one for implementation. Before: interface rectangle is nearly as tall as the implementation rectangle (shallow). After: interface rectangle is short, implementation rectangle is tall (deep).
89
+
90
+ ### Call-graph collapse
91
+
92
+ Before: a tree of function calls rendered as nested boxes. After: the same tree collapsed into one box, with the now-internal calls shown faded inside it.
93
+
94
+ ## Style guidance
95
+
96
+ - Lean editorial, not corporate-dashboard. Generous whitespace. Serif optional for headings (`font-serif` works well with stone/slate).
97
+ - Colour sparingly: one accent (emerald or indigo) plus red for leakage and amber for warnings.
98
+ - Keep diagrams ~320px tall so before/after sits comfortably side by side without scrolling.
99
+ - Use `text-xs uppercase tracking-wider` for module labels inside diagrams — they should read as schematic, not as UI.
100
+ - The only scripts are the Tailwind CDN and the Mermaid ESM import. The report is otherwise static — no app code, no interactivity beyond Mermaid's own rendering.
101
+
102
+ ## Top recommendation section
103
+
104
+ One larger card. Candidate name, one sentence on why, anchor link to its card. That's it.
105
+
106
+ ## Tone
107
+
108
+ Plain English, concise — but the architectural nouns and verbs come straight from the `/codebase-design` skill. Concision is not an excuse to drift.
109
+
110
+ **Use exactly:** module, interface, implementation, depth, deep, shallow, seam, adapter, leverage, locality.
111
+
112
+ **Never substitute:** component, service, unit (for module) · API, signature (for interface) · boundary (for seam) · layer, wrapper (for module, when you mean module).
113
+
114
+ **Phrasings that fit the style:**
115
+
116
+ - "Order intake module is shallow — interface nearly matches the implementation."
117
+ - "Pricing leaks across the seam."
118
+ - "Deepen: one interface, one place to test."
119
+ - "Two adapters justify the seam: HTTP in prod, in-memory in tests."
120
+
121
+ **Wins bullets** name the gain in glossary terms: *"locality: bugs concentrate in one module"*, *"leverage: one interface, N call sites"*, *"interface shrinks; implementation absorbs the wrappers"*. Don't write *"easier to maintain"* or *"cleaner code"* — those terms aren't in the glossary and don't earn their place.
122
+
123
+ No hedging, no throat-clearing, no "it's worth noting that…". If a sentence could be a bullet, make it a bullet. If a bullet could be cut, cut it. If a term isn't in the `/codebase-design` glossary, reach for one that is before inventing a new one.