Felo Slides Skill
SkillDocs & knowledgeLets your agent turn topics or notes into PowerPoint-style slide decks by calling the Felo PPT service.
Use Felo Slides Skill in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Felo Slides Skill and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Felo Slides Skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
About this skill
Generate PPT/slides with Felo PPT Task API in Claude Code. Use when users ask to create/make/generate/export presentations or slide decks, or when explicit commands like /felo-slides are used. Handles API key check, task creation, polling, and final ppt_url output.
What this skill tells your AI
The instructions your AI receives, as published by duotify/githubclawtoolkit in skills/felo-slides/SKILL.md and read by Ahel’s review.
When to Use
Trigger this skill for requests about creating presentation files:
- Create/generate slides from a topic or outline
- Turn notes into a PPT deck
- Build a presentation with a page count requirement
- Export presentation content into a shareable slide link
Trigger keywords:
- Chinese prompts about making slides or presentations
- English: slides, PPT, presentation deck, generate presentation
- Explicit commands:
/felo-slides, "use felo slides"
Do NOT use this skill for:
- Real-time information lookup (use
felo-search) - Questions about local codebase files
- Pure text tasks that do not require slide generation
Setup
1. Get API key
- Visit felo.ai
- Open Settings -> API Keys
- Create and copy your API key
2. Configure environment variable
Linux/macOS:
export FELO_API_KEY="your-api-key-here"
Windows PowerShell:
$env:FELO_API_KEY="your-api-key-here"
How to Execute
Use Bash tool commands and follow this workflow exactly.
Step 1: Precheck API key
if [ -z "$FELO_API_KEY" ]; then
echo "ERROR: FELO_API_KEY not set"
exit 1
fi
If key is missing, stop and return setup instructions.
Step 2: Run Node Script (create + poll)
Use the bundled script (no jq dependency). To reduce black-box waiting and make task progress easier to track, prefer --json --verbose as the default mode:
node .agents/skills/felo-slides/scripts/run_ppt_task.mjs \
--query "USER_PROMPT_HERE" \
--interval 10 \
--max-wait 1800 \
--timeout 60 \
--json \
--verbose
Script behavior:
- Creates task via
POST https://openapi.felo.ai/v2/ppts - Polls via
GET https://openapi.felo.ai/v2/tasks/{task_id}/historical - Treats
COMPLETED/SUCCESSas success terminal (case-insensitive) - Treats
FAILED/ERRORas failure terminal - Stops polling immediately on terminal status
- Prints
task_idto stderr when running in observable mode - Prints
ppt_urlon success (fallback:live_doc_url) - Includes richer error details such as
code/request_idwhen Felo returns them
Optional debug output:
node .agents/skills/felo-slides/scripts/run_ppt_task.mjs \
--query "USER_PROMPT_HERE" \
--interval 10 \
--max-wait 1800 \
--json \
--verbose
This outputs structured JSON including:
task_idtask_statusppt_urllive_doc_urllivedoc_short_idppt_business_iderror_message
Step 4: Return structured result
On success, return:
ppt_urlimmediately (script default output, fallbacklive_doc_url)- if
--jsonis used, also includetask_id, terminal status, and optional metadata
Output Format
Use this response structure:
## PPT Generation Result
- Task ID: <task_id>
- Status: <status>
- PPT URL: <ppt_url>
- Live Doc URL: <live_doc_url or N/A>
## Notes
- livedoc_short_id: <value or N/A>
- ppt_business_id: <value or N/A>
Error format:
## PPT Generation Failed
- Error Type: <error code or category>
- Message: <readable message>
- Suggested Action: <next step>
Error Handling
Known API error codes:
INVALID_API_KEY(401): key invalid or revokedPPT_TASK_CREATE_FAILED(502): create task downstream failedPPT_TASK_QUERY_FAILED(502): query task downstream failed
Timeout handling:
- If timeout reached, return last known status and instruct user to retry later
- Include
task_idso user can query again
Important Notes
- ⚠️ 路徑安全:skill 腳本位於 repo root 的
.agents/skills/下。若 cwd 不在 repo root,先執行git rev-parse --show-toplevel取得路徑再cd。禁止用$(...)語法。 - ⚠️ 指令安全:Copilot CLI 的安全過濾器會封鎖含有特定 shell 語法的指令,執行時禁止加入以下任何寫法,否則指令會被直接擋下:
set -e、set -u、set -o、set -euo pipefail等 set 指令${var@P}、${!var}等參數展開語法- 巢狀的
$(...)指令替換 - 正確寫法:直接執行
cd與node指令,不要包在 shell 腳本控制流程內
- Always execute this skill when user intent is slide generation.
- Always return
task_idso follow-up queries can continue from the same task. - Do not claim completion without a terminal status.
- Keep API calls minimal: create once, then poll.
References
Signals
- GitHub stars
- 254
- Forks
- 54
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
felo-slides- Source
- github.com/duotify/githubclawtoolkit
github.com/duotify/githubclawtoolkit
More in Docs & knowledge
Skill · mattpocock
More in Docs & knowledgecanvas-design
Skill · anthropics
More in Docs & knowledgedoc-coauthoring
Skill · anthropics
More in Docs & knowledgepopups
Skill · coreyhaines31
More in Docs & knowledgewriting-for-agents
Skill · mattpocock
More in Docs & knowledgespec-driven-development
Skill · addyosmani
More in Docs & knowledge