Agent Skillsfanfan-de/anybox › PowerPoint PPTX Builder

PowerPoint PPTX Builder

GitHub

用于通过代码生成可编辑的PPTX演示文稿,支持模块化幻灯片定义、布局QA及最终文件构建。

plugins/Anybox-Plugins/presentations/skills/presentations/SKILL.md fanfan-de/anybox

Trigger Scenarios

用户要求创建PPT或PPTX文件 需要生成演示文稿幻灯片

Install

npx skills add fanfan-de/anybox --skill PowerPoint PPTX Builder -g -y
More Options

Non-standard path

npx skills add https://github.com/fanfan-de/anybox/tree/master/plugins/Anybox-Plugins/presentations/skills/presentations -g -y

Use without installing

npx skills use fanfan-de/anybox@PowerPoint PPTX Builder

指定 Agent (Claude Code)

npx skills add fanfan-de/anybox --skill PowerPoint PPTX Builder -a claude-code -g -y

安装 repo 全部 skill

npx skills add fanfan-de/anybox --all -g -y

预览 repo 内 skill

npx skills add fanfan-de/anybox --list

SKILL.md

Frontmatter
{
    "name": "PowerPoint PPTX Builder",
    "description": "Create editable Microsoft PowerPoint `.pptx` decks locally with code-first slide modules, PNG previews, layout JSON, and strict layout QA. Use when the user wants an Office presentation, slide deck, PPT, PPTX, or PowerPoint artifact."
}

PowerPoint PPTX Builder Skill

Use this skill when the durable output should be an editable Microsoft PowerPoint .pptx file.

Contract

  • Use only @anybox/presentation-runtime from this plugin. Do not import pptxgenjs or other presentation libraries directly.
  • Create one ESM module per slide under workspaces/<task-id>/slides/.
  • Each slide module must export slideXX(presentation, ctx), where XX matches the filename, for example slide-01.mjs exports slide01.
  • Slide modules may create a slide with presentation.slides.add() and call composeSlide(slide, elementTree).
  • Use editable primitives: Text, Shape, Image, Layers, Panel, Row, and Column.
  • Do not export PPTX directly from slide modules. Rendering, QA, and export are controlled by the plugin scripts.
  • Keep assets under workspaces/<task-id>/assets/. Use ctx.assetPath("name.png") for local assets.

Required Workflow

  1. Draft or update slide modules in workspaces/<task-id>/slides/.
  2. Run plugin scripts from the active project directory. If the script files are not present in the project, call the installed plugin script with an absolute path; --workspace workspaces/<task-id> is resolved relative to the current project directory.
  3. Render each changed slide:
node scripts/render_slide.mjs --workspace workspaces/<task-id> --slide slides/slide-01.mjs
  1. Run layout QA:
node scripts/check_layout_quality.mjs --workspace workspaces/<task-id>
  1. Build the deck only after previews and QA pass:
node scripts/build_deck.mjs --workspace workspaces/<task-id>
  1. Deliver only workspaces/<task-id>/output/final.pptx unless the user explicitly asks for previews or QA artifacts.

Sandbox Notes

Slide modules run in a practical child-process sandbox with an import whitelist, workspace path checks, output directory controls, and timeouts. This is not a strong security boundary. Do not write shell commands, read home directories, read secrets, access the network, or perform side effects in slide modules.

Allowed slide module import:

import {
  Presentation,
  Layers,
  Text,
  Shape,
  Panel,
  Row,
  Column,
  Image,
  composeSlide,
  textStyle,
  stroke,
  fill,
} from "@anybox/presentation-runtime";

Slide Module Example

import {
  Layers,
  Text,
  Shape,
  composeSlide,
  textStyle,
  stroke,
} from "@anybox/presentation-runtime";

export async function slide01(presentation, ctx) {
  const slide = presentation.slides.add();

  composeSlide(
    slide,
    Layers({ width: 1280, height: 720 }, [
      Shape({
        fill: "#F7F4ED",
        line: stroke("none"),
        position: { left: 0, top: 0 },
        width: 1280,
        height: 720,
      }),
      Text("Quarterly Review", {
        role: "title",
        position: { left: 80, top: 80 },
        width: 900,
        height: 70,
        style: textStyle("font: 44px Arial; weight: 700; color: #17202A"),
      }),
    ]),
  );

  return slide;
}

Quality Gates

Before final delivery, confirm:

  • output/final.pptx exists and is non-empty.
  • layout/deck.json exists and slide count matches the requested deck.
  • PNG previews are not blank.
  • No elements exceed the canvas.
  • Text boxes have no obvious overflow warnings left unresolved.
  • Images resolve to existing files or valid data URIs.
  • Every slide has a visible title.
  • preview/contact-sheet.png exists for deck-level review.

If LibreOffice is unavailable, the build falls back to SVG/PNG/layout QA and records loFinalRenderSkipped in the build summary.

Version History

  • 08dc189 Current 2026-07-05 19:04

Same Skill Collection

.agents/skills/anybox-frontend-guidelines/SKILL.md
.agents/skills/anybox-mobile-release/SKILL.md
.agents/skills/anybox-plugin/SKILL.md
.agents/skills/deploy-anybox-tencent-docker-windows/SKILL.md
.agents/skills/deploy-anybox-tencent-server/SKILL.md
.agents/skills/fanfande-frontend-style/SKILL.md
.agents/skills/fanfande-plugin-structure/SKILL.md
.agents/skills/frontend-ui-style-kit/SKILL.md
.agents/skills/obsidian-like/SKILL.md
.agents/skills/pdf/SKILL.md
.agents/skills/transcribe/SKILL.md
.agents/skills/zhihu-md-publisher/SKILL.md
.anybox/skills/anybox-plugin-development/SKILL.md
.anybox/skills/anybox-start-dev/SKILL.md
packages/chrome-plugin/runtime/skills/chrome/SKILL.md
plugins/Anybox-Plugins/anybox-plugin-development/skills/anybox-plugin-development/SKILL.md
plugins/Anybox-Plugins/atlassian-rovo/skills/capture-tasks-from-meeting-notes/SKILL.md
plugins/Anybox-Plugins/atlassian-rovo/skills/generate-status-report/SKILL.md
plugins/Anybox-Plugins/box/skills/box/SKILL.md
plugins/Anybox-Plugins/browser/skills/browser/SKILL.md
plugins/Anybox-Plugins/build-ios-apps/skills/ios-app-intents/SKILL.md
plugins/Anybox-Plugins/build-ios-apps/skills/ios-debugger-agent/SKILL.md
plugins/Anybox-Plugins/build-ios-apps/skills/ios-ettrace-performance/SKILL.md
plugins/Anybox-Plugins/build-ios-apps/skills/ios-memgraph-leaks/SKILL.md
plugins/Anybox-Plugins/build-ios-apps/skills/ios-simulator-browser/SKILL.md
plugins/Anybox-Plugins/build-ios-apps/skills/swiftui-liquid-glass/SKILL.md
plugins/Anybox-Plugins/build-ios-apps/skills/swiftui-performance-audit/SKILL.md
plugins/Anybox-Plugins/build-ios-apps/skills/swiftui-ui-patterns/SKILL.md
plugins/Anybox-Plugins/build-ios-apps/skills/swiftui-view-refactor/SKILL.md
plugins/Anybox-Plugins/build-macos-apps/skills/appkit-interop/SKILL.md
plugins/Anybox-Plugins/build-macos-apps/skills/build-run-debug/SKILL.md
plugins/Anybox-Plugins/build-macos-apps/skills/liquid-glass/SKILL.md
plugins/Anybox-Plugins/build-macos-apps/skills/packaging-notarization/SKILL.md
plugins/Anybox-Plugins/build-macos-apps/skills/signing-entitlements/SKILL.md
plugins/Anybox-Plugins/build-macos-apps/skills/swiftpm-macos/SKILL.md
plugins/Anybox-Plugins/build-macos-apps/skills/swiftui-patterns/SKILL.md
plugins/Anybox-Plugins/build-macos-apps/skills/telemetry/SKILL.md
plugins/Anybox-Plugins/build-macos-apps/skills/test-triage/SKILL.md
plugins/Anybox-Plugins/build-macos-apps/skills/view-refactor/SKILL.md
plugins/Anybox-Plugins/build-macos-apps/skills/window-management/SKILL.md
plugins/Anybox-Plugins/build-web-apps/skills/frontend-app-builder/SKILL.md
plugins/Anybox-Plugins/build-web-apps/skills/frontend-testing-debugging/SKILL.md
plugins/Anybox-Plugins/build-web-apps/skills/react-best-practices/SKILL.md
plugins/Anybox-Plugins/build-web-apps/skills/shadcn-best-practices/SKILL.md
plugins/Anybox-Plugins/build-web-apps/skills/supabase-best-practices/SKILL.md
plugins/Anybox-Plugins/canva/skills/canva-branded-presentation/SKILL.md
plugins/Anybox-Plugins/canva/skills/canva-resize-for-all-social-media/SKILL.md
plugins/Anybox-Plugins/canva/skills/canva-translate-design/SKILL.md
plugins/Anybox-Plugins/chrome/skills/chrome/SKILL.md
plugins/Anybox-Plugins/cinema/skills/initialize-cinema-project/SKILL.md

Metadata

Files
0
Version
de06d03
Hash
599e2a6e
Indexed
2026-07-05 19:04

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-07 09:40
浙ICP备14020137号-1 $방문자$