Install
openclaw skills install @shadowninex/skill-gardenerCreate or repair local skills from verified, reusable workflows. Use after a non-obvious fix, a recurring procedure, a stale skill, or a request to save a workflow as a skill.
openclaw skills install @shadowninex/skill-gardenerPreserve proven procedures in compact skills that a future agent can use without the original conversation. Prefer improving a matching skill over adding another.
SKILL.md files under the selected skill root; it must not expand into unrelated workspaces or private session history.Resolve the active workspace, the intended skill root, and this skill's own directory from the runtime/catalog before editing. In OpenClaw, {baseDir} refers to this installed skill's directory. Do not assume the current working directory or an installation under skills/skill-gardener.
For the bundled audit, use Python 3.10+. It uses PyYAML when an already-trusted environment provides it; otherwise it uses its built-in, deliberately bounded YAML parser. Both paths reject aliases, merge keys, unsafe tags, duplicate keys, and nesting beyond 32 levels. Do not install dependencies just to run the audit.
Self-Improving Agent and Skill Vetter are optional companions. Read references/integrations.md when consuming .learnings/ records or reviewing an external skill. Neither companion's hooks nor its extraction script is needed by Gardener.
Read the relevant learning entry or current task evidence. Identify the trigger, successful procedure, important pitfall, and exact verification result.
Promote only when all are true:
resolved label alone is not proof.If a condition fails, explain the missing evidence and stop promotion. Preserve an existing learning record without marking it promoted. If recording a new sanitized learning is within scope, record the gap once; do not invent successful execution.
Search the runtime catalog by capability, symptoms, and trigger words; read the closest matches. Check any existing Skill-Path or source ID before creating a duplicate.
Patch a matching user-owned source. For bundled, managed, immutable, or third-party skills, use the runtime's supported override/proposal mechanism or prepare a local replacement within the authorized scope. Do not patch an installed cache or silently shadow a higher-priority skill.
For a new file-based skill, choose <skill-root>/<lowercase-hyphen-name>/SKILL.md. Keep names 1–64 characters, with no leading, trailing, or consecutive hyphens. New directory names must match the skill name.
Record the target's current revision/content and any existing audit failures. Confirm its resolved location is inside the intended destination, including parent directories and links. Avoid two writers editing the same target; re-read before applying changes and reconcile any intervening edit.
Completion: one owned target (or concrete proposal destination), its provenance, and its pre-change state are known.
Use the runtime's draft/proposal lifecycle if available. Otherwise stage a complete candidate in a temporary directory outside watched skill roots, retaining the intended directory name. Copy only the selected skill's necessary files; keep backups outside the active catalog too.
Include:
description and name.Use sections that fit the task rather than empty mandatory headings. Keep the entrypoint lean; move detailed references, deterministic helpers, and output assets into their standard subdirectories. Inspect references and commands for broken paths, unfilled scaffold markers, and assumptions the original conversation supplied. Remove obsolete rules rather than layering contradictory exceptions.
Completion: a self-contained candidate and a reviewable diff, with the active skill still intact.
Inspect the bundled helper before first use. With the prepared Python interpreter, validate the staged skill by its explicit path:
python3 "{baseDir}/scripts/audit_skills.py" --skill "/absolute/path/to/staged-skill"
Replace python3 with the prepared environment's interpreter if necessary. This is a structural check, not a security verdict or proof that the workflow works. The audit supports normal YAML scalars, multiline descriptions, and nested OpenClaw metadata; it intentionally rejects aliases, merge keys, duplicate keys, and excessive nesting.
Run relevant inspected deterministic tests in a temporary workspace. Test execution already authorized by the task needs no second approval. External or newly written code still requires inspection and appropriate isolation; do not give a test real credentials or network access unless the task authorizes and requires them. Do not run production actions just to validate a skill.
Replay the triggering scenario against the instructions, including at least one applicable failure path. For procedural-only skills, record the actual earlier execution evidence and the dry review separately. Report checks as passed, failed, not applicable, or blocked; never call an unrun test passed.
Completion: the candidate passes structural checks and all applicable checks, with remaining limitations stated. A failed or blocked required check leaves it a draft.
After required authorization and validation, re-check the target against its baseline. Apply only the reviewed changes through the supported lifecycle or a controlled file replacement. Preserve prior content for rollback; for multi-file changes, finish supporting resources before activating the new SKILL.md.
Validate the installed target again. Where collection access is in scope, audit the actual collection root:
python3 "{baseDir}/scripts/audit_skills.py" "/absolute/path/to/skill-root"
Compare collection results with the baseline. New failures caused by this change block completion. Unrelated pre-existing failures do not justify repairing other skills or claiming the collection is clean; report them separately. A collection audit of one root does not establish cross-root uniqueness or runtime eligibility.
Verify the runtime resolves the intended skill and revision, including precedence and dependency gating. Use the runtime's actual refresh behavior. If only a future session can confirm discovery, report the skill as saved and structurally validated, with runtime discovery pending; do not mark promotion complete yet.
If application or required validation fails, restore only this operation's changes when that can be done without overwriting concurrent work. Otherwise preserve the draft and report the conflict. Do not advance the learning status on partial success.
After successful application and discovery, update the exact originating entry to promoted_to_skill, set Skill-Path to the actual skill directory, and add the verification summary. Preserve other entries and source IDs. If no learning entry exists, keep a sanitized source/proof note with the skill instead of fabricating an entry. If linking fails, report the saved skill and pending link; retry linking without creating another skill.
Completion: report what changed, where it is discoverable, what was verified, and any pending step. On repeated invocation, reuse the linked skill; do not duplicate the skill, entry, or provenance note.
Repair a stale skill after verifying the corrected procedure using the same draft/validate/apply workflow. Scope the repair to the observed failure. Re-check references before any authorized rename, merge, or removal; update them together and re-audit. Never weaken an existing safety or verification condition just to obtain a passing result.