[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DB4NR1W34A5NETFXYRW6AE":3,"skill-same:01M7DB4NR1W34A5NETFXYRW6AE":72},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":13,"repositoryHtmlUrl":32,"repositoryHomepageUrl":6,"ownerHtmlUrl":33,"ownerBlogUrl":6,"ownerDescription":34,"updatedAt":35,"install":36,"resources":49},"01M7DB4NR1W34A5NETFXYRW6AE","pptx-generator",null,"Generate, edit, and read PowerPoint presentations. Create from scratch with PptxGenJS (cover, TOC, content, section divider, summary slides), edit existing PPTX via XML workflows, or extract text with markitdown. Triggers: PPT, PPTX, PowerPoint, presentation, slide, deck, slides.","nordeim\u002Factivity-map","nordeim","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F194583642?v=4","01M75CZEV8C3V4DDQNPQ1EA7QJ","01M7D8P5VVNEK50A7DQ421HDCN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fpptx-generator\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: pptx-generator\ndescription: \"Generate, edit, and read PowerPoint presentations. Create from scratch with PptxGenJS (cover, TOC, content, section divider, summary slides), edit existing PPTX via XML workflows, or extract text with markitdown. Triggers: PPT, PPTX, PowerPoint, presentation, slide, deck, slides.\"\nlicense: MIT\nmetadata:\n  version: \"1.0\"\n  category: productivity\n  sources:\n    - https:\u002F\u002Fgitbrent.github.io\u002FPptxGenJS\u002F\n    - https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmarkitdown\n---\n\n# PPTX Generator & Editor\n\n## Overview\n\nThis skill handles all PowerPoint tasks: reading\u002Fanalyzing existing presentations, editing template-based decks via XML manipulation, and creating presentations from scratch using PptxGenJS. It includes a complete design system (color palettes, fonts, style recipes) and detailed guidance for every slide type.\n\n## Quick Reference\n\n| Task | Approach |\n|------|----------|\n| Read\u002Fanalyze content | `python -m markitdown presentation.pptx` |\n| Edit or create from template | See [Editing Presentations](references\u002Fediting.md) |\n| Create from scratch | See [Creating from Scratch](#creating-from-scratch-workflow) below |\n\n| Item | Value |\n|------|-------|\n| **Dimensions** | 10\" x 5.625\" (LAYOUT_16x9) |\n| **Colors** | 6-char hex without # (e.g., `\"FF0000\"`) |\n| **English font** | Arial (default), or approved alternatives |\n| **Chinese font** | Microsoft YaHei |\n| **Page badge position** | x: 9.3\", y: 5.1\" |\n| **Theme keys** | `primary`, `secondary`, `accent`, `light`, `bg` |\n| **Shapes** | RECTANGLE, OVAL, LINE, ROUNDED_RECTANGLE |\n| **Charts** | BAR, LINE, PIE, DOUGHNUT, SCATTER, BUBBLE, RADAR |\n\n## Reference Files\n\n| File | Contents |\n|------|----------|\n| [slide-types.md](references\u002Fslide-types.md) | 5 slide page types (Cover, TOC, Section Divider, Content, Summary) + additional layout patterns |\n| [design-system.md](references\u002Fdesign-system.md) | Color palettes, font reference, style recipes (Sharp\u002FSoft\u002FRounded\u002FPill), typography & spacing |\n| [editing.md](references\u002Fediting.md) | Template-based editing workflow, XML manipulation, formatting rules, common pitfalls |\n| [pitfalls.md](references\u002Fpitfalls.md) | QA process, common mistakes, critical PptxGenJS pitfalls |\n| [pptxgenjs.md](references\u002Fpptxgenjs.md) | Complete PptxGenJS API reference |\n\n---\n\n## Reading Content\n\n```bash\n# Text extraction\npython -m markitdown presentation.pptx\n```\n\n---\n\n## Creating from Scratch — Workflow\n\n**Use when no template or reference presentation is available.**\n\n### Step 1: Research & Requirements\n\nSearch to understand user requirements — topic, audience, purpose, tone, content depth.\n\n### Step 2: Select Color Palette & Fonts\n\nUse the [Color Palette Reference](references\u002Fdesign-system.md#color-palette-reference) to select a palette matching the topic and audience. Use the [Font Reference](references\u002Fdesign-system.md#font-reference) to choose a font pairing.\n\n### Step 3: Select Design Style\n\nUse the [Style Recipes](references\u002Fdesign-system.md#style-recipes) to choose a visual style (Sharp, Soft, Rounded, or Pill) matching the presentation tone.\n\n### Step 4: Plan Slide Outline\n\nClassify **every slide** as exactly one of the [5 page types](references\u002Fslide-types.md). Plan the content and layout for each slide. Ensure visual variety — do NOT repeat the same layout across slides.\n\n### Step 5: Generate Slide JS Files\n\nCreate one JS file per slide in `slides\u002F` directory. Each file must export a synchronous `createSlide(pres, theme)` function. Follow the [Slide Output Format](#slide-output-format) and the type-specific guidance in [slide-types.md](references\u002Fslide-types.md). Generate up to 5 slides concurrently using subagents if available.\n\n**Tell each subagent:**\n1. File naming: `slides\u002Fslide-01.js`, `slides\u002Fslide-02.js`, etc.\n2. Images go in: `slides\u002Fimgs\u002F`\n3. Final PPTX goes in: `slides\u002Foutput\u002F`\n4. Dimensions: 10\" x 5.625\" (LAYOUT_16x9)\n5. Fonts: Chinese = Microsoft YaHei, English = Arial (or approved alternative)\n6. Colors: 6-char hex without # (e.g. `\"FF0000\"`)\n7. Must use the theme object contract (see [Theme Object Contract](#theme-object-contract))\n8. Must follow the [PptxGenJS API reference](references\u002Fpptxgenjs.md)\n\n### Step 6: Compile into Final PPTX\n\nCreate `slides\u002Fcompile.js` to combine all slide modules:\n\n```javascript\n\u002F\u002F slides\u002Fcompile.js\nconst pptxgen = require('pptxgenjs');\nconst pres = new pptxgen();\npres.layout = 'LAYOUT_16x9';\n\nconst theme = {\n  primary: \"22223b\",    \u002F\u002F dark color for backgrounds\u002Ftext\n  secondary: \"4a4e69\",  \u002F\u002F secondary accent\n  accent: \"9a8c98\",     \u002F\u002F highlight color\n  light: \"c9ada7\",      \u002F\u002F light accent\n  bg: \"f2e9e4\"          \u002F\u002F background color\n};\n\nfor (let i = 1; i \u003C= 12; i++) {  \u002F\u002F adjust count as needed\n  const num = String(i).padStart(2, '0');\n  const slideModule = require(`.\u002Fslide-${num}.js`);\n  slideModule.createSlide(pres, theme);\n}\n\npres.writeFile({ fileName: '.\u002Foutput\u002Fpresentation.pptx' });\n```\n\nRun with: `cd slides && node compile.js`\n\n### Step 7: QA (Required)\n\nSee [QA Process](references\u002Fpitfalls.md#qa-process).\n\n### Output Structure\n\n```\nslides\u002F\n├── slide-01.js          # Slide modules\n├── slide-02.js\n├── ...\n├── imgs\u002F                # Images used in slides\n└── output\u002F              # Final artifacts\n    └── presentation.pptx\n```\n\n---\n\n## Slide Output Format\n\nEach slide is a **complete, runnable JS file**:\n\n```javascript\n\u002F\u002F slide-01.js\nconst pptxgen = require(\"pptxgenjs\");\n\nconst slideConfig = {\n  type: 'cover',\n  index: 1,\n  title: 'Presentation Title'\n};\n\n\u002F\u002F MUST be synchronous (not async)\nfunction createSlide(pres, theme) {\n  const slide = pres.addSlide();\n  slide.background = { color: theme.bg };\n\n  slide.addText(slideConfig.title, {\n    x: 0.5, y: 2, w: 9, h: 1.2,\n    fontSize: 48, fontFace: \"Arial\",\n    color: theme.primary, bold: true, align: \"center\"\n  });\n\n  return slide;\n}\n\n\u002F\u002F Standalone preview - use slide-specific filename\nif (require.main === module) {\n  const pres = new pptxgen();\n  pres.layout = 'LAYOUT_16x9';\n  const theme = {\n    primary: \"22223b\",\n    secondary: \"4a4e69\",\n    accent: \"9a8c98\",\n    light: \"c9ada7\",\n    bg: \"f2e9e4\"\n  };\n  createSlide(pres, theme);\n  pres.writeFile({ fileName: \"slide-01-preview.pptx\" });\n}\n\nmodule.exports = { createSlide, slideConfig };\n```\n\n---\n\n## Theme Object Contract (MANDATORY)\n\nThe compile script passes a theme object with these **exact keys**:\n\n| Key | Purpose | Example |\n|-----|---------|---------|\n| `theme.primary` | Darkest color, titles | `\"22223b\"` |\n| `theme.secondary` | Dark accent, body text | `\"4a4e69\"` |\n| `theme.accent` | Mid-tone accent | `\"9a8c98\"` |\n| `theme.light` | Light accent | `\"c9ada7\"` |\n| `theme.bg` | Background color | `\"f2e9e4\"` |\n\n**NEVER use other key names** like `background`, `text`, `muted`, `darkest`, `lightest`.\n\n---\n\n## Page Number Badge (REQUIRED)\n\nAll slides **except Cover Page** MUST include a page number badge in the bottom-right corner.\n\n- **Position**: x: 9.3\", y: 5.1\"\n- Show current number only (e.g. `3` or `03`), NOT \"3\u002F12\"\n- Use palette colors, keep subtle\n\n### Circle Badge (Default)\n\n```javascript\nslide.addShape(pres.shapes.OVAL, {\n  x: 9.3, y: 5.1, w: 0.4, h: 0.4,\n  fill: { color: theme.accent }\n});\nslide.addText(\"3\", {\n  x: 9.3, y: 5.1, w: 0.4, h: 0.4,\n  fontSize: 12, fontFace: \"Arial\",\n  color: \"FFFFFF\", bold: true,\n  align: \"center\", valign: \"middle\"\n});\n```\n\n### Pill Badge\n\n```javascript\nslide.addShape(pres.shapes.ROUNDED_RECTANGLE, {\n  x: 9.1, y: 5.15, w: 0.6, h: 0.35,\n  fill: { color: theme.accent },\n  rectRadius: 0.15\n});\nslide.addText(\"03\", {\n  x: 9.1, y: 5.15, w: 0.6, h: 0.35,\n  fontSize: 11, fontFace: \"Arial\",\n  color: \"FFFFFF\", bold: true,\n  align: \"center\", valign: \"middle\"\n});\n```\n\n---\n\n## Dependencies\n\n- `pip install \"markitdown[pptx]\"` — text extraction\n- `npm install -g pptxgenjs` — creating from scratch\n- `npm install -g react-icons react react-dom sharp` — icons (optional)\n\n---\n\n## Cross-References\n\n| Skill | When to use it instead |\n|---|---|\n| [`..\u002Fpptx\u002F`](..\u002Fpptx\u002FSKILL.md) | Canonical Z.AI pptx skill — HTML-first pipeline that renders 1280×720 standalone HTML slides via Playwright, then assembles them into `.pptx` with `batch_html2pptx.js`. 4-stage workflow (Clarify → Research → Plan → Build) with `AskUserQuestion` palette\u002Ftypography gates, fan-out to `ppt-expert` sub-agents, and `slides_brief.json` as single source of truth. Use when you want HTML\u002FCSS design freedom, parallel sub-agent rendering, or post-edit `python-pptx` text replacement on existing decks. |\n| [`..\u002Fcodex-ppt\u002F`](..\u002Fcodex-ppt\u002FSKILL.md) | Image-based PPT generation — each slide is a complete 16:9 generated image, assembled via `assemble_ppt.py`. Use when visual unity matters more than per-shape editability. |\n| [`..\u002Fcyber-ppt\u002F`](..\u002Fcyber-ppt\u002FSKILL.md) | Chinese consulting-style (MBB-grade) PPTX with SCR argumentation, evidence-chain tables, 8 visual styles, and 3 confirmation gates. Use for evidence-driven consulting decks from DOCX\u002FPDF\u002FXLSX source material. |\n| [`..\u002Fcharts\u002F`](..\u002Fcharts\u002FSKILL.md) | Standalone chart\u002Fdiagram generation when the deck is mostly chart carriers. |\n\n### Shared rules (apply across all PPTX skills)\n\n- Slide canvas: 16:9 (10\" × 5.625\" in PptxGenJS or 1280×720 in HTML). Never mix canvas sizes within one deck.\n- Color values: 6-char hex without `#` in PptxGenJS (e.g., `\"FF0000\"`); CSS hex with `#` in HTML (e.g., `\"#FF0000\"`). Don't confuse the two.\n- Every text color on every background must pass WCAG AA (4.5:1 contrast). Dark backgrounds require explicit light TextRun colors — never rely on default black.\n- Diversify layouts across slides — never repeat the same layout back-to-back. Use cover \u002F section header \u002F split text+image \u002F bento grid \u002F stats \u002F timeline \u002F comparison \u002F quote \u002F closing as a rotation.\n- Never fabricate image URLs. Only embed images that came from a real image-search result or a user-supplied asset.\n","# PPTX Generator & Editor\n\n## Overview\n\nThis skill handles all PowerPoint tasks: reading\u002Fanalyzing existing presentations, editing template-based decks via XML manipulation, and creating presentations from scratch using PptxGenJS. It includes a complete design system (color palettes, fonts, style recipes) and detailed guidance for every slide type.\n\n## Quick Reference\n\n| Task | Approach |\n|------|----------|\n| Read\u002Fanalyze content | `python -m markitdown presentation.pptx` |\n| Edit or create from template | See [Editing Presentations](references\u002Fediting.md) |\n| Create from scratch | See [Creating from Scratch](#creating-from-scratch-workflow) below |\n\n| Item | Value |\n|------|-------|\n| **Dimensions** | 10\" x 5.625\" (LAYOUT_16x9) |\n| **Colors** | 6-char hex without # (e.g., `\"FF0000\"`) |\n| **English font** | Arial (default), or approved alternatives |\n| **Chinese font** | Microsoft YaHei |\n| **Page badge position** | x: 9.3\", y: 5.1\" |\n| **Theme keys** | `primary`, `secondary`, `accent`, `light`, `bg` |\n| **Shapes** | RECTANGLE, OVAL, LINE, ROUNDED_RECTANGLE |\n| **Charts** | BAR, LINE, PIE, DOUGHNUT, SCATTER, BUBBLE, RADAR |\n\n## Reference Files\n\n| File | Contents |\n|------|----------|\n| [slide-types.md](references\u002Fslide-types.md) | 5 slide page types (Cover, TOC, Section Divider, Content, Summary) + additional layout patterns |\n| [design-system.md](references\u002Fdesign-system.md) | Color palettes, font reference, style recipes (Sharp\u002FSoft\u002FRounded\u002FPill), typography & spacing |\n| [editing.md](references\u002Fediting.md) | Template-based editing workflow, XML manipulation, formatting rules, common pitfalls |\n| [pitfalls.md](references\u002Fpitfalls.md) | QA process, common mistakes, critical PptxGenJS pitfalls |\n| [pptxgenjs.md](references\u002Fpptxgenjs.md) | Complete PptxGenJS API reference |\n\n---\n\n## Reading Content\n\n```bash\n# Text extraction\npython -m markitdown presentation.pptx\n```\n\n---\n\n## Creating from Scratch — Workflow\n\n**Use when no template or reference presentation is available.**\n\n### Step 1: Research & Requirements\n\nSearch to understand user requirements — topic, audience, purpose, tone, content depth.\n\n### Step 2: Select Color Palette & Fonts\n\nUse the [Color Palette Reference](references\u002Fdesign-system.md#color-palette-reference) to select a palette matching the topic and audience. Use the [Font Reference](references\u002Fdesign-system.md#font-reference) to choose a font pairing.\n\n### Step 3: Select Design Style\n\nUse the [Style Recipes](references\u002Fdesign-system.md#style-recipes) to choose a visual style (Sharp, Soft, Rounded, or Pill) matching the presentation tone.\n\n### Step 4: Plan Slide Outline\n\nClassify **every slide** as exactly one of the [5 page types](references\u002Fslide-types.md). Plan the content and layout for each slide. Ensure visual variety — do NOT repeat the same layout across slides.\n\n### Step 5: Generate Slide JS Files\n\nCreate one JS file per slide in `slides\u002F` directory. Each file must export a synchronous `createSlide(pres, theme)` function. Follow the [Slide Output Format](#slide-output-format) and the type-specific guidance in [slide-types.md](references\u002Fslide-types.md). Generate up to 5 slides concurrently using subagents if available.\n\n**Tell each subagent:**\n1. File naming: `slides\u002Fslide-01.js`, `slides\u002Fslide-02.js`, etc.\n2. Images go in: `slides\u002Fimgs\u002F`\n3. Final PPTX goes in: `slides\u002Foutput\u002F`\n4. Dimensions: 10\" x 5.625\" (LAYOUT_16x9)\n5. Fonts: Chinese = Microsoft YaHei, English = Arial (or approved alternative)\n6. Colors: 6-char hex without # (e.g. `\"FF0000\"`)\n7. Must use the theme object contract (see [Theme Object Contract](#theme-object-contract))\n8. Must follow the [PptxGenJS API reference](references\u002Fpptxgenjs.md)\n\n### Step 6: Compile into Final PPTX\n\nCreate `slides\u002Fcompile.js` to combine all slide modules:\n\n```javascript\n\u002F\u002F slides\u002Fcompile.js\nconst pptxgen = require('pptxgenjs');\nconst pres = new pptxgen();\npres.layout = 'LAYOUT_16x9';\n\nconst theme = {\n  primary: \"22223b\",    \u002F\u002F dark color for backgrounds\u002Ftext\n  secondary: \"4a4e69\",  \u002F\u002F secondary accent\n  accent: \"9a8c98\",     \u002F\u002F highlight color\n  light: \"c9ada7\",      \u002F\u002F light accent\n  bg: \"f2e9e4\"          \u002F\u002F background color\n};\n\nfor (let i = 1; i \u003C= 12; i++) {  \u002F\u002F adjust count as needed\n  const num = String(i).padStart(2, '0');\n  const slideModule = require(`.\u002Fslide-${num}.js`);\n  slideModule.createSlide(pres, theme);\n}\n\npres.writeFile({ fileName: '.\u002Foutput\u002Fpresentation.pptx' });\n```\n\nRun with: `cd slides && node compile.js`\n\n### Step 7: QA (Required)\n\nSee [QA Process](references\u002Fpitfalls.md#qa-process).\n\n### Output Structure\n\n```\nslides\u002F\n├── slide-01.js          # Slide modules\n├── slide-02.js\n├── ...\n├── imgs\u002F                # Images used in slides\n└── output\u002F              # Final artifacts\n    └── presentation.pptx\n```\n\n---\n\n## Slide Output Format\n\nEach slide is a **complete, runnable JS file**:\n\n```javascript\n\u002F\u002F slide-01.js\nconst pptxgen = require(\"pptxgenjs\");\n\nconst slideConfig = {\n  type: 'cover',\n  index: 1,\n  title: 'Presentation Title'\n};\n\n\u002F\u002F MUST be synchronous (not async)\nfunction createSlide(pres, theme) {\n  const slide = pres.addSlide();\n  slide.background = { color: theme.bg };\n\n  slide.addText(slideConfig.title, {\n    x: 0.5, y: 2, w: 9, h: 1.2,\n    fontSize: 48, fontFace: \"Arial\",\n    color: theme.primary, bold: true, align: \"center\"\n  });\n\n  return slide;\n}\n\n\u002F\u002F Standalone preview - use slide-specific filename\nif (require.main === module) {\n  const pres = new pptxgen();\n  pres.layout = 'LAYOUT_16x9';\n  const theme = {\n    primary: \"22223b\",\n    secondary: \"4a4e69\",\n    accent: \"9a8c98\",\n    light: \"c9ada7\",\n    bg: \"f2e9e4\"\n  };\n  createSlide(pres, theme);\n  pres.writeFile({ fileName: \"slide-01-preview.pptx\" });\n}\n\nmodule.exports = { createSlide, slideConfig };\n```\n\n---\n\n## Theme Object Contract (MANDATORY)\n\nThe compile script passes a theme object with these **exact keys**:\n\n| Key | Purpose | Example |\n|-----|---------|---------|\n| `theme.primary` | Darkest color, titles | `\"22223b\"` |\n| `theme.secondary` | Dark accent, body text | `\"4a4e69\"` |\n| `theme.accent` | Mid-tone accent | `\"9a8c98\"` |\n| `theme.light` | Light accent | `\"c9ada7\"` |\n| `theme.bg` | Background color | `\"f2e9e4\"` |\n\n**NEVER use other key names** like `background`, `text`, `muted`, `darkest`, `lightest`.\n\n---\n\n## Page Number Badge (REQUIRED)\n\nAll slides **except Cover Page** MUST include a page number badge in the bottom-right corner.\n\n- **Position**: x: 9.3\", y: 5.1\"\n- Show current number only (e.g. `3` or `03`), NOT \"3\u002F12\"\n- Use palette colors, keep subtle\n\n### Circle Badge (Default)\n\n```javascript\nslide.addShape(pres.shapes.OVAL, {\n  x: 9.3, y: 5.1, w: 0.4, h: 0.4,\n  fill: { color: theme.accent }\n});\nslide.addText(\"3\", {\n  x: 9.3, y: 5.1, w: 0.4, h: 0.4,\n  fontSize: 12, fontFace: \"Arial\",\n  color: \"FFFFFF\", bold: true,\n  align: \"center\", valign: \"middle\"\n});\n```\n\n### Pill Badge\n\n```javascript\nslide.addShape(pres.shapes.ROUNDED_RECTANGLE, {\n  x: 9.1, y: 5.15, w: 0.6, h: 0.35,\n  fill: { color: theme.accent },\n  rectRadius: 0.15\n});\nslide.addText(\"03\", {\n  x: 9.1, y: 5.15, w: 0.6, h: 0.35,\n  fontSize: 11, fontFace: \"Arial\",\n  color: \"FFFFFF\", bold: true,\n  align: \"center\", valign: \"middle\"\n});\n```\n\n---\n\n## Dependencies\n\n- `pip install \"markitdown[pptx]\"` — text extraction\n- `npm install -g pptxgenjs` — creating from scratch\n- `npm install -g react-icons react react-dom sharp` — icons (optional)\n\n---\n\n## Cross-References\n\n| Skill | When to use it instead |\n|---|---|\n| [`..\u002Fpptx\u002F`](..\u002Fpptx\u002FSKILL.md) | Canonical Z.AI pptx skill — HTML-first pipeline that renders 1280×720 standalone HTML slides via Playwright, then assembles them into `.pptx` with `batch_html2pptx.js`. 4-stage workflow (Clarify → Research → Plan → Build) with `AskUserQuestion` palette\u002Ftypography gates, fan-out to `ppt-expert` sub-agents, and `slides_brief.json` as single source of truth. Use when you want HTML\u002FCSS design freedom, parallel sub-agent rendering, or post-edit `python-pptx` text replacement on existing decks. |\n| [`..\u002Fcodex-ppt\u002F`](..\u002Fcodex-ppt\u002FSKILL.md) | Image-based PPT generation — each slide is a complete 16:9 generated image, assembled via `assemble_ppt.py`. Use when visual unity matters more than per-shape editability. |\n| [`..\u002Fcyber-ppt\u002F`](..\u002Fcyber-ppt\u002FSKILL.md) | Chinese consulting-style (MBB-grade) PPTX with SCR argumentation, evidence-chain tables, 8 visual styles, and 3 confirmation gates. Use for evidence-driven consulting decks from DOCX\u002FPDF\u002FXLSX source material. |\n| [`..\u002Fcharts\u002F`](..\u002Fcharts\u002FSKILL.md) | Standalone chart\u002Fdiagram generation when the deck is mostly chart carriers. |\n\n### Shared rules (apply across all PPTX skills)\n\n- Slide canvas: 16:9 (10\" × 5.625\" in PptxGenJS or 1280×720 in HTML). Never mix canvas sizes within one deck.\n- Color values: 6-char hex without `#` in PptxGenJS (e.g., `\"FF0000\"`); CSS hex with `#` in HTML (e.g., `\"#FF0000\"`). Don't confuse the two.\n- Every text color on every background must pass WCAG AA (4.5:1 contrast). Dark backgrounds require explicit light TextRun colors — never rely on default black.\n- Diversify layouts across slides — never repeat the same layout back-to-back. Use cover \u002F section header \u002F split text+image \u002F bento grid \u002F stats \u002F timeline \u002F comparison \u002F quote \u002F closing as a rotation.\n- Never fabricate image URLs. Only embed images that came from a real image-search result or a user-supplied asset.\n",{"name":5,"license":14,"metadata":23,"description":7},{"sources":24,"version":27,"category":28},[25,26],"https:\u002F\u002Fgitbrent.github.io\u002FPptxGenJS\u002F","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmarkitdown","1.0","productivity","main","e3fd17b8fbda2bd94b990bc6f9d36baa4799d916","skills\u002Fpptx-generator","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map","https:\u002F\u002Fgithub.com\u002Fnordeim","A freelance IT engineer","2026-09-29 14:48:51",{"source":8,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add nordeim\u002Factivity-map --skill pptx-generator",{"tool":42,"command":43},"bunx","bunx skills add nordeim\u002Factivity-map --skill pptx-generator",{"tool":45,"command":46},"pnpm","pnpm dlx skills add nordeim\u002Factivity-map --skill pptx-generator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fpptx-generator\u002FSKILL.md",true,[50,56,60,64,68],{"path":51,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":54,"sourceHtmlUrl":55},"references\u002Fdesign-system.md","REFERENCE","参考文档",16159,"https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fpptx-generator\u002Freferences\u002Fdesign-system.md",{"path":57,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":58,"sourceHtmlUrl":59},"references\u002Fediting.md",6577,"https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fpptx-generator\u002Freferences\u002Fediting.md",{"path":61,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":62,"sourceHtmlUrl":63},"references\u002Fpitfalls.md",3849,"https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fpptx-generator\u002Freferences\u002Fpitfalls.md",{"path":65,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":66,"sourceHtmlUrl":67},"references\u002Fpptxgenjs.md",12752,"https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fpptx-generator\u002Freferences\u002Fpptxgenjs.md",{"path":69,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Fslide-types.md",15790,"https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fpptx-generator\u002Freferences\u002Fslide-types.md",[73,82,90,98,105,113],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":77,"licenseFileUrl":78,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":18},"01M7DC1S8HA1BK68JJ3X0RB6Q7","webapp-testing","Web application testing principles. E2E, Playwright, deep audit strategies.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":86,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":18},"01M7DBZ6CNDP7931Q6ARNW2FPY","web-search","Implement web search capabilities using the z-ai-web-dev-sdk. Use this skill when the user needs to search for real-time information from the web, retrieve up-to-date content beyond the knowledge cutoff, or find the latest news and data. Returns structured search results with URLs, snippets, and metadata.","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fweb-search\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fweb-search\u002FSKILL.md",[],[],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":94,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":18},"01M7DBXYJ0FZDEY7RCVQ1JGGYJ","web-reader","Implement web page content extraction capabilities using the z-ai-web-dev-sdk. Use this skill when the user needs to scrape web pages, extract article content, retrieve page metadata, or build applications that process web content. Supports automatic content extraction with title, HTML, and publication time retrieval.","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fweb-reader\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fweb-reader\u002FSKILL.md",[],[],{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":18},"01M7DBXQCCSKMVSBEEQYSHZ1NR","web-frameworks","Build modern full-stack web applications with Next.js 16 + React 19 (App Router, Server Components, RSC, PPR, cacheComponents, async params, SSR, SSG, ISR, standalone output), Turborepo (monorepo, task pipelines, remote caching, parallel execution), and RemixIcon (3100+ SVG icons). Use when creating React applications, implementing server-side rendering, setting up monorepos, optimizing build performance and caching, or working with TypeScript full-stack projects.","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fweb-frameworks\u002FSKILL.md",[],[],{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":109,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":18},"01M7DBSB6CJZHACRPPEAD8CVF4","video-understand","Implement specialized video understanding capabilities using the z-ai-web-dev-sdk. Use this skill when the user needs to analyze video content, understand motion and temporal sequences, extract information from video frames, describe video scenes, or perform video-based AI analysis. Optimized for MP4, AVI, MOV, and other common video formats.","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-understand\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-understand\u002FSKILL.md",[],[],{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":117,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":18},"01M7DBS2WBW9K51J64BHVWQNMY","video-generation","Implement AI-powered video generation capabilities using the z-ai-web-dev-sdk. Use this skill when the user needs to generate videos from text prompts or images, create video content programmatically, or build applications that produce video outputs. Supports asynchronous task management with status polling and result retrieval.","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-generation\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fnordeim\u002Factivity-map\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-generation\u002FSKILL.md",[],[]]