How agent behaviour is assembled: skills & tools
The system prompt is deliberately thin on procedure — it defers to skills and a tool registry. Trace how a SKILL.md becomes a loaded procedure and how the tool pool is built and scoped.
5 · Skills & tools
Skills are Anthropic-format SKILL.md files. The loader
(skill_loader.py)
globs */SKILL.md, parses YAML frontmatter (name, description, requires,
…) and returns the body when the Skill tool is invoked. The README's
compatibility claim is accurate and bounded: only the SKILL.md
markdown+frontmatter is loaded — plugin.json, commands/, agents/, hooks/,
and MCP config are deliberately not read (no references exist in the loader).
The eight built-in skills:
| Skill | Purpose |
|---|---|
research |
Web research with inline citations |
draft |
Draft a new document via docx-js (run_code node) |
review |
Review a document against playbook positions |
docx-editing |
Tracked-change redlines, fills, accept/reject |
docx-xml |
Structural OOXML edits via run_code + lxml |
compare |
Diff two versions / produce a Word redline |
qa |
Six-dimension quality-assurance review |
setup |
First-run workspace initialization |
Tools. The unified registry
(workspace_tools.py)
exposes 31 tools to the model by default (33 with planner mode), aggregated
from per-domain handler modules in
tools/. When
SKILL_TOOL_SCOPING=true, invoking a skill narrows the tool pool to that skill's
requires.tools plus an always-on set
(skill_tool.py).
| Group | Tools |
|---|---|
| Documents | list_documents, read_document, create_document, edit_document, clone_document, create_folder, delete_document, delete_folder, instantiate_template |
| DOCX redline | revert_edit, get_revision_stats, accept_all_changes, reject_all_changes, accept_changes, reject_changes, produce_redline, add_comment |
| Research | web_search, web_fetch, compare |
| Knowledge/wiki | search_workspace, read_wiki_page, list_wiki_pages, append_wiki_note, update_wiki_page, set_wiki_metadata, delete_wiki_page, suggest_instruction |
| Code | run_code |
| Control | Skill, todo_write, (enter_plan_mode, exit_plan_mode — gated) |
The system prompt
(prompts/system_prompt.md)
defines behavior (context layers, memory rules, mandatory citations, legal-only
scope); per-turn it is augmented by a deterministic memory layer
(memory_layer.py) that
injects managed/global instructions, the workspace journal, scoped playbooks, and
the active document's wiki page.