docs: updated docs with skill documentation in forgotten places
+47
-7
@@ -715,18 +715,58 @@ best judgment.
|
||||
|
||||
This tool is automatically available to any agent with `can_spawn_agents: true`.
|
||||
|
||||
# 9. Auto-Injected Prompts
|
||||
## 9. Skills
|
||||
|
||||
[Skills](Skills) are modular knowledge or capability packs that the model loads and unloads mid-conversation
|
||||
via `skill__list` and `skill__load`. Where a [role](Roles) defines who the assistant is, a skill layers a
|
||||
methodology (`code-review`), a toolkit (`git-master`), or a one-shot helper onto whatever role/agent/session is
|
||||
active. Multiple skills can be loaded at once; their instructions stack and their granted tools/MCP servers union.
|
||||
|
||||
Agents can override the global skill policy in their own `config.yaml`:
|
||||
|
||||
```yaml
|
||||
# agents/my-agent/config.yaml
|
||||
skills_enabled: true # Master switch for this agent (false wins at any level; unset inherits global)
|
||||
enabled_skills: # Allowlist for this agent (most-specific-wins: agent > role > global)
|
||||
- code-review
|
||||
- git-master
|
||||
inject_skill_instructions: true # Inject the skill-discovery hint into this agent's system prompt
|
||||
skill_instructions: null # Override the built-in hint text (null uses the default)
|
||||
```
|
||||
|
||||
- **`skills_enabled`** (default unset): Setting `false` disables skills for this agent. `skill__list`,
|
||||
`skill__load`, and `skill__unload` are not exposed when this agent runs. If unset, the agent inherits the
|
||||
global setting.
|
||||
- **`enabled_skills`** (default unset): When set, restricts which skills this agent can load. Skills not in this
|
||||
list are filtered out of `skill__list`, and `skill__load` rejects them with `"Skill 'X' is not enabled in this
|
||||
context"`. If unset, the agent inherits the role or global allowlist. Accepts a YAML list or a comma-separated
|
||||
string.
|
||||
- **`inject_skill_instructions`** (default `true`): Controls whether Coyote appends a short hint to the system
|
||||
prompt telling the model to call `skill__list` early in a task. Suppressed automatically when the effective
|
||||
`enabled_skills` set is empty.
|
||||
- **`skill_instructions`** (default unset): Replaces the built-in hint text with your own wording.
|
||||
|
||||
Skills require function calling (`function_calling_support: true`); the skill subsystem is silently disabled
|
||||
otherwise. For the full skills model, including the frontmatter format, validation rules, built-in skills, and
|
||||
the graph-agent variant, see the [Skills Guide](Skills).
|
||||
|
||||
For working examples of agents that use skills heavily, see the bundled
|
||||
[`file-reviewer`](https://github.com/Dark-Alex-17/coyote/blob/main/assets/agents/file-reviewer) and [`code-reviewer`](https://github.com/Dark-Alex-17/coyote/blob/main/assets/agents/code-reviewer) agents.
|
||||
|
||||
## 10. Auto-Injected Prompts
|
||||
|
||||
Coyote automatically appends usage instructions to your agent's system prompt for each enabled built-in system.
|
||||
These instructions are injected into both **static and dynamic instructions** after your own instructions,
|
||||
ensuring agents always know how to use their available tools.
|
||||
|
||||
| System | Injected When | Toggle |
|
||||
|--------------------|----------------------------------------------------------------|-----------------------------|
|
||||
| Todo tools | `auto_continue: true` AND `inject_todo_instructions: true` | `inject_todo_instructions` |
|
||||
| Spawning tools | `can_spawn_agents: true` AND `inject_spawn_instructions: true` | `inject_spawn_instructions` |
|
||||
| Teammate messaging | Always (all agents) | None (always injected) |
|
||||
| User interaction | Always (all agents) | None (always injected) |
|
||||
| System | Injected When | Toggle |
|
||||
|----------------------|----------------------------------------------------------------------------------------------------------|-----------------------------|
|
||||
| Todo tools | `auto_continue: true` AND `inject_todo_instructions: true` | `inject_todo_instructions` |
|
||||
| Spawning tools | `can_spawn_agents: true` AND `inject_spawn_instructions: true` | `inject_spawn_instructions` |
|
||||
| Teammate messaging | Always (all agents) | None (always injected) |
|
||||
| User interaction | Always (all agents) | None (always injected) |
|
||||
| Skill discovery hint | `skills_enabled: true` AND `inject_skill_instructions: true` AND effective `enabled_skills` is non-empty | `inject_skill_instructions` |
|
||||
|
||||
|
||||
If you prefer to write your own instructions for a system, set the corresponding `inject_*` flag to `false`
|
||||
and include your custom instructions in the agent's `instructions` field. The built-in tools will still be
|
||||
|
||||
@@ -72,6 +72,9 @@ skills_enabled: true # optional; master switch for skills in `ll
|
||||
enabled_skills: # optional; the *universe* of skills referenceable by any llm node
|
||||
- code-review
|
||||
- git-master
|
||||
inject_skill_instructions: true # Inject a hint pointing the model at `skill__list`. Defaults to true; suppressed
|
||||
# automatically when no skills are available.
|
||||
skill_instructions: null # Custom text for the skill hint (optional; uses the built-in default if omitted).
|
||||
conversation_starters: # suggested prompts in the UI
|
||||
- "Research WebAssembly outside of the browser"
|
||||
variables: # optional; agent variables
|
||||
|
||||
+8
-7
@@ -114,13 +114,14 @@ For more information on sessions and how to use them in Coyote, refer to the [se
|
||||
Coyote lets you build OpenAI GPT-style agents. The following commands let you interact with and manage your agents in
|
||||
Coyote:
|
||||
|
||||
| Command | Description |
|
||||
|----------------------|-------------------------------------------------------------------|
|
||||
| `.agent` | Use an agent |
|
||||
| `.starter` | Display and use conversation starters for the active agent |
|
||||
| `.edit agent-config` | Open the agent configuration in your preferred text editor |
|
||||
| `.info agent` | Display information about the active agent |
|
||||
| `.exit agent` | Leave the active agent |
|
||||
| Command | Description |
|
||||
|----------------------|----------------------------------------------------------------------------------------------|
|
||||
| `.agent` | Use an agent |
|
||||
| `.starter` | Display and use conversation starters for the active agent |
|
||||
| `.clear todo` | Clear the todo list and stop auto-continuation (requires `auto_continue: true` on the agent) |
|
||||
| `.edit agent-config` | Open the agent configuration in your preferred text editor |
|
||||
| `.info agent` | Display information about the active agent |
|
||||
| `.exit agent` | Leave the active agent |
|
||||
|
||||

|
||||
|
||||
|
||||
+22
-8
@@ -227,8 +227,9 @@ have no skill surface. Skills only apply where a model call happens.
|
||||
|
||||
## Graph level — the universe
|
||||
|
||||
The top-level `skills_enabled` and `enabled_skills` fields in `graph.yaml` work just like they do on a normal agent's
|
||||
`config.yaml`: they declare the policy ceiling for the whole graph.
|
||||
The top-level `skills_enabled`, `enabled_skills`, `inject_skill_instructions`, and `skill_instructions` fields in
|
||||
`graph.yaml` work just like they do on a normal agent's `config.yaml`: they declare the policy ceiling and the
|
||||
skill-hint behavior for the whole graph.
|
||||
|
||||
```yaml
|
||||
name: coder
|
||||
@@ -237,6 +238,8 @@ enabled_skills:
|
||||
- code-review
|
||||
- git-master
|
||||
- verification-gates
|
||||
inject_skill_instructions: true # Inject the skill-discovery hint into every `llm` node's system prompt
|
||||
skill_instructions: null # Override the built-in hint text (null uses the default)
|
||||
```
|
||||
|
||||
- **`skills_enabled: false`** at the graph level turns skills off for every `llm` node in the graph regardless of
|
||||
@@ -244,14 +247,19 @@ enabled_skills:
|
||||
- **`enabled_skills`** at the graph level is the *universe*: the set of skill names any `llm` node in the graph is
|
||||
allowed to reference in its own `enabled_skills`. The validator rejects per-node entries that aren't in this set at
|
||||
load time.
|
||||
- **`inject_skill_instructions`** at the graph level is the agent-layer toggle for the skill-discovery hint.
|
||||
Defaults to `true`. Suppressed automatically when the effective `enabled_skills` set is empty.
|
||||
- **`skill_instructions`** at the graph level replaces the built-in hint text with your own wording. Leave `null`
|
||||
to use the default.
|
||||
- Omitting `enabled_skills` inherits whatever the role / global cascade resolves to (typically "all visible").
|
||||
|
||||
## Per-node: discovery-only on `llm` nodes
|
||||
|
||||
`llm` nodes can independently declare `skills_enabled` and `enabled_skills`. The graph-level field gates what's
|
||||
*allowed* in the graph at all; the node-level field narrows that universe to what *this* node's model can see and
|
||||
load. Nothing is auto-loaded. The model uses `skill__list` and `skill__load` to bring skills in as it needs them,
|
||||
matching the rest of Coyote's skill model.
|
||||
`llm` nodes can independently declare `skills_enabled`, `enabled_skills`, `inject_skill_instructions`, and
|
||||
`skill_instructions`. The graph-level fields gate what's *allowed* in the graph at all; the node-level fields
|
||||
narrow that universe to what *this* node's model can see and load, and let you customize the skill-discovery hint
|
||||
for just that node. Nothing is auto-loaded. The model uses `skill__list` and `skill__load` to bring skills in as
|
||||
it needs them, matching the rest of Loki's skill model.
|
||||
|
||||
```yaml
|
||||
nodes:
|
||||
@@ -259,10 +267,12 @@ nodes:
|
||||
type: llm
|
||||
prompt: "{{plan_summary}}"
|
||||
tools: [fs_write, fs_patch, fs_cat]
|
||||
enabled_skills: # must be a subset of graph-level enabled_skills
|
||||
enabled_skills: # must be a subset of graph-level enabled_skills
|
||||
- code-review
|
||||
- verification-gates
|
||||
# skills_enabled: false # would disable skills for this node only
|
||||
# skills_enabled: false # would disable skills for this node only
|
||||
# inject_skill_instructions: false # would suppress the skill-discovery hint for this node only
|
||||
# skill_instructions: "..." # would substitue custom hint text for this node only
|
||||
```
|
||||
|
||||
Semantics:
|
||||
@@ -278,6 +288,10 @@ Semantics:
|
||||
- **`skills_enabled: false`** at the node level is an off-switch: no `skill__*` meta-tools are exposed and no skills
|
||||
can be loaded from this node. Useful when one node in an otherwise skill-enabled graph should run with a strict,
|
||||
narrow context (for example a structured-output extraction step that shouldn't load editorial conventions).
|
||||
- **Injection cascade.** `inject_skill_instructions` and `skill_instructions` resolve `node > graph > app` (most
|
||||
specific wins). Setting `inject_skill_instructions: false` on a node suppresses the skill-discovery hint for
|
||||
just that node; setting `skill_instructions: "..."` substitutes custom hint text for just that node. Both are
|
||||
optional and inherit the graph-level value when omitted.
|
||||
- **Skill state carry-over.** Skills the model loads during a node persist into subsequent nodes (they're real
|
||||
registry insertions, not node-scoped state). If you want a skill to clean up automatically at turn end, mark it
|
||||
`auto_unload: true` in the skill's own frontmatter.
|
||||
|
||||
Reference in New Issue
Block a user