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`.
|
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.
|
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,
|
These instructions are injected into both **static and dynamic instructions** after your own instructions,
|
||||||
ensuring agents always know how to use their available tools.
|
ensuring agents always know how to use their available tools.
|
||||||
|
|
||||||
| System | Injected When | Toggle |
|
| System | Injected When | Toggle |
|
||||||
|--------------------|----------------------------------------------------------------|-----------------------------|
|
|----------------------|----------------------------------------------------------------------------------------------------------|-----------------------------|
|
||||||
| Todo tools | `auto_continue: true` AND `inject_todo_instructions: true` | `inject_todo_instructions` |
|
| 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` |
|
| Spawning tools | `can_spawn_agents: true` AND `inject_spawn_instructions: true` | `inject_spawn_instructions` |
|
||||||
| Teammate messaging | Always (all agents) | None (always injected) |
|
| Teammate messaging | Always (all agents) | None (always injected) |
|
||||||
| User interaction | 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`
|
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
|
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
|
enabled_skills: # optional; the *universe* of skills referenceable by any llm node
|
||||||
- code-review
|
- code-review
|
||||||
- git-master
|
- 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
|
conversation_starters: # suggested prompts in the UI
|
||||||
- "Research WebAssembly outside of the browser"
|
- "Research WebAssembly outside of the browser"
|
||||||
variables: # optional; agent variables
|
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 lets you build OpenAI GPT-style agents. The following commands let you interact with and manage your agents in
|
||||||
Coyote:
|
Coyote:
|
||||||
|
|
||||||
| Command | Description |
|
| Command | Description |
|
||||||
|----------------------|-------------------------------------------------------------------|
|
|----------------------|----------------------------------------------------------------------------------------------|
|
||||||
| `.agent` | Use an agent |
|
| `.agent` | Use an agent |
|
||||||
| `.starter` | Display and use conversation starters for the active agent |
|
| `.starter` | Display and use conversation starters for the active agent |
|
||||||
| `.edit agent-config` | Open the agent configuration in your preferred text editor |
|
| `.clear todo` | Clear the todo list and stop auto-continuation (requires `auto_continue: true` on the agent) |
|
||||||
| `.info agent` | Display information about the active agent |
|
| `.edit agent-config` | Open the agent configuration in your preferred text editor |
|
||||||
| `.exit agent` | Leave the active agent |
|
| `.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
|
## 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
|
The top-level `skills_enabled`, `enabled_skills`, `inject_skill_instructions`, and `skill_instructions` fields in
|
||||||
`config.yaml`: they declare the policy ceiling for the whole graph.
|
`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
|
```yaml
|
||||||
name: coder
|
name: coder
|
||||||
@@ -237,6 +238,8 @@ enabled_skills:
|
|||||||
- code-review
|
- code-review
|
||||||
- git-master
|
- git-master
|
||||||
- verification-gates
|
- 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
|
- **`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
|
- **`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
|
allowed to reference in its own `enabled_skills`. The validator rejects per-node entries that aren't in this set at
|
||||||
load time.
|
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").
|
- Omitting `enabled_skills` inherits whatever the role / global cascade resolves to (typically "all visible").
|
||||||
|
|
||||||
## Per-node: discovery-only on `llm` nodes
|
## Per-node: discovery-only on `llm` nodes
|
||||||
|
|
||||||
`llm` nodes can independently declare `skills_enabled` and `enabled_skills`. The graph-level field gates what's
|
`llm` nodes can independently declare `skills_enabled`, `enabled_skills`, `inject_skill_instructions`, and
|
||||||
*allowed* in the graph at all; the node-level field narrows that universe to what *this* node's model can see and
|
`skill_instructions`. The graph-level fields gate what's *allowed* in the graph at all; the node-level fields
|
||||||
load. Nothing is auto-loaded. The model uses `skill__list` and `skill__load` to bring skills in as it needs them,
|
narrow that universe to what *this* node's model can see and load, and let you customize the skill-discovery hint
|
||||||
matching the rest of Coyote's skill model.
|
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
|
```yaml
|
||||||
nodes:
|
nodes:
|
||||||
@@ -259,10 +267,12 @@ nodes:
|
|||||||
type: llm
|
type: llm
|
||||||
prompt: "{{plan_summary}}"
|
prompt: "{{plan_summary}}"
|
||||||
tools: [fs_write, fs_patch, fs_cat]
|
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
|
- code-review
|
||||||
- verification-gates
|
- 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:
|
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
|
- **`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,
|
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).
|
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
|
- **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
|
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.
|
`auto_unload: true` in the skill's own frontmatter.
|
||||||
|
|||||||
Reference in New Issue
Block a user