hive-skills 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +235 -0
  3. package/assets/LICENSE +32 -0
  4. package/assets/THIRD_PARTY_NOTICES.md +72 -0
  5. package/assets/manifest.json +1290 -0
  6. package/assets/skills/authored/code-review/composable/BUNDLE.md +192 -0
  7. package/assets/skills/authored/code-review/composable/INDEX.md +13 -0
  8. package/assets/skills/authored/code-review/composable/VERSION +1 -0
  9. package/assets/skills/authored/code-review/composable/mini/01-review-method.md +34 -0
  10. package/assets/skills/authored/code-review/composable/mini/02-security-review.md +20 -0
  11. package/assets/skills/authored/code-review/composable/mini/03-correctness-bugs.md +19 -0
  12. package/assets/skills/authored/code-review/composable/mini/04-concurrency.md +16 -0
  13. package/assets/skills/authored/code-review/composable/mini/05-error-handling.md +12 -0
  14. package/assets/skills/authored/code-review/composable/mini/06-performance.md +11 -0
  15. package/assets/skills/authored/code-review/composable/mini/07-api-design.md +20 -0
  16. package/assets/skills/authored/code-review/composable/mini/08-missing-tests.md +25 -0
  17. package/assets/skills/authored/code-review/composable/mini/09-refactoring-and-communication.md +32 -0
  18. package/assets/skills/authored/data-analysis/composable/BUNDLE.md +186 -0
  19. package/assets/skills/authored/data-analysis/composable/INDEX.md +13 -0
  20. package/assets/skills/authored/data-analysis/composable/VERSION +1 -0
  21. package/assets/skills/authored/data-analysis/composable/mini/01-data-quality-profiling.md +26 -0
  22. package/assets/skills/authored/data-analysis/composable/mini/02-aggregation-pitfalls.md +21 -0
  23. package/assets/skills/authored/data-analysis/composable/mini/03-time-series.md +19 -0
  24. package/assets/skills/authored/data-analysis/composable/mini/04-segmentation.md +23 -0
  25. package/assets/skills/authored/data-analysis/composable/mini/05-discount-pricing.md +17 -0
  26. package/assets/skills/authored/data-analysis/composable/mini/06-insight-generation.md +25 -0
  27. package/assets/skills/authored/data-analysis/composable/mini/07-executive-writing.md +26 -0
  28. package/assets/skills/authored/data-analysis/composable/mini/08-recommendations.md +20 -0
  29. package/assets/skills/authored/data-analysis/composable/mini/09-reproducibility-assumptions.md +20 -0
  30. package/assets/skills/authored/financial-analysis/composable/BUNDLE.md +1293 -0
  31. package/assets/skills/authored/financial-analysis/composable/INDEX.md +17 -0
  32. package/assets/skills/authored/financial-analysis/composable/VERSION +1 -0
  33. package/assets/skills/authored/financial-analysis/composable/mini/00-core.md +69 -0
  34. package/assets/skills/authored/financial-analysis/composable/mini/01-profitability-efficiency-ratios.md +173 -0
  35. package/assets/skills/authored/financial-analysis/composable/mini/02-liquidity-leverage-ratios.md +120 -0
  36. package/assets/skills/authored/financial-analysis/composable/mini/03-valuation-ratios-interpretation.md +107 -0
  37. package/assets/skills/authored/financial-analysis/composable/mini/04-dcf-projection-wacc.md +122 -0
  38. package/assets/skills/authored/financial-analysis/composable/mini/05-dcf-terminal-value-sensitivity.md +75 -0
  39. package/assets/skills/authored/financial-analysis/composable/mini/06-comparables-precedents.md +78 -0
  40. package/assets/skills/authored/financial-analysis/composable/mini/07-budget-variance-analysis.md +47 -0
  41. package/assets/skills/authored/financial-analysis/composable/mini/08-driver-based-forecasting-scenarios.md +111 -0
  42. package/assets/skills/authored/financial-analysis/composable/mini/09-rolling-forecasts-accuracy.md +114 -0
  43. package/assets/skills/authored/financial-analysis/composable/mini/10-reporting-exec-summary.md +58 -0
  44. package/assets/skills/authored/financial-analysis/composable/mini/11-industry-adaptations.md +130 -0
  45. package/assets/skills/authored/financial-analysis/composable/mini/12-toolkit-scripts-io.md +102 -0
  46. package/assets/skills/authored/python-api/composable/BUNDLE.md +389 -0
  47. package/assets/skills/authored/python-api/composable/INDEX.md +13 -0
  48. package/assets/skills/authored/python-api/composable/VERSION +1 -0
  49. package/assets/skills/authored/python-api/composable/mini/01-project-structure.md +44 -0
  50. package/assets/skills/authored/python-api/composable/mini/02-routing-and-app.md +38 -0
  51. package/assets/skills/authored/python-api/composable/mini/03-pydantic-models.md +45 -0
  52. package/assets/skills/authored/python-api/composable/mini/04-validation-and-errors.md +59 -0
  53. package/assets/skills/authored/python-api/composable/mini/05-dependencies-and-auth.md +60 -0
  54. package/assets/skills/authored/python-api/composable/mini/06-pagination-filtering.md +44 -0
  55. package/assets/skills/authored/python-api/composable/mini/07-async-performance.md +30 -0
  56. package/assets/skills/authored/python-api/composable/mini/08-testing.md +45 -0
  57. package/assets/skills/authored/python-api/composable/mini/09-middleware-observability.md +29 -0
  58. package/assets/skills/authored/tech-writing/composable/BUNDLE.md +220 -0
  59. package/assets/skills/authored/tech-writing/composable/INDEX.md +12 -0
  60. package/assets/skills/authored/tech-writing/composable/VERSION +1 -0
  61. package/assets/skills/authored/tech-writing/composable/mini/01-audience-analysis.md +26 -0
  62. package/assets/skills/authored/tech-writing/composable/mini/02-document-types.md +27 -0
  63. package/assets/skills/authored/tech-writing/composable/mini/03-readme-quickstart-changelog.md +22 -0
  64. package/assets/skills/authored/tech-writing/composable/mini/04-information-architecture.md +21 -0
  65. package/assets/skills/authored/tech-writing/composable/mini/05-style-clarity.md +29 -0
  66. package/assets/skills/authored/tech-writing/composable/mini/06-breaking-changes-migrations.md +33 -0
  67. package/assets/skills/authored/tech-writing/composable/mini/07-troubleshooting-security.md +30 -0
  68. package/assets/skills/authored/tech-writing/composable/mini/08-faq-voice-tone.md +32 -0
  69. package/assets/skills/converted/claude-api/composable/BUNDLE.md +14996 -0
  70. package/assets/skills/converted/claude-api/composable/INDEX.md +98 -0
  71. package/assets/skills/converted/claude-api/composable/VERSION +1 -0
  72. package/assets/skills/converted/claude-api/composable/mini/00-core.md +235 -0
  73. package/assets/skills/converted/claude-api/composable/mini/01-model-api-quick-reference.md +258 -0
  74. package/assets/skills/converted/claude-api/composable/mini/02-common-pitfalls.md +42 -0
  75. package/assets/skills/converted/claude-api/composable/mini/10-models.md +135 -0
  76. package/assets/skills/converted/claude-api/composable/mini/11-platform-availability.md +96 -0
  77. package/assets/skills/converted/claude-api/composable/mini/12-claude-platform-on-aws.md +59 -0
  78. package/assets/skills/converted/claude-api/composable/mini/13-live-sources.md +143 -0
  79. package/assets/skills/converted/claude-api/composable/mini/14-error-codes.md +256 -0
  80. package/assets/skills/converted/claude-api/composable/mini/15-prompt-caching.md +223 -0
  81. package/assets/skills/converted/claude-api/composable/mini/16-token-counting.md +56 -0
  82. package/assets/skills/converted/claude-api/composable/mini/17-tool-use-concepts.md +444 -0
  83. package/assets/skills/converted/claude-api/composable/mini/18-agent-design.md +101 -0
  84. package/assets/skills/converted/claude-api/composable/mini/19-anthropic-cli.md +246 -0
  85. package/assets/skills/converted/claude-api/composable/mini/20-model-migration.md +1301 -0
  86. package/assets/skills/converted/claude-api/composable/mini/30-managed-agents-overview.md +71 -0
  87. package/assets/skills/converted/claude-api/composable/mini/31-managed-agents-core.md +278 -0
  88. package/assets/skills/converted/claude-api/composable/mini/32-managed-agents-environments.md +219 -0
  89. package/assets/skills/converted/claude-api/composable/mini/33-managed-agents-tools.md +366 -0
  90. package/assets/skills/converted/claude-api/composable/mini/34-managed-agents-events.md +252 -0
  91. package/assets/skills/converted/claude-api/composable/mini/35-managed-agents-outcomes.md +106 -0
  92. package/assets/skills/converted/claude-api/composable/mini/36-managed-agents-multiagent.md +101 -0
  93. package/assets/skills/converted/claude-api/composable/mini/37-managed-agents-webhooks.md +123 -0
  94. package/assets/skills/converted/claude-api/composable/mini/38-managed-agents-memory.md +197 -0
  95. package/assets/skills/converted/claude-api/composable/mini/39-managed-agents-scheduled-deployments.md +146 -0
  96. package/assets/skills/converted/claude-api/composable/mini/40-managed-agents-client-patterns.md +211 -0
  97. package/assets/skills/converted/claude-api/composable/mini/41-managed-agents-onboarding.md +82 -0
  98. package/assets/skills/converted/claude-api/composable/mini/42-managed-agents-api-reference.md +441 -0
  99. package/assets/skills/converted/claude-api/composable/mini/43-managed-agents-self-hosted-sandboxes.md +174 -0
  100. package/assets/skills/converted/claude-api/composable/mini/50-python-readme.md +564 -0
  101. package/assets/skills/converted/claude-api/composable/mini/51-python-tool-use.md +590 -0
  102. package/assets/skills/converted/claude-api/composable/mini/52-python-streaming-batches-files.md +549 -0
  103. package/assets/skills/converted/claude-api/composable/mini/53-python-managed-agents.md +335 -0
  104. package/assets/skills/converted/claude-api/composable/mini/55-typescript-readme.md +404 -0
  105. package/assets/skills/converted/claude-api/composable/mini/56-typescript-tool-use.md +548 -0
  106. package/assets/skills/converted/claude-api/composable/mini/57-typescript-streaming-batches-files.md +384 -0
  107. package/assets/skills/converted/claude-api/composable/mini/58-typescript-managed-agents.md +358 -0
  108. package/assets/skills/converted/claude-api/composable/mini/60-csharp-readme.md +361 -0
  109. package/assets/skills/converted/claude-api/composable/mini/61-csharp-tool-use.md +163 -0
  110. package/assets/skills/converted/claude-api/composable/mini/62-csharp-streaming-batches-files.md +64 -0
  111. package/assets/skills/converted/claude-api/composable/mini/65-go-readme.md +185 -0
  112. package/assets/skills/converted/claude-api/composable/mini/66-go-tool-use.md +219 -0
  113. package/assets/skills/converted/claude-api/composable/mini/67-go-streaming-files.md +63 -0
  114. package/assets/skills/converted/claude-api/composable/mini/68-go-managed-agents.md +564 -0
  115. package/assets/skills/converted/claude-api/composable/mini/70-java-readme.md +237 -0
  116. package/assets/skills/converted/claude-api/composable/mini/71-java-tool-use.md +227 -0
  117. package/assets/skills/converted/claude-api/composable/mini/72-java-streaming-files.md +49 -0
  118. package/assets/skills/converted/claude-api/composable/mini/73-java-managed-agents.md +443 -0
  119. package/assets/skills/converted/claude-api/composable/mini/75-php-readme.md +173 -0
  120. package/assets/skills/converted/claude-api/composable/mini/76-php-tool-use.md +252 -0
  121. package/assets/skills/converted/claude-api/composable/mini/77-php-streaming-batches-files.md +53 -0
  122. package/assets/skills/converted/claude-api/composable/mini/78-php-managed-agents.md +443 -0
  123. package/assets/skills/converted/claude-api/composable/mini/80-ruby-readme.md +133 -0
  124. package/assets/skills/converted/claude-api/composable/mini/81-ruby-tool-use-streaming.md +56 -0
  125. package/assets/skills/converted/claude-api/composable/mini/82-ruby-managed-agents.md +394 -0
  126. package/assets/skills/converted/claude-api/composable/mini/85-curl-examples.md +255 -0
  127. package/assets/skills/converted/claude-api/composable/mini/86-curl-managed-agents.md +340 -0
  128. package/assets/skills/converted/claude-api/composable/presets/csharp.md +1151 -0
  129. package/assets/skills/converted/claude-api/composable/presets/curl.md +1154 -0
  130. package/assets/skills/converted/claude-api/composable/presets/go.md +1598 -0
  131. package/assets/skills/converted/claude-api/composable/presets/java.md +1523 -0
  132. package/assets/skills/converted/claude-api/composable/presets/php.md +1488 -0
  133. package/assets/skills/converted/claude-api/composable/presets/python.md +2605 -0
  134. package/assets/skills/converted/claude-api/composable/presets/ruby.md +1146 -0
  135. package/assets/skills/converted/claude-api/composable/presets/shared.md +6478 -0
  136. package/assets/skills/converted/claude-api/composable/presets/typescript.md +2261 -0
  137. package/assets/skills/converted/docx/composable/BUNDLE.md +617 -0
  138. package/assets/skills/converted/docx/composable/INDEX.md +12 -0
  139. package/assets/skills/converted/docx/composable/VERSION +1 -0
  140. package/assets/skills/converted/docx/composable/mini/00-core.md +26 -0
  141. package/assets/skills/converted/docx/composable/mini/01-reading-converting.md +36 -0
  142. package/assets/skills/converted/docx/composable/mini/02-creating-setup-layout.md +85 -0
  143. package/assets/skills/converted/docx/composable/mini/03-creating-elements.md +257 -0
  144. package/assets/skills/converted/docx/composable/mini/04-editing-existing.md +57 -0
  145. package/assets/skills/converted/docx/composable/mini/05-xml-reference.md +128 -0
  146. package/assets/skills/converted/internal-comms/composable/BUNDLE.md +220 -0
  147. package/assets/skills/converted/internal-comms/composable/INDEX.md +11 -0
  148. package/assets/skills/converted/internal-comms/composable/VERSION +1 -0
  149. package/assets/skills/converted/internal-comms/composable/mini/00-core.md +30 -0
  150. package/assets/skills/converted/internal-comms/composable/mini/01-3p-updates.md +49 -0
  151. package/assets/skills/converted/internal-comms/composable/mini/02-company-newsletter.md +67 -0
  152. package/assets/skills/converted/internal-comms/composable/mini/03-faq-answers.md +32 -0
  153. package/assets/skills/converted/internal-comms/composable/mini/04-general-comms.md +18 -0
  154. package/assets/skills/converted/mcp-builder/composable/BUNDLE.md +2460 -0
  155. package/assets/skills/converted/mcp-builder/composable/INDEX.md +23 -0
  156. package/assets/skills/converted/mcp-builder/composable/VERSION +1 -0
  157. package/assets/skills/converted/mcp-builder/composable/mini/00-core.md +43 -0
  158. package/assets/skills/converted/mcp-builder/composable/mini/01-workflow-research-planning.md +54 -0
  159. package/assets/skills/converted/mcp-builder/composable/mini/02-implementation-process.md +78 -0
  160. package/assets/skills/converted/mcp-builder/composable/mini/03-naming-conventions.md +33 -0
  161. package/assets/skills/converted/mcp-builder/composable/mini/04-response-formats.md +21 -0
  162. package/assets/skills/converted/mcp-builder/composable/mini/05-pagination.md +24 -0
  163. package/assets/skills/converted/mcp-builder/composable/mini/06-transport.md +47 -0
  164. package/assets/skills/converted/mcp-builder/composable/mini/07-annotations.md +20 -0
  165. package/assets/skills/converted/mcp-builder/composable/mini/08-security.md +35 -0
  166. package/assets/skills/converted/mcp-builder/composable/mini/09-error-handling.md +32 -0
  167. package/assets/skills/converted/mcp-builder/composable/mini/10-testing-and-documentation.md +21 -0
  168. package/assets/skills/converted/mcp-builder/composable/mini/11-python-implementation.md +432 -0
  169. package/assets/skills/converted/mcp-builder/composable/mini/12-python-advanced-and-checklist.md +233 -0
  170. package/assets/skills/converted/mcp-builder/composable/mini/13-node-implementation.md +717 -0
  171. package/assets/skills/converted/mcp-builder/composable/mini/14-node-advanced-and-checklist.md +200 -0
  172. package/assets/skills/converted/mcp-builder/composable/mini/15-evaluation-design.md +200 -0
  173. package/assets/skills/converted/mcp-builder/composable/mini/16-evaluation-running.md +198 -0
  174. package/assets/skills/converted/mcp-builder/composable/presets/node-server.md +1381 -0
  175. package/assets/skills/converted/mcp-builder/composable/presets/python-server.md +1129 -0
  176. package/assets/skills/converted/pdf/composable/BUNDLE.md +1284 -0
  177. package/assets/skills/converted/pdf/composable/INDEX.md +14 -0
  178. package/assets/skills/converted/pdf/composable/VERSION +1 -0
  179. package/assets/skills/converted/pdf/composable/mini/00-core.md +46 -0
  180. package/assets/skills/converted/pdf/composable/mini/01-creation.md +176 -0
  181. package/assets/skills/converted/pdf/composable/mini/02-extraction.md +178 -0
  182. package/assets/skills/converted/pdf/composable/mini/03-merge-split-manipulate.md +240 -0
  183. package/assets/skills/converted/pdf/composable/mini/04-images-ocr.md +168 -0
  184. package/assets/skills/converted/pdf/composable/mini/05-encryption.md +51 -0
  185. package/assets/skills/converted/pdf/composable/mini/06-forms.md +300 -0
  186. package/assets/skills/converted/pdf/composable/mini/07-libraries-reference.md +89 -0
  187. package/assets/skills/converted/pptx/composable/BUNDLE.md +911 -0
  188. package/assets/skills/converted/pptx/composable/INDEX.md +12 -0
  189. package/assets/skills/converted/pptx/composable/VERSION +1 -0
  190. package/assets/skills/converted/pptx/composable/mini/00-core.md +37 -0
  191. package/assets/skills/converted/pptx/composable/mini/01-reading.md +37 -0
  192. package/assets/skills/converted/pptx/composable/mini/02-creating-from-scratch.md +422 -0
  193. package/assets/skills/converted/pptx/composable/mini/03-editing-templates.md +207 -0
  194. package/assets/skills/converted/pptx/composable/mini/04-design.md +89 -0
  195. package/assets/skills/converted/pptx/composable/mini/05-qa-and-rendering.md +91 -0
  196. package/assets/skills/converted/pptx/composable/presets/creating.md +659 -0
  197. package/assets/skills/converted/pptx/composable/presets/editing.md +485 -0
  198. package/assets/skills/converted/skill-creator/composable/BUNDLE.md +1681 -0
  199. package/assets/skills/converted/skill-creator/composable/INDEX.md +21 -0
  200. package/assets/skills/converted/skill-creator/composable/VERSION +1 -0
  201. package/assets/skills/converted/skill-creator/composable/mini/00-core.md +59 -0
  202. package/assets/skills/converted/skill-creator/composable/mini/01-creating-a-skill.md +27 -0
  203. package/assets/skills/converted/skill-creator/composable/mini/02-skill-writing-guide.md +71 -0
  204. package/assets/skills/converted/skill-creator/composable/mini/03-test-cases.md +21 -0
  205. package/assets/skills/converted/skill-creator/composable/mini/04-running-and-evaluating.md +128 -0
  206. package/assets/skills/converted/skill-creator/composable/mini/05-improving-the-skill.md +30 -0
  207. package/assets/skills/converted/skill-creator/composable/mini/06-blind-comparison.md +5 -0
  208. package/assets/skills/converted/skill-creator/composable/mini/07-description-optimization.md +74 -0
  209. package/assets/skills/converted/skill-creator/composable/mini/08-packaging.md +11 -0
  210. package/assets/skills/converted/skill-creator/composable/mini/09-environment-specific.md +38 -0
  211. package/assets/skills/converted/skill-creator/composable/mini/10-scripts-and-references.md +34 -0
  212. package/assets/skills/converted/skill-creator/composable/mini/11-json-schemas.md +414 -0
  213. package/assets/skills/converted/skill-creator/composable/mini/12-agent-grader.md +225 -0
  214. package/assets/skills/converted/skill-creator/composable/mini/13-agent-comparator.md +204 -0
  215. package/assets/skills/converted/skill-creator/composable/mini/14-agent-analyzer.md +276 -0
  216. package/assets/skills/converted/skill-creator/composable/presets/authoring.md +198 -0
  217. package/assets/skills/converted/skill-creator/composable/presets/evaluating.md +1334 -0
  218. package/assets/skills/converted/skill-creator/composable/presets/optimizing.md +160 -0
  219. package/assets/skills/converted/skill-creator/composable/presets.json +5 -0
  220. package/assets/skills/meta/ccs-skill-creator/composable/BUNDLE.md +465 -0
  221. package/assets/skills/meta/ccs-skill-creator/composable/INDEX.md +8 -0
  222. package/assets/skills/meta/ccs-skill-creator/composable/VERSION +1 -0
  223. package/assets/skills/meta/ccs-skill-creator/composable/mini/00-core.md +46 -0
  224. package/assets/skills/meta/ccs-skill-creator/composable/mini/01-create-new-skill.md +167 -0
  225. package/assets/skills/meta/ccs-skill-creator/composable/mini/02-convert-existing-skill.md +120 -0
  226. package/assets/skills/meta/ccs-skill-creator/composable/mini/03-review-and-maintain.md +112 -0
  227. package/assets/skills/sources/anthropic/PROVENANCE.md +3 -0
  228. package/assets/skills/sources/anthropic/claude-api/LICENSE.txt +202 -0
  229. package/assets/skills/sources/anthropic/docx/LICENSE.txt +30 -0
  230. package/assets/skills/sources/anthropic/internal-comms/LICENSE.txt +202 -0
  231. package/assets/skills/sources/anthropic/mcp-builder/LICENSE.txt +202 -0
  232. package/assets/skills/sources/anthropic/pdf/LICENSE.txt +30 -0
  233. package/assets/skills/sources/anthropic/pptx/LICENSE.txt +30 -0
  234. package/assets/skills/sources/anthropic/skill-creator/LICENSE.txt +202 -0
  235. package/assets/skills/sources/financial-analyst/PROVENANCE.md +1 -0
  236. package/assets/tools/hive.py +728 -0
  237. package/dist/cli.js +7494 -0
  238. package/package.json +40 -0
@@ -0,0 +1,12 @@
1
+ # PPTX: Loading Menu
2
+
3
+ Working with PowerPoint `.pptx` files: reading, creating, editing, and QA. Helper scripts stay vendored at `skills/sources/anthropic/pptx/scripts/`.
4
+
5
+ Loading policy: read this menu, then load 00-core (if present) plus the minis relevant to your task. If most of this skill is relevant, load BUNDLE.md (or a matching presets/*.md) in one read instead.
6
+
7
+ - `mini/00-core.md` - purpose/trigger, approach-selection table, script location, dependencies - **always load**
8
+ - `mini/01-reading.md` - extract text, thumbnails, raw XML - Load when reading, parsing, or extracting from a .pptx.
9
+ - `mini/02-creating-from-scratch.md` - full PptxGenJS tutorial (text, shapes, images, icons, tables, charts, masters, pitfalls) - Load when creating a deck with no template.
10
+ - `mini/03-editing-templates.md` - template workflow, unpack/pack scripts, slide ops, XML content editing, pitfalls - Load when editing or templating an existing deck.
11
+ - `mini/04-design.md` - palettes, layouts, typography, spacing, mistakes to avoid - Load when designing slide look and feel.
12
+ - `mini/05-qa-and-rendering.md` - required QA bug-hunt, visual subagent review, convert to images - Load when verifying or rendering a deck.
@@ -0,0 +1,37 @@
1
+ # Core: PPTX Skill
2
+
3
+ Always-loaded foundation for working with PowerPoint `.pptx` files. Load the focused minis (see INDEX) for reading, creating from scratch, editing templates, design, and QA.
4
+
5
+ ## When to use this skill
6
+
7
+ Use this skill any time a `.pptx` file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any `.pptx` file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions "deck," "slides," "presentation," or references a `.pptx` filename, regardless of what they plan to do with the content afterward. If a `.pptx` file needs to be opened, created, or touched, use this skill.
8
+
9
+ License: Proprietary. `skills/sources/anthropic/pptx/LICENSE.txt` has complete terms.
10
+
11
+ ## Quick Reference
12
+
13
+ | Task | Guide |
14
+ |------|-------|
15
+ | Read/analyze content | `python -m markitdown presentation.pptx` (see reading mini) |
16
+ | Edit or create from template | See editing-templates mini |
17
+ | Create from scratch | See creating-from-scratch mini |
18
+
19
+ ## Choosing an approach
20
+
21
+ - **Reading content**: extract text, get a visual overview, or inspect raw XML — see the reading mini.
22
+ - **Editing / creating from a template**: when using an existing presentation as a template — see the editing-templates mini.
23
+ - **Creating from scratch**: use when no template or reference presentation is available — see the creating-from-scratch mini.
24
+
25
+ Design guidance (palettes, layout, typography) and the required QA/verification process apply to both editing and creating — see the design and qa-and-rendering minis.
26
+
27
+ ## Scripts location
28
+
29
+ Helper scripts referenced throughout this skill (e.g. `scripts/thumbnail.py`, `scripts/office/unpack.py`, `scripts/add_slide.py`, `scripts/clean.py`, `scripts/office/pack.py`, `scripts/office/soffice.py`) are vendored in the source at `skills/sources/anthropic/pptx/scripts/`. Paths shown as `scripts/...` are relative to that vendored source directory.
30
+
31
+ ## Dependencies
32
+
33
+ - `pip install "markitdown[pptx]"` - text extraction
34
+ - `pip install Pillow` - thumbnail grids
35
+ - `npm install -g pptxgenjs` - creating from scratch
36
+ - LibreOffice (`soffice`) - PDF conversion (auto-configured for sandboxed environments via `scripts/office/soffice.py`)
37
+ - Poppler (`pdftoppm`) - PDF to images
@@ -0,0 +1,37 @@
1
+ # Reading & Extracting Content
2
+
3
+ Reading, parsing, or extracting content from a `.pptx` file. Use for any task that needs the text or a visual overview of an existing presentation — even if the extracted content will be used elsewhere (email, summary, etc.).
4
+
5
+ ## Reading Content
6
+
7
+ ```bash
8
+ # Text extraction
9
+ python -m markitdown presentation.pptx
10
+
11
+ # Visual overview
12
+ python scripts/thumbnail.py presentation.pptx
13
+
14
+ # Raw XML
15
+ python scripts/office/unpack.py presentation.pptx unpacked/
16
+ ```
17
+
18
+ - `python -m markitdown presentation.pptx` — extract the text content of the deck.
19
+ - `python scripts/thumbnail.py presentation.pptx` — create a visual overview (grid of slide thumbnails).
20
+ - `python scripts/office/unpack.py presentation.pptx unpacked/` — extract and pretty-print the raw XML for inspection.
21
+
22
+ Script paths (`scripts/thumbnail.py`, `scripts/office/unpack.py`) refer to the vendored source at `skills/sources/anthropic/pptx/scripts/`.
23
+
24
+ ## thumbnail.py
25
+
26
+ ```bash
27
+ python scripts/thumbnail.py input.pptx [output_prefix] [--cols N]
28
+ ```
29
+
30
+ Creates `thumbnails.jpg` with slide filenames as labels. Default 3 columns, max 12 per grid.
31
+
32
+ **Use for template analysis only** (choosing layouts). For visual QA, use `soffice` + `pdftoppm` to create full-resolution individual slide images — see the qa-and-rendering mini.
33
+
34
+ ## Dependencies
35
+
36
+ - `pip install "markitdown[pptx]"` - text extraction
37
+ - `pip install Pillow` - thumbnail grids
@@ -0,0 +1,422 @@
1
+ # Creating from Scratch (PptxGenJS)
2
+
3
+ Use when no template or reference presentation is available. This is the full PptxGenJS tutorial. Install: `npm install -g pptxgenjs`. Also read the design mini for palettes/layout and the qa-and-rendering mini for the required verification loop.
4
+
5
+ ## Setup & Basic Structure
6
+
7
+ ```javascript
8
+ const pptxgen = require("pptxgenjs");
9
+
10
+ let pres = new pptxgen();
11
+ pres.layout = 'LAYOUT_16x9'; // or 'LAYOUT_16x10', 'LAYOUT_4x3', 'LAYOUT_WIDE'
12
+ pres.author = 'Your Name';
13
+ pres.title = 'Presentation Title';
14
+
15
+ let slide = pres.addSlide();
16
+ slide.addText("Hello World!", { x: 0.5, y: 0.5, fontSize: 36, color: "363636" });
17
+
18
+ pres.writeFile({ fileName: "Presentation.pptx" });
19
+ ```
20
+
21
+ ## Layout Dimensions
22
+
23
+ Slide dimensions (coordinates in inches):
24
+ - `LAYOUT_16x9`: 10" × 5.625" (default)
25
+ - `LAYOUT_16x10`: 10" × 6.25"
26
+ - `LAYOUT_4x3`: 10" × 7.5"
27
+ - `LAYOUT_WIDE`: 13.3" × 7.5"
28
+
29
+ ---
30
+
31
+ ## Text & Formatting
32
+
33
+ ```javascript
34
+ // Basic text
35
+ slide.addText("Simple Text", {
36
+ x: 1, y: 1, w: 8, h: 2, fontSize: 24, fontFace: "Arial",
37
+ color: "363636", bold: true, align: "center", valign: "middle"
38
+ });
39
+
40
+ // Character spacing (use charSpacing, not letterSpacing which is silently ignored)
41
+ slide.addText("SPACED TEXT", { x: 1, y: 1, w: 8, h: 1, charSpacing: 6 });
42
+
43
+ // Rich text arrays
44
+ slide.addText([
45
+ { text: "Bold ", options: { bold: true } },
46
+ { text: "Italic ", options: { italic: true } }
47
+ ], { x: 1, y: 3, w: 8, h: 1 });
48
+
49
+ // Multi-line text (requires breakLine: true)
50
+ slide.addText([
51
+ { text: "Line 1", options: { breakLine: true } },
52
+ { text: "Line 2", options: { breakLine: true } },
53
+ { text: "Line 3" } // Last item doesn't need breakLine
54
+ ], { x: 0.5, y: 0.5, w: 8, h: 2 });
55
+
56
+ // Text box margin (internal padding)
57
+ slide.addText("Title", {
58
+ x: 0.5, y: 0.3, w: 9, h: 0.6,
59
+ margin: 0 // Use 0 when aligning text with other elements like shapes or icons
60
+ });
61
+ ```
62
+
63
+ **Tip:** Text boxes have internal margin by default. Set `margin: 0` when you need text to align precisely with shapes, lines, or icons at the same x-position.
64
+
65
+ ---
66
+
67
+ ## Lists & Bullets
68
+
69
+ ```javascript
70
+ // ✅ CORRECT: Multiple bullets
71
+ slide.addText([
72
+ { text: "First item", options: { bullet: true, breakLine: true } },
73
+ { text: "Second item", options: { bullet: true, breakLine: true } },
74
+ { text: "Third item", options: { bullet: true } }
75
+ ], { x: 0.5, y: 0.5, w: 8, h: 3 });
76
+
77
+ // ❌ WRONG: Never use unicode bullets
78
+ slide.addText("• First item", { ... }); // Creates double bullets
79
+
80
+ // Sub-items and numbered lists
81
+ { text: "Sub-item", options: { bullet: true, indentLevel: 1 } }
82
+ { text: "First", options: { bullet: { type: "number" }, breakLine: true } }
83
+ ```
84
+
85
+ ---
86
+
87
+ ## Shapes
88
+
89
+ ```javascript
90
+ slide.addShape(pres.shapes.RECTANGLE, {
91
+ x: 0.5, y: 0.8, w: 1.5, h: 3.0,
92
+ fill: { color: "FF0000" }, line: { color: "000000", width: 2 }
93
+ });
94
+
95
+ slide.addShape(pres.shapes.OVAL, { x: 4, y: 1, w: 2, h: 2, fill: { color: "0000FF" } });
96
+
97
+ slide.addShape(pres.shapes.LINE, {
98
+ x: 1, y: 3, w: 5, h: 0, line: { color: "FF0000", width: 3, dashType: "dash" }
99
+ });
100
+
101
+ // With transparency
102
+ slide.addShape(pres.shapes.RECTANGLE, {
103
+ x: 1, y: 1, w: 3, h: 2,
104
+ fill: { color: "0088CC", transparency: 50 }
105
+ });
106
+
107
+ // Rounded rectangle (rectRadius only works with ROUNDED_RECTANGLE, not RECTANGLE)
108
+ // ⚠️ Don't pair with rectangular accent overlays — they won't cover rounded corners. Use RECTANGLE instead.
109
+ slide.addShape(pres.shapes.ROUNDED_RECTANGLE, {
110
+ x: 1, y: 1, w: 3, h: 2,
111
+ fill: { color: "FFFFFF" }, rectRadius: 0.1
112
+ });
113
+
114
+ // With shadow
115
+ slide.addShape(pres.shapes.RECTANGLE, {
116
+ x: 1, y: 1, w: 3, h: 2,
117
+ fill: { color: "FFFFFF" },
118
+ shadow: { type: "outer", color: "000000", blur: 6, offset: 2, angle: 135, opacity: 0.15 }
119
+ });
120
+ ```
121
+
122
+ Shadow options:
123
+
124
+ | Property | Type | Range | Notes |
125
+ |----------|------|-------|-------|
126
+ | `type` | string | `"outer"`, `"inner"` | |
127
+ | `color` | string | 6-char hex (e.g. `"000000"`) | No `#` prefix, no 8-char hex — see Common Pitfalls |
128
+ | `blur` | number | 0-100 pt | |
129
+ | `offset` | number | 0-200 pt | **Must be non-negative** — negative values corrupt the file |
130
+ | `angle` | number | 0-359 degrees | Direction the shadow falls (135 = bottom-right, 270 = upward) |
131
+ | `opacity` | number | 0.0-1.0 | Use this for transparency, never encode in color string |
132
+
133
+ To cast a shadow upward (e.g. on a footer bar), use `angle: 270` with a positive offset — do **not** use a negative offset.
134
+
135
+ **Note**: Gradient fills are not natively supported. Use a gradient image as a background instead.
136
+
137
+ ---
138
+
139
+ ## Images
140
+
141
+ ### Image Sources
142
+
143
+ ```javascript
144
+ // From file path
145
+ slide.addImage({ path: "images/chart.png", x: 1, y: 1, w: 5, h: 3 });
146
+
147
+ // From URL
148
+ slide.addImage({ path: "https://example.com/image.jpg", x: 1, y: 1, w: 5, h: 3 });
149
+
150
+ // From base64 (faster, no file I/O)
151
+ slide.addImage({ data: "image/png;base64,iVBORw0KGgo...", x: 1, y: 1, w: 5, h: 3 });
152
+ ```
153
+
154
+ ### Image Options
155
+
156
+ ```javascript
157
+ slide.addImage({
158
+ path: "image.png",
159
+ x: 1, y: 1, w: 5, h: 3,
160
+ rotate: 45, // 0-359 degrees
161
+ rounding: true, // Circular crop
162
+ transparency: 50, // 0-100
163
+ flipH: true, // Horizontal flip
164
+ flipV: false, // Vertical flip
165
+ altText: "Description", // Accessibility
166
+ hyperlink: { url: "https://example.com" }
167
+ });
168
+ ```
169
+
170
+ ### Image Sizing Modes
171
+
172
+ ```javascript
173
+ // Contain - fit inside, preserve ratio
174
+ { sizing: { type: 'contain', w: 4, h: 3 } }
175
+
176
+ // Cover - fill area, preserve ratio (may crop)
177
+ { sizing: { type: 'cover', w: 4, h: 3 } }
178
+
179
+ // Crop - cut specific portion
180
+ { sizing: { type: 'crop', x: 0.5, y: 0.5, w: 2, h: 2 } }
181
+ ```
182
+
183
+ ### Calculate Dimensions (preserve aspect ratio)
184
+
185
+ ```javascript
186
+ const origWidth = 1978, origHeight = 923, maxHeight = 3.0;
187
+ const calcWidth = maxHeight * (origWidth / origHeight);
188
+ const centerX = (10 - calcWidth) / 2;
189
+
190
+ slide.addImage({ path: "image.png", x: centerX, y: 1.2, w: calcWidth, h: maxHeight });
191
+ ```
192
+
193
+ ### Supported Formats
194
+
195
+ - **Standard**: PNG, JPG, GIF (animated GIFs work in Microsoft 365)
196
+ - **SVG**: Works in modern PowerPoint/Microsoft 365
197
+
198
+ ---
199
+
200
+ ## Icons
201
+
202
+ Use react-icons to generate SVG icons, then rasterize to PNG for universal compatibility.
203
+
204
+ ### Setup
205
+
206
+ ```javascript
207
+ const React = require("react");
208
+ const ReactDOMServer = require("react-dom/server");
209
+ const sharp = require("sharp");
210
+ const { FaCheckCircle, FaChartLine } = require("react-icons/fa");
211
+
212
+ function renderIconSvg(IconComponent, color = "#000000", size = 256) {
213
+ return ReactDOMServer.renderToStaticMarkup(
214
+ React.createElement(IconComponent, { color, size: String(size) })
215
+ );
216
+ }
217
+
218
+ async function iconToBase64Png(IconComponent, color, size = 256) {
219
+ const svg = renderIconSvg(IconComponent, color, size);
220
+ const pngBuffer = await sharp(Buffer.from(svg)).png().toBuffer();
221
+ return "image/png;base64," + pngBuffer.toString("base64");
222
+ }
223
+ ```
224
+
225
+ ### Add Icon to Slide
226
+
227
+ ```javascript
228
+ const iconData = await iconToBase64Png(FaCheckCircle, "#4472C4", 256);
229
+
230
+ slide.addImage({
231
+ data: iconData,
232
+ x: 1, y: 1, w: 0.5, h: 0.5 // Size in inches
233
+ });
234
+ ```
235
+
236
+ **Note**: Use size 256 or higher for crisp icons. The size parameter controls the rasterization resolution, not the display size on the slide (which is set by `w` and `h` in inches).
237
+
238
+ ### Icon Libraries
239
+
240
+ Install: `npm install -g react-icons react react-dom sharp`
241
+
242
+ Popular icon sets in react-icons:
243
+ - `react-icons/fa` - Font Awesome
244
+ - `react-icons/md` - Material Design
245
+ - `react-icons/hi` - Heroicons
246
+ - `react-icons/bi` - Bootstrap Icons
247
+
248
+ ---
249
+
250
+ ## Slide Backgrounds
251
+
252
+ ```javascript
253
+ // Solid color
254
+ slide.background = { color: "F1F1F1" };
255
+
256
+ // Color with transparency
257
+ slide.background = { color: "FF3399", transparency: 50 };
258
+
259
+ // Image from URL
260
+ slide.background = { path: "https://example.com/bg.jpg" };
261
+
262
+ // Image from base64
263
+ slide.background = { data: "image/png;base64,iVBORw0KGgo..." };
264
+ ```
265
+
266
+ ---
267
+
268
+ ## Tables
269
+
270
+ ```javascript
271
+ slide.addTable([
272
+ ["Header 1", "Header 2"],
273
+ ["Cell 1", "Cell 2"]
274
+ ], {
275
+ x: 1, y: 1, w: 8, h: 2,
276
+ border: { pt: 1, color: "999999" }, fill: { color: "F1F1F1" }
277
+ });
278
+
279
+ // Advanced with merged cells
280
+ let tableData = [
281
+ [{ text: "Header", options: { fill: { color: "6699CC" }, color: "FFFFFF", bold: true } }, "Cell"],
282
+ [{ text: "Merged", options: { colspan: 2 } }]
283
+ ];
284
+ slide.addTable(tableData, { x: 1, y: 3.5, w: 8, colW: [4, 4] });
285
+ ```
286
+
287
+ ---
288
+
289
+ ## Charts
290
+
291
+ ```javascript
292
+ // Bar chart
293
+ slide.addChart(pres.charts.BAR, [{
294
+ name: "Sales", labels: ["Q1", "Q2", "Q3", "Q4"], values: [4500, 5500, 6200, 7100]
295
+ }], {
296
+ x: 0.5, y: 0.6, w: 6, h: 3, barDir: 'col',
297
+ showTitle: true, title: 'Quarterly Sales'
298
+ });
299
+
300
+ // Line chart
301
+ slide.addChart(pres.charts.LINE, [{
302
+ name: "Temp", labels: ["Jan", "Feb", "Mar"], values: [32, 35, 42]
303
+ }], { x: 0.5, y: 4, w: 6, h: 3, lineSize: 3, lineSmooth: true });
304
+
305
+ // Pie chart
306
+ slide.addChart(pres.charts.PIE, [{
307
+ name: "Share", labels: ["A", "B", "Other"], values: [35, 45, 20]
308
+ }], { x: 7, y: 1, w: 5, h: 4, showPercent: true });
309
+ ```
310
+
311
+ ### Better-Looking Charts
312
+
313
+ Default charts look dated. Apply these options for a modern, clean appearance:
314
+
315
+ ```javascript
316
+ slide.addChart(pres.charts.BAR, chartData, {
317
+ x: 0.5, y: 1, w: 9, h: 4, barDir: "col",
318
+
319
+ // Custom colors (match your presentation palette)
320
+ chartColors: ["0D9488", "14B8A6", "5EEAD4"],
321
+
322
+ // Clean background
323
+ chartArea: { fill: { color: "FFFFFF" }, roundedCorners: true },
324
+
325
+ // Muted axis labels
326
+ catAxisLabelColor: "64748B",
327
+ valAxisLabelColor: "64748B",
328
+
329
+ // Subtle grid (value axis only)
330
+ valGridLine: { color: "E2E8F0", size: 0.5 },
331
+ catGridLine: { style: "none" },
332
+
333
+ // Data labels on bars
334
+ showValue: true,
335
+ dataLabelPosition: "outEnd",
336
+ dataLabelColor: "1E293B",
337
+
338
+ // Hide legend for single series
339
+ showLegend: false,
340
+ });
341
+ ```
342
+
343
+ **Key styling options:**
344
+ - `chartColors: [...]` - hex colors for series/segments
345
+ - `chartArea: { fill, border, roundedCorners }` - chart background
346
+ - `catGridLine/valGridLine: { color, style, size }` - grid lines (`style: "none"` to hide)
347
+ - `lineSmooth: true` - curved lines (line charts)
348
+ - `legendPos: "r"` - legend position: "b", "t", "l", "r", "tr"
349
+
350
+ ---
351
+
352
+ ## Slide Masters
353
+
354
+ ```javascript
355
+ pres.defineSlideMaster({
356
+ title: 'TITLE_SLIDE', background: { color: '283A5E' },
357
+ objects: [{
358
+ placeholder: { options: { name: 'title', type: 'title', x: 1, y: 2, w: 8, h: 2 } }
359
+ }]
360
+ });
361
+
362
+ let titleSlide = pres.addSlide({ masterName: "TITLE_SLIDE" });
363
+ titleSlide.addText("My Title", { placeholder: "title" });
364
+ ```
365
+
366
+ ---
367
+
368
+ ## Common Pitfalls
369
+
370
+ ⚠️ These issues cause file corruption, visual bugs, or broken output. Avoid them.
371
+
372
+ 1. **NEVER use "#" with hex colors** - causes file corruption
373
+ ```javascript
374
+ color: "FF0000" // ✅ CORRECT
375
+ color: "#FF0000" // ❌ WRONG
376
+ ```
377
+
378
+ 2. **NEVER encode opacity in hex color strings** - 8-char colors (e.g., `"00000020"`) corrupt the file. Use the `opacity` property instead.
379
+ ```javascript
380
+ shadow: { type: "outer", blur: 6, offset: 2, color: "00000020" } // ❌ CORRUPTS FILE
381
+ shadow: { type: "outer", blur: 6, offset: 2, color: "000000", opacity: 0.12 } // ✅ CORRECT
382
+ ```
383
+
384
+ 3. **Use `bullet: true`** - NEVER unicode symbols like "•" (creates double bullets)
385
+
386
+ 4. **Use `breakLine: true`** between array items or text runs together
387
+
388
+ 5. **Avoid `lineSpacing` with bullets** - causes excessive gaps; use `paraSpaceAfter` instead
389
+
390
+ 6. **Each presentation needs fresh instance** - don't reuse `pptxgen()` objects
391
+
392
+ 7. **NEVER reuse option objects across calls** - PptxGenJS mutates objects in-place (e.g. converting shadow values to EMU). Sharing one object between multiple calls corrupts the second shape.
393
+ ```javascript
394
+ const shadow = { type: "outer", blur: 6, offset: 2, color: "000000", opacity: 0.15 };
395
+ slide.addShape(pres.shapes.RECTANGLE, { shadow, ... }); // ❌ second call gets already-converted values
396
+ slide.addShape(pres.shapes.RECTANGLE, { shadow, ... });
397
+
398
+ const makeShadow = () => ({ type: "outer", blur: 6, offset: 2, color: "000000", opacity: 0.15 });
399
+ slide.addShape(pres.shapes.RECTANGLE, { shadow: makeShadow(), ... }); // ✅ fresh object each time
400
+ slide.addShape(pres.shapes.RECTANGLE, { shadow: makeShadow(), ... });
401
+ ```
402
+
403
+ 8. **Don't use `ROUNDED_RECTANGLE` with accent borders** - rectangular overlay bars won't cover rounded corners. Use `RECTANGLE` instead.
404
+ ```javascript
405
+ // ❌ WRONG: Accent bar doesn't cover rounded corners
406
+ slide.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 1, y: 1, w: 3, h: 1.5, fill: { color: "FFFFFF" } });
407
+ slide.addShape(pres.shapes.RECTANGLE, { x: 1, y: 1, w: 0.08, h: 1.5, fill: { color: "0891B2" } });
408
+
409
+ // ✅ CORRECT: Use RECTANGLE for clean alignment
410
+ slide.addShape(pres.shapes.RECTANGLE, { x: 1, y: 1, w: 3, h: 1.5, fill: { color: "FFFFFF" } });
411
+ slide.addShape(pres.shapes.RECTANGLE, { x: 1, y: 1, w: 0.08, h: 1.5, fill: { color: "0891B2" } });
412
+ ```
413
+
414
+ ---
415
+
416
+ ## Quick Reference
417
+
418
+ - **Shapes**: RECTANGLE, OVAL, LINE, ROUNDED_RECTANGLE
419
+ - **Charts**: BAR, LINE, PIE, DOUGHNUT, SCATTER, BUBBLE, RADAR
420
+ - **Layouts**: LAYOUT_16x9 (10"×5.625"), LAYOUT_16x10, LAYOUT_4x3, LAYOUT_WIDE
421
+ - **Alignment**: "left", "center", "right"
422
+ - **Chart data labels**: "outEnd", "inEnd", "center"