techGalen Guan

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-curl uses 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 powerpoint skill 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 comfyui for 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-music for 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.py is a simple 8-line function that reads from os.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

  1. Separate API keys documentedSKYWORK_API_KEY vs MUREKA_API_KEY clearly distinguished
  2. Privacy warnings added — Every skill's SKILL.md includes a data flow warning section
  3. Scripts preserved exactly — Downloaded from GitHub as-is (MIT license), no modifications
  4. Descriptions shortened — Original Skywork descriptions are 1000+ character keyword lists; shortened to actionable trigger descriptions
  5. 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_skills reference existing skills)
  • No circular dependencies confirmed
  • All feeds_into edges 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

  1. 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.

  2. Separate auth from business logic — Skywork does this well (tiny skywork_auth.py + constant.py). Makes security review easy.

  3. Document data flows — Users deserve to know where their data goes. Add privacy sections to every cloud-dependent skill.

  4. Flatten hierarchies carefully — The original OpenClaw format doesn't distinguish between atoms, molecules, and playbooks. This distinction must be re-established during adaptation.

  5. 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.

  6. 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).

  7. 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.