Skill Factory — The Meta-Skill for Making Skills
"The first industrial revolution was marked by using machines to make machines. Skill Factory is the machine that makes skills."
Purpose
Skill Factory provides a repeatable, human-AI collaborative SOP for going from a raw idea to a polished, publishable OpenClaw skill. It handles:
- 0→1: Rapid capture of fuzzy ideas → structured BRIEF → distilled skill
- 1→N: Iterating an existing skill with new sources or structural improvements
- N→∞: Publishing, versioning, ClawHub distribution, and ongoing maintenance
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.
How to Trigger This Skill
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 examples:
New skill: prompt-engineering, best practices from Anthropic and OpenAINew skill: git-workflow, standardize my branching and PR flow, https://...新 skill:简历筛选,用关键词匹配和语义分析筛选简历
Upgrade skill examples:
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.
Four-Phase SOP
Phase 0 · Capture(≤5 min)
Goal: Lock down the spec before any work begins.
- Save raw idea to
inbox/<skill-name>.md(防止遗失) - Ask exactly 3 questions — no more:
- What is the target scenario / user?
- Are there reference sources? (If not, Claw will search)
- Publish scope: local-only / GitHub / ClawHub distribution?
- 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.
Phase 1 · Collect(automated)
Goal: Gather raw material without processing.
web_fetcheach source → save towip/<skill-name>/raw/- If no sources provided,
web_searchfor 2–3 high-quality references - Prioritize: official docs > primary blog posts > secondary analysis
Rule: At least 1 first-party source (official docs / original author's post). Raw content is saved as-is — no processing yet.
Phase 2 · Distill(core work)
Goal: Extract signal, discard noise.
- Read all
raw/files - Write per skill-creator spec:
SKILL.md— triggers + workflow (≤200 lines)references/— detailed knowledge, split by topicscripts/— reusable code, only if needed
- Mandatory verification (LRN-001): Re-fetch original source, diff against draft, check for gaps
Quality checklist:
- Trigger words are broad enough to cover all user phrasings
- SKILL.md has a clear "when to use" section
- Detail lives in
references/, not bloatingSKILL.md - At least one mandatory re-read of primary source after distillation
Phase 3 · Publish
Goal: Clean, versioned, standalone repo ready for GitHub/ClawHub.
Repo Structure (Minimal)
<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:
└── scripts/
└── *.py
README Spec
A skill README must answer 3 questions in ≤60 seconds of reading:
- What problem does it solve? (1-2 sentences, no jargon)
- What makes it better than asking without it? (key differentiator)
- How do I use it? (one concrete example)
Bilingual (EN + ZH): Use two separate files for maximum clarity.
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.
ClawHub Distribution
When the user wants to publish to ClawHub:
- Ensure
SKILL.mdfrontmatter has:name,version,description descriptionmust contain broad trigger phrases covering multiple phrasingsLICENSEfile present (MIT recommended)- Tag the release:
git tag v1.0.0 && git push --tags
Sync to Local Workspace
After publishing, sync to ~/.workbuddy/skills/<skill-name>/ so Claw can use it immediately:
Copy-Item -Recurse -Force "D:\Agent\WorkBuddy\skills\<skill-name>\*" "$env:USERPROFILE\.workbuddy\skills\<skill-name>\"
Upgrade Workflow (1→N Maintenance)
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:
Step 1 · Inspect (read existing state)
- Read the existing skill repo:
SKILL.md— current version, triggers, workflowCHANGELOG.md— version history (especially recent entries)README.md— public descriptionreferences/— existing knowledge base- Git log — recent changes and commit history
- Identify the current version (from
SKILL.mdfrontmatter or git tag)
Step 2 · Classify the change
Compare the requested change against the skill's public API — its documented behavior:
| Public API element | Examples |
|---|---|
| Use cases | What scenarios the skill serves |
| Input format | What the user says to trigger the skill |
| Output format | What files/code the skill produces |
| Workflow phases | The SOP structure |
| Safety boundaries | What the agent must not do |
| File structure | Repo layout conventions |
| Publishing behavior | How the skill is distributed |
Determine the version bump:
| Bump | When | Examples |
|---|---|---|
PATCH x.x.1 | Fixes that don't change behavior | Typo fix, clarification, trigger word tweak |
MINOR x.1.0 | Backward-compatible additions | New workflow mode, new reference source, optional publishing path |
MAJOR x.0.0 | Breaking changes | Changed triggering format, restructured SOP, removed phase, changed safety assumptions |
Step 3 · Propose (generate upgrade plan)
Before making any changes, produce an upgrade plan:
## 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.
Step 4 · Apply
After user confirmation:
- Update files (SKILL.md, README, CHANGELOG, references)
- Bump version in SKILL.md frontmatter and README badges
- Update
CHANGELOG.mdwith proper format (see below) - Commit with semantic message
- Tag the release:
git tag v<new-version> && git push --tags - Re-sync to local workspace
Step 5 · Upgrade Summary
After applying, produce a summary:
## Upgrade Complete
<old version> → <new version>
Files changed: <list>
Changelog: <link or excerpt>
Next steps: <optional>
Version Management
Version semantics follow Semantic Versioning adapted for skills:
MAJOR.MINOR.PATCH
| Version bump | When | Example trigger |
|---|---|---|
PATCH x.x.1 | Typo fix, trigger word tweak, minor clarification | "修复了一个例子描述不准" |
MINOR x.1.0 | New reference source, new phase step, extended trigger coverage | "加入 Anthropic 最新文档" |
MAJOR 2.0.0 | Scope change, structural refactor, paradigm shift | "从单文档改为多 reference 结构" |
What warrants a MAJOR bump?
A MAJOR version (e.g. 1.x → 2.0) signals a breaking change in the skill's mental model:
- The core SOP phases are restructured
- The skill's scope is fundamentally redefined
- Files are reorganized in ways that break the previous structure
- The activation paradigm changes (e.g. from "ask anything" to "four-phase SOP")
MAJOR ≠ more content. A skill that doubles its references but keeps the same structure is still a MINOR bump.
What warrants a MINOR bump?
A MINOR version (e.g. 1.0 → 1.1 → 1.2) signals additive improvements that don't break the existing pattern:
- New knowledge source added to
references/ - New trigger words added to frontmatter
- New section added to SOP without restructuring existing phases
- README improvements, badge updates
Commit message convention
feat: add [source] to references → MINOR
fix: correct [description] → PATCH
refactor: restructure [component] → could be MAJOR
release: v2.0.0 - [summary] → tag release commits
Changelog discipline
Format: Keep a Changelog
Every release must update CHANGELOG.md with:
[Unreleased]section at the top (collects next-version changes)- Version section for each release:
[X.Y.Z] — YYYY-MM-DD - Grouped changes under: Added, Changed, Fixed, Deprecated, Removed, Security
- User-readable summaries, not raw git diffs
- A single-line Summary at the top of each version
The [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.
Skill Iteration (Legacy — use Upgrade Workflow above)
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:
- Create a new branch or directly update
D:/Agent/WorkBuddy/skills/<skill-name>/ - Add new source to
references/with dated filename (source-YYYYMMDD.md) - Update
SKILL.mdversion field and trigger words if needed - Update
CHANGELOG.md - Bump version (MAJOR / MINOR / PATCH per rules above)
- Commit with semantic message
- Re-sync to local workspace
Upgrade triggers: User sends new URL, user says "skill has a gap", Claw detects missing knowledge during a task execution.
Workspace Layout
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>/
Lessons Learned (from .learnings)
| ID | Lesson | Fix in SOP |
|---|---|---|
| LRN-001 | Missed content after distillation without re-reading source | Phase 2 mandatory re-fetch |
| LRN-002 | Skill evolved in workspace, hard to publish as standalone | Phase 3 independent repo |
| LRN-003 | Over-engineered before confirming real need | Phase 0 three-question lock |
| LRN-004 | Research notes mixed with skill docs | raw/ vs references/ separation |