"The first industrial revolution was marked by using machines to make machines. Skill Factory is the machine that makes skills."
Skill Factory provides a repeatable, human-AI collaborative SOP for going from a raw idea to a polished, publishable OpenClaw skill. It handles:
The key insight: this is not about capability, it's about workflow. Any Claw instance with this skill loaded can build production-quality skills — the process is the product.
Just say something like:
New skill: [name], [1-2 sentences], [source URL (optional)]Upgrade skill: [skill name/path], [change request], [new source URL (optional)]
New skill: prompt-engineering, best practices from Anthropic and OpenAINew skill: git-workflow, standardize my branching and PR flow, https://...新 skill:简历筛选,用关键词匹配和语义分析筛选简历Upgrade skill: nova-reader, add Semantic Scholar data sourceUpgrade skill: harness, strengthen governance rules from Phase 3.5 lessons升级 skill:skill-factory,增加显式升级模式Claw will enter Phase 0 for new skills or the Upgrade Workflow for existing skills — no more information needed to start.
中文用户: 新 skill:[名字],[1-2句说明],[来源URL(可选)] for new; 升级 skill:[skill名字/路径],[变更要求],[新来源URL(可选)] for upgrades.
Goal: Lock down the spec before any work begins.
Save raw idea to inbox/<skill-name>.md (防止遗失)
Ask exactly 3 questions — no more:
Generate wip/<skill-name>/BRIEF.md
Key principle: Phase 0 prevents over-engineering (LRN-003). Don't start building until the 3 questions are answered.
Goal: Gather raw material without processing.
web_fetch each source → save to wip/<skill-name>/raw/web_search for 2–3 high-quality referencesRule: At least 1 first-party source (official docs / original author's post). Raw content is saved as-is — no processing yet.
Goal: Extract signal, discard noise.
raw/ filesSKILL.md — triggers + workflow (≤200 lines)references/ — detailed knowledge, split by topicscripts/ — reusable code, only if neededQuality checklist:
references/, not bloating SKILL.mdGoal: Clean, versioned, standalone repo ready for GitHub/ClawHub.
text
<skill-name>/
├── SKILL.md # Entry point (triggers + workflow)
├── README.md # Human-facing intro — bilingual (EN + ZH)
├── CHANGELOG.md # Version history
├── LICENSE # MIT recommended
├── .gitignore
└── references/ # Knowledge base
└── *.md
For script-heavy skills, add:
text
└── scripts/
└── *.py
A skill README must answer 3 questions in ≤60 seconds of reading:
Bilingual (EN + ZH): Use two separate files for maximum clarity.
text
README.md # English only — no Chinese text anywhere
README_zh.md # Chinese only — full detail, selling points, usage
Each file includes a badge linking to the other version. This allows GitHub to render clean language-specific views and enables future ClawHub to surface the right version per locale.
When the user wants to publish to ClawHub:
SKILL.md frontmatter has: name, version, descriptiondescription must contain broad trigger phrases covering multiple phrasingsLICENSE file present (MIT recommended)git tag v1.0.0 && git push --tagsWhen the skill is already published and needs a version update on ClawHub, use the clawhub CLI:
Prerequisites:
Node.js environment with clawhub package installed: text
npm install clawhub
ClawHub account with device flow login (headless-friendly): text
clawhub login --device
# Visit the provided URL, enter the code, authorize in browser
# Note: login process must stay running in background while user authorizes
Publish update workflow:
bash
# 1. Push latest commit to GitHub first
git push origin main
# 2. Tag the release
git tag v<new-version>
git push --tags
# 3. Publish to ClawHub
clawhub skill publish <repo-path> --slug <slug> --version <new-version> --changelog "<summary>"
# 4. Verify
clawhub inspect <slug>
# 5. Sync to local workspace
Copy-Item -Recurse -Force "D:\Agent\WorkBuddy\skills\<skill-name>\*" "$env:USERPROFILE\.workbuddy\skills\<skill-name>\"
Protocol: GitHub first, ClawHub second. Always push to GitHub before publishing to ClawHub. This ensures the source code is available for moderation review and users can link back to the repo.
Windows + Proxy note: Use HTTPS remote (not SSH) on Windows environments with proxy/VPN. SSH port 22 may be intercepted by proxy tools (Clash/V2Ray). Configure:
text
git remote set-url origin https://github.com/<owner>/<repo>.git
Limitation: ClawHub Summary is derived from SKILL.md frontmatter description field. To update the summary, edit description in SKILL.md and republish.
A local workbuddy automation can periodically check and sync all skills:
yaml
# One-time manual: for each repo, push + publish + sync
# Or set a weekly cron via workbuddy automation
See automation system in WorkBuddy for setting up recurring sync tasks.
After publishing, sync to ~/.workbuddy/skills/<skill-name>/ so Claw can use it immediately:
powershell
Copy-Item -Recurse -Force "D:\Agent\WorkBuddy\skills\<skill-name>\*" "$env:USERPROFILE\.workbuddy\skills\<skill-name>\"
Goal: Update an existing skill without starting from scratch.
This is a first-class workflow, distinct from creating a new skill. When the user invokes Upgrade skill:, follow these steps:
SKILL.md — current version, triggers, workflowCHANGELOG.md — version history (especially recent entries)README.md — public descriptionreferences/ — existing knowledge baseSKILL.md frontmatter or git tag)Compare the requested change against the skill's public API — its documented behavior:
Public API elementExamplesUse casesWhat scenarios the skill servesInput formatWhat the user says to trigger the skillOutput formatWhat files/code the skill producesWorkflow phasesThe SOP structureSafety boundariesWhat the agent must not doFile structureRepo layout conventionsPublishing behaviorHow the skill is distributed
Determine the version bump:
BumpWhenExamplesPATCH x.x.1Fixes that don't change behaviorTypo fix, clarification, trigger word tweakMINOR x.1.0Backward-compatible additionsNew workflow mode, new reference source, optional publishing pathMAJOR x.0.0Breaking changesChanged triggering format, restructured SOP, removed phase, changed safety assumptions
Before making any changes, produce an upgrade plan:
markdown
## Upgrade Plan
Current version: <version from SKILL.md>
Proposed version: <computed bump>
Change type: PATCH / MINOR / MAJOR
Reason:
<why this change belongs in this category>
Files to modify:
<list of files that need changes>
Risk level: low / medium / high
Backward compatibility: yes / no
Proposed changelog entry:
### Added
- <new features>
### Changed
- <behavior changes>
### Fixed
- <bug fixes>
Suggested commit message:
<semantic commit message>
Suggested tag:
v<new version>
Present this plan to the user. Do not apply changes until the user confirms.
After user confirmation:
CHANGELOG.md with proper format (see below)git tag v<new-version> && git push --tagsAfter applying, produce a summary:
text
## Upgrade Complete
<old version> → <new version>
Files changed: <list>
Changelog: <link or excerpt>
Next steps: <optional>
Version semantics follow Semantic Versioning adapted for skills:
text
MAJOR.MINOR.PATCH
Version bumpWhenExample triggerPATCH x.x.1Typo fix, trigger word tweak, minor clarification"修复了一个例子描述不准"MINOR x.1.0New reference source, new phase step, extended trigger coverage"加入 Anthropic 最新文档"MAJOR 2.0.0Scope change, structural refactor, paradigm shift"从单文档改为多 reference 结构"
A MAJOR version (e.g. 1.x → 2.0) signals a breaking change in the skill's mental model:
MAJOR ≠ more content. A skill that doubles its references but keeps the same structure is still a MINOR bump.
A MINOR version (e.g. 1.0 → 1.1 → 1.2) signals additive improvements that don't break the existing pattern:
references/text
feat: add [source] to references → MINOR
fix: correct [description] → PATCH
refactor: restructure [component] → could be MAJOR
release: v2.0.0 - [summary] → tag release commits
Format: Keep a Changelog
Every release must update CHANGELOG.md with:
[Unreleased] section at the top (collects next-version changes)[X.Y.Z] — YYYY-MM-DDThe [Unreleased] section captures changes that will go into the next release. Before cutting a new version, review [Unreleased], classify entries, and move them into the version section.
Distinction: git history = developer log; CHANGELOG = user-facing narrative. Do not substitute one for the other.
The legacy iteration path is preserved for quick edits. For structured upgrades, use the Upgrade Workflow (produces planned changes and version bump).
When doing a quick upgrade:
D:/Agent/WorkBuddy/skills/<skill-name>/references/ with dated filename ( source-YYYYMMDD.md)SKILL.md version field and trigger words if neededCHANGELOG.mdUpgrade triggers: User sends new URL, user says "skill has a gap", Claw detects missing knowledge during a task execution.
text
D:/WorkBuddy/
└── .workspace-index.md # Master skill status board
D:/Agent/WorkBuddy/skills/
├── skill-factory/ # This meta-skill repo
│ ├── SKILL.md # This file
│ ├── README.md
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── .gitignore
│ ├── CLAWHUB.md
│ ├── inbox/ # Raw ideas drop zone
│ └── wip/ # Active work-in-progress
│ └── <skill-name>/
│ ├── BRIEF.md
│ ├── raw/
│ └── draft/
│
├── harness/ # ✅ v1.2.0 — ready for GitHub
├── nova-reader/ # ✅ v1.1.0 — ready for GitHub
└── <future-skills>/
IDLessonFix in SOPLRN-001Missed content after distillation without re-reading sourcePhase 2 mandatory re-fetchLRN-002Skill evolved in workspace, hard to publish as standalonePhase 3 independent repoLRN-003Over-engineered before confirming real needPhase 0 three-question lockLRN-004Research notes mixed with skill docsraw/ vs references/ separationLRN-005ClawHub login needs background process to wait for user authDevice Flow requires staying aliveLRN-006Git push blocked by proxy/VPN (SSH 22) on WindowsUse HTTPS + PAT, configure remoteLRN-007Requirement creep during simple tasksCore first, periphery later