#190 by GitHub stars
ningzimu/codex-ppt-skill
Generate visually unified image-based PPT/PPTX decks from articles, reports, papers, notes, or outlines.
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/codex-ppt/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
941dcafe2f23 → 941dcafe2f23
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 941dcafe2f23
No earlier version was observed for comparison.
Verified commit 941dcafe2f23ea4ae61de99e9b22fb0ef3d9e06c
git clone --filter=blob:none --no-checkout https://github.com/ningzimu/codex-ppt-skill.git .hotskills/ningzimu-codex-ppt-skill && git -C .hotskills/ningzimu-codex-ppt-skill checkout --detach 941dcafe2f23ea4ae61de99e9b22fb0ef3d9e06c
# Copy each selected skill directory from .hotskills/ningzimu-codex-ppt-skill into .agents/skills/<skill-name>/Heat
7.7- Star growth, last 7 daysAhead of 94% of tracked repositories
- Star growth, last 24 hoursAhead of 92% of tracked repositories
- Rank movement, last 7 daysAhead of 85% of tracked repositories
- Commits, last 30 daysAhead of 67% 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
- codex-ppt
skills/codex-ppt
How it works
codex-ppt
When your agent uses it
Generate visually unified image-based PPT/PPTX decks from articles, reports, papers, notes, or outlines.
What it loads into context
Frontmatter
180 tokensAlways available to the agent
SKILL.md
2,289 tokensWhen the skill is activated
Reference documents
30,505 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Overview
- Hard Constraints
- Visible Progress
- Default Workflow
- Subagent Dispatch
- Acceptance Criteria
- Reference Map
- Documentation and Updates
Scripts executed separately
scripts/assemble_ppt.pyscripts/codex_ppt_runtime.pyscripts/image_gen.pyscripts/image_providers/__init__.pyscripts/image_providers/atlascloud.pyscripts/image_providers/base.pyscripts/image_providers/factory.pyscripts/image_providers/openai_compatible.pyscripts/prepare_slide_prompts.pyscripts/record_slide_blocker.pyscripts/record_slide_dispatch.pyscripts/record_slide_result.pyscripts/remove_chroma_key.pyscripts/slide_job_status.pyscripts/slide_run_state.py
Files
.clawhubignoreasset162 bytesSKILL.mdcore10,391 bytesSKILL.mdcore10,391 bytesSKILL.mdcore10,391 bytesSKILL.mdcore10,391 bytesSKILL.mdcore10,391 bytesSKILL.mdcore10,391 bytesSKILL.mdcore10,391 bytesSKILL.mdcore10,391 bytesdocs/backend-selection.mddoc3,588 bytesdocs/cli-api-fallback.mddoc5,070 bytesdocs/image-model-configuration.mddoc3,542 bytesdocs/outline-style-and-sample.mddoc9,533 bytesdocs/project-assembly-and-reporting.mddoc8,467 bytesdocs/slide-generation-and-subagents.mddoc14,823 bytesdocs/style-library.mddoc6,518 bytesdocs/user-supplied-assets.mddoc3,120 bytesdocs/workflow-gates-and-progress.mddoc2,581 bytesprompts/slide-worker.mddoc2,649 bytesreferences/党政红风格.mddoc8,673 bytesreferences/创意杂志风.mddoc3,396 bytesreferences/复古扁平插画风.mddoc3,339 bytesreferences/手绘技术解释风.mddoc4,767 bytesreferences/手绘白板风.mddoc3,337 bytesreferences/教学课件风.mddoc9,949 bytesreferences/数据仪表盘风.mddoc3,527 bytesreferences/清爽专业风.mddoc4,512 bytesreferences/温暖手工风.mddoc3,332 bytesreferences/电子墨水杂志风.mddoc4,714 bytesreferences/科研答辩风.mddoc9,334 bytesreferences/麦肯锡风格.mddoc15,195 bytesrequirements.txtdoc65 bytesscripts/assemble_ppt.pyruns14,837 bytesscripts/codex_ppt_runtime.pyruns8,668 bytesscripts/image_gen.pyruns34,896 bytesscripts/image_providers/__init__.pyruns188 bytesscripts/image_providers/atlascloud.pyruns8,310 bytesscripts/image_providers/base.pyruns887 bytesscripts/image_providers/factory.pyruns734 bytesscripts/image_providers/openai_compatible.pyruns7,448 bytesscripts/prepare_slide_prompts.pyruns20,270 bytesscripts/record_slide_blocker.pyruns1,422 bytesscripts/record_slide_dispatch.pyruns2,309 bytesscripts/record_slide_result.pyruns6,779 bytesscripts/remove_chroma_key.pyruns14,123 bytesscripts/slide_job_status.pyruns2,364 bytesscripts/slide_run_state.pyruns6,536 bytes
Read SKILL.md
# Codex PPT
## Overview
This skill creates image-based PowerPoint decks from source material. Each slide is a complete 16:9 generated image. Final images are assembled into `.pptx` with `scripts/assemble_ppt.py`.
Use this when the user wants a visually unified presentation and accepts full-slide image pages. Do not use it when every textbox, chart, or shape must remain separately editable.
Prefer the built-in image generation/editing tool. Use `scripts/image_gen.py` only when the built-in backend is unavailable, lacks a required capability, or the user explicitly asks for API/CLI mode.
## Hard Constraints
- Read the relevant `Reference Map` files before each phase. This file is the orchestration contract; detailed rules live in `docs/` and worker prompts in `prompts/`.
- Respect approval gates. Do not create final `deck_spec.json`, `speech.md`, prompt jobs, slide images, or `.pptx` before the approvals in `docs/workflow-gates-and-progress.md`.View the complete source on GitHubSkills included
- codex-ppt
Repository facts
- License
- MIT
- Created
- Apr 26, 2026
- Last pushed
- Oct 13, 2026
- Forks
- 362
- Open issues
- 2
- Project activity
- Active
Rank over the last 12 weeks
Now #190 · best #189 · up 11 in 30 days
- #195 on Oct 25
- #192 from Oct 28 to Oct 31
- #191 on Nov 1
- #190 from Nov 2 to Nov 3
- #189 on Nov 4
- #190 since Nov 5
66 earlier periods
- #209 on Aug 2
- #207 from Aug 7 to Aug 8
- #206 on Aug 9
- #212 on Aug 10
- #211 on Aug 11
- #209 on Aug 12
- #212 on Aug 13
- #210 on Aug 14
- #209 on Aug 15
- #208 from Aug 16 to Aug 17
- #212 on Aug 18
- #210 on Aug 19
- #208 on Aug 20
- #209 on Aug 21
- #206 on Aug 22
- #211 on Aug 23
- #209 from Aug 24 to Aug 26
- #210 on Aug 27
- #206 on Aug 28
- #207 on Aug 29
- #203 on Aug 30
- #202 on Aug 31
- #207 on Sep 1
- #200 on Sep 2
- #206 on Sep 3
- #202 on Sep 4
- #205 on Sep 5
- #203 on Sep 6
- #206 on Sep 7
- #207 from Sep 8 to Sep 9
- #206 on Sep 10
- #205 from Sep 11 to Sep 12
- #206 from Sep 13 to Sep 14
- #204 on Sep 15
- #202 on Sep 16
- #205 from Sep 17 to Sep 18
- #200 on Sep 19
- #204 from Sep 20 to Sep 23
- #203 on Sep 24
- #202 on Sep 25
- #203 from Sep 26 to Sep 27
- #205 from Sep 28 to Sep 29
- #203 on Sep 30
- #205 on Oct 1
- #207 on Oct 2
- #202 on Oct 3
- #200 on Oct 4
- #202 on Oct 5
- #200 on Oct 6
- #201 on Oct 7
- #197 on Oct 8
- #200 on Oct 9
- #199 on Oct 10
- #198 on Oct 11
- #199 from Oct 12 to Oct 13
- #197 on Oct 14
- #195 on Oct 15
- #193 on Oct 16
- #195 on Oct 17
- #196 on Oct 18
- #194 on Oct 19
- #192 on Oct 20
- #194 on Oct 21
- #192 on Oct 22
- #191 on Oct 23
- #193 on Oct 24
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 7 notes
skills/codex-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/codex-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/codex-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/codex-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/codex-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/codex-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/codex-ppt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 26 network referencesin 4 files: codex-ppt/scripts/codex_ppt_runtime.py:190 codex-ppt/docs/image-model-configuration.md:45 codex-ppt/scripts/image_providers/atlascloud.py:17 and 1 more
- 2 obfuscation signalsin 1 file: codex-ppt/scripts/image_gen.py:438
- 1 instruction override signalin 1 file: codex-ppt/docs/outline-style-and-sample.md:20
- 15 executable scriptsin 15 files: codex-ppt/scripts/assemble_ppt.py:1 codex-ppt/scripts/codex_ppt_runtime.py:1 codex-ppt/scripts/image_gen.py:1 and 12 more
- 47 references to secretsin 12 files: codex-ppt/scripts/codex_ppt_runtime.py:27 codex-ppt/scripts/image_gen.py:8 codex-ppt/docs/image-model-configuration.md:9 and 9 more
- No requests to vote in Hot
Show all 91 signals by file
skills/codex-ppt/.clawhubignore
- Access to secretsline 9
[Credential-related source omitted]
skills/codex-ppt/SKILL.md
- Access to secretsline 9
[Credential-related source omitted] - Access to secretsline 11
[Credential-related source omitted] - Network accessline 21
required: false description: Runtime home override. homepage: https://github.com/ningzimu/codex-ppt-skill - Network accessline 22
description: Runtime home override. homepage: https://github.com/ningzimu/codex-ppt-skill --- - Network accessline 23
homepage: https://github.com/ningzimu/codex-ppt-skill - Network accessline 158
For source, docs, install, config, and examples, see [ningzimu/codex-ppt-skill](https://github.com/ningzimu/codex-ppt-skill).
skills/codex-ppt/docs/backend-selection.md
skills/codex-ppt/docs/cli-api-fallback.md
- Access to secretsline 17
[Credential-related source omitted]
skills/codex-ppt/docs/image-model-configuration.md
- Access to secretsline 9
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Network accessline 45
python3 {skill_root}/scripts/codex_ppt_runtime.py config \ --api-key "your-provider-api-key" \ --base-url "https://xxxx.example.com/v1" \ - Network accessline 46
--api-key "your-provider-api-key" \ --base-url "https://xxxx.example.com/v1" \ --model gpt-image-2.5-flare - Network accessline 47
--base-url "https://xxxx.example.com/v1" \ - Network accessline 54
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted] - Network accessline 55
OPENAI_BASE_URL=https://xxxx.example.com/v1 - Network accessline 68
python3 {skill_root}/scripts/codex_ppt_runtime.py config \ --api-key "your-atlascloud-api-key" \ --base-url "https://api.atlascloud.ai/api/v1/model" \ - Network accessline 69
--api-key "your-atlascloud-api-key" \ --base-url "https://api.atlascloud.ai/api/v1/model" \ --model openai/gpt-image-2 - Network accessline 70
--base-url "https://api.atlascloud.ai/api/v1/model" \ - Access to secretsline 79
[Credential-related source omitted]
skills/codex-ppt/docs/outline-style-and-sample.md
- Instruction override signalline 20
Show the outline to the user for confirmation and wait for approval before moving to visual style selection or image generation, unless the user explicitly asked you to skip confirmation. If any slide lists required source images, explicitl
skills/codex-ppt/docs/project-assembly-and-reporting.md
- Access to secretsline 125
[Credential-related source omitted]
skills/codex-ppt/scripts/assemble_ppt.py
skills/codex-ppt/scripts/codex_ppt_runtime.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 111
[Credential-related source omitted] - Access to secretsline 149
[Credential-related source omitted] - Access to secretsline 150
[Credential-related source omitted] - Access to secretsline 164
[Credential-related source omitted] - Network accessline 190
[Credential-related source omitted] - Access to secretsline 190
[Credential-related source omitted] - Network accessline 191
endpoint = base_url.rstrip("/") + "/models" req = urllib.request.Request( endpoint, - Network accessline 192
req = urllib.request.Request( - Access to secretsline 194
[Credential-related source omitted] - Network accessline 196
) try: with urllib.request.urlopen(req, timeout=timeout) as resp: - Network accessline 197
try: with urllib.request.urlopen(req, timeout=timeout) as resp: print(f"models endpoint: HTTP {resp.status}") - Network accessline 198
with urllib.request.urlopen(req, timeout=timeout) as resp: - Network accessline 227
[Credential-related source omitted] - Network accessline 228
[Credential-related source omitted] - Access to secretsline 228
[Credential-related source omitted] - Network accessline 229
base_url = values.get("OPENAI_BASE_URL", "https://api.openai.com/v1") - Access to secretsline 232
[Credential-related source omitted] - Access to secretsline 243
[Credential-related source omitted] - Access to secretsline 244
[Credential-related source omitted] - Access to secretsline 249
[Credential-related source omitted] - Access to secretsline 262
[Credential-related source omitted]
skills/codex-ppt/scripts/image_gen.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 69
[Credential-related source omitted] - Access to secretsline 85
[Credential-related source omitted] - Access to secretsline 151
[Credential-related source omitted] - Access to secretsline 152
[Credential-related source omitted] - Access to secretsline 155
[Credential-related source omitted] - Access to secretsline 171
[Credential-related source omitted] - Possible obfuscationline 438
out_path.write_bytes(base64.b64decode(image_b64)) - Possible obfuscationline 499
raw = base64.b64decode(image_b64) - Access to secretsline 664
[Credential-related source omitted] - Access to secretsline 786
[Credential-related source omitted] - Access to secretsline 861
[Credential-related source omitted]
skills/codex-ppt/scripts/image_providers/__init__.py
- Executable scriptline 1
Executable file
skills/codex-ppt/scripts/image_providers/atlascloud.py
- Executable scriptline 1
Executable file - Network accessline 17
UrlOpen = Callable[..., Any] USER_AGENT = "codex-ppt-skill/0.1 (+https://github.com/ningzimu/codex-ppt-skill)" - Network accessline 18
USER_AGENT = "codex-ppt-skill/0.1 (+https://github.com/ningzimu/codex-ppt-skill)" - Access to secretsline 28
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 149
[Credential-related source omitted] - Network accessline 179
def _model_base_url(base_url: Optional[str]) -> str: if not base_url: return "https://api.atlascloud.ai/api/v1/model" - Network accessline 180
if not base_url: return "https://api.atlascloud.ai/api/v1/model" parsed = urlparse(base_url) - Network accessline 181
return "https://api.atlascloud.ai/api/v1/model"
skills/codex-ppt/scripts/image_providers/base.py
- Executable scriptline 1
Executable file
skills/codex-ppt/scripts/image_providers/factory.py
skills/codex-ppt/scripts/image_providers/openai_compatible.py
skills/codex-ppt/scripts/prepare_slide_prompts.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/codex-ppt/scripts/record_slide_blocker.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/codex-ppt/scripts/record_slide_dispatch.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/codex-ppt/scripts/record_slide_result.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/codex-ppt/scripts/remove_chroma_key.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/codex-ppt/scripts/slide_job_status.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/codex-ppt/scripts/slide_run_state.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: 2 facts
- Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentioncodex-ppt/scripts/codex_ppt_runtime.py:229High confidence
- Contacts api.atlascloud.ai, which SKILL.md, the README and the plugin manifest do not mentioncodex-ppt/scripts/image_providers/atlascloud.py:181High confidence
Signal confidence: 90 facts
- Access to secrets in the frontmatter of the SKILL.mdcodex-ppt/SKILL.md:9Low confidence
- Access to secrets in the frontmatter of the SKILL.mdcodex-ppt/SKILL.md:11Low confidence
- Network access in the frontmatter of the SKILL.mdcodex-ppt/SKILL.md:21Low confidence
- Network access in the frontmatter of the SKILL.mdcodex-ppt/SKILL.md:22Low confidence
- Network access in the frontmatter of the SKILL.mdcodex-ppt/SKILL.md:23Low confidence
- Network access in prose of the SKILL.mdcodex-ppt/SKILL.md:158Low confidence
- Access to secrets in prose of documentationcodex-ppt/docs/backend-selection.md:19Low confidence
- Access to secrets in code of documentationcodex-ppt/docs/backend-selection.md:34Low confidence
- Access to secrets in prose of documentationcodex-ppt/docs/cli-api-fallback.md:17Low confidence
- Access to secrets in prose of documentationcodex-ppt/docs/image-model-configuration.md:9Low confidence
- Access to secrets in prose of documentationcodex-ppt/docs/image-model-configuration.md:26Low confidence
- Network access in code of documentationcodex-ppt/docs/image-model-configuration.md:45Low confidence
- Network access in code of documentationcodex-ppt/docs/image-model-configuration.md:46Low confidence
- Network access in code of documentationcodex-ppt/docs/image-model-configuration.md:47Low confidence
- Network access in code of documentationcodex-ppt/docs/image-model-configuration.md:54Low confidence
- Access to secrets in code of documentationcodex-ppt/docs/image-model-configuration.md:54Low confidence
- Network access in code of documentationcodex-ppt/docs/image-model-configuration.md:55Low confidence
- Network access in code of documentationcodex-ppt/docs/image-model-configuration.md:68Low confidence
- Network access in code of documentationcodex-ppt/docs/image-model-configuration.md:69Low confidence
- Network access in code of documentationcodex-ppt/docs/image-model-configuration.md:70Low confidence
- Access to secrets in code of documentationcodex-ppt/docs/image-model-configuration.md:79Low confidence
- Instruction override signal in prose of documentationcodex-ppt/docs/outline-style-and-sample.md:20Low confidence
- Access to secrets in prose of documentationcodex-ppt/docs/project-assembly-and-reporting.md:125Low confidence
- Executable script in code of a file that runscodex-ppt/scripts/assemble_ppt.py:1High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecodex-ppt/scripts/assemble_ppt.py:18Low confidence
- Executable script in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:1High confidence
- Access to secrets in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:27High confidence
- Access to secrets in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:45High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecodex-ppt/scripts/codex_ppt_runtime.py:111Low confidence
- Access to secrets in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:149High confidence
- Access to secrets in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:150High confidence
- Access to secrets in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:164High confidence
- Network access in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:190High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecodex-ppt/scripts/codex_ppt_runtime.py:190Low confidence
- Network access in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:191High confidence
- Network access in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:192High confidence
- Access to secrets in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:194High confidence
- Network access in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:196High confidence
- Network access in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:197High confidence
- Network access in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:198High confidence
- Network access in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:227High confidence
- Network access in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:228High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecodex-ppt/scripts/codex_ppt_runtime.py:228Low confidence
- Network access in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:229High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecodex-ppt/scripts/codex_ppt_runtime.py:232Low confidence
- Access to secrets in code of a file that runscodex-ppt/scripts/codex_ppt_runtime.py:243High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecodex-ppt/scripts/codex_ppt_runtime.py:244Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecodex-ppt/scripts/codex_ppt_runtime.py:249Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecodex-ppt/scripts/codex_ppt_runtime.py:262Low confidence
- Executable script in code of a file that runscodex-ppt/scripts/image_gen.py:1High confidence
and 40 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md skills/codex-ppt/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/codex-ppt/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/codex-ppt/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/codex-ppt/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/codex-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-codex-ppt-skill/)