Skill Factory
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:
---
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:
"""
[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:
- Confirm:
✅ Skill '[skill-name]' written to ~/.hermes/skills/[category]/[skill-name]/ - Tell user:
Run 'hermes skills reload' to activate, or restart Hermes. - Ask:
I detected [N] other patterns this session. Want me to propose the next one? - 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 |