Inspiration

I kept running into the same friction with AI agents: every time I wanted a new automation, I had to manually write config files, test them, and deploy them. OpenClaw has a powerful skill system, but creating skills still requires understanding the SKILL.md format, frontmatter syntax, tool APIs, and deployment paths.

What if the agent could just build its own skills?

What it does

SkillForge is an OpenClaw skill that generates other OpenClaw skills from plain English. I text a Telegram bot something like "Create a skill that checks if my favorite websites are down" and it:

  1. Parses the request into a skill design
  2. Generates a complete SKILL.md with API calls, error handling, and trigger phrases
  3. Writes helper scripts if needed
  4. Deploys everything to the workspace
  5. Validates the output
  6. Compiles files (like LaTeX to PDF) and sends them back through Telegram

A live web dashboard shows the entire process in real time. New skills slide in with a glow animation, chat messages stream in, and events get logged as they happen.

How I built it

  • The Meta-Skill itself is a SKILL.md file, basically a structured playbook that teaches the agent how to generate other skills. It includes validation scripts, reference docs, example skills for few-shot learning, and common patterns.
  • SkillForge agent runs on OpenClaw with Claude Haiku 4.5 as the LLM backend, connected to Telegram as the user-facing channel.
  • Live Dashboard is a zero-dependency Node.js server (vanilla http + fs only, no React, no npm install) that watches the skills directory with fs.watch, serves a REST API, and streams events via Server-Sent Events with a polling fallback.
  • Cloudflare Tunnel exposes the dashboard publicly so it can be viewed from any device without port forwarding.
  • Workspace identity files (IDENTITY.md + SOUL.md) give the agent a persistent personality and behavioral rules, including auto-installing missing tools via Homebrew and sending generated files directly through Telegram.

Challenges I ran into

  • Agent identity crisis: OpenClaw's default BOOTSTRAP.md kept overriding my SkillForge identity, making the agent ask existential questions instead of building skills. I had to delete it and configure identity at multiple levels (workspace files and agent config in openclaw.json).
  • SSE through Cloudflare Tunnel: Server-Sent Events get buffered by reverse proxies. I added a client-side polling fallback that checks for new messages every 2 seconds so real-time updates work regardless of proxy behavior.
  • ElevenLabs free tier blocking: The university network IP triggered ElevenLabs' abuse detection and permanently flagged my free account. Voice confirmations ended up being a stretch goal.
  • Session cache costs: Every time I cleared sessions to debug the identity, OpenClaw rewrote around 120K tokens of context to Anthropic's cache at $0.15 each. I learned pretty quickly to stop resetting sessions once the config was stable.

Accomplishments that I'm proud of

  • The meta-skill successfully generates working skills from a single sentence, including skills that compile LaTeX to PDF and send the result back through Telegram
  • Zero-dependency dashboard that looks like mission control and updates in real time
  • The entire system runs on a Mac mini at home, accessible from anywhere via Cloudflare Tunnel

What I learned

  • OpenClaw's skill system is powerful but identity configuration is spread across multiple layers (IDENTITY.md, SOUL.md, BOOTSTRAP.md, openclaw.json agent config). Getting them to work together took a lot of trial and error.
  • Prompt caching is a huge cost saver. Subsequent messages in the same session cost 10x less than the first one.
  • Vanilla JS and Node.js can build a polished real-time dashboard without any framework overhead.

What's next for SkillForge

  • Voice confirmations via ElevenLabs once the API access issue is sorted out
  • Skill versioning and rollback
  • Multi-agent collaboration, where one agent designs and another reviews and tests
  • A skill marketplace for sharing generated skills across OpenClaw workspaces

Built With

Share this project:

Updates