Skill Management
- Repo stars 640
- License MIT
- Author repo honeclaw
Skill Management (skill_manager)
Use this skill when the user asks to add, create, edit, inspect, migrate, or align a Hone skill.
The runtime contract is now:
- Skills live in
skills/<name>/SKILL.md,data/custom_skills/<name>/SKILL.md, or a closer.hone/skills/<name>/SKILL.md. - The model sees a compact listing first.
- The full skill body is only injected into the current turn when
skill_tool(skill_name="...")or a user slash command like/<skill-name>is invoked. load_skillis only a compatibility shim. Do not teach it as the primary workflow.
Frontmatter Contract
Prefer this frontmatter schema:
---
name: Human readable name
description: One-line description
when_to_use: Brief trigger guidance
allowed-tools:
- skill_tool
user-invocable: true
model: optional model override
effort: optional effort override
context: inline
agent: optional agent hint
paths:
- src/**/*.rs
hooks: {}
arguments: []
script: optional default script path like scripts/run.sh
shell: optional shell hint
---
Notes:
allowed-toolsreplaces legacytoolsas the main runtime field.contextshould usually beinline; useforkonly when the skill should run in an isolated child runner.pathshides the skill from the default listing until the active task touches matching files.scriptdeclares the default executable entrypoint inside the skill directory.skill_tool(..., execute_script=true)can run it with${HONE_SKILL_DIR}as cwd.- Keep the Markdown body task-oriented and ready to inject as prompt text.
How To Inspect Skills
When the user asks what skills exist or which skill fits a task:
- Call
discover_skills(query="...")with the user's task or keyword. - Summarize the relevant skills from the returned metadata.
- If one skill should actually be used for the current task, call
skill_tool(skill_name="...")so the full skill prompt is expanded for this turn.
When the user asks to inspect a specific skill in detail:
- Use
discover_skills(query="<skill name>")to confirm the match if needed. - Call
skill_tool(skill_name="<skill id>"). - Explain the resolved metadata and the injected prompt body, not a hand-written summary that drifts from the source.
How To Create Or Update Skills
When the user wants to create or edit a skill:
- Collect the intended skill id, description, trigger conditions, and whether users should be able to invoke it directly with
/<skill-name>. - Write or update the actual
SKILL.mdfile with the new frontmatter schema. - Keep the body concrete: trigger rules, required steps, tool usage expectations, and refusal/verification constraints.
- If you created or changed a skill that should be runnable immediately, validate it by invoking
skill_tool(skill_name="<skill id>")and checking the rendered prompt.
Strict Rules
- Do not teach the deprecated
skill_tool(action="add" | "update" | "remove")CRUD workflow. - Do not rely on
load_skillas the main user-facing path. - If a skill is path-gated, mention that it may stay hidden until matching files are involved.
- If runtime enforcement is not implemented for a field such as
hooksor strict tool scoping, say so plainly instead of pretending it is active.
- Fluxly category
- Design
- Author-declared agents
- No explicit declaration found; this is not inferred or tested compatibility
- Static check
- 94 / 100 · heuristic scan, not runtime safety proof
- Author / version / license
- @B-M-Capital-Research · MIT
- Fluxly token estimate
- Lean
- Fluxly setup estimate
- Guided setup
- External API key
- No requirement detected
- Detected OS requirements
- Unspecified
- Runtime requirements
- Unspecified
- Detected file/system behavior
-
- Read-only
- Write / modify
- Shell exec
- Detected network behavior
- Local-only
- Install commands
- None (reference only)
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
The current SKILL.md does not define a fixed output example. Use this skill when the user asks to add, create, edit, inspect, migrate, or align a Hone skill. The runtime contract is now: Skills live in skills/<name>/SKILL.md, data/customskills/<name>/SKILL.md, or a closer .hone/skills/<name>/SKILL.md.
Prefer this frontmatter schema: Notes: allowed-tools replaces legacy tools as the main runtime field.
When the user asks what skills exist or which skill fits a task: Call discoverskills(query="...") with the user's task or keyword. Summarize the relevant skills from the returned metadata.
When the user wants to create or edit a skill: Collect the intended skill id, description, trigger conditions, and whether users should be able to invoke it directly with /<skill-name>. Write or update the actual SKILL.md file with the new frontmatter schema.
Do not teach the deprecated skilltool(action="add" | "update" | "remove") CRUD workflow. Do not rely on loadskill as the main user-facing path. If a skill is path-gated, mention that it may stay hidden until matching files are involved.
## Skill Management (skill_manager)
Use this skill when the user asks to add, create, edit, inspect, migrate, or align a Hone skill.
The runtime contract is now:
1. Skills live in `skills/<name>/SKILL.md`, `data/custom_skills/<name>/SKILL.md`, or a closer `.hone/skills/<name>/SKILL.md`.
2. The model sees a compact listing first.
3. The full skill body is only injected into the current turn when `skill_tool(skill_name="...")` or a user slash command like `/<skill-name>` is invoked.
4. `load_skill` is only a compatibility shim. Do not teach it as the primary workflow.
## Frontmatter Contract
Prefer this frontmatter schema:
```yaml
---
name: Human readable name
description: One-line description
when_to_use: Brief trigger guidance
allowed-tools:
- skill_tool
user-invocable: true
model: optional model override
effort: optional effort override
context: inline
agent: optional agent hint
paths:
- src/**/*.rs
hooks: {}
arguments: []
script: optional default script path like scripts/run.sh
shell: optional shell hint
---
```
Notes:
- `allowed-tools` replaces legacy `tools` as the main runtime field.
- `context` should usually be `inline`; use `fork` only when the skill should run in an isolated child runner.
- `paths` hides the skill from the default listing until the active task touches matching files.
- `script` declares the default executable entrypoint inside the skill directory. `skill_tool(..., execute_script=true)` can run it with `${HONE_SKILL_DIR}` as cwd.
- Keep the Markdown body task-oriented and ready to inject as prompt text.
## How To Inspect Skills
When the user asks what skills exist or which skill fits a task:
1. Call `discover_skills(query="...")` with the user's task or keyword.
2. Summarize the relevant skills from the returned metadata.
… Author text anchors workflow facts; Fluxly only indexes current sections, terms, files, and commands.
sections -> Skill Management (skillmanager) → Frontmatter Contract → How To Inspect Skills → How To Create Or Update Skills → Strict Rules
terms -> Use this skill when the user asks to add, create, edit, inspect, migrate, or align a Hone skill. · 1. Skills live in skills/<name>/SKILL.md, data/customskills/<name>/SKILL.md, or a closer .hone/skills/<name>/SKILL.md. · - allowed-tools replaces legacy tools as the main runtime field. · 1. Call discoverskills(query="...") with the user's task or keyword. · 1. Use discoverskills(query="<skill name>") to confirm the match if needed. · 1. Collect the intended skill id, description, trigger conditions, and whether users should be able to invoke it directly with /<skill-name>. · - Do not teach the deprecated skilltool(action="add" | "update" | "remove") CRUD workflow.
files/cmd -> skills/<name>/SKILL.md · data/customskills/<name>/SKILL.md · .hone/skills/<name>/SKILL.md · skilltool(skillname="...") · /<skill-name> · loadskill · allowed-tools · tools
body sha256 -> fc9213d542d5
Decide Fit First
Design Intent
How To Use It
Boundaries And Review