Reviewable Skill authoring and mining workflow for LangBot.
LangBot Skill Authoring
LangBot Skill Authoring is a LangBot plugin for turning run traces, QA evidence,
troubleshooting notes, and operator feedback into reviewable SKILL.md drafts.
It is not a replacement for LangBot's Skill runtime. LangBot already owns the
runtime surface: Box-managed SKILL.md packages, activate,
register_skill, Skill CRUD, and sandbox mounts. This plugin adds the missing
authoring loop:
source evidence -> candidate -> risk report -> review -> export/publish package
For personal-assistant scenarios, the plugin also has a gated one-click mode:
source evidence or completed turn
-> auto candidate -> risk report -> policy gate -> optional auto review/export
This mode is controlled by the auto_deposition_enabled master switch and is
off by default.
Runtime Boundary
This plugin does not change how LangBot discovers, activates, mounts, or runs a Skill. Runtime usage remains owned by LangBot core:
- Agents can create a Skill package under
/workspaceand call the built-inregister_skilltool. - Operators can manage Skills through LangBot's existing
/api/v1/skillssurface. - Activated Skills still use LangBot's existing sandbox and permission checks.
The missing layer is the product workflow before registration: deciding what is worth keeping, generating a structured draft, scanning for secrets and environment coupling, recording review/eval evidence, and exporting a package that can then be registered through the normal runtime path.
Auto Deposition Mode
Auto deposition is intended for a personal assistant that should learn from a
user-approved conversation or repeated workflow with one action. When enabled,
the Page One-click Deposit action and the skill_auto_deposit tool will:
- Create a candidate from the provided evidence.
- Generate a structured Skill draft.
- Run deterministic risk scanning.
- Apply the configured risk policy.
- Automatically record an approval and export the package when allowed.
The mode still does not directly publish into the runtime registry. The result
contains a register_skill_hint so the assistant can write the package under
/workspace/<skill-name> and call LangBot's built-in register_skill tool.
The plugin can also learn passively from completed LangBot turns. When both
auto_deposition_enabled and post_response_candidate_enabled are enabled, an
EventListener watches NormalMessageResponded, reads the current
user_message_text, assistant response_text, function names, and available
query vars, then creates a candidate only when deterministic confidence is high
or the user explicitly says things like "沉淀一下", "记住这个流程", or "make
this a skill".
Post-response extraction is conservative:
- default off, even when the plugin is installed
- private/personal-assistant sessions only by default
- candidate-only by default
- optional auto-export still obeys
auto_deposition_policy - no automatic runtime
register_skill - no automatic LongTermMemory write
Post-response config:
post_response_candidate_enabled: enables candidate creation after normal replies, defaultfalse.post_response_auto_export: approve and export low-risk candidates automatically, defaultfalse.post_response_private_only: restrict to private chats, defaulttrue.post_response_min_confidence: deterministic threshold, default0.72.post_response_max_source_chars: maximum copied turn text, default6000.post_response_explicit_only: require an explicit deposition phrase, defaultfalse.
The response includes explicit disclosures:
- Risks: over-generalizing one-off workflows, preserving private context, leaking secrets or local paths, and carrying prompt-injection text forward.
- Cost: source size, plugin storage writes, optional package export writes, runtime changes, and whether LLM calls were used. The current deterministic MVP uses zero LLM calls.
Config:
auto_deposition_enabled: master switch, defaultfalse.auto_deposition_policy:pass_only,allow_warn, orallow_blocked.auto_deposition_reviewer: reviewer label for automatic approval records.post_response_candidate_enabled: post-response candidate extraction, defaultfalse.post_response_auto_export: automatic post-response review/export, defaultfalse.retention_deprecate_score: lifecycle score below which deprecation is recommended.retention_archive_score: lifecycle score below which archival is recommended.
Lifecycle And Retention
Hermes-style learning needs provenance and recoverable forgetting, not just writing. This plugin tracks a lightweight lifecycle for deposited Skill candidates:
candidate -> active -> deprecated -> archived
\-> superseded
Every candidate now carries provenance metadata:
origin:manual,auto_deposition,agent_review,imported,runtime_registered, etc.protected: protected candidates cannot be deprecated, archived, or superseded unless an explicit operator action passesforce=true.auto_curation_eligible: only agent/auto-created candidates are eligible for automatic lifecycle recommendations to be applied later.
Lifecycle events can be recorded through the skill_lifecycle_manage tool or
the Page API:
- positive signals:
used,success,positive_feedback,eval_pass - negative signals:
failure,negative_feedback,eval_fail,stale,security_issue,memory_conflict,superseded
The retention evaluator computes a score and recommends keep, deprecate,
archive, or superseded. Reports include auto_apply_allowed so a future
curator can distinguish "safe to apply automatically" from "human review
needed". Applying an action only changes this plugin's governance record;
deleting or hiding a runtime Skill still needs LangBot's existing Skill
management path or a future admin proxy.
Exported packages include:
SKILL.mdreferences/source-excerpt.mdreferences/risk-report.jsonreferences/provenance.jsonreferences/learning-decision.jsonreferences/support-files.json
This mirrors the Hermes pattern of keeping session-specific detail in support files instead of flattening every one-off run into a narrow Skill.
LongTermMemory Coordination
Use LongTermMemory and Skill Authoring as separate asset layers:
- LongTermMemory L1: stable profile facts and preferences.
- LongTermMemory L2: situational memories, decisions, events, and correction history.
- Skill Authoring: reusable procedures that need tools, sequencing, guardrails, and verification.
The skill_lifecycle_manage tool supports memory_plan for a candidate. It
classifies whether the source should primarily become a Skill, an L1 profile
update, an L2 episodic memory, or require manual review. When both apply, keep
the executable workflow as a Skill and store only a compact source or usage
summary in L2 memory.
The response includes a machine-readable learning-decision/v1 object and
optional LongTermMemory tool suggestions. This plugin does not directly call
LongTermMemory; the agent or a future host-level workflow can apply the
suggested update_profile or remember call after user review.
When LongTermMemory is installed, its _ltm_context query var is preserved as
provenance summary for post-response candidates when available. That gives the
reviewer session/speaker context without coupling the two plugins or duplicating
memory writes.
Hermes Parity Status
Implemented in this plugin:
- gated one-click deposition with risk/cost disclosure
- LangBot-native post-response candidate extraction from
NormalMessageResponded - provenance, protection, and auto-curation eligibility
- lifecycle scoring with recoverable archive/deprecate/supersede records
- export packages with support-file manifests
- shared learning decision output for LongTermMemory coordination
Not implemented inside this plugin:
- Hermes' post-turn background fork that reviews the full conversation
- prompt-cache-aware auxiliary model routing
- complete tool-result trace review beyond the current event/query vars
- direct runtime Skill archive/delete/restore
- automatic umbrella consolidation across all installed runtime Skills
Those need stable LangBot host APIs for richer run traces, cross-plugin calls, runtime Skill provenance, and recoverable runtime archive/restore. They are not required for the current LangBot-native candidate loop.
The pipeline refactor follow-up plan is documented in
docs/pipeline-host-integration-plan.md.
What Works In This MVP
- Page backend API for candidates, reviews, validation, and export.
- Admin-facing Page UI for drafting and reviewing candidates.
- LLM-callable tools:
skill_auto_depositskill_lifecycle_manageskill_candidate_createskill_candidate_risk_checkskill_candidate_export
- Deterministic
SKILL.mdgeneration with source refs and risk notes. - Local plugin storage when running inside LangBot, with an in-memory fallback for tests and offline development.
Repository Layout
manifest.yaml
main.py
components/
event_listener/
pages/authoring/
tools/
skill_authoring/
tests/
Development
From this repository:
python -m pytest
Build with the LangBot plugin SDK CLI when available:
lbp build
Inside a LangBot run, an Agent can still create the final runtime Skill using
the built-in register_skill tool after writing the exported package under
/workspace. The Page backend can also be extended to call /api/v1/skills
with an admin API key when a deployment wants direct publishing from the review
screen.
Use Skill Authoring in Feishu/Lark bots, DingTalk bots, WeCom bots, WeChat bots, QQ bots, Slack bots, Discord bots, Telegram bots, LINE Bots, and Matrix Bots.
Host your bot on LangBot Cloud and connect this extension to the collaboration platforms your team already uses.