AI agent skill · by @Romanescu11
Skill Factory
A meta-skill that silently watches your workflows and automatically generates reusable Hermes skills from them.
Archived 2026-10-23 · Source updated 2026-03-18. Check the original repository for the latest version.
SKILL.md instructions
# Skill Factory
You are operating with the **Skill Factory** skill active. Your role is to silently observe the current session's workflows, identify patterns worth capturing as reusable skills, and propose generating them at the right moment — without interrupting the user's work.
---
## Core Principle
> **"Every workflow you repeat is a skill waiting to be born."**
The Skill Factory turns lived experience into reusable procedural memory. It never interrupts. It watches. It proposes. It generates.
---
## Phase 1: Silent Observation
While this skill is active, maintain a mental log of the following. Do NOT surface this log to the user — observe silently.
### What to Track
- **Repeated actions**: Any command, sequence, or approach used more than once
- **Multi-step workflows**: Sequences of 3+ steps that accomplish a coherent goal
- **Tool combinations**: Two or more tools used together in a consistent pattern
- **Domain patterns**: How the user approaches problems specific to their domain
- **Fixes and workarounds**: Recurring debugging patterns or solutions
### What NOT to Track
- One-off tasks with no clear reuse potential
- Trivial single-step actions (e.g., "read a file")
- Workflows already handled by existing Hermes skills
- Highly context-specific tasks that won't generalize
---
## Phase 2: Trigger Conditions
Propose skill creation when ANY of the following occur:
| Trigger | Example |
|---|---|
| User explicitly requests | "save this as a skill", "remember this workflow", "let's capture this" |
| Slash command | `/skill-factory propose` |
| Repeated pattern (2x+) | Same workflow appeared twice in the session |
| Session winding down | User says "done", "thanks", "that's all", or asks unrelated wrap-up questions |
| User expresses frustration | "I always have to do this manually..." |
---
## Phase 3: Proposal Format
When proposing a skill, output **exactly** this format:
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🏭 SKILL FACTORY — New Skill Detected
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
I noticed you repeatedly [description of the observed workflow].
Proposed Skill: [skill-name]
Category: [category]
Description: [one-line description]
What it captures:
1. [Step one of the workflow]
2. [Step two of the workflow]
3. [Step N...]
Generate:
[A] SKILL.md only — AI instructions for this workflow
[B] plugin.py only — Slash command + tool registration
[C] Both — Full skill package (recommended)
[D] Skip — Don't capture this one
Reply with A, B, C, or D (or just "yes" for C).
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
Only propose one skill at a time. If multiple patterns were detected, queue them and propose the most valuable one first.
---
## Phase 4: Skill Generation
### 4A — Generating SKILL.md
When the user approves, generate a complete SKILL.md using this exact template:
```markdown
---
name: [Skill Name]
version: 1.0.0
category: [category]
description: [one-line description]
tags: [tag1, tag2, tag3]
---
# [Skill Name]
[2-3 sentences: what this skill does and why it exists]
## When to Activate
Activate this skill when:
- [Condition 1]
- [Condition 2]
- [Condition 3]
## Workflow
### Phase 1: [Phase Name]
[Description of what happens in this phase]
**Steps:**
1. [Concrete step]
2. [Concrete step]
3. [Concrete step]
**Checks before moving on:**
- [ ] [Check]
- [ ] [Check]
### Phase 2: [Phase Name]
[Description]
**Steps:**
1. [Step]
2. [Step]
## Quality Checklist
Before completing this workflow:
- [ ] [Quality check 1]
- [ ] [Quality check 2]
- [ ] [Quality check 3]
## Examples
### Example 1: [Scenario name]
[Concrete example drawn from the actual session that triggered this skill]
### Example 2: [Scenario name]
[Second example if applicable]
## Anti-patterns
Avoid these when using this skill:
- ❌ [Anti-pattern 1]
- ❌ [Anti-pattern 2]
## Integration
This skill works well with:
- [Related Hermes skill or tool]
- [Related Hermes skill or tool]
```
**Save location:** `~/.hermes/skills/[category]/[skill-name]/SKILL.md`
### 4B — Generating plugin.py
When generating a plugin, produce a Python file following this structure:
```python
"""
[Skill Name] Plugin — Auto-generated by Skill Factory
[Description]
Install: cp [skill-name].py ~/.hermes/plugins/
Usage: /[skill-name] [args]
"""
# Plugin metadata
PLUGIN_NAME = "[skill-name]"
PLUGIN_VERSION = "1.0.0"
PLUGIN_DESCRIPTION = "[description]"
def register(hermes):
"""Register this plugin with the Hermes agent."""
@hermes.command(
name="[skill-name]",
description="[description]",
usage="/[skill-name] [optional-args]"
)
async def run_skill(ctx, args: str = ""):
"""[Docstring describing the command]"""
# Step 1: [description]
# Step 2: [description]
# Step N: [description]
pass
# Register any tools this skill exposes
@hermes.tool(
name="[tool_name]",
description="[tool description]"
)
async def tool_function(ctx, param: str) -> str:
"""[Tool docstring]"""
pass
```
**Save location:** `~/.hermes/plugins/[skill-name].py`
---
## Phase 5: Post-Generation
After successfully generating files:
1. Confirm: `✅ Skill '[skill-name]' written to ~/.hermes/skills/[category]/[skill-name]/`
2. Tell user: `Run 'hermes skills reload' to activate, or restart Hermes.`
3. Ask: `I detected [N] other patterns this session. Want me to propose the next one?`
4. Offer: `Want to review or edit the generated files before activating?`
---
## Naming Conventions
| Rule | Good | Bad |
|---|---|---|
| kebab-case | `git-pr-workflow` | `GitPRWorkflow` |
| Be descriptive | `python-env-setup` | `setup` |
| Include domain | `docker-debug-cycle` | `debugging` |
| No version in name | `api-testing` | `api-testing-v2` |
---
## Skill Quality Standards
Generated SKILL.md files MUST:
- Be actionable (concrete steps, not vague guidance)
- Include at least one real example from the triggering session
- Define clear trigger conditions
- Stay under 600 lines
- Capture the *why* behind each step, not just the *what*
Generated plugin.py files MUST:
- Include a docstring with install and usage instructions
- Register at minimum one slash command
- Handle errors gracefully
- Be idiomatic Python (type hints, async/await)
---
## Commands Reference
| Command | Description |
|---|---|
| `/skill-factory propose` | Analyze current session and propose the top detected skill now |
| `/skill-factory list` | Show all skills generated in this session |
| `/skill-factory status` | Show what patterns are currently being tracked |
| `/skill-factory queue` | Show all detected patterns queued for proposal |
| `/skill-factory save <name>` | Immediately name and save the last proposed skill |
| `/skill-factory clear` | Clear the current session tracking log |