shmakk 1.1.0 → 1.2.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 (450) hide show
  1. package/README.md +16 -1
  2. package/package.json +6 -3
  3. package/scripts/import-skills.js +536 -0
  4. package/scripts/install-skills.js +64 -0
  5. package/skills/ai-elements.md +482 -0
  6. package/skills/architecture.md +151 -0
  7. package/skills/backend-adapter-aws-lambda.md +204 -0
  8. package/skills/backend-adapter-express.md +177 -0
  9. package/skills/backend-adapter-fastify.md +222 -0
  10. package/skills/backend-adapter-fetch.md +200 -0
  11. package/skills/backend-api-docs.md +22 -0
  12. package/skills/backend-aspire.md +232 -0
  13. package/skills/backend-aspnet-core.md +62 -0
  14. package/skills/backend-build-chatgpt-app.md +321 -0
  15. package/skills/backend-build-mcp-app.md +393 -0
  16. package/skills/backend-build-mcp-server.md +222 -0
  17. package/skills/backend-build-mcpb.md +200 -0
  18. package/skills/backend-building-ai-agent-on-cloudflare.md +401 -0
  19. package/skills/backend-caching.md +206 -0
  20. package/skills/backend-chatgpt-app-submission.md +157 -0
  21. package/skills/backend-chatgpt-apps.md +321 -0
  22. package/skills/backend-client-setup.md +318 -0
  23. package/skills/backend-containerize-aspnet-framework.md +455 -0
  24. package/skills/backend-create-spring-boot-java-project.md +164 -0
  25. package/skills/backend-create-spring-boot-kotlin-project.md +148 -0
  26. package/skills/backend-csharp-async.md +50 -0
  27. package/skills/backend-csharp-docs.md +63 -0
  28. package/skills/backend-csharp-mcp-server-generator.md +60 -0
  29. package/skills/backend-dotenv.md +201 -0
  30. package/skills/backend-dotenvx.md +119 -0
  31. package/skills/backend-env-vars.md +259 -0
  32. package/skills/backend-error-handling.md +254 -0
  33. package/skills/backend-fastapi.md +437 -0
  34. package/skills/backend-go-mcp-server-generator.md +335 -0
  35. package/skills/backend-java-mcp-server-generator.md +757 -0
  36. package/skills/backend-kotlin-mcp-server-generator.md +450 -0
  37. package/skills/backend-middlewares.md +243 -0
  38. package/skills/backend-multi-stage-dockerfile.md +47 -0
  39. package/skills/backend-nestjs.md +192 -0
  40. package/skills/backend-next-forge.md +375 -0
  41. package/skills/backend-nextjs.md +746 -0
  42. package/skills/backend-openapi-to-application-code.md +113 -0
  43. package/skills/backend-php-mcp-server-generator.md +523 -0
  44. package/skills/backend-python-mcp-server-generator.md +106 -0
  45. package/skills/backend-routing-middleware.md +251 -0
  46. package/skills/backend-ruby-mcp-server-generator.md +661 -0
  47. package/skills/backend-rust-mcp-server-generator.md +578 -0
  48. package/skills/backend-semantic-kernel.md +57 -0
  49. package/skills/backend-server-setup.md +379 -0
  50. package/skills/backend-server-side-calls.md +250 -0
  51. package/skills/backend-subscriptions.md +407 -0
  52. package/skills/backend-swift-mcp-server-generator.md +670 -0
  53. package/skills/backend-trpc-router.md +152 -0
  54. package/skills/backend-typescript-mcp-server-generator.md +91 -0
  55. package/skills/backend-validators.md +229 -0
  56. package/skills/backend.md +76 -0
  57. package/skills/backup.md +165 -0
  58. package/skills/budget.md +140 -0
  59. package/skills/business-gtm-0-to-1-launch.md +322 -0
  60. package/skills/business-gtm-operating-cadence.md +421 -0
  61. package/skills/business-gtm-positioning-strategy.md +439 -0
  62. package/skills/business-gtm-product-led-growth.md +340 -0
  63. package/skills/calendar.md +95 -0
  64. package/skills/code-review.md +130 -0
  65. package/skills/compliance.md +168 -0
  66. package/skills/contracts.md +130 -0
  67. package/skills/daily-job-run.md +46 -0
  68. package/skills/daily-webdesign.md +187 -0
  69. package/skills/database-bigquery-pipeline-audit.md +130 -0
  70. package/skills/database-cosmosdb-datamodeling.md +1046 -0
  71. package/skills/database-durable-objects.md +187 -0
  72. package/skills/database-ef-core.md +76 -0
  73. package/skills/database-fabric-lakehouse.md +107 -0
  74. package/skills/database-neon-postgres-egress-optimizer.md +213 -0
  75. package/skills/database-neon-postgres.md +218 -0
  76. package/skills/database-postgresql-code-review.md +213 -0
  77. package/skills/database-postgresql-optimization.md +405 -0
  78. package/skills/database-sql-code-review.md +302 -0
  79. package/skills/database-sql-optimization.md +297 -0
  80. package/skills/dependency-audit.md +165 -0
  81. package/skills/design-kami-landing.md +234 -0
  82. package/skills/design.md +221 -0
  83. package/skills/dev-acquire-codebase-knowledge.md +175 -0
  84. package/skills/dev-add-educational-comments.md +129 -0
  85. package/skills/dev-add-model-descriptions.md +74 -0
  86. package/skills/dev-adr-review.md +56 -0
  87. package/skills/dev-boost-prompt.md +26 -0
  88. package/skills/dev-build-run-debug.md +130 -0
  89. package/skills/dev-chunk.md +49 -0
  90. package/skills/dev-claude-md-improver.md +180 -0
  91. package/skills/dev-code-exemplars-blueprint-generator.md +127 -0
  92. package/skills/dev-code-tour.md +434 -0
  93. package/skills/dev-comment-code-generate-a-tutorial.md +27 -0
  94. package/skills/dev-commit.md +81 -0
  95. package/skills/dev-context-map.md +53 -0
  96. package/skills/dev-conventional-commit.md +73 -0
  97. package/skills/dev-create-architectural-decision-record.md +98 -0
  98. package/skills/dev-create-draft-pr.md +17 -0
  99. package/skills/dev-create-pr.md +17 -0
  100. package/skills/dev-create-readme.md +22 -0
  101. package/skills/dev-csharp-mstest.md +479 -0
  102. package/skills/dev-csharp-nunit.md +72 -0
  103. package/skills/dev-csharp-tunit.md +101 -0
  104. package/skills/dev-csharp-xunit.md +69 -0
  105. package/skills/dev-debug-failing-test.md +90 -0
  106. package/skills/dev-diff-analyze.md +32 -0
  107. package/skills/dev-diffs.md +24 -0
  108. package/skills/dev-dotnet-best-practices.md +86 -0
  109. package/skills/dev-dotnet-design-pattern-review.md +43 -0
  110. package/skills/dev-dotnet-timezone.md +110 -0
  111. package/skills/dev-dotnet-upgrade.md +117 -0
  112. package/skills/dev-doublecheck.md +278 -0
  113. package/skills/dev-explain-error.md +15 -0
  114. package/skills/dev-finding-discovery.md +164 -0
  115. package/skills/dev-fix-finding.md +111 -0
  116. package/skills/dev-full-file-edit.md +25 -0
  117. package/skills/dev-git-commit.md +125 -0
  118. package/skills/dev-git-flow-branch-creator.md +293 -0
  119. package/skills/dev-git-workflow.md +46 -0
  120. package/skills/dev-github-automation.md +64 -0
  121. package/skills/dev-github-code-review.md +1140 -0
  122. package/skills/dev-github-issues.md +202 -0
  123. package/skills/dev-gpt-5-4-prompting.md +55 -0
  124. package/skills/dev-investigation-mode.md +277 -0
  125. package/skills/dev-java-add-graalvm-native-image-support.md +450 -0
  126. package/skills/dev-java-docs.md +24 -0
  127. package/skills/dev-java-refactoring-extract-method.md +105 -0
  128. package/skills/dev-java-refactoring-remove-parameter.md +85 -0
  129. package/skills/dev-merge.md +73 -0
  130. package/skills/dev-migrate-create.md +36 -0
  131. package/skills/dev-migrate-validate.md +36 -0
  132. package/skills/dev-my-issues.md +9 -0
  133. package/skills/dev-my-pull-requests.md +15 -0
  134. package/skills/dev-planning-oracle-to-postgres-migration-integration-testing.md +45 -0
  135. package/skills/dev-playwright-generate-test.md +18 -0
  136. package/skills/dev-playwright.md +148 -0
  137. package/skills/dev-prompt-builder.md +142 -0
  138. package/skills/dev-pytest-coverage.md +29 -0
  139. package/skills/dev-python-manager-discovery.md +330 -0
  140. package/skills/dev-python-pypi-package-builder.md +445 -0
  141. package/skills/dev-readme-blueprint-generator.md +79 -0
  142. package/skills/dev-refactor-method-complexity-reduce.md +99 -0
  143. package/skills/dev-refactor-plan.md +66 -0
  144. package/skills/dev-refactor.md +646 -0
  145. package/skills/dev-review-and-refactor.md +16 -0
  146. package/skills/dev-reviewing-oracle-to-postgres-migration.md +68 -0
  147. package/skills/dev-ruff-recursive-fix.md +201 -0
  148. package/skills/dev-run-e2e-tests.md +126 -0
  149. package/skills/dev-run-pre-commit-checks.md +133 -0
  150. package/skills/dev-run-smoke-tests.md +127 -0
  151. package/skills/dev-scaffolding-oracle-to-postgres-migration-test-project.md +55 -0
  152. package/skills/dev-spring-boot-testing.md +190 -0
  153. package/skills/dev-sync-upstream.md +32 -0
  154. package/skills/dev-sync.md +74 -0
  155. package/skills/dev-tdd-workflow.md +23 -0
  156. package/skills/dev-terraform-azurerm-set-diff-analyzer.md +49 -0
  157. package/skills/dev-test-driven-development.md +372 -0
  158. package/skills/dev-test-gaps.md +18 -0
  159. package/skills/dev-test-triage.md +55 -0
  160. package/skills/dev-typer.md +267 -0
  161. package/skills/dev-typescript-setup.md +25 -0
  162. package/skills/dev-unified-diff-edit.md +16 -0
  163. package/skills/dev-unit-test-vue-pinia.md +198 -0
  164. package/skills/dev-using-git-worktrees.md +216 -0
  165. package/skills/dev-validation.md +99 -0
  166. package/skills/dev-verification.md +168 -0
  167. package/skills/dev-webapp-testing.md +134 -0
  168. package/skills/dev-write-coding-standards-from-file.md +317 -0
  169. package/skills/dev-write-tests.md +16 -0
  170. package/skills/devops-appinsights-instrumentation.md +49 -0
  171. package/skills/devops-az-cost-optimize.md +306 -0
  172. package/skills/devops-chronicle.md +154 -0
  173. package/skills/devops-deployments-cicd.md +331 -0
  174. package/skills/devops-devops-rollout-plan.md +118 -0
  175. package/skills/devops-geistdocs.md +276 -0
  176. package/skills/devops-observability.md +774 -0
  177. package/skills/devops-observe-metrics.md +35 -0
  178. package/skills/devops-observe-trace.md +30 -0
  179. package/skills/devops-phoenix-cli.md +163 -0
  180. package/skills/devops-phoenix-tracing.md +140 -0
  181. package/skills/devops-publish-to-pages.md +108 -0
  182. package/skills/devops-telemetry.md +87 -0
  183. package/skills/devops-update-avm-modules-in-bicep.md +61 -0
  184. package/skills/devops.md +81 -0
  185. package/skills/diagrams-canvas.md +204 -0
  186. package/skills/diagrams-draw-io-diagram-generator.md +463 -0
  187. package/skills/diagrams-excalidraw-diagram-generator.md +614 -0
  188. package/skills/diagrams-graphify.md +1277 -0
  189. package/skills/docs-bear-notes.md +108 -0
  190. package/skills/docs-create-llms.md +211 -0
  191. package/skills/docs-doc-gen.md +20 -0
  192. package/skills/docs-documentation-writer.md +46 -0
  193. package/skills/docs-llm-config.md +33 -0
  194. package/skills/docs-mkdocs-translations.md +109 -0
  195. package/skills/docs-obsidian-vault-maintainer.md +14 -0
  196. package/skills/docs-obsidian.md +82 -0
  197. package/skills/docs-prose.md +324 -0
  198. package/skills/docs-update-llms.md +217 -0
  199. package/skills/docs-update-markdown-file-index.md +77 -0
  200. package/skills/docs-wiki-maintainer.md +20 -0
  201. package/skills/documents.md +120 -0
  202. package/skills/email.md +113 -0
  203. package/skills/expenses.md +140 -0
  204. package/skills/file-ops.md +149 -0
  205. package/skills/files-convert-plaintext-to-md.md +363 -0
  206. package/skills/files-doc.md +81 -0
  207. package/skills/files-docx.md +594 -0
  208. package/skills/files-markdown-to-html.md +917 -0
  209. package/skills/files-nano-pdf.md +39 -0
  210. package/skills/files-pdf.md +315 -0
  211. package/skills/files-pdftk-server.md +163 -0
  212. package/skills/files-pptx-html-fidelity-audit.md +255 -0
  213. package/skills/files-pptx.md +231 -0
  214. package/skills/files-xlsx.md +301 -0
  215. package/skills/find-jobs.md +78 -0
  216. package/skills/format-conversion.md +157 -0
  217. package/skills/frontend-ai-elements.md +483 -0
  218. package/skills/frontend-ai-gateway.md +563 -0
  219. package/skills/frontend-ai-generation-persistence.md +242 -0
  220. package/skills/frontend-ai-sdk.md +799 -0
  221. package/skills/frontend-ai-visibility.md +127 -0
  222. package/skills/frontend-angular-developer.md +130 -0
  223. package/skills/frontend-aspnet-minimal-api-openapi.md +42 -0
  224. package/skills/frontend-bencium-innovative-ux-designer.md +719 -0
  225. package/skills/frontend-chat-sdk.md +666 -0
  226. package/skills/frontend-chrome-devtools.md +98 -0
  227. package/skills/frontend-frontend-app-builder.md +186 -0
  228. package/skills/frontend-frontend-design.md +43 -0
  229. package/skills/frontend-frontend-testing-debugging.md +143 -0
  230. package/skills/frontend-gsap-framer-scroll-animation.md +152 -0
  231. package/skills/frontend-internal-linking.md +109 -0
  232. package/skills/frontend-json-render.md +335 -0
  233. package/skills/frontend-keyword-clustering.md +118 -0
  234. package/skills/frontend-next-intl-add-language.md +20 -0
  235. package/skills/frontend-on-page-seo.md +112 -0
  236. package/skills/frontend-premium-frontend-ui.md +114 -0
  237. package/skills/frontend-react-best-practices.md +143 -0
  238. package/skills/frontend-schema-markup.md +160 -0
  239. package/skills/frontend-seo-audit.md +110 -0
  240. package/skills/frontend-swr.md +215 -0
  241. package/skills/frontend-technical-seo.md +162 -0
  242. package/skills/frontend-use-dom.md +418 -0
  243. package/skills/frontend-web-coder.md +564 -0
  244. package/skills/frontend-web-design-reviewer.md +369 -0
  245. package/skills/frontend-web-perf.md +202 -0
  246. package/skills/frontend.md +125 -0
  247. package/skills/general-adapter-standalone.md +199 -0
  248. package/skills/general-auth.md +356 -0
  249. package/skills/general-containerize-aspnetcore.md +393 -0
  250. package/skills/general-create-technical-spike.md +231 -0
  251. package/skills/general-cron-jobs.md +72 -0
  252. package/skills/general-ddd-aggregate.md +52 -0
  253. package/skills/general-ddd-context.md +46 -0
  254. package/skills/general-ddd-validate.md +51 -0
  255. package/skills/general-dependency-check.md +26 -0
  256. package/skills/general-email-marketing.md +86 -0
  257. package/skills/general-healthcheck.md +246 -0
  258. package/skills/general-import-infrastructure-as-code.md +368 -0
  259. package/skills/general-init.md +49 -0
  260. package/skills/general-java-junit.md +64 -0
  261. package/skills/general-java-springboot.md +66 -0
  262. package/skills/general-javascript-typescript-jest.md +45 -0
  263. package/skills/general-kotlin-springboot.md +71 -0
  264. package/skills/general-make-repo-contribution.md +91 -0
  265. package/skills/general-market-research.md +78 -0
  266. package/skills/general-marketplace.md +468 -0
  267. package/skills/general-model-recommendation.md +673 -0
  268. package/skills/general-payments.md +352 -0
  269. package/skills/general-quality-playbook.md +480 -0
  270. package/skills/general-run-integration-tests.md +113 -0
  271. package/skills/general-superjson.md +274 -0
  272. package/skills/general-swiftpm-macos.md +51 -0
  273. package/skills/general-threat-model.md +61 -0
  274. package/skills/invoices.md +167 -0
  275. package/skills/licenses.md +159 -0
  276. package/skills/logs.md +156 -0
  277. package/skills/marketing.md +139 -0
  278. package/skills/media-image-manipulation-image-magick.md +253 -0
  279. package/skills/media-imagegen.md +357 -0
  280. package/skills/media-openai-whisper-api.md +63 -0
  281. package/skills/media-openai-whisper.md +39 -0
  282. package/skills/media-peekaboo.md +191 -0
  283. package/skills/media-screenshot.md +268 -0
  284. package/skills/media-speech.md +145 -0
  285. package/skills/media-transcribe.md +82 -0
  286. package/skills/media-video-frames.md +47 -0
  287. package/skills/mobile-android-emulator-qa.md +81 -0
  288. package/skills/mobile-android-performance.md +280 -0
  289. package/skills/mobile-building-mcp-server-on-cloudflare.md +267 -0
  290. package/skills/mobile-building-native-ui.md +322 -0
  291. package/skills/mobile-expo-api-routes.md +369 -0
  292. package/skills/mobile-expo-cicd-workflows.md +92 -0
  293. package/skills/mobile-expo-deployment.md +191 -0
  294. package/skills/mobile-expo-dev-client.md +165 -0
  295. package/skills/mobile-expo-module.md +177 -0
  296. package/skills/mobile-expo-tailwind-setup.md +481 -0
  297. package/skills/mobile-expo-ui-jetpack-compose.md +41 -0
  298. package/skills/mobile-expo-ui-swift-ui.md +40 -0
  299. package/skills/mobile-ios-app-intents.md +78 -0
  300. package/skills/mobile-ios-debugger-agent.md +52 -0
  301. package/skills/mobile-ios-ettrace-performance.md +198 -0
  302. package/skills/mobile-ios-memgraph-leaks.md +77 -0
  303. package/skills/mobile-native-data-fetching.md +508 -0
  304. package/skills/mobile-packaging-notarization.md +48 -0
  305. package/skills/mobile-react-native-architecture.md +672 -0
  306. package/skills/mobile-react-native-mobile-design.md +438 -0
  307. package/skills/mobile-signing-entitlements.md +59 -0
  308. package/skills/mobile-swiftui-liquid-glass.md +91 -0
  309. package/skills/mobile-swiftui-patterns.md +210 -0
  310. package/skills/mobile-swiftui-performance-audit.md +108 -0
  311. package/skills/mobile-swiftui-ui-patterns.md +97 -0
  312. package/skills/mobile-swiftui-view-refactor.md +204 -0
  313. package/skills/mobile-upgrading-expo.md +134 -0
  314. package/skills/mobile.md +183 -0
  315. package/skills/notes.md +106 -0
  316. package/skills/planning-adr-create.md +62 -0
  317. package/skills/planning-adr-index.md +67 -0
  318. package/skills/planning-architecture-blueprint-generator.md +323 -0
  319. package/skills/planning-brainstorming.md +165 -0
  320. package/skills/planning-breakdown-epic-arch.md +67 -0
  321. package/skills/planning-breakdown-epic-pm.md +59 -0
  322. package/skills/planning-breakdown-feature-implementation.md +129 -0
  323. package/skills/planning-breakdown-feature-prd.md +62 -0
  324. package/skills/planning-breakdown-plan.md +510 -0
  325. package/skills/planning-breakdown-test.md +366 -0
  326. package/skills/planning-cloud-design-patterns.md +63 -0
  327. package/skills/planning-content-brief.md +128 -0
  328. package/skills/planning-content-strategy.md +138 -0
  329. package/skills/planning-content-translation.md +143 -0
  330. package/skills/planning-create-github-action-workflow-specification.md +277 -0
  331. package/skills/planning-create-github-issues-feature-from-implementation-plan.md +29 -0
  332. package/skills/planning-create-github-issues-for-unmet-specification-requirements.md +36 -0
  333. package/skills/planning-create-github-pull-request-from-specification.md +25 -0
  334. package/skills/planning-create-implementation-plan.md +158 -0
  335. package/skills/planning-create-specification.md +128 -0
  336. package/skills/planning-first-ask.md +31 -0
  337. package/skills/planning-folder-structure-blueprint-generator.md +406 -0
  338. package/skills/planning-gen-specs-as-issues.md +166 -0
  339. package/skills/planning-generate-snapshot.md +144 -0
  340. package/skills/planning-generate-status-report.md +336 -0
  341. package/skills/planning-metric-pack-designer.md +27 -0
  342. package/skills/planning-pm-spec.md +53 -0
  343. package/skills/planning-prd.md +144 -0
  344. package/skills/planning-project-assessment.md +182 -0
  345. package/skills/planning-project-setup-info-local.md +128 -0
  346. package/skills/planning-project-workflow-analysis-blueprint-generator.md +294 -0
  347. package/skills/planning-service-oriented-architecture.md +248 -0
  348. package/skills/planning-spec-to-backlog.md +544 -0
  349. package/skills/planning-technology-stack-blueprint-generator.md +243 -0
  350. package/skills/planning-update-implementation-plan.md +158 -0
  351. package/skills/planning-update-specification.md +128 -0
  352. package/skills/planning-what-context-needed.md +40 -0
  353. package/skills/planning-writing-plans.md +153 -0
  354. package/skills/prepare-application.md +81 -0
  355. package/skills/productivity-apple-notes.md +78 -0
  356. package/skills/productivity-apple-reminders.md +119 -0
  357. package/skills/productivity-capture-tasks-from-meeting-notes.md +680 -0
  358. package/skills/productivity-daily-prep.md +156 -0
  359. package/skills/productivity-email-drafter.md +101 -0
  360. package/skills/productivity-hr-onboarding.md +53 -0
  361. package/skills/productivity-things-mac.md +87 -0
  362. package/skills/productivity-update.md +169 -0
  363. package/skills/reminders.md +109 -0
  364. package/skills/research-dossier-collect.md +71 -0
  365. package/skills/research-kg-extract.md +37 -0
  366. package/skills/research-openai-docs.md +89 -0
  367. package/skills/research-research-add-items.md +31 -0
  368. package/skills/research-research-report.md +94 -0
  369. package/skills/research-research-synthesize.md +63 -0
  370. package/skills/research-summarize.md +88 -0
  371. package/skills/research-transformers-js.md +635 -0
  372. package/skills/research.md +119 -0
  373. package/skills/security-ai-prompt-engineering-safety-review.md +231 -0
  374. package/skills/security-attack-path-analysis.md +182 -0
  375. package/skills/security-gdpr-compliant.md +284 -0
  376. package/skills/security-mcp-security-audit.md +279 -0
  377. package/skills/security-pii-detect.md +31 -0
  378. package/skills/security-secret-scanning.md +243 -0
  379. package/skills/security-security-best-practices.md +87 -0
  380. package/skills/security-security-ownership-map.md +207 -0
  381. package/skills/security-security-review.md +169 -0
  382. package/skills/security-security-scan.md +138 -0
  383. package/skills/security-security-threat-model.md +82 -0
  384. package/skills/security-threat-model-analyst.md +76 -0
  385. package/skills/sysmon.md +181 -0
  386. package/skills/system-arch-linux-triage.md +32 -0
  387. package/skills/system-centos-linux-triage.md +32 -0
  388. package/skills/system-debian-linux-triage.md +32 -0
  389. package/skills/system-fedora-linux-triage.md +32 -0
  390. package/skills/system-geofeed-tuner.md +865 -0
  391. package/skills/system-iot-anomalies.md +15 -0
  392. package/skills/system-iot-firmware.md +16 -0
  393. package/skills/system-iot-fleet.md +14 -0
  394. package/skills/system-iot-register.md +19 -0
  395. package/skills/system-iot-witness-verify.md +15 -0
  396. package/skills/system-tmux.md +171 -0
  397. package/skills/system-window-management.md +228 -0
  398. package/skills/task-management.md +90 -0
  399. package/skills/tasks.md +102 -0
  400. package/skills/test-coverage.md +188 -0
  401. package/skills/ux-ui.md +128 -0
  402. package/skills/web.md +186 -0
  403. package/skills/workflow-act-on-feedback.md +15 -0
  404. package/skills/workflow-automate-this.md +245 -0
  405. package/skills/workflow-autoresearch.md +276 -0
  406. package/skills/workflow-coding-agent.md +317 -0
  407. package/skills/workflow-deep-research.md +44 -0
  408. package/skills/workflow-dispatching-parallel-agents.md +183 -0
  409. package/skills/workflow-eval-driven-dev.md +148 -0
  410. package/skills/workflow-executing-plans.md +71 -0
  411. package/skills/workflow-mentoring-juniors.md +311 -0
  412. package/skills/workflow-receiving-code-review.md +214 -0
  413. package/skills/workflow-repo-story-time.md +155 -0
  414. package/skills/workflow-requesting-code-review.md +104 -0
  415. package/skills/workflow-session-report.md +43 -0
  416. package/skills/workflow-structured-autonomy-generate.md +126 -0
  417. package/skills/workflow-subagent-driven-development.md +280 -0
  418. package/skills/writing.md +106 -0
  419. package/src/agent.js +0 -0
  420. package/src/browser.js +297 -0
  421. package/src/cli.js +25 -4
  422. package/src/code-reviewer.js +119 -0
  423. package/src/completions.js +1 -1
  424. package/src/control.js +222 -30
  425. package/src/coordinator.js +303 -0
  426. package/src/correction.js +29 -8
  427. package/src/edit-tracker.js +21 -0
  428. package/src/edit-viewer.js +414 -0
  429. package/src/endpoints.js +64 -15
  430. package/src/index.js +45 -11
  431. package/src/llm.js +86 -2
  432. package/src/mcp-client.js +416 -0
  433. package/src/memory.js +182 -0
  434. package/src/planner.js +216 -0
  435. package/src/rules.js +90 -0
  436. package/src/self-commands.js +757 -0
  437. package/src/services/voice.js +10 -7
  438. package/src/session-search.js +427 -0
  439. package/src/session.js +487 -99
  440. package/src/shmakk-server.js +91 -0
  441. package/src/skills.js +410 -3
  442. package/src/subagent.js +4 -1
  443. package/src/system-prompt.js +13 -5
  444. package/src/task-file.js +114 -0
  445. package/src/taskClassifier.js +246 -0
  446. package/src/team.js +752 -0
  447. package/src/tools.js +142 -21
  448. package/src/web.js +35 -5
  449. package/src/workflows.js +261 -0
  450. package/src/workspace-index.js +25 -6
@@ -0,0 +1,255 @@
1
+ ---
2
+ name: pptx-html-fidelity-audit
3
+ description: Audit a python-pptx export against its source HTML deck, identify layout/content drift (footer overflow, cropped content, missing italic/em, lost styling, off-rhythm spacing), and re-export with strict footer-rail + cursor-flow layout discipline. Use this skill whenever the user has a .pptx that was generated from an HTML slide deck and asks to compare/audit/verify/fix the export — including phrases like "compare ppt with html", "fidelity audit", "fix the pptx", "ppt is cut off", "footer overlap", "italic missing in pptx", "re-export the deck", "pptx-html-fidelity-audit", or any case where a python-pptx → HTML round-trip needs verification or repair. Also trigger when the user shows you a deck.html and a deck.pptx side by side and is debugging visual differences.
4
+ triggers:
5
+ - "pptx fidelity"
6
+ - "pptx audit"
7
+ - "ppt 跑掉"
8
+ - "字型不對"
9
+ - "footer overlap"
10
+ - "verify pptx"
11
+ - "html to pptx"
12
+ od:
13
+ mode: utility
14
+ scenario: engineering
15
+ category: files
16
+ ---
17
+
18
+ # PPTX ↔ HTML Fidelity Audit
19
+
20
+ A repeatable workflow for catching the ways a `python-pptx` export silently drifts from its HTML source — and fixing them with a layout discipline that prevents the same regressions on the next pass.
21
+
22
+ ## When this skill applies
23
+
24
+ The user has:
25
+
26
+ - A source HTML slide deck (typically a single-file deck with `<section class="slide">` blocks):
27
+
28
+ ```html
29
+ <section class="slide light">
30
+ <div class="chrome">2026 · Q2 review</div>
31
+ <span class="kicker">Pillar 03</span>
32
+ <h2 class="h-xl">Shipping <em>velocity</em> doubled</h2>
33
+ <p class="lead">…</p>
34
+ <div class="foot">page 5 / 14</div>
35
+ </section>
36
+ ```
37
+
38
+ - A PPTX file generated from that deck via python-pptx (or similar).
39
+ - A suspicion (or visible evidence) that the PPTX doesn't match the HTML — text bleeding into the footer, italic words gone flat, hero slides not centered, sections cropped, tag styling lost.
40
+
41
+ If the user only has *one* of those two artifacts, this skill doesn't apply yet — first generate the missing one, or ask the user to provide it.
42
+
43
+ ## Why this is hard (and why a skill helps)
44
+
45
+ PPTX is a fixed-canvas, absolute-positioned medium. HTML is a fluid, flow-based medium. A naive python-pptx export pins each block at hand-picked `(top, left)` coordinates, which works for the *first slide it was tested on* and silently fails for every other slide whose content has different intrinsic height. The result is the most common drift modes:
46
+
47
+ 1. **Footer overflow** — content's `top + height` crosses into the footer row.
48
+ 2. **Off-canvas content** — bottom of last block exceeds `7.5"` (16:9 canvas).
49
+ 3. **Italic loss** — `<em>` in HTML never gets `run.font.italic = True`.
50
+ 4. **Hero slides not centered** — vertical-stack slides use `MARGIN_TOP` instead of computing center.
51
+ 5. **Box bounds intruding** — the text fits, but the *shape's bounding box* is oversized and visually crosses the rail.
52
+ 6. **Tag/styling loss** — colored chrome rows, kicker uppercase tracking, mono-vs-serif assignments quietly fall back to defaults.
53
+
54
+ Every one of these is a *layout discipline* problem, not a content problem. Once you adopt the discipline, they stop happening.
55
+
56
+ ---
57
+
58
+ ## Workflow
59
+
60
+ The audit is five steps. Don't skip any of them — the discipline only works if the audit produces a real list of issues to drive the re-export. A fix-without-audit pass tends to leave half the issues alive.
61
+
62
+ ### Step 1 — Extract ground truth from the PPTX
63
+
64
+ Run `scripts/extract_pptx.py <path-to.pptx> > pptx_dump.json`. The script walks every shape on every slide and dumps text, position (`top` / `left`), size (`width` / `height`), and per-run typography (font name, size pt, bold, italic, color). This is the *actual* state of the export — don't trust the export script's intent, trust the dump.
65
+
66
+ For 14-slide decks, the dump is ~30–60 KB and human-readable.
67
+
68
+ ### Step 2 — Walk the HTML structure
69
+
70
+ Read the source HTML and enumerate `<section class="slide">` blocks. For each, note:
71
+
72
+ - The slide's theme (`light` / `dark` / `hero light` / `hero dark`).
73
+ - The `chrome` row text (top metadata).
74
+ - The `kicker` (small uppercase eyebrow above the headline).
75
+ - The headline (h-hero / h-xl / etc.) and any sub-head.
76
+ - The body copy and any structured blocks (pipeline steps, cards, pillars, observation cards).
77
+ - The `foot` row (bottom metadata).
78
+ - Any `<em>` or italic-styled spans — italic is the silent regression.
79
+
80
+ Map each HTML slide to a PPTX slide index. For decks following the convention "slide 1 = cover, slide N = closing", the mapping is positional.
81
+
82
+ ### Step 3 — Build the audit table
83
+
84
+ For each slide, walk shapes from the dump and check against expected layout rules. Use this exact table format — the severity column is what drives the fix priority:
85
+
86
+ ```
87
+ | Slide | Issue | Severity |
88
+ |---|---|---|
89
+ | 1 cover | meta-row 底端 6.95" 蓋過 footer (6.7") | 🔴 |
90
+ | 5 checklist | row B 步驟描述底端 7.2" 切到 footer | 🔴 |
91
+ | 8 3E | 收束段落直接坐在 footer 起點 | 🔴 |
92
+ | 9 on-day | step 描述底端剛好碰 footer,無安全距 | 🟠 |
93
+ | 多處 | em (Playfair italic) 未保留 | 🟡 |
94
+ ```
95
+
96
+ Severity rubric:
97
+
98
+ - 🔴 **critical** — content cropped, text invisible, footer overlap, off-canvas. Must fix.
99
+ - 🟠 **high** — content visible but visual hierarchy broken, no breathing room, hero not centered. Should fix.
100
+ - 🟡 **medium** — italic/em missing, font fallback wrong, color drift. Fix in this pass.
101
+ - 🟢 **low** — minor spacing/alignment, sub-pixel offsets. Note but don't block.
102
+
103
+ After the table, write a short root-cause section: 90 % of the issues usually come from 2–3 systemic causes (e.g. "no footer rail enforced", "hero stacks pinned to MARGIN_TOP instead of centered", "italic never propagated"). Naming the systemic causes makes the re-export script much smaller and more correct.
104
+
105
+ ### Step 4 — Re-export with footer-rail + cursor-flow layout discipline
106
+
107
+ This is the load-bearing technique. See `references/layout-discipline.md` for the full rules; the summary:
108
+
109
+ **Define the rails up front, once, for the whole deck:**
110
+
111
+ ```python
112
+ from pptx.util import Inches
113
+
114
+ CANVAS_W = Inches(13.333) # 16:9
115
+ CANVAS_H = Inches(7.5)
116
+ MARGIN_X = Inches(0.6)
117
+ MARGIN_TOP = Inches(0.5)
118
+ CONTENT_MAX_Y = Inches(6.70) # NOTHING in content area may cross this
119
+ FOOTER_TOP = Inches(6.85) # footer row pinned here, edge-to-edge
120
+ ```
121
+
122
+ > **Customizing the rails.** The defaults above suit a 16:9 canvas with a slim footer. If your design system uses a wider footer or a 4:3 canvas, override these constants in your export script and pass the same values to `verify_layout.py` via `--content-max-y` / `--canvas-h` / `--canvas-w`. See `references/layout-discipline.md` §1 for the full constant table.
123
+
124
+
125
+ **Use a cursor for content blocks instead of pinning each block at an absolute y:**
126
+
127
+ ```python
128
+ class Cursor:
129
+ """Advances down the slide; refuses to cross the footer rail."""
130
+ def __init__(self, y_start, cap=CONTENT_MAX_Y):
131
+ self.y = y_start
132
+ self.cap = cap
133
+ def take(self, h, gap=Inches(0.12)): # ~1 line of whitespace at 14pt; tighten/loosen per design system
134
+ top = self.y
135
+ self.y = top + h + gap
136
+ if self.y > self.cap:
137
+ raise OverflowError(
138
+ f"cursor at {self.y} exceeds footer rail {self.cap}; "
139
+ f"reduce block height or split slide"
140
+ )
141
+ return top
142
+ ```
143
+
144
+ For each slide, instantiate `Cursor(MARGIN_TOP)` and `take(height)` each block in reading order. The slide refuses to render if any block would cross the rail, so overflows become loud build errors instead of silent visual bugs.
145
+
146
+ **Hero (vertically-centered) slides use a budget instead of a cursor:**
147
+
148
+ ```python
149
+ def hero_layout(blocks):
150
+ """blocks = list of (height, gap_after) tuples in reading order."""
151
+ total = sum(h + g for h, g in blocks)
152
+ y_start = (CANVAS_H - total) / 2
153
+ return Cursor(y_start)
154
+ ```
155
+
156
+ That single change kills "hero slide content sticks to top" — the most common hero defect.
157
+
158
+ **Tighten box height to fit text + minimal padding.** PowerPoint reveals shape bounds when they overlap (selection halos, Z-order conflicts), and an oversized box can visually cross the footer rail even when the text inside doesn't. Compute box height from text metrics + ~0.05" pad, not from generous wrappers.
159
+
160
+ **Preserve italic / em explicitly:**
161
+
162
+ ```python
163
+ def add_run(p, text, font, size_pt, italic=False, bold=False, color=None):
164
+ r = p.add_run()
165
+ r.text = text
166
+ r.font.name = font
167
+ r.font.size = Pt(size_pt)
168
+ r.font.italic = italic
169
+ r.font.bold = bold
170
+ if color:
171
+ r.font.color.rgb = color
172
+ return r
173
+ ```
174
+
175
+ When walking HTML, detect `<em>` / `<i>` / inline style `font-style: italic` and pass `italic=True`. Use the EN serif face (Playfair Display, Source Serif, or fallback Georgia) for italic display copy — the CJK serif typically has no italic and looks broken if you try to italicize it.
176
+
177
+ For deeper font issues that the layout rails can't catch — variable-font traps where PowerPoint silently swaps to Calibri / Microsoft JhengHei, missing `<a:ea>` slot causing CJK runs to fall back, fake-italic on Han characters — read `references/font-discipline.md`. The five layers there cover everything `verify_layout.py` can't see.
178
+
179
+ ### Step 5 — Verify post-export
180
+
181
+ After writing the new `.pptx`, run `scripts/verify_layout.py <path-to.pptx>`. The script:
182
+
183
+ - Walks every shape on every slide.
184
+ - Asserts `top + height ≤ CONTENT_MAX_Y` for content shapes (footer/page-number shapes are allowed below the rail).
185
+ - Asserts `top + height ≤ CANVAS_H` for all shapes (no off-canvas).
186
+ - Asserts `left + width ≤ CANVAS_W` and `left ≥ 0`.
187
+ - Reports violations as a single block: slide index, shape name, observed bottom, rail.
188
+
189
+ Zero violations is the gate for "this re-export is shippable". Don't claim the audit is fixed without running the verifier — the human eye misses 1–2 mm overflow at zoom-out, the script doesn't.
190
+
191
+ ---
192
+
193
+ ## Output to the user
194
+
195
+ After Step 5 passes, report:
196
+
197
+ 1. **Audit table** — the table from Step 3.
198
+ 2. **Root causes** — 1-paragraph systemic explanation.
199
+ 3. **Fix list** — terse list of what was changed and why (e.g. "hero slides switched to budget centering", "all content blocks routed through Cursor", "em runs explicitly italic").
200
+ 4. **Verification** — "0 rail violations across N slides, file size X KB".
201
+ 5. **Path** — absolute path to the re-exported `.pptx`.
202
+
203
+ The user is reading for two reasons: confirming the visible bugs are fixed, and trusting the systemic fix is right. Cover both.
204
+
205
+ ---
206
+
207
+ ## Bundled resources
208
+
209
+ - `scripts/extract_pptx.py` — dump every shape on every slide as JSON. Run before the audit. **Important:** also run on the *original* export to compare, and on the *re-exported* one to confirm.
210
+ - `scripts/verify_layout.py` — post-export rail checker. Returns nonzero exit code on violations so it slots into a CI pipeline if needed.
211
+ - `references/layout-discipline.md` — the full footer-rail + cursor-flow rule set with code snippets for each common slide type (hero, content, pipeline, two-column, observation grid).
212
+ - `references/font-discipline.md` — five-layer font audit: mapping, presence, variable-vs-static traps, the three XML language slots (`latin` / `ea` / `cs`), CJK + Latin italic interaction.
213
+ - `references/audit-table-template.md` — copy-pasteable table template with severity legend.
214
+
215
+ Read the references when:
216
+
217
+ - The deck has slide types beyond what the SKILL.md covers (multi-column dashboards, embedded images, charts) → `layout-discipline.md`.
218
+ - The audit shows 🟡 typography issues — italic missing, CJK falling back, unexpected `Calibri` / `Microsoft JhengHei` in the XML → `font-discipline.md`.
219
+ - You want to drop the audit table directly into a report or markdown deliverable → `audit-table-template.md`.
220
+
221
+ ---
222
+
223
+ ## Anti-patterns to avoid
224
+
225
+ - **Patching individual slides without naming the systemic cause.** If you fix slide 5 by lowering its block by 0.2", you'll be back fixing slide 9, 11, and 14 next. Find the rule that produced all four problems.
226
+ - **Trusting the original export script's intent.** Always run the extractor against the actual file. Drift between intent and reality is the bug.
227
+ - **Skipping verification because "it looked fine in PowerPoint preview".** Preview anti-aliasing hides 1–2 mm overflows. The script doesn't.
228
+ - **Italicizing scripts that have no italic tradition.** CJK, Arabic, Hebrew, Devanagari, Thai, and Khmer all produce a synthesized slant when forced into `italic=True`, and the result looks mechanically deformed. Italicize *only* runs whose primary script supports italic — Latin, Cyrillic, Greek. See `references/font-discipline.md` Layer 5 for the implementation pattern.
229
+ - **Using `MARGIN_TOP` for hero slides.** Hero slides need *budget centering*, not top-anchored. This is the most common hero defect and the cheapest to fix.
230
+
231
+ ---
232
+
233
+ ## Why geometry-based verification, not visual diff
234
+
235
+ An earlier iteration of this skill leaned on visual diffing — render the
236
+ .pptx through Keynote → PDF → PNG, screenshot the HTML through Chrome
237
+ headless, stitch them side-by-side with `magick`. It worked, but with
238
+ three sharp drawbacks:
239
+
240
+ - **Platform lock-in.** Keynote AppleScript is macOS-only; `magick` and
241
+ font-discovery commands vary across OSes; CI pipelines on Linux can't
242
+ reproduce the chain.
243
+ - **Imprecision.** A 1-2 mm overflow gets anti-aliased away in a PNG
244
+ preview. The human eye misses it; the script catches it as a hard
245
+ numeric violation.
246
+ - **Setup cost.** Every contributor needs the full graphics toolchain
247
+ installed before they can audit. Geometry checks need only
248
+ `python-pptx`.
249
+
250
+ Geometry-based verification gives up one thing the visual diff is good
251
+ at: catching cases where shape positions are correct but the rendered
252
+ glyph looks wrong (font fallback, kerning bugs, missing weight). When
253
+ that case appears, fall back to a manual screenshot review — the
254
+ five-layer audit in `references/font-discipline.md` covers most of the
255
+ underlying causes.
@@ -0,0 +1,231 @@
1
+ ---
2
+ name: pptx
3
+ description: "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."
4
+ license: Proprietary. LICENSE.txt has complete terms
5
+ category: files
6
+ ---
7
+
8
+ # PPTX Skill
9
+
10
+ ## Quick Reference
11
+
12
+ | Task | Guide |
13
+ |------|-------|
14
+ | Read/analyze content | `extract-text presentation.pptx` |
15
+ | Edit or create from template | Read [editing.md](editing.md) |
16
+ | Create from scratch | Read [pptxgenjs.md](pptxgenjs.md) |
17
+
18
+ ---
19
+
20
+ ## Reading Content
21
+
22
+ ```bash
23
+ # Text extraction, one `## Slide N` section per slide
24
+ extract-text presentation.pptx
25
+
26
+ # Visual overview
27
+ python scripts/thumbnail.py presentation.pptx
28
+
29
+ # Raw XML
30
+ python scripts/office/unpack.py presentation.pptx unpacked/
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Editing Workflow
36
+
37
+ **Read [editing.md](editing.md) for full details.**
38
+
39
+ 1. Analyze template with `thumbnail.py`
40
+ 2. Unpack → manipulate slides → edit content → clean → pack
41
+
42
+ ---
43
+
44
+ ## Creating from Scratch
45
+
46
+ **Read [pptxgenjs.md](pptxgenjs.md) for full details.**
47
+
48
+ Use when no template or reference presentation is available.
49
+
50
+ ---
51
+
52
+ ## Design Ideas
53
+
54
+ **Don't create boring slides.** Plain bullets on a white background won't impress anyone. Consider ideas from this list for each slide.
55
+
56
+ ### Before Starting
57
+
58
+ - **Pick a bold, content-informed color palette**: The palette should feel designed for THIS topic. If swapping your colors into a completely different presentation would still "work," you haven't made specific enough choices.
59
+ - **Dominance over equality**: One color should dominate (60-70% visual weight), with 1-2 supporting tones and one sharp accent. Never give all colors equal weight.
60
+ - **Dark/light contrast**: Dark backgrounds for title + conclusion slides, light for content ("sandwich" structure). Or commit to dark throughout for a premium feel.
61
+ - **Commit to a visual motif**: Pick ONE distinctive element and repeat it — rounded image frames, icons in colored circles, thick single-side borders. Carry it across every slide.
62
+
63
+ ### Color Palettes
64
+
65
+ Choose colors that match your topic — don't default to generic blue. Use these palettes as inspiration:
66
+
67
+ | Theme | Primary | Secondary | Accent |
68
+ |-------|---------|-----------|--------|
69
+ | **Midnight Executive** | `1E2761` (navy) | `CADCFC` (ice blue) | `FFFFFF` (white) |
70
+ | **Forest & Moss** | `2C5F2D` (forest) | `97BC62` (moss) | `F5F5F5` (cream) |
71
+ | **Coral Energy** | `F96167` (coral) | `F9E795` (gold) | `2F3C7E` (navy) |
72
+ | **Warm Terracotta** | `B85042` (terracotta) | `E7E8D1` (sand) | `A7BEAE` (sage) |
73
+ | **Ocean Gradient** | `065A82` (deep blue) | `1C7293` (teal) | `21295C` (midnight) |
74
+ | **Charcoal Minimal** | `36454F` (charcoal) | `F2F2F2` (off-white) | `212121` (black) |
75
+ | **Teal Trust** | `028090` (teal) | `00A896` (seafoam) | `02C39A` (mint) |
76
+ | **Berry & Cream** | `6D2E46` (berry) | `A26769` (dusty rose) | `ECE2D0` (cream) |
77
+ | **Sage Calm** | `84B59F` (sage) | `69A297` (eucalyptus) | `50808E` (slate) |
78
+ | **Cherry Bold** | `990011` (cherry) | `FCF6F5` (off-white) | `2F3C7E` (navy) |
79
+
80
+ ### For Each Slide
81
+
82
+ **Every slide needs a visual element** — image, chart, icon, or shape. Text-only slides are forgettable.
83
+
84
+ **Layout options:**
85
+ - Two-column (text left, illustration on right)
86
+ - Icon + text rows (icon in colored circle, bold header, description below)
87
+ - 2x2 or 2x3 grid (image on one side, grid of content blocks on other)
88
+ - Half-bleed image (full left or right side) with content overlay
89
+
90
+ **Data display:**
91
+ - Large stat callouts (big numbers 60-72pt with small labels below)
92
+ - Comparison columns (before/after, pros/cons, side-by-side options)
93
+ - Timeline or process flow (numbered steps, arrows)
94
+
95
+ **Visual polish:**
96
+ - Icons in small colored circles next to section headers
97
+ - Italic accent text for key stats or taglines
98
+
99
+ ### Typography
100
+
101
+ **Choose an interesting font pairing** — don't default to Arial. Pick a header font with personality and pair it with a clean body font.
102
+
103
+ | Header Font | Body Font |
104
+ |-------------|-----------|
105
+ | Georgia | Calibri |
106
+ | Arial Black | Arial |
107
+ | Calibri | Calibri Light |
108
+ | Cambria | Calibri |
109
+ | Trebuchet MS | Calibri |
110
+ | Impact | Arial |
111
+ | Palatino | Garamond |
112
+ | Consolas | Calibri |
113
+
114
+ | Element | Size |
115
+ |---------|------|
116
+ | Slide title | 36-44pt bold |
117
+ | Section header | 20-24pt bold |
118
+ | Body text | 14-16pt |
119
+ | Captions | 10-12pt muted |
120
+
121
+ ### Spacing
122
+
123
+ - 0.5" minimum margins
124
+ - 0.3-0.5" between content blocks
125
+ - Leave breathing room—don't fill every inch
126
+
127
+ ### Avoid (Common Mistakes)
128
+
129
+ - **Don't repeat the same layout** — vary columns, cards, and callouts across slides
130
+ - **Don't center body text** — left-align paragraphs and lists; center only titles
131
+ - **Don't skimp on size contrast** — titles need 36pt+ to stand out from 14-16pt body
132
+ - **Don't default to blue** — pick colors that reflect the specific topic
133
+ - **Don't mix spacing randomly** — choose 0.3" or 0.5" gaps and use consistently
134
+ - **Don't style one slide and leave the rest plain** — commit fully or keep it simple throughout
135
+ - **Don't create text-only slides** — add images, icons, charts, or visual elements; avoid plain title + bullets
136
+ - **Don't forget text box padding** — when aligning lines or shapes with text edges, set `margin: 0` on the text box or offset the shape to account for padding
137
+ - **Don't use low-contrast elements** — icons AND text need strong contrast against the background; avoid light text on light backgrounds or dark text on dark backgrounds
138
+ - **NEVER use accent lines under titles** — these are a hallmark of AI-generated slides; use whitespace or background color instead
139
+ - **Don't add decorative full-width colored bars/rectangles** — header/footer bars, side ribbons, or colored stripes read as AI slop unless the user explicitly requests them
140
+ - **Don't default to cream/beige backgrounds** — when no background is specified, use white (`FFFFFF`) or the user's brand palette; avoid warm-neutral defaults like `F5F5DC`, `FAF0E6`, `FAEBD7`, `FFF8E1`
141
+ - **Don't ship text that overflows its shape** — if text doesn't fit, reduce font size, split across slides, or enlarge the container; never leave content cut off or spilling past bounds
142
+
143
+ ---
144
+
145
+ ## QA (Required)
146
+
147
+ Your first render usually has a few real issues — overlaps, overflow, misalignment. Find and fix those, then stop. Don't keep iterating on minor coordinate nudges or chase a "perfect" render.
148
+
149
+ Work, don't narrate: minimize prose between tool calls. Run the check, apply the fix, move on.
150
+
151
+ ### Content QA
152
+
153
+ ```bash
154
+ extract-text output.pptx
155
+ ```
156
+
157
+ Check for missing content, typos, wrong order.
158
+
159
+ **When using templates, check for leftover placeholder text:**
160
+
161
+ ```bash
162
+ extract-text output.pptx | grep -iE "\bx{3,}\b|lorem|ipsum|\bTODO|\[insert|this.*(page|slide).*layout"
163
+ ```
164
+
165
+ If grep returns results, fix them before declaring success.
166
+
167
+ ### Visual QA
168
+
169
+ **⚠️ USE SUBAGENTS** — even for 2-3 slides. You've been staring at the code and will see what you expect, not what's there. Subagents have fresh eyes.
170
+
171
+ Convert slides to images (see [Converting to Images](#converting-to-images)), then use this prompt:
172
+
173
+ ```
174
+ Visually inspect these slides for user-visible defects.
175
+
176
+ Look for:
177
+ - Overlapping elements (text through shapes, lines through words, stacked elements)
178
+ - Text overflow or cut off at edges/box boundaries
179
+ - Decorative lines positioned for single-line text but title wrapped to two lines
180
+ - Source citations or footers colliding with content above
181
+ - Elements too close (< 0.3" gaps) or cards/sections nearly touching
182
+ - Uneven gaps (large empty area in one place, cramped in another)
183
+ - Insufficient margin from slide edges (< 0.5")
184
+ - Columns or similar elements not aligned consistently
185
+ - Low-contrast text (e.g., light gray text on cream-colored background)
186
+ - Low-contrast icons (e.g., dark icons on dark backgrounds without a contrasting circle)
187
+ - Text boxes too narrow causing excessive wrapping
188
+ - Leftover placeholder content
189
+
190
+ For each slide, list user-visible issues. Skip sub-pixel positioning and cosmetic nitpicks a viewer wouldn't notice.
191
+
192
+ Read and analyze these images — run `ls -1 "$PWD"/slide-*.jpg` and use the exact absolute paths it prints:
193
+ 1. <absolute-path>/slide-N.jpg — (Expected: [brief description])
194
+ 2. <absolute-path>/slide-N.jpg — (Expected: [brief description])
195
+ ...
196
+ ```
197
+
198
+ ### Verification Loop
199
+
200
+ 1. Generate slides → Convert to images → Inspect
201
+ 2. **Check text bounds first** — for every text box, confirm the rendered text fits inside its shape. Overflow is the most common defect and is always user-visible.
202
+ 3. List any other issues found
203
+ 4. Fix issues
204
+ 5. Re-verify only the affected slides
205
+ 6. **Stop after one fix-and-verify cycle** unless a new *user-visible* defect appears (overlap, overflow, missing content). Do not loop on sub-pixel positioning, minor color tweaks, or issues a viewer wouldn't notice.
206
+
207
+ ---
208
+
209
+ ## Converting to Images
210
+
211
+ Convert presentations to individual slide images for visual inspection:
212
+
213
+ ```bash
214
+ python scripts/office/soffice.py --headless --convert-to pdf output.pptx
215
+ rm -f slide-*.jpg
216
+ pdftoppm -jpeg -r 150 output.pdf slide
217
+ ls -1 "$PWD"/slide-*.jpg
218
+ ```
219
+
220
+ **Pass the absolute paths printed above directly to the view tool.** The `rm` clears stale images from prior runs. `pdftoppm` zero-pads based on page count: `slide-1.jpg` for decks under 10 pages, `slide-01.jpg` for 10-99, `slide-001.jpg` for 100+.
221
+
222
+ **After fixes, rerun all four commands above** — the PDF must be regenerated from the edited `.pptx` before `pdftoppm` can reflect your changes.
223
+
224
+ ---
225
+
226
+ ## Dependencies
227
+
228
+ - `pip install Pillow` - thumbnail grids
229
+ - `npm install -g pptxgenjs` - creating from scratch
230
+ - LibreOffice (`soffice`) - PDF conversion (auto-configured for sandboxed environments via `scripts/office/soffice.py`)
231
+ - Poppler (`pdftoppm`) - PDF to images