EchoBot Skill Authoring
Create or revise repository-local skills that EchoBot can discover and activate.
Authoring goals
- Put project-specific skills under
skills/<skill-name>/. - Use lowercase kebab-case for the folder name and the
namefrontmatter field. - Keep frontmatter minimal. EchoBot routing reads
nameanddescriptionfromSKILL.md. - Keep
nameas a single-line value.descriptionmay be a single line or a YAML block scalar with>or|. - Write
descriptionas the trigger surface: what the skill does, when to use it, and what kinds of user requests or contexts should activate it. Include likely request phrasing when that improves triggering. - Keep the main body procedural and concise. Move deeper material into small files under
references/orscripts/. - Design for lazy loading. After activation, EchoBot exposes the body plus a resource summary. It does not auto-load bundled files.
- Only put text resources that an agent may need to read into
references/,scripts/, oragents/.read_skill_resourceonly reads UTF-8 text files. - Use
assets/for templates or binary output artifacts, not for essential instructions. - Do not treat
agents/openai.yamlas required. Current EchoBot discovery ignores it. - Avoid extra docs like
README.mdor changelog files inside a skill unless the runtime truly needs them.
Frontmatter checklist
- Keep
namestable and specific. Renaming a skill changes explicit/skill-nameand$skill-nameactivation. - Make
descriptionconcrete. Good descriptions say both the task and the trigger context. - Do not put "when to use" guidance only in the body. The body is loaded after activation.
- EchoBot currently ignores extra frontmatter keys. The validator is more permissive for compatibility, but project-local skills should usually keep only
nameanddescription.
Resource layout
skills/<skill-name>/
|-- SKILL.md
|-- references/ # short, focused UTF-8 docs loaded on demand
|-- scripts/ # executable helpers or deterministic workflows
|-- assets/ # templates or binary resources not meant for context loading
`-- agents/ # optional helper prompts or agent-specific text resources
You do not need every folder. Create only what the skill actually uses.
Practical workflow
- Choose a stable kebab-case skill name and create or update
skills/<skill-name>/SKILL.md. - Draft or refine the trigger description in
SKILL.mdbefore writing body details. - Keep the main body short and procedural. Tell the agent which resource to inspect first when the skill has multiple files.
- Split long or variant-specific details into focused resource files.
- Validate the skill with
python -X utf8 echobot/skills/skill-creator/scripts/quick_validate.py skills/<skill-name>. - If the skill changes runtime expectations, update tests.
EchoBot-specific notes
- Project skills override built-in skills with the same
name. - Explicit
/skill-nameor$skill-nameactivates the skill immediately. - Otherwise the model may call
activate_skill. - Activation loads the skill body and a resource summary, not the bundled file contents.
- After activation, the agent must call
list_skill_resourcesandread_skill_resourceto inspect bundled files. - If a skill depends on bundled files, make the body tell the agent which file to open first and why.
- If you change discovery, parsing, or activation behavior in
echobot/skill_support/, runpython -m unittest tests.test_skill_support tests.test_chat_agent tests.test_agent -v.
Read references/runtime.md before changing the skill runtime or designing a skill with many bundled files.