Use for 小北在读研 / XiaoBei academic paper-to-PPT workflows: generate thesis-defense or project-report decks from uploaded papers, literature, reports, technical documents, and optional PPTX visual templates. Produces a source-grounded outline, an imagegen visual scheme, one complete bitmap per slide, an imagegen provenance manifest, and an image-only PPTX. Do not use when the user needs editable slide text or native editable charts.
npx skills add https://github.com/xiao24bei/xiaobei-skill --skill xiaobei-skill-academic-paper-to-ppt
When this skill is triggered, execute the workflow in this exact order:
ppt_outline.mdppt_outline.md using $imagegen, then immediately display that image inline in the chat$imagegen; immediately display each completed page image inline in the chat before waiting for the whole deckimagegen_manifest.json recording the selected $imagegen generation method and every generated asset.pptx file where each image fills one complete slideNever skip stages unless the user explicitly requests only one stage.
Strict image-only contract:
.pptx must contain one full-slide image per slide and no editable visible text boxes.text-free, no readable words, background template, blank areas, editable Chinese text, text to be added later, or equivalent wording.$imagegen cannot generate complete page images with the required text, retry with shorter full-page prompts or switch to the other allowed $imagegen mode. If complete page images still cannot be produced, stop at image generation and report the failed stage. Do not assemble a fallback PPT.Chat-visible image contract:
image_gen and CLI generation. Changing the image backend must not make generated images invisible to the user.!PPT 视觉方案.第 X/N 页, then render that page with its absolute local path. A text-only progress message such as “已生成 6 页” does not satisfy this requirement.slide_XX.png individually before continuing to wait. Limited concurrency is allowed, but the chat must expose each completed page rather than hiding the batch until completion.第 X/N 页 label and preserve/copy the selected image into the workspace for manifesting and PPT assembly.Required image-generation dependency:
$imagegen skill.image_gen first when the user does not specify a generation mode.$imagegen workflow.outputs/imagegen/ and record method imagegen_cli_fallback in imagegen_manifest.json.requirements.txt for PowerPoint assembly and validation.$imagegen with textual visual suggestions, SVG/vector/code-native drawings, HTML/CSS/canvas mockups, manual diagrams, or a generic image-generation placeholder.$CODEX_HOME/generated_images/... or the workspace into outputs/imagegen/generated_slides/, and record method built_in_image_gen in imagegen_manifest.json.image_gen unless the user asked for CLI only. If the default built-in attempt fails, use CLI only when the current environment authorizes and supports that fallback.$imagegen can generate real image files, stop at that stage and report the incomplete stage. Do not assemble a PPT from non-imagegen substitutes.$imagegen is not enough. Every final slide image recorded in imagegen_manifest.json must also be generated with $imagegen.image_gen if needed. Stop rather than replacing text with editable PowerPoint objects.Do not expand the full Markdown outline in the chat.
Do not output long analysis.
Do not invent information that is not in the uploaded document.
Do not cite or use external sources unless the user explicitly asks for external supplementation.
Use this priority order for the deck's visual style:
references/visual-style-spec.md.If a template is provided, treat it as a visual and structural reference only:
If no template is provided, use the default academic preset from references/visual-style-spec.md.
Input:
Output:
ppt_outline.md
The file must contain a complete Markdown PPT outline of about 12-18 pages by default. Use about 10 pages only when the source document is short or the user explicitly asks for a compact deck.
Strict rules:
原文未明确说明.$imagegen.10. If a PPT template is provided, use its section rhythm and page families to guide page distribution and content density, while keeping all factual content grounded in the source document.
11. The output must be usable by AI PPT tools, Codex, or visual design tools.
Use the structure in references/outline-template.md.
After Stage 1, reply briefly only:
Do not paste the full outline into chat.
Input:
ppt_outline.mdOutput:
outputs/imagegen/visual_preview.png for either generation mode.Must use $imagegen.
Execution rules:
$imagegen before generating the visual preview.outputs/imagegen/ before generation. Use built-in image_gen first unless the user explicitly selected CLI.outputs/imagegen/visual_preview.png, and immediately display that image inline in the chat.$imagegen skill's authorized CLI fallback, save the output to outputs/imagegen/visual_preview.png, and immediately display that image inline in the chat.Visual requirements:
references/visual-style-spec.md.Important:
Input:
ppt_outline.md$imagegenOutput:
outputs/imagegen/generated_slides/ for either generation modeimagegen_manifest.jsondefense_presentation.pptx
Generation rules:
$imagegen and the selected method to generate each slide page: one built-in image_gen call per page in default built-in mode, or a monitorable scripts/image_gen.py generate-batch process in CLI mode.10. The PPT should follow the page structure in ppt_outline.md and the Visual Style Priority above.
11. Do not create slide images through HTML/CSS screenshots, SVG export, canvas drawing, manually composed placeholders, or any route that bypasses $imagegen.
12. If $imagegen cannot generate the slide images, stop and report the incomplete stage instead of assembling a PPT from non-imagegen placeholders.
13. Generate one final page image per slide in ppt_outline.md; the number of image files recorded in imagegen_manifest.json must equal the number of outline slides.
14. Name images with zero-padded slide numbers, such as slide_01.png, slide_02.png, and so on.
15. Do not accept or manifest final prompts that ask for background-only or text-free pages. Any final prompt containing text-free, no readable words, background template, blank areas, editable text, editable Chinese text, or text to be added later must be treated as a failed workflow.
16. Immediately after each page image becomes available, display that individual image in the chat with 第 X/N 页 and an absolute-path Markdown image. Do not wait for the full deck, and do not substitute only a contact sheet.
For CLI slide generation, create outputs/imagegen/prompts.jsonl with one JSON object per slide prompt, then use the installed $imagegen skill's supported batch command and credential mechanism. Write results to outputs/imagegen/generated_slides/, keep the process monitorable, poll for new slide_XX.png files, and display each new page inline before continuing to wait. Do not copy a maintainer-specific CLI path or credential configuration into the project.
Create imagegen_manifest.json after generating the preview and slide images. It must include:
{
"generation_method": "imagegen_cli_fallback",
"visual_preview": "outputs/imagegen/visual_preview.png",
"image_output_dir": "outputs/imagegen/generated_slides",
"model": "gpt-image-2",
"quality": "medium",
"size": "1536x864",
"slides": [
{
"slide": 1,
"file": "outputs/imagegen/generated_slides/slide_01.png",
"method": "imagegen_cli_fallback",
"prompt": "full slide prompt used for this page"
}
]
}
Use scripts/build_ppt_from_images.py to assemble the images into a .pptx.
The script should:
defense_presentation.pptxExample command:
python scripts/build_ppt_from_images.py \
--image-dir ./outputs/imagegen/generated_slides \
--output ./defense_presentation.pptx
Use --image-dir ./outputs/imagegen/generated_slides for both generation modes.
Validate final outputs with:
python scripts/validate_outputs.py --base-dir .
The validation must fail if:
imagegen_manifest.json is missing.imagegen_manifest.json is missing.$imagegen method: built_in_image_gen or imagegen_cli_fallback.ppt_outline.md.slide_XX.* image recorded in imagegen_manifest.json is missing.After completing the full workflow, reply briefly only with:
built_in_image_gen 或 imagegen_cli_fallbackDo not output:
Take xiao24bei/xiaobei-skill-academic-paper-to-ppt from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.