Install
openclaw skills install @drumrobot/claudifyAgentic AI lifecycle: create + improve + persist. create - convert functionality into Claude Code automation (agent/skill/rule/hook/command) [SKILL.md], background-polling - mandatory ScheduleWakeup/timeout polling discipline for 5min+ background dispatches [background-polling.md], improve - self-improving loop: retrospect + hook/skill review + pattern detect [improve.md], persist - knowledge persistence: documentation + memory save [persist.md]. Use when "agentify", "agentic", "automate this", "create an agent", "make a plugin", "make a skill", "self-improve", "claudify improve", "claudify persist", "background polling", "ScheduleWakeup".
openclaw skills install @drumrobot/claudifyGuide users to convert functionality into the appropriate Claude Code automation type (Agent, Skill, Rule, Command, or Hook).
When this skill is invoked with a topic specifier (e.g., Skill("claudify", "improve") or /claudify improve), load and follow ONLY the matching topic file below — do NOT default to the creation-wizard body (Decision Matrix / Workflow) in this SKILL.md. A bare invocation (no topic, agentify, or create) uses the creation workflow below.
| Topic arg | File | Purpose |
|---|---|---|
create / agentify / (none) | this SKILL.md (below) | Convert functionality into an automation (Agent/Skill/Rule/Command/Hook) |
improve | improve.md | Self-improving loop: retrospect + hook/skill review + pattern detect |
persist | persist.md | Knowledge persistence: documentation + memory save |
background-polling | background-polling.md | ScheduleWakeup/timeout polling discipline for 5min+ background dispatches |
For improve / persist / background-polling, Read that topic file and follow it — the Decision Matrix and creation Workflow below apply only to the create/agentify/(none) creation path. For any other/unrecognized topic arg, fall back to the create/agentify/(none) creation workflow below rather than assuming a matching topic file exists.
| Type | When to use | Implementation |
|---|---|---|
| Agent | High autonomy, multi-tool | .claude/agents/name.md |
| Skill | Domain expertise, logic | .claude/skills/name/SKILL.md |
| Rule | Constraints, styling | .claude/rules/name.md |
| Slash Command | User types /cmd | Simple prompt templates |
| Hook | Events (tool use, etc) | Automation on actions |
Full comparison: automation-decision-guide.md
Before any large-output operation, decide: inline vs subagent vs script. Parent context bloat from claudify itself reduces the budget available for the actual automation creation work.
| Operation | Inline OK? | Dispatch to subagent? | Script? |
|---|---|---|---|
| Read 1 resource file (template/guide) | ✅ Inline | — | — |
| Read 2+ large resource files (>200 lines each) | ❌ | ✅ general-purpose subagent | — |
| Scan transcript for automation patterns (no target) | ❌ | ✅ Explore or general-purpose | — |
Enumerate ~/.claude/plugins/marketplaces/*/plugins/*/ | ❌ | — | ✅ find / ls 1-liner |
| Create single agent/rule/command file (inputs known) | ✅ Inline | — | — |
| Create multi-topic skill (writer + multiple topic files) | ❌ | ✅ skill-writer subagent | — |
| Marketplace remote search (WebFetch + parsing) | ❌ | ✅ general-purpose subagent | — |
| # | Don't | Do |
|---|---|---|
| 1 | Read resources/agent-templates.md (358 lines) + automation-decision-guide.md + askuserquestion-patterns.md inline before creating one agent | Dispatch general-purpose subagent: "Read these 3 templates and create agent at <path> with name=X, tools=Y, description=Z. Return the created file path only." |
| 2 | Inline scan transcript for candidates by Read-ing the full session JSONL | Dispatch Explore subagent: "Find verbose tool-output patterns (>500 tokens repeated 2+ times) in conversation. Return candidate list (label + 1-line description) under 200 words." |
| 3 | Inline Glob + Read all marketplace plugin SKILL.md files | Bash 1-liner: find ~/.claude/plugins/marketplaces/*/plugins/*/ -name SKILL.md -exec head -3 {} \; returns names without body |
| 4 | "Just one more Read" cumulative inline reading | Quantify: if next operation expected to add >2K tokens to parent context AND result is not the deliverable itself, dispatch subagent |
| 5 | Dispatch subagent with vague prompt ("create the agent") | Subagent prompt must include: target file path, name, tools, model, description (single-line YAML), trigger keywords. Return only the file path |
Subagent return contract: subagent returns only the deliverable path(s). No template dump, no intermediate analysis, no confirmation text.
If no target specified ("agentify" alone):
multiSelect: true when presenting candidates (users often want multiple)If target specified:
~/.claude/plugins/marketplaces/*/plugins/*//skill-dedup command to find overlapsWebFetch https://claudemarketplaces.com/?search=[keyword]Step 1 Guards (HARD STOP):
~/.claude/skills/), verify the change is project-agnostic. Project-specific variables, hostnames, or environment values must NOT be added to global skills. If the automation is project-specific, recommend a project-level skill (.claude/skills/) or a project rule (.claude/rules/) instead.When duplicate or similar automation candidates are found, confirm grouping and merge options with the user using AskUserQuestion.
Grouping criteria:
Merge criteria:
| Condition | Recommendation |
|---|---|
| 3+ similar topics | multi-topic Skill |
| Different triggers + same skill | General Agent |
| Simple instructions + Bash script | Skill (Agent with skill) |
| Complex multi-step + multiple tools | Agent |
AskUserQuestion (merge options): "Candidates found. How should I structure them?" options:
PROHIBITED: Do not create separate agents without merging candidates into a logical structure if they are related.
Use AskUserQuestion to clarify:
~/.claude/) / Project (.claude/)Question patterns: askuserquestion-patterns.md
Use the automation-decision-guide.md to recommend the best type.
CRITICAL: Follow the creation method for each type. Apply Step 0 routing first — multi-template Reads or transcript scans dispatch to subagent.
Skill with scripts (If scripts are required, use skill directory structure):
skill-name/
├── SKILL.md # frontmatter + documentation + node scripts/xxx.js (mode)
├── topic-a.md # topic file
├── topic-b.md # topic file
└── scripts/
└── xxx.js # actual logic (temp location, permanent storage)
tmp_*.js in current directory; move to scripts/node <skill-dir>/scripts/xxx.js <mode>__dirname in scriptsSkill (no scripts): MUST use skill-writer (do NOT create directly)
Skill tool: skill: "project-automation:skill-writer"
Agent: Create in ~/.claude/agents/ or .claude/agents/
Rules: Create in ~/.claude/rules/ or .claude/rules/
Slash Command: Create in ~/.claude/commands/ or .claude/commands/
Hook: Add to settings.json
Plugin (open source):
No auto-sync hook currently exists — verified 2026-08-18: no plugin-cache-sync.sh is registered in settings.json/settings.local.json, and no live copy of the script exists outside a Syncthing version-history backup. A marketplace checkout's installPath in ~/.claude/plugins/installed_plugins.json can point at a cache directory that either does not exist on disk (harness apparently falls back to reading the marketplace source directly in that case) or exists but has drifted stale relative to the marketplace checkout — see hook-kit/audit.md Step 3-D for the detection procedure. Until that gap is closed, manually verify (diff the marketplace source against the cache installPath) after editing any plugin's hook scripts, rather than assuming this auto-sync exists.
Keep responses concise:
| Context | multiSelect |
|---|---|
| Automation candidates | true (users often want multiple) |
| Merge options (Complexity) | false (merge vs separation - mutually exclusive) |
| Type selection | false (mutually exclusive) |
| Scope selection | false (one location) |
| Feature selection | true (additive choices) |
Scenario (2026-03-09):
Key factors:
Detection condition: do not judge by .ralph/ presence alone. Ralph mode requires all of:
.ralph/ directory exists ANDRALPH_LOOP=1 is set (Ralph autonomous loop sets this)Even when .ralph/ exists, an interactive user session is normal mode — AskUserQuestion works as usual.
Workflow Change:
| Step | User Interaction | Workflow |
|---|---|---|
| Step 1: Auto-detect | AskUserQuestion (multiSelect) | Summary info to .ralph/improvements.md |
| Step 1.5: Merge logic / Structure | - | improvements.md recording |
| Step 2: Requirements | AskUserQuestion | trigger/scope recommendation to improvements.md |
| Step 3: Type recommendation | Recommend only | improvements.md recording |
| Step 4: Implementation | Direct action | PROHIBITED - Use [NEEDS_REVIEW] tag |
| Step 5: Validation | Validation | Auto validation (after changes are complete) |
Scope note (HARD STOP): this table governs the creation workflow only (new agent/skill/rule/hook). It does not extend to passive, no-ask persistence steps elsewhere in this skill's topics (improve/persist RAG session/discovery-chunk store) — those follow the narrower carve-out in persist.md's own "Ralph Mode" section, not this table. Do not generalize "Ralph Mode = record-only, nothing runs" from this table alone.
improvements.md recording example
## Agentify Candidate (Implementation)
### [Candidate Name]
- **Context**: [Why it was found]
- **Recommended Type**: [Skill/Agent/Hook/Slash Command]
- **Recommended Structure**: [Topics]
- **Rationale**: [Why it's recommended]
- **Tag**: [NEEDS_REVIEW]
After changes are complete, Self-improve based on conversation: