You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Today librefang-skills only loads static, author-time-defined skills (TOML manifest + Python / JS / Prompt body). There is no path for an agent to learn a new skill from a successful interaction — when a user spends 20 turns teaching the agent a multi-step workflow, that workflow is lost the moment the conversation ends. The next time the user wants the same thing, they teach it again.
Hands give us a packaging primitive (multi-agent, role-keyed, persisted overrides), but a hand is author-time too. There is no in-loop capture / refinement / promotion path.
Reference: openclaw
extensions/skill-workshop captures repeatable workflows as workspace skills with:
autoCapture: detect user corrections ("no, do it like X") and reusable workflow instructions ("from now on, always Y") after agent turns; surface as a candidate skill draft.
approvalPolicy: store learned skill changes as pending (default) or write them automatically. Pending suggestions show up in a workshop UI for the user to approve / edit / reject.
reviewMode: heuristic (cheap pattern match), threshold-LLM (call a cheap model to confirm), both (heuristic gate → LLM review), none (manual capture only).
maxPending: cap on pending suggestions per workspace to avoid drift.
Safe writes: every promoted skill goes through the same SHA256 / prompt-injection scan as marketplace skills before being loaded.
Prompt refresh: when a skill is promoted, the system prompt is rebuilt so the agent picks it up next turn — no restart.
Proposed approach
This is a needs-rfc size feature. Outline:
New crate-internal module librefang-skills::workshop:
At least the heuristic review mode lands; LLM review is a follow-up.
CLI librefang skill pending subcommands.
Dashboard pending-skill review page (can ship in a follow-up PR; gate the feature on CLI alone first).
Integration test: simulated 3-turn conversation where user says "from now on always run cargo fmt before commit"; verify a candidate appears in ~/.librefang/skills/pending/.
Security test: candidate body containing prompt-injection markers (Ignore previous instructions ...) is rejected by the same scanner used for marketplace skills.
Depends on auxiliary LLM client (#3314) for the LLM review mode and on the prompt-build hook (#3326) for the post-turn trigger.
Problem
Today
librefang-skillsonly loads static, author-time-defined skills (TOML manifest + Python / JS / Prompt body). There is no path for an agent to learn a new skill from a successful interaction — when a user spends 20 turns teaching the agent a multi-step workflow, that workflow is lost the moment the conversation ends. The next time the user wants the same thing, they teach it again.Hands give us a packaging primitive (multi-agent, role-keyed, persisted overrides), but a hand is author-time too. There is no in-loop capture / refinement / promotion path.
Reference: openclaw
extensions/skill-workshopcaptures repeatable workflows as workspace skills with:autoCapture: detect user corrections ("no, do it like X") and reusable workflow instructions ("from now on, always Y") after agent turns; surface as a candidate skill draft.approvalPolicy: store learned skill changes aspending(default) or write them automatically. Pending suggestions show up in a workshop UI for the user to approve / edit / reject.reviewMode:heuristic(cheap pattern match),threshold-LLM(call a cheap model to confirm),both(heuristic gate → LLM review),none(manual capture only).maxPending: cap on pending suggestions per workspace to avoid drift.Proposed approach
This is a needs-rfc size feature. Outline:
New crate-internal module
librefang-skills::workshop:CandidateSkillstruct (draft TOML + extracted body + provenance: agent ID, session ID, turn range).CaptureSourceenum:UserCorrection,ExplicitInstruction,RepeatedToolPattern.Capture pipeline runs
after_turn(paired with thebefore_prompt_buildhook from Plugin-stylebefore_prompt_buildhook for system context injection #3326):Storage:
~/.librefang/skills/pending/<workspace>/<uuid>.tomlwith astatus = "pending"field. The existing skill loader skips pending skills.Approval surface:
librefang skill pending list / approve <id> / reject <id>.Approval promotes: validated TOML → moves to
~/.librefang/skills/active/, kernel reloads skill registry, prompt rebuilds.Per-agent
agent.toml:Acceptance criteria
docs/rfcs/skill-workshop.mdcovering capture heuristics, security model (prompt-injection scan path), and rollback.[skill_workshop] enabled = true, default off.librefang skill pendingsubcommands.~/.librefang/skills/pending/.Ignore previous instructions ...) is rejected by the same scanner used for marketplace skills.Depends on auxiliary LLM client (#3314) for the LLM review mode and on the prompt-build hook (#3326) for the post-turn trigger.