Install
openclaw skills install autoskill-local-skill-managerManage personal local Agent Skill files as an installable skill manager. Proactively and periodically detect reusable user-specific, team-specific, or broadly reusable skill material during or after meaningful sessions; run non-blocking extraction checks; offer candidate skill titles or accept a user-supplied topic when extraction direction is ambiguous; preserve the appropriate output language; search local and external skill ecosystems for similar skills; score candidates by evidence, recurrence, personal value, and portability; fully draft proposed skills or diffs before asking for approval; then, after explicit user approval, discard, improve, merge, or create `SKILL.md` folders.
openclaw skills install autoskill-local-skill-managerMaintain the user's personal local skill files as a lightweight self-improving memory system. The default goal is not to produce marketplace-ready generic skills; it is to preserve reusable behavior that helps this user, this team, or this workspace in future sessions. A good candidate may encode personal workflow preferences, project conventions, style contracts, tool choices, or review gates that would not be useful to other users, as long as it is reusable for the intended owner and approved.
This skill does not depend on project-specific code, servers, vector stores, databases, or storage layouts. It operates only on ordinary local skill folders:
<skill-root>/
<skill-name>/
SKILL.md
agents/openai.yaml (optional)
scripts/ (optional)
references/ (optional)
assets/ (optional)
Use this skill to decide when a session contains reusable skill material, find whether a similar skill already exists, then discard, improve, merge, or create a local skill. The model should initiate this check when signals appear; it should not wait for the user to ask. The check must stay lightweight and non-blocking unless the user explicitly asks to focus on skill maintenance.
This skill owns the lifecycle decision: when to extract, whether to discard, whether to improve or merge, and where to write. Coordinate with nearby skills when they are installed:
skill-creator for new skill structure, naming, resource placement, agents/openai.yaml, and validation.skill-improvement or equivalent improvement guidance for existing-skill iteration, test prompts, failure analysis, trigger-description tuning, and before/after comparison.skill-finder, find-skills, or equivalent discovery tools to search local or external skill ecosystems before creating a duplicate.Local skills can influence future agent behavior and may include executable scripts. Treat skill edits as durable behavior changes.
SKILL.md.personal by default; mark it team or public only when the evidence supports that broader audience.autoskill manager itself during routine maintenance. Improve it only when the user explicitly asks to improve this skill.Before writing anything, identify where local skills live.
${CODEX_HOME}/skills, ~/.codex/skills, ./skills, .agents/skills, and any current workspace skill directory containing */SKILL.md.Use a three-layer trigger policy:
The model should proactively initiate scans and extraction checks. Do not ask the user "should I check for a skill?" Ask only when the target root is ambiguous, the edit would overwrite uncertain behavior, or the user must approve an external install or sensitive script.
Keep the lifecycle separate from any particular storage system: observe a signal, optionally ask the user to choose a candidate title/topic, draft the candidate, de-duplicate by pattern, decide discard/keep_note/improve/merge/create, show the complete proposed skill or diff, then apply the smallest approved change and validate.
De-duplicate by task family, trigger, tools, failure mode, output contract, and target skill rather than exact wording. Do not create a private database, daemon, scheduler, or hidden background store as part of this skill.
Before full extraction, when the reusable topic is ambiguous or there are several plausible skills, show 2-5 concise reusable-capability titles with one-line evidence reasons plus none of these and custom topic. If the user chooses a title or enters a topic, treat it as direction only: re-run the extraction boundary and similar-skill search for that direction, discard it if it fails, or show the complete proposed SKILL.md/diff for final approval if it passes. If the user chooses none of these, discard or keep a non-persistent note; do not write files.
For new skills, write candidate titles, proposed SKILL.md, agents/openai.yaml, and small resources in the dominant language of the user evidence; Chinese input produces Chinese skills, English input produces English skills. For updates or merges, keep the target skill's dominant language unless the user explicitly asks to translate it; if mixed evidence makes language ambiguous, ask before drafting. Do not default extracted skill content to English.
Skill extraction and maintenance must not block the user's main task.
User confirmation is required before any skill file is created, updated, deleted, imported, installed, enabled, or materially rewritten. Draft first, ask second: after any title/topic selection, never ask "should I add/update a skill?" until the proposed content or change is already written out for review.
For create, show before writing:
personal, team, or public, plus portability limitsSKILL.md contentagents/openai.yaml and every proposed script, reference, or asset text when such files are small enough to review inline; for large assets, show the exact file list, purpose, provenance, and generated diff or manifestFor improve or merge, show before writing:
improve or mergeAsk for a clear yes/no approval only after showing the full proposed artifact or diff. If the user does not approve, do not edit the skill; report the candidate as deferred or discarded.
Run an extraction check immediately, or at the next natural pause if the user is waiting for the main task, when any of these happen:
Still treat extraction as a check, not a requirement: no skill change is often the correct outcome.
Do not extract when the user says the rule is temporary, asks not to remember it, or only wants a one-time answer.
Use scheduled checks to catch gradual learning that no single turn makes obvious:
Keep scheduled checks lightweight. They should usually happen silently and only surface to the user when there is an actionable decision or a needed clarification.
Prevent noisy repeated extraction:
keep_note or discard for borderline signals until repetition strengthens the evidence.Before changing skills, classify the session experience. Durable categories are error, correction, best_practice, knowledge_gap, and preference. one_off_result means the session produced useful work but no durable process change.
Only durable categories can become skill changes, and only after passing the extraction boundary. One-off results should not be promoted.
P0: prevents unsafe, destructive, privacy-sensitive, or repeatedly failing behavior.P1: prevents a significant recurring mistake, missed trigger, bad merge, or expensive repeated workflow.P2: improves quality, speed, or clarity for a recurring task family.P3: convenience or style improvement with limited evidence.Promote by durable value, not novelty. Value must be explainable as reliability, safety, speed, quality, consistency, or reduced repeated work. If no value dimension is clear, discard or keep a non-persistent note.
Change one behavioral lever at a time when improving an existing skill: trigger wording, workflow step, validation gate, resource placement, or safety constraint.
Do not turn every experience into a skill edit. Promote experiences deliberately:
When using a local learning-note convention such as .learnings/, MEMORY.md, or similar, record non-promoted experiences there only if the user or environment already supports that convention. Do not invent a new memory system inside this skill unless the user asks.
When a learning note or improvement rationale is needed, use a compact structure:
type: error | correction | best_practice | knowledge_gap | preference
status: candidate | deferred | approved | applied | discarded
audience: personal | team | public
summary: one sentence
source: user_feedback | command_error | task_result | review
context: task family, relevant files/tools, and what happened
lesson: reusable rule or missing capability
pattern_key: stable phrase for deduplicating similar experiences
evidence_level: strong | medium | weak
recurrence: first_seen | repeated | user_confirmed
priority: P0 | P1 | P2 | P3
value_signal: reliability | safety | speed | quality | consistency | reduced_rework
suggested_action: discard | improve <skill> | merge <skill> | create <skill> | keep_note
sensitivity: public | private | contains_sensitive_details
Redact secrets, personal data, credentials, private URLs, and customer-specific details before storing any note or skill content.
Prefer improving an existing skill over creating a new one when the session reveals a quality issue in a skill that already exists.
Improve a skill when it under-triggers, over-triggers, gives incomplete guidance, causes repeated work, memorizes one case instead of the reusable pattern, or is too bloated for the value it provides.
Do not "improve" a skill just to add topical payload from the current session. Improvement must increase future reuse quality.
Extract only reusable capabilities. The boundary is future reuse, not topic similarity and not session length.
Extract when all tests pass:
Do not extract when any test fails:
Decision line: this-instance content -> do not extract; reusable method, preference, workflow, output contract, tool rule, or quality gate -> consider extraction.
Rank candidate evidence before saving:
Save from strong evidence. Save from medium evidence only when the reusable boundary is clear. Do not save from weak evidence unless the user explicitly asks to turn it into a skill.
Before editing a local skill, search for prior related experience:
Use this check to avoid re-learning the same lesson, duplicating skills, or ignoring known constraints.
When extraction is warranted, form one candidate skill at a time:
name: lowercase letters, digits, and hyphens; short and capability-specific.description: state what the skill does and exactly when it should be used; this is the primary trigger surface.audience: personal, team, or public; default to personal for user-specific reuse.instructions: concise imperative guidance for future agents.triggers: 3-5 phrases a user might say that should invoke the skill.resources: optional scripts, references, or assets only when they materially improve reuse.Remove case details. Keep reusable HOW, not one-off WHAT.
Before writing the candidate, capture the domain context just enough to avoid generic skills:
Do not include domain context as payload unless it changes future behavior.
Search before creating anything.
<domain> <task>, <tool> <output>, and <failure-mode> workflow.rg --files -g 'SKILL.md' <skill-root>
rg -n "<keyword|task|output-type>" <skill-root>
name/description, workflow, triggers, resources, and success criteria. Compare by task family, trigger, tools, failure mode, output contract, and audience.skill-finder, find-skills, or equivalent discovery tool is installed, use it to broaden the local/external search. Treat results as similarity evidence, not an automatic merge/install decision.https://skills.sh/ or its leaderboard for popular/battle-tested optionsnpx skills find <query> with the best 1-2 queriesdeploy vs deployment or pr review vs code reviewcreate only if the candidate passes the extraction boundary.Choose one outcome.
discard when:
improve when:
merge when:
create when:
Prefer discard over creating vague skills. Prefer improve for skill-quality failures. Prefer merge over creating duplicate skills. Prefer create only for a distinct reusable capability.
Decision outcomes before confirmation:
discard: may be reported without confirmation because no file changes occur.keep_note: requires confirmation if it writes to any memory file; otherwise may be included in the completion note.improve, merge, create: always require confirmation before file changes.Use this loop for non-trivial changes to an existing local skill.
Diagnose the failure.
Preserve a baseline when useful.
Generalize from the feedback.
Keep the skill lean.
references/ only if they are genuinely reused.Validate with realistic prompts.
Iterate.
Self-improvement can drift if the agent keeps rewriting from its own guesses. Use these guardrails:
Before asking the user to approve a skill write, ensure it is self-contained, minimal, non-duplicative, confirmable, validatable, and privacy-safe. The user must see the exact target path plus the complete proposed skill content or complete diff before the approval question.
When merging:
SKILL.md and relevant resources.description strong enough to trigger the skill in future sessions.references/ only when needed.scripts/ only when they will actually be reused.After editing, validate if a validator is available. If skill-creator tooling is installed, run:
python3 <skill-creator>/scripts/quick_validate.py <path/to/skill-folder>
Do not perform the edit until the user has approved the proposed target and diff.
The frontmatter description is the most important trigger surface. After creating or materially improving a skill, review it separately.
A strong description:
Use a small trigger eval set when the skill's scope is subtle:
[
{"query": "realistic user request that should trigger", "should_trigger": true},
{"query": "near-miss request that should not trigger", "should_trigger": false}
]
Include near-miss negatives that share vocabulary with the skill but require a different capability. Avoid easy negatives that prove nothing.
When tuning the description, generalize from failures rather than listing every observed phrase. The description should make the skill easy to discover without becoming a keyword dump.
When creating a new skill:
<skill-root>/<skill-name>/SKILL.md.skill-creator tooling is available, prefer:python3 <skill-creator>/scripts/init_skill.py <skill-name> --path <skill-root>
Write only the required skill content:
name and descriptionagents/openai.yaml metadata when supportedscripts/, references/, or assets/ only when usefulDo not create README files, changelogs, install guides, or extra process notes unless the skill itself needs them to function.
Validate with available tooling or manually check YAML frontmatter, naming, and trigger clarity.
Do not create the folder or write files until the user has approved the proposed skill.
Borrow these skill-creator principles:
description.SKILL.md lean and move large references into references/.After managing local skills, report the decision, target path or "no file changed", intended audience and portability limits, title/topic selected if any, approval status, reuse-boundary reason, similar skills checked, validation run, changed sections/files for updates, and whether maintenance completed synchronously or was deferred.