#382 by GitHub stars
ningzimu/image-to-editable-ppt-skill
Rebuild slide images, scanned or image-based PPT/PPTX files, and PDF decks into object-level editable PowerPoint (.pptx), preserving speaker notes when supplied. Use for making visual slides editable or reconstructing slides from screenshots; not for authoring new presentations from scratch.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/image-to-editable-ppt/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
b7be494e31a0 → b7be494e31a0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → b7be494e31a0
No earlier version was observed for comparison.
Verified commit b7be494e31a0ed56ef98716891db5474606b8cdf
git clone --filter=blob:none --no-checkout https://github.com/ningzimu/image-to-editable-ppt-skill.git .hotskills/ningzimu-image-to-editable-ppt-skill && git -C .hotskills/ningzimu-image-to-editable-ppt-skill checkout --detach b7be494e31a0ed56ef98716891db5474606b8cdf
# Copy each selected skill directory from .hotskills/ningzimu-image-to-editable-ppt-skill into .agents/skills/<skill-name>/Heat
5.8- Star growth, last 7 daysAhead of 91% of tracked repositories
- Star growth, last 24 hoursAhead of 71% of tracked repositories
- Rank movement, last 7 daysAhead of 56% of tracked repositories
- Commits, last 30 daysAhead of 0% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- image-to-editable-ppt
skills/image-to-editable-ppt
How it works
image-to-editable-ppt
When your agent uses it
Rebuild slide images, scanned or image-based PPT/PPTX files, and PDF decks into object-level editable PowerPoint (.pptx), preserving speaker notes when supplied. Use for making visual slides editable or reconstructing slides from screenshots; not for authoring new presentations from scratch.
What it loads into context
Frontmatter
67 tokensAlways available to the agent
SKILL.md
3,584 tokensWhen the skill is activated
Reference documents
15,324 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Overview
- References
- Entry Contract
- Roles
- Workflow
- State Principles
- Delivery Principles
- Updating This Skill
Scripts executed separately
cli/editppt/__init__.pycli/editppt/cli.pycli/editppt/runtime/__init__.pycli/editppt/runtime/_input_normalization.pycli/editppt/runtime/_page_artifacts.pycli/editppt/runtime/build_pptx_from_manifest.pycli/editppt/runtime/configure_image_backend.pycli/editppt/runtime/deck_run_state.pycli/editppt/runtime/deck_text_hints.pycli/editppt/runtime/finalize_deck_run.pycli/editppt/runtime/formula_renderer.pycli/editppt/runtime/image_gen.pycli/editppt/runtime/main.pycli/editppt/runtime/make_page_contact_sheet.pycli/editppt/runtime/native_tables.pycli/editppt/runtime/paddle_text_hints.pycli/editppt/runtime/page_job_status.pycli/editppt/runtime/page_text_metrics.pycli/editppt/runtime/path_geometry.pycli/editppt/runtime/prepare_deck_run.pycli/editppt/runtime/process_asset_sheet.pycli/editppt/runtime/record_imagegen_result.pycli/editppt/runtime/record_page_dispatch.pycli/editppt/runtime/record_page_result.pycli/editppt/runtime/remove_chroma_key.pycli/editppt/runtime/reset_page_job.pycli/editppt/runtime/runtime_env.pycli/editppt/runtime/split_alpha_components.pycli/editppt/runtime/text_hints.pycli/editppt/runtime/validate_pptx.pyscripts/build-page-worker-prompt.py
Files
SKILL.mdcore17,041 bytesSKILL.mdcore17,041 bytesSKILL.mdcore17,041 bytesSKILL.mdcore17,041 bytesSKILL.mdcore17,041 bytesSKILL.mdcore17,041 bytesSKILL.mdcore17,041 bytesSKILL.mdcore17,041 bytesSKILL.mdcore17,041 bytesSKILL.mdcore17,041 bytesagents/openai.yamlasset261 bytescli/editppt/__init__.pyruns23 bytescli/editppt/cli.pyruns706 bytescli/editppt/runtime/__init__.pyruns67 bytescli/editppt/runtime/_input_normalization.pyruns14,874 bytescli/editppt/runtime/_page_artifacts.pyruns4,363 bytescli/editppt/runtime/build_pptx_from_manifest.pyruns52,473 bytescli/editppt/runtime/configure_image_backend.pyruns4,886 bytescli/editppt/runtime/deck_run_state.pyruns5,794 bytescli/editppt/runtime/deck_text_hints.pyruns7,724 bytescli/editppt/runtime/finalize_deck_run.pyruns3,762 bytescli/editppt/runtime/formula_renderer.pyruns8,691 bytescli/editppt/runtime/image_gen.pyruns30,134 bytescli/editppt/runtime/main.pyruns37,914 bytescli/editppt/runtime/make_page_contact_sheet.pyruns881 bytescli/editppt/runtime/native_tables.pyruns8,379 bytescli/editppt/runtime/paddle_text_hints.pyruns9,732 bytescli/editppt/runtime/page_job_status.pyruns2,147 bytescli/editppt/runtime/page_text_metrics.pyruns11,865 bytescli/editppt/runtime/path_geometry.pyruns7,999 bytescli/editppt/runtime/prepare_deck_run.pyruns7,213 bytescli/editppt/runtime/process_asset_sheet.pyruns5,843 bytescli/editppt/runtime/record_imagegen_result.pyruns5,910 bytescli/editppt/runtime/record_page_dispatch.pyruns2,862 bytescli/editppt/runtime/record_page_result.pyruns5,014 bytescli/editppt/runtime/remove_chroma_key.pyruns13,894 bytescli/editppt/runtime/reset_page_job.pyruns2,636 bytescli/editppt/runtime/runtime_env.pyruns13,484 bytescli/editppt/runtime/split_alpha_components.pyruns13,577 bytescli/editppt/runtime/text_hints.pyruns13,963 bytescli/editppt/runtime/validate_pptx.pyruns35,674 bytescli/pyproject.tomlasset561 bytesprompts/page-worker.mddoc5,106 bytesreferences/cli-helper.mddoc16,267 bytesreferences/manifest-schema.mddoc22,633 bytesreferences/page-decision-tree.mddoc25,462 bytesscripts/build-page-worker-prompt.pyruns4,594 bytes
Read SKILL.md
# Image to Editable PPT
## Overview
Use the `editppt` runtime to decompose, reconstruct, validate, and assemble visual slides as editable `.pptx`. Inputs may be single or multiple images, PDF, or image-based PPT/PPTX.
## References
Each rule in this skill has exactly one authoritative home; the other files point to it instead of restating it.
- `prompts/page-worker.md`: execution template for page workers — ownership boundary, execution order, required outputs, and return format. The parent agent uses it when generating page-worker prompts.
- `scripts/build-page-worker-prompt.py`: skill-local prompt builder. It reads `prompts/page-worker.md`, fills run/page paths, writes `worker-prompt.md`, and prints the dispatch command template.
- `references/cli-helper.md`: CLI install check (Pre-Run Check), command tree, and command syntax examples. Read it when deciding which `editppt` command to call.
- `references/manifest-schema.md`: the single home for JSON field contracts of deck/page/image artifacts — required manifest fields, positioned-object coordinates, `validation.json`, and `page_result.json` shapes. Read it when writing or validating any run/page file.
- `references/page-decision-tree.md`: the single source of truth for page object decisions — background handling, foreground asset separation, native shapes, formulas, text-hints usage, the final self-check, and the fix-versus-warning split. Read its common decision boundaries first, then the sections relevant to the page inventory; the page prompt provides the reading route.View the complete source on GitHubSkills included
- image-to-editable-ppt
Repository facts
- License
- MIT
- Created
- May 21, 2026
- Last pushed
- Sep 16, 2026
- Forks
- 175
- Open issues
- 1
- Project activity
- Active
Rank over the last 12 weeks
Now #382 · best #352 · down 19 in 30 days
- #373 on Nov 1
- #374 on Nov 2
- #375 on Nov 3
- #376 from Nov 4 to Nov 5
- #380 on Nov 6
- #382 since Nov 7
74 earlier periods
- #386 on Aug 2
- #375 on Aug 8
- #373 on Aug 9
- #384 on Aug 10
- #382 on Aug 11
- #378 on Aug 12
- #379 on Aug 13
- #378 on Aug 14
- #376 on Aug 15
- #382 on Aug 16
- #378 on Aug 17
- #385 on Aug 18
- #381 on Aug 19
- #380 on Aug 20
- #379 on Aug 21
- #375 on Aug 22
- #380 from Aug 23 to Aug 25
- #378 on Aug 26
- #382 on Aug 27
- #381 on Aug 28
- #373 on Aug 29
- #368 on Aug 30
- #375 on Aug 31
- #382 on Sep 1
- #375 on Sep 2
- #377 on Sep 3
- #368 on Sep 4
- #372 on Sep 5
- #366 on Sep 6
- #374 on Sep 7
- #371 on Sep 8
- #372 on Sep 9
- #371 on Sep 10
- #365 on Sep 11
- #369 on Sep 12
- #368 on Sep 13
- #370 on Sep 14
- #369 from Sep 15 to Sep 16
- #366 on Sep 17
- #368 on Sep 18
- #361 on Sep 19
- #365 on Sep 20
- #362 on Sep 21
- #366 on Sep 22
- #358 on Sep 23
- #357 from Sep 24 to Sep 25
- #352 on Sep 26
- #356 on Sep 27
- #358 on Sep 28
- #368 on Sep 29
- #364 from Sep 30 to Oct 2
- #357 on Oct 3
- #355 on Oct 4
- #360 from Oct 5 to Oct 6
- #363 from Oct 7 to Oct 8
- #369 on Oct 9
- #360 on Oct 10
- #363 on Oct 11
- #367 from Oct 12 to Oct 14
- #364 on Oct 15
- #367 on Oct 16
- #358 on Oct 17
- #364 on Oct 18
- #365 on Oct 19
- #366 on Oct 20
- #367 on Oct 21
- #365 on Oct 22
- #366 on Oct 23
- #360 on Oct 24
- #371 on Oct 25
- #377 on Oct 28
- #376 on Oct 29
- #378 on Oct 30
- #376 on Oct 31
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 2, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 9 notes
skills/image-to-editable-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/image-to-editable-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/image-to-editable-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/image-to-editable-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/image-to-editable-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/image-to-editable-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/image-to-editable-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/image-to-editable-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/image-to-editable-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 103 network referencesin 10 files: image-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:19 image-to-editable-ppt/cli/editppt/runtime/main.py:465 image-to-editable-ppt/cli/editppt/runtime/runtime_env.py:14 and 7 more
- 2 obfuscation signalsin 2 files: image-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:689 image-to-editable-ppt/cli/editppt/runtime/image_gen.py:566
- No instruction overrides
- 31 executable scriptsin 31 files: image-to-editable-ppt/cli/editppt/__init__.py:1 image-to-editable-ppt/cli/editppt/cli.py:1 image-to-editable-ppt/cli/editppt/runtime/__init__.py:1 and 28 more
- 36 references to secretsin 7 files: image-to-editable-ppt/cli/editppt/runtime/runtime_env.py:15 image-to-editable-ppt/cli/editppt/runtime/image_gen.py:48 image-to-editable-ppt/cli/editppt/runtime/main.py:41 and 4 more
- No requests to vote in Hot
Show all 172 signals by file
skills/image-to-editable-ppt/SKILL.md
- Network accessline 66
Prepare also writes per-page text hints. Whenever `editppt doctor` or prepare reports that no PaddleOCR token is configured (offline fallback), ask the user once before dispatching any page: a free token from https://aistudio.baidu.com/acco
skills/image-to-editable-ppt/cli/editppt/__init__.py
- Executable scriptline 1
Executable file
skills/image-to-editable-ppt/cli/editppt/cli.py
skills/image-to-editable-ppt/cli/editppt/runtime/__init__.py
- Executable scriptline 1
Executable file
skills/image-to-editable-ppt/cli/editppt/runtime/_input_normalization.py
- Executable scriptline 1
Executable file - Network accessline 16
IMG_EXTS = {".png", ".jpg", ".jpeg", ".webp", ".bmp", ".gif", ".tif", ".tiff"} PPT_EXTS = {".ppt", ".pptx"} REL_NS = "http://schemas.openxmlformats.org/package/2006/relationships" - Network accessline 17
PPT_EXTS = {".ppt", ".pptx"} REL_NS = "http://schemas.openxmlformats.org/package/2006/relationships" NS = { - Network accessline 18
REL_NS = "http://schemas.openxmlformats.org/package/2006/relationships" - Network accessline 19
NS = { "a": "http://schemas.openxmlformats.org/drawingml/2006/main", "p": "http://schemas.openxmlformats.org/presentationml/2006/main", - Network accessline 20
"a": "http://schemas.openxmlformats.org/drawingml/2006/main", - Network accessline 21
"p": "http://schemas.openxmlformats.org/presentationml/2006/main", - Network accessline 22
"r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
skills/image-to-editable-ppt/cli/editppt/runtime/_page_artifacts.py
- Executable scriptline 1
Executable file
skills/image-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 19
EMU_PER_INCH = 914400 REL_NS = "http://schemas.openxmlformats.org/package/2006/relationships" - Network accessline 20
REL_NS = "http://schemas.openxmlformats.org/package/2006/relationships" - Network accessline 547
next_id += 1 return f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p - Network accessline 548
return f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas. - Network accessline 549
<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"> - Network accessline 562
def rels_xml(manifest, media_start=1, notes_index=None): rels = ['<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" Target="../slideLayouts/slideLayout1.xml"/>'] - Network accessline 563
rels = ['<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" Target="../slideLayouts/slideLayout1.xml"/>'] - Network accessline 564
for i, item in enumerate(manifest.get("images", []), start=1): target = f"../media/image{media_start + i - 1}{image_ext(item['path'])}" rels.append(f'<Relationship Id="rId{i + 1}" Type="http://schemas.openxmlformats.org/offi - Network accessline 565
target = f"../media/image{media_start + i - 1}{image_ext(item['path'])}" rels.append(f'<Relationship Id="rId{i + 1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="{target}"/>') if notes - Network accessline 566
rels.append(f'<Relationship Id="rId{i + 1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="{target}"/>') - Network accessline 567
if notes_index is not None: rels.append( f'<Relationship Id="rId{len(rels) + 1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide" Target="../notesSlides/notesSlide{notes_index}.xml"/> - Network accessline 568
rels.append( f'<Relationship Id="rId{len(rels) + 1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide" Target="../notesSlides/notesSlide{notes_index}.xml"/>' ) - Network accessline 569
f'<Relationship Id="rId{len(rels) + 1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide" Target="../notesSlides/notesSlide{notes_index}.xml"/>' - Network accessline 571
return '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' + "".join(rels) + "</Relationships>" - Network accessline 578
) or '<a:p><a:endParaRPr lang="zh-CN" sz="1200"/></a:p>' return f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <p:notes xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats. - Network accessline 579
return f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <p:notes xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schema - Network accessline 580
<p:notes xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"> - Network accessline 597
return f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="{REL_NS}"> <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster" Target="../notesMasters/not - Network accessline 598
<Relationships xmlns="{REL_NS}"> <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster" Target="../notesMasters/notesMaster1.xml"/> <Relationship Id="rId2" Type="http://schemas.ope - Network accessline 599
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster" Target="../notesMasters/notesMaster1.xml"/> - Network accessline 600
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" Target="../slides/slide{slide_index}.xml"/> - Network accessline 604
def notes_master_xml(): return """<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <p:notesMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/rela - Network accessline 605
return """<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <p:notesMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://s - Network accessline 606
<p:notesMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"> - Network accessline 613
return f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="{REL_NS}"> <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="../theme/theme1.xml"/> - Network accessline 614
<Relationships xmlns="{REL_NS}"> <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="../theme/theme1.xml"/> </Relationships>""" - Network accessline 615
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="../theme/theme1.xml"/> - Network accessline 642
for i in notes_indices: overrides.append(f'<Override PartName="/ppt/notesSlides/notesSlide{i}.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml"/>') return f'<?xml version="1.0" en - Network accessline 644
return f'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">{default_xml}{"".join(overrides)}</Types>' - Network accessline 657
size_type = slide_size_type(width, height) return f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <p:presentation xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/off - Network accessline 658
return f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <p:presentation xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http:/ - Network accessline 659
<p:presentation xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"> - Network accessline 667
def presentation_rels_xml(slide_count): rels = ['<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster" Target="slideMasters/slideMaster1.xml"/>'] - Network accessline 668
rels = ['<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster" Target="slideMasters/slideMaster1.xml"/>'] - Network accessline 669
for i in range(1, slide_count + 1): rels.append(f'<Relationship Id="rId{i + 1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" Target="slides/slide{i}.xml"/>') return f'<?xml version="1.0" encod - Network accessline 670
rels.append(f'<Relationship Id="rId{i + 1}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" Target="slides/slide{i}.xml"/>') - Network accessline 674
def write_common_parts(z, slide_count, width, height, notes_count): presentation_format = "Widescreen" if is_wide_slide(width, height) else "Custom" z.writestr("_rels/.rels", """<?xml version="1.0" encoding="UTF-8" standalone="yes"? - Network accessline 675
presentation_format = "Widescreen" if is_wide_slide(width, height) else "Custom" z.writestr("_rels/.rels", """<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/re - Network accessline 676
z.writestr("_rels/.rels", """<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDo - Network accessline 677
z.writestr("docProps/core.xml", """<?xml version="1.0" encoding="UTF-8" standalone="yes"?><cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/"><dc: - Network accessline 678
z.writestr("docProps/app.xml", f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"><Application>Codex</Application><PresentationFormat>{pre - Network accessline 679
z.writestr("ppt/presentation.xml", presentation_xml(slide_count, width, height)) z.writestr("ppt/_rels/presentation.xml.rels", presentation_rels_xml(slide_count)) z.writestr("ppt/slideMasters/slideMaster1.xml", """<?xml version="1.0 - Network accessline 680
z.writestr("ppt/_rels/presentation.xml.rels", presentation_rels_xml(slide_count)) z.writestr("ppt/slideMasters/slideMaster1.xml", """<?xml version="1.0" encoding="UTF-8" standalone="yes"?><p:sldMaster xmlns:a="http://schemas.openxmlform - Network accessline 681
z.writestr("ppt/slideMasters/slideMaster1.xml", """<?xml version="1.0" encoding="UTF-8" standalone="yes"?><p:sldMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument - Network accessline 682
z.writestr("ppt/slideMasters/_rels/slideMaster1.xml.rels", """<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://sc - Network accessline 683
z.writestr("ppt/slideLayouts/slideLayout1.xml", """<?xml version="1.0" encoding="UTF-8" standalone="yes"?><p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument - Network accessline 684
z.writestr("ppt/slideLayouts/_rels/slideLayout1.xml.rels", """<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://sc - Network accessline 687
theme_lines = '<a:ln w="9525"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill></a:ln>' * 3 theme_effects = '<a:effectStyle><a:effectLst/></a:effectStyle>' * 3 z.writestr("ppt/theme/theme1.xml", f"""<?xml version="1.0" encoding= - Network accessline 688
theme_effects = '<a:effectStyle><a:effectLst/></a:effectStyle>' * 3 z.writestr("ppt/theme/theme1.xml", f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?><a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" n - Network accessline 689
z.writestr("ppt/theme/theme1.xml", f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?><a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="ImageToEditablePPT"><a:themeElements><a:clrScheme name="Office"><a: - Possible obfuscationline 689
z.writestr("ppt/theme/theme1.xml", f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?><a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="ImageToEditablePPT"><a:themeElements><a:clrScheme name="Office"><a:
skills/image-to-editable-ppt/cli/editppt/runtime/configure_image_backend.py
skills/image-to-editable-ppt/cli/editppt/runtime/deck_run_state.py
- Executable scriptline 1
Executable file
skills/image-to-editable-ppt/cli/editppt/runtime/deck_text_hints.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 9
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Network accessline 138
"cost. ASK THE USER once " "before reconstructing pages: configure a token now (apply at " "https://aistudio.baidu.com/account/accessToken, then `editppt config " - Network accessline 139
"before reconstructing pages: configure a token now (apply at " "https://aistudio.baidu.com/account/accessToken, then `editppt config " "--paddle-ocr-token <token>` and `editppt run hints <run>` to regenerate this ru - Network accessline 140
"https://aistudio.baidu.com/account/accessToken, then `editppt config "
skills/image-to-editable-ppt/cli/editppt/runtime/finalize_deck_run.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/formula_renderer.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/image_gen.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 45
DEFAULT_CONFIG_HOME = "~/.editppt" DEFAULT_CODEX_AUTH_FILE = "~/.codex/auth.json" DEFAULT_CODEX_IMAGES_BASE_URL = "https://chatgpt.com/backend-api/codex" - Network accessline 46
DEFAULT_CODEX_AUTH_FILE = "~/.codex/auth.json" DEFAULT_CODEX_IMAGES_BASE_URL = "https://chatgpt.com/backend-api/codex" ENV_FIELDS = ("OPENAI_API_KEY", "OPENAI_BASE_URL", "IMAGE_TO_EDITABLE_PPT_IMAGE_MODEL") - Network accessline 47
DEFAULT_CODEX_IMAGES_BASE_URL = "https://chatgpt.com/backend-api/codex" - Access to secretsline 48
[Credential-related source omitted] - Network accessline 49
MAX_CODEX_RESPONSE_BYTES = 64 * 1024 * 1024 MAX_CODEX_BASE64_CHARS = 64 * 1024 * 1024 CHATGPT_AUTH_CLAIM = "https://api.openai.com/auth" - Network accessline 50
MAX_CODEX_BASE64_CHARS = 64 * 1024 * 1024 CHATGPT_AUTH_CLAIM = "https://api.openai.com/auth" CHATGPT_ACCOUNT_ID_CLAIM = "chatgpt_account_id" - Network accessline 51
CHATGPT_AUTH_CLAIM = "https://api.openai.com/auth" - Access to secretsline 57
[Credential-related source omitted] - Network accessline 61
codex login editppt config --api-key "your-api-key" --model gpt-image-2.5-sunburst editppt config --api-key "your-api-key" --base-url https://example.test/v1 --model openai/gpt-image-2.5-sunburst - Network accessline 63
editppt config --api-key "your-api-key" --base-url https://example.test/v1 --model openai/gpt-image-2.5-sunburst - Access to secretsline 165
[Credential-related source omitted] - Access to secretsline 228
[Credential-related source omitted] - Access to secretsline 415
[Credential-related source omitted] - Access to secretsline 416
[Credential-related source omitted] - Access to secretsline 419
[Credential-related source omitted] - Access to secretsline 433
[Credential-related source omitted] - Possible obfuscationline 566
out_path.write_bytes(base64.b64decode(image_b64)) - Access to secretsline 628
[Credential-related source omitted]
skills/image-to-editable-ppt/cli/editppt/runtime/main.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 41
[Credential-related source omitted] - Access to secretsline 62
[Credential-related source omitted] - Access to secretsline 63
[Credential-related source omitted] - Access to secretsline 389
[Credential-related source omitted] - Network accessline 465
epilog="""Examples: editppt config --api-key "your-api-key" --model gpt-image-2.5-sunburst editppt config --api-key "your-api-key" --base-url https://example.test/v1 --model openai/gpt-image-2.5-sunburst - Network accessline 466
editppt config --api-key "your-api-key" --model gpt-image-2.5-sunburst editppt config --api-key "your-api-key" --base-url https://example.test/v1 --model openai/gpt-image-2.5-sunburst editppt config --clear-base-url - Network accessline 467
editppt config --api-key "your-api-key" --base-url https://example.test/v1 --model openai/gpt-image-2.5-sunburst - Network accessline 470
) config.add_argument("--api-key", help="OpenAI or OpenAI-compatible API key to store.") config.add_argument("--base-url", help="OpenAI-compatible base URL, for example https://api.openai.com/v1.") - Network accessline 471
config.add_argument("--api-key", help="OpenAI or OpenAI-compatible API key to store.") config.add_argument("--base-url", help="OpenAI-compatible base URL, for example https://api.openai.com/v1.") config.add_argument("--clear-base-ur - Network accessline 472
config.add_argument("--base-url", help="OpenAI-compatible base URL, for example https://api.openai.com/v1.") - Network accessline 473
config.add_argument("--clear-base-url", action="store_true", help="Remove OPENAI_BASE_URL from the config file.") config.add_argument("--model", help="Default image model for API fallback.") config.add_argument("--paddle-ocr-token", - Network accessline 474
config.add_argument("--model", help="Default image model for API fallback.") config.add_argument("--paddle-ocr-token", metavar="TOKEN", help="PaddleOCR-VL token for content-aware text hints. Apply at https://aistudio.baidu.com/account/a - Network accessline 475
config.add_argument("--paddle-ocr-token", metavar="TOKEN", help="PaddleOCR-VL token for content-aware text hints. Apply at https://aistudio.baidu.com/account/accessToken.") - Access to secretsline 476
[Credential-related source omitted] - Access to secretsline 753
[Credential-related source omitted] - Network accessline 757
codex login editppt config --api-key "your-api-key" --model gpt-image-2.5-sunburst editppt config --api-key "your-api-key" --base-url https://example.test/v1 --model openai/gpt-image-2.5-sunburst - Network accessline 759
editppt config --api-key "your-api-key" --base-url https://example.test/v1 --model openai/gpt-image-2.5-sunburst
skills/image-to-editable-ppt/cli/editppt/runtime/make_page_contact_sheet.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/native_tables.py
- Executable scriptline 1
Executable file - Network accessline 138
rows.append(f'<a:tr h="{emu(table["row_heights"][r])}">{"".join(parts)}</a:tr>') grid = "".join(f'<a:gridCol w="{emu(width)}"/>' for width in table["column_widths"]) return f'''<p:graphicFrame><p:nvGraphicFramePr><p:cNvPr id="{idx}" - Network accessline 140
return f'''<p:graphicFrame><p:nvGraphicFramePr><p:cNvPr id="{idx}" name="Table {idx}"/><p:cNvGraphicFramePr/><p:nvPr/></p:nvGraphicFramePr><p:xfrm><a:off x="{emu(table['left'])}" y="{emu(table['top'])}"/><a:ext cx="{emu(table['width'])}" cy
skills/image-to-editable-ppt/cli/editppt/runtime/paddle_text_hints.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 31
JOB_URL = "https://paddleocr.aistudio-app.com/api/v2/ocr/jobs" - Network accessline 51
optional = {"useDocOrientationClassify": False, "useDocUnwarping": False, "useChartRecognition": False} with file_path.open("rb") as handle: response = requests.post( - Network accessline 52
with file_path.open("rb") as handle: response = requests.post( JOB_URL, - Network accessline 53
response = requests.post( - Network accessline 65
started = time.time() while True: status = requests.get(f"{JOB_URL}/{job_id}", headers=headers, timeout=60).json()["data"] - Network accessline 66
while True: status = requests.get(f"{JOB_URL}/{job_id}", headers=headers, timeout=60).json()["data"] state = status["state"] - Network accessline 67
status = requests.get(f"{JOB_URL}/{job_id}", headers=headers, timeout=60).json()["data"] - Network accessline 77
jsonl = requests.get(status["resultUrl"]["jsonUrl"], timeout=60) - Access to secretsline 180
[Credential-related source omitted]
skills/image-to-editable-ppt/cli/editppt/runtime/page_job_status.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/page_text_metrics.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/path_geometry.py
- Executable scriptline 1
Executable file
skills/image-to-editable-ppt/cli/editppt/runtime/prepare_deck_run.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/process_asset_sheet.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/record_imagegen_result.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/record_page_dispatch.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/record_page_result.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/remove_chroma_key.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/reset_page_job.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/runtime_env.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 14
DEFAULT_IMAGE_MODEL = "gpt-image-2.5-sunburst" ENV_FIELDS = ("OPENAI_API_KEY", "OPENAI_BASE_URL", "IMAGE_TO_EDITABLE_PPT_IMAGE_MODEL", "PADDLE_OCR_TOKEN") PADDLE_TOKEN_APPLY_URL = "https://aistudio.baidu.com/account/accessToken" - Network accessline 15
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Network accessline 16
PADDLE_TOKEN_APPLY_URL = "https://aistudio.baidu.com/account/accessToken" - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 111
[Credential-related source omitted] - Access to secretsline 115
[Credential-related source omitted] - Access to secretsline 133
[Credential-related source omitted] - Access to secretsline 134
[Credential-related source omitted] - Access to secretsline 158
[Credential-related source omitted] - Access to secretsline 174
[Credential-related source omitted] - Access to secretsline 176
[Credential-related source omitted] - Access to secretsline 183
[Credential-related source omitted] - Access to secretsline 184
[Credential-related source omitted] - Network accessline 197
[Credential-related source omitted] - Network accessline 198
[Credential-related source omitted] - Access to secretsline 198
[Credential-related source omitted] - Network accessline 199
"OPENAI_BASE_URL": values.get("OPENAI_BASE_URL", "https://api.openai.com/v1"), - Access to secretsline 263
[Credential-related source omitted] - Access to secretsline 299
[Credential-related source omitted] - Network accessline 319
cfg = sub.add_parser("config", help="Write or update ~/.editppt/config.yaml") cfg.add_argument("--api-key", help="OpenAI or OpenAI-compatible API key to store.") cfg.add_argument("--base-url", help="OpenAI-compatible base URL, for e - Network accessline 320
cfg.add_argument("--api-key", help="OpenAI or OpenAI-compatible API key to store.") cfg.add_argument("--base-url", help="OpenAI-compatible base URL, for example https://api.openai.com/v1.") cfg.add_argument("--clear-base-url", actio - Network accessline 321
cfg.add_argument("--base-url", help="OpenAI-compatible base URL, for example https://api.openai.com/v1.") - Access to secretsline 325
[Credential-related source omitted]
skills/image-to-editable-ppt/cli/editppt/runtime/split_alpha_components.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/text_hints.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/image-to-editable-ppt/cli/editppt/runtime/validate_pptx.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 14
NS = { "a": "http://schemas.openxmlformats.org/drawingml/2006/main", - Network accessline 15
"a": "http://schemas.openxmlformats.org/drawingml/2006/main", - Network accessline 16
"p": "http://schemas.openxmlformats.org/presentationml/2006/main", - Network accessline 17
"rel": "http://schemas.openxmlformats.org/package/2006/relationships",
skills/image-to-editable-ppt/scripts/build-page-worker-prompt.py
- Executable scriptline 1
#!/usr/bin/env python3
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 10 facts
- Contacts schemas.openxmlformats.org, which SKILL.md, the README and the plugin manifest do not mentionimage-to-editable-ppt/cli/editppt/runtime/_input_normalization.py:18High confidence
- Contacts schemas.openxmlformats.org, which SKILL.md, the README and the plugin manifest do not mentionimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:20High confidence
- Contacts purl.org, which SKILL.md, the README and the plugin manifest do not mentionimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:677High confidence
- Contacts chatgpt.com, which SKILL.md, the README and the plugin manifest do not mentionimage-to-editable-ppt/cli/editppt/runtime/image_gen.py:47High confidence
- Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentionimage-to-editable-ppt/cli/editppt/runtime/image_gen.py:51High confidence
- Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentionimage-to-editable-ppt/cli/editppt/runtime/main.py:472High confidence
- Contacts schemas.openxmlformats.org, which SKILL.md, the README and the plugin manifest do not mentionimage-to-editable-ppt/cli/editppt/runtime/native_tables.py:140High confidence
- Contacts paddleocr.aistudio-app.com, which SKILL.md, the README and the plugin manifest do not mentionimage-to-editable-ppt/cli/editppt/runtime/paddle_text_hints.py:31High confidence
- Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentionimage-to-editable-ppt/cli/editppt/runtime/runtime_env.py:199High confidence
- Contacts schemas.openxmlformats.org, which SKILL.md, the README and the plugin manifest do not mentionimage-to-editable-ppt/cli/editppt/runtime/validate_pptx.py:15High confidence
Signal confidence: 172 facts
- Network access in prose of the SKILL.mdimage-to-editable-ppt/SKILL.md:66Low confidence
- Executable script in code of a file that runsimage-to-editable-ppt/cli/editppt/__init__.py:1High confidence
- Executable script in code of a file that runsimage-to-editable-ppt/cli/editppt/cli.py:1High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueimage-to-editable-ppt/cli/editppt/cli.py:18Low confidence
- Executable script in prose of a file that runsimage-to-editable-ppt/cli/editppt/runtime/__init__.py:1Low confidence
- Executable script in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/_input_normalization.py:1High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/_input_normalization.py:16High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/_input_normalization.py:17High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/_input_normalization.py:18High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/_input_normalization.py:19High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/_input_normalization.py:20High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/_input_normalization.py:21High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/_input_normalization.py:22High confidence
- Executable script in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/_page_artifacts.py:1High confidence
- Executable script in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:1High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:19High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:20High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:547High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:548High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:549High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:562High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:563High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:564High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:565High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:566High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:567High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:568High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:569High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:571High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:578High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:579High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:580High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:597High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:598High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:599High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:600High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:604High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:605High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:606High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:613High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:614High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:615High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:642High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:644High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:657High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:658High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:659High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:667High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:668High confidence
- Network access in code of a file that runsimage-to-editable-ppt/cli/editppt/runtime/build_pptx_from_manifest.py:669High confidence
and 122 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md skills/image-to-editable-ppt/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/image-to-editable-ppt/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/image-to-editable-ppt/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/image-to-editable-ppt/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/image-to-editable-ppt/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/ningzimu-image-to-editable-ppt-skill/)