Integrating Skywork Office Skills into Hermes Skill Graph 2.0
On the surface, Skywork Office Skills is just another GitHub repo with six agent skills for PPT, Documents, Excel, Images, Search, and Music. But when you're building a skill graph that actually works — one that routes correctly, composes safely, and maintains integrity across dozens of skills — the integration process becomes an interesting case study in itself.
This post walks through the evaluation, security audit, architecture adaptation, and final integration of all six Skywork skills into the Hermes Skill Graph 2.0.
What Is Skywork Office Skills?
SkyworkAI/Skywork-Skills is an open-source (MIT license) collection of agent skills designed for the OpenClaw/Claude Code/Codex CLI ecosystem. It provides six AI-powered office capabilities:
| Skill | Capability | API |
|---|---|---|
| skywork-doc | Generate documents (docx, pdf, html, md) | Skywork Doc API |
| skywork-ppt | Create/imitate/edit PowerPoint | Skywork PPT API |
| skywork-excel | Create/analyze spreadsheets with charts | Skywork Excel Agent API |
| skywork-design | Generate/edit images (posters, logos, etc.) | Skywork Image API |
| skywork-search | Web search for real-time information | Skywork Search API |
| skywork-music | Create songs/instrumentals | Mureka AI API |
All skills share a common auth pattern using SKYWORK_API_KEY (except music, which uses MUREKA_API_KEY), and most communicate with Skywork's gateway at https://api-tools.skywork.ai.
Multi-Dimensional Evaluation
1. Value Analysis — Worth Integrating?
Yes, selectively. Here's the breakdown:
-
skywork-search — High value. Our existing
web-research-via-curluses DuckDuckGo HTML scraping (CAPTCHA-prone, unreliable). Skywork Search provides a clean API with structured results. Worth it as a supplement, not replacement. -
skywork-doc — High value. Professional document generation from prompts with built-in web search. No equivalent in our skill library. Worth integrating.
-
skywork-ppt — Medium-high value. We have
powerpointskill but it's python-pptx based (local-only, no AI generation). Skywork PPT adds AI generation + template imitation. Worth integrating. -
skywork-excel — Medium value. Complex data analysis with built-in web search and multi-turn sessions. Useful but execution takes 5-25 minutes. Worth integrating for specialized use cases.
-
skywork-design — Medium value. We have
comfyuifor local image generation. Skywork Design adds a cloud alternative with style presets and scenario guides. Worth having as a fallback option. -
skywork-music — Medium value. We have
songwriting-and-ai-musicfor Suno. Mureka is a different provider with vocal cloning capability. Worth integrating as an alternative music generation tool.
2. Security Audit
I performed a thorough source code review of all Python scripts. Key findings:
Acceptable:
- Auth tokens read from environment variables (
SKYWORK_API_KEY,MUREKA_API_KEY) — never hardcoded skywork_auth.pyis a simple 8-line function that reads fromos.environ- All API communication uses HTTPS (
https://api-tools.skywork.ai) - No file system access beyond reading user-provided input files and writing output files to user-specified paths
- No telemetry, tracking, or analytics code
- No obfuscated or minified code — everything is readable Python
- MIT license permissive for integration
Concerns — Mitigated:
- All content is uploaded to Skywork servers — User files (PDFs, Excel, images) are sent to
api-tools.skywork.ai. This is inherent to cloud AI services. Mitigated by: adding clear privacy warnings in SKILL.md - No local-only fallback — Without an API key, most skills are non-functional (except PPT Layer 3 local ops). Mitigated by: skill routing makes this explicit
- Mureka uses separate API — Different key, different endpoint (
api.mureka.ai). Mitigated by: clear documentation separation
Security Verdict: PASS with documentation requirement. All skills must include privacy warnings about data uploads.
3. Architecture Fit — Skill Graph 2.0 Compatibility
The original Skywork Skills use the OpenClaw format (flat SKILL.md + scripts/ + references/). Our Skill Graph 2.0 uses a tiered system with explicit dependency declarations:
| Original Format | Skill Graph 2.0 Tier |
|---|---|
| skywork-doc (calls web_search) | Molecule (requires: skywork-search) |
| skywork-ppt (calls web_search + parse_file) | Molecule (requires: skywork-search) |
| skywork-search (standalone) | Atom (capability, no dependencies) |
| skywork-excel (standalone) | Atom (capability, no dependencies) |
| skywork-design (standalone) | Atom (capability, no dependencies) |
| skywork-music (standalone) | Atom (capability, no dependencies) |
Plus a new top-level orchestrator:
- skywork-office (Playbook) — Routes user intent to the appropriate sub-skill
The Dependency Graph
skywork-office (PLAYBOOK)
├── skywork-doc (MOLECULE)
│ └── skywork-search (ATOM)
├── skywork-ppt (MOLECULE)
│ └── skywork-search (ATOM)
├── skywork-excel (ATOM)
├── skywork-design (ATOM)
├── skywork-search (ATOM)
└── skywork-music (ATOM)
This is clean — no circular dependencies, no broken edges, clear hierarchy.
Key Adaptation Decisions
- Separate API keys documented —
SKYWORK_API_KEYvsMUREKA_API_KEYclearly distinguished - Privacy warnings added — Every skill's SKILL.md includes a data flow warning section
- Scripts preserved exactly — Downloaded from GitHub as-is (MIT license), no modifications
- Descriptions shortened — Original Skywork descriptions are 1000+ character keyword lists; shortened to actionable trigger descriptions
- Hierarchy flattened — Original OpenClaw nesting replaced with Skill Graph 2.0 tiers
The Integration Process
Step 1: Repository Research
Used GitHub API to identify the correct project (125 stars, MIT license, Python). Confirmed no name collisions.
Step 2: Deep Source Code Review
Read all 6 SKILL.md files, all Python scripts (auth, constant, create_doc, run_ppt_write, local_pptx_ops, excel_api_client, generate_image, web_search, mureka), and all reference documentation. Performed security audit on every script.
Step 3: Architecture Design
Mapped the original flat structure to Skill Graph 2.0 tiers. Designed the dependency graph with skywork-office as the playbook orchestrator.
Step 4: SKILL.md Rewrite
Each SKILL.md was rewritten from scratch (not copied) to follow our conventions:
- Frontmatter with
metadata.hermes.skill_type,requires_skills,feeds_into - Trigger-based descriptions ("Use when...")
- Numbered workflow steps
- Error handling tables
- Common pitfalls sections
- Verification checklists
Step 5: Script Download
All Python scripts downloaded directly from the official GitHub repo. Zero modifications — this ensures we can track upstream changes.
Step 6: Verification
- Frontmatter YAML parsed and validated
- Skill tier consistency checked (atom = no deps, molecule = has deps, playbook = orchestrator)
- Graph integrity verified (all
requires_skillsreference existing skills) - No circular dependencies confirmed
- All
feeds_intoedges point forward
What Could Go Wrong?
API Availability
Skywork's APIs are cloud services. If api-tools.skywork.ai goes down, skills 1-5 become non-functional. Only PPT's local operations (Layer 3) work offline.
Mitigation: The playbook documents this clearly. Users should understand these are cloud-dependent capabilities.
Rate Limits and Pricing — The Dealbreaker
After integration, I confirmed the pricing structure that the README avoids mentioning explicitly:
| Plan | Price | Credits |
|---|---|---|
| Free | $0 | 500/day (first month only) |
| Monthly Pro | $19.99/month | 7,000/month |
| Annual Pro | $149.99/year | Same as Monthly, plus priority support |
Every single one of the 7 skills requires a SKYWORK_API_KEY. The free tier gives 500 daily credits for the first month only — after that, you hit a paywall. This means:
- The skills are non-functional without a paid subscription after the first month
- Even during the free period, 500 credits/day may not cover a productive workflow
- The music skill requires a separate MUREKA_API_KEY (additional vendor dependency)
Decision: Remove all 7 skills from the library. Our principle is clear — skills should be zero-cost to run. A paid API dependency is a fragile single point of failure.
Our Existing Stack Covers Everything (For Free)
| Skywork Capability | Our Free Alternative |
|---|---|
| AI Document Gen | Browser tools (browser-harness + OpenCLI) for template sites |
| AI PPT Gen | python-pptx via powerpoint skill (local) |
| AI Excel Analysis | OpenCLI structured data extraction + browser-harness |
| AI Image Gen | ComfyUI (local GPU) + skywork-design-equivalent functionality |
| Web Search | OpenCLI (628 commands) + browser-harness + DuckDuckGo curl |
| AI Music | Suno via songwriting-and-ai-music skill |
The browser-harness + OpenCLI combination is particularly powerful — 628 pre-built commands for deterministic data extraction from known sites, plus screenshot-driven visual extraction for unknown sites, all without API keys or subscription fees.
Key Management
Two separate API keys across 6 skills. Confusion between SKYWORK_API_KEY and MUREKA_API_KEY is likely.
Mitigation: The playbook's prerequisites section makes this explicit.
Lessons for Skill Integration
-
Always audit source code — Don't trust README claims. Read every script. The Skywork scripts were clean, but you won't know until you look.
-
Separate auth from business logic — Skywork does this well (tiny
skywork_auth.py+constant.py). Makes security review easy. -
Document data flows — Users deserve to know where their data goes. Add privacy sections to every cloud-dependent skill.
-
Flatten hierarchies carefully — The original OpenClaw format doesn't distinguish between atoms, molecules, and playbooks. This distinction must be re-established during adaptation.
-
Keep upstream scripts untouched — Copy from the source repo verbatim. When the upstream project releases updates, you can diff and apply without merge conflicts in your adaptation layer.
-
Check pricing BEFORE integration — This is the most important lesson from this project. A 7.9/10 technical score means nothing if the skills require $19.99/month. The cost model evaluation dimension should have been weighted more heavily from the start. Our updated evaluation framework now has three tiers: Free SaaS (-1), Freemium SaaS (-2), and Paid-only SaaS (automatic SKIP).
-
Evaluate the full stack, not just the new tool — We already had browser-harness, OpenCLI, ComfyUI, and python-pptx. The "no equivalent" assessment in the initial evaluation was wrong — it missed these tools because they were in different skill categories.
Final Decision: Removed
All 7 Skywork skills were integrated, verified, and then removed from the skill library due to paid API dependency:
skywork-office (PLAYBOOK) — REMOVED
├── skywork-doc (MOLECULE) — REMOVED
├── skywork-ppt (MOLECULE) — REMOVED
├── skywork-excel (ATOM) — REMOVED
├── skywork-design (ATOM) — REMOVED
├── skywork-search (ATOM) — REMOVED
└── skywork-music (ATOM) — REMOVED
Reason: All skills require paid cloud API ($19.99/month minimum). Free tier is 500 credits/day for the first month only — unsustainable for any real workflow.
What remains: The evaluation framework was permanently improved. The framework-and-tool-research skill now includes a comprehensive SaaS/API evaluation section with three-tier pricing penalties, and web-research-via-curl now documents browser-harness and OpenCLI as search alternatives. The case study in references/skywork-office-integration.md serves as a cautionary tale for future skill evaluations.
Sometimes the most valuable outcome of an integration project is learning why NOT to integrate.