Skip to content

Workspace Instructions

Alex Clarke edited this page Jul 17, 2026 · 1 revision

Coyote can inject human-curated project instructions into every system prompt. This is its equivalent of Claude Code's CLAUDE.md or the cross-tool AGENTS.md standard. Instructions are the "hard rules and orientation" for a repository: coding conventions, build commands, architectural constraints, and anything else the LLM should always see.

Instructions complement Memory: instructions are human-curated and read-only to the LLM, while memory (.coyote/memory/) is agent-curated via the memory__* tools.

Workspace Instructions Memory
Curated by You (committed to git) The LLM (gitignored by default)
Injection Always, in full Index eagerly; drill files on demand
LLM writes? Never Yes (with function calling)
File(s) COYOTE.md at the repo root .coyote/memory/ directory

Quick Start

cd /path/to/your/project
coyote --init-instructions
# → creates ./COYOTE.md with a skeleton

Edit COYOTE.md with your project's instructions, commit it, and every Coyote invocation in that repository (or any subdirectory of it) will include the file in the system prompt.

Re-running --init-instructions is safe: it refuses to overwrite an existing file.

File Discovery

Coyote walks up from the current directory. In each directory it checks the file chain in order and injects the first non-empty match:

  1. COYOTE.md — Coyote-native
  2. AGENTS.md — the cross-tool agent instructions standard (Codex, opencode, Cline, and others)
  3. CLAUDE.mdClaude Code's instructions file
  4. GEMINI.mdGemini CLI's context file

This means a repository that only ships an AGENTS.md or CLAUDE.md gives Coyote full project context with zero configuration. A file closer to your working directory wins over a higher-priority file name further up the tree, so a package-level CLAUDE.md beats a repo-root COYOTE.md when you launch Coyote inside that package.

Empty files are skipped, so an empty COYOTE.md will not shadow a real AGENTS.md next to it.

What Gets Injected

The file content is injected read-only and in full as its own system prompt section:

<workspace_instructions source="/path/to/project/COYOTE.md">
# Project Instructions
...
</workspace_instructions>

There is no truncation cap. If the file exceeds ~24,000 characters Coyote logs a warning suggesting you move detail into Memory drill files, but still injects everything. Keep instructions lean: hard rules and orientation belong here; voluminous reference material belongs in the memory wiki where the LLM fetches it on demand (see the iwe-knowledge-base skill for structural navigation of large corpora).

The LLM is never given tools to edit instructions files. They are yours.

Configuration

In the global config.yaml:

workspace_instructions: null       # null/true = inject when a file exists; false = never inject
workspace_instructions_files: null # Custom file chain, in priority order.
                                   # Default: [COYOTE.md, AGENTS.md, CLAUDE.md, GEMINI.md]

Reorder or drop fallbacks by setting a custom chain:

# Only ever read the Coyote-native file
workspace_instructions_files: [COYOTE.md]

# Prefer AGENTS.md over COYOTE.md
workspace_instructions_files: [AGENTS.md, COYOTE.md]

CLI Flags

Flag Effect
--init-instructions Scaffold a COYOTE.md in the current directory
--no-workspace-instructions Skip instructions injection for this invocation
--workspace-instructions-file NAME Override the file chain for this invocation (repeatable, priority order)

The override flag is handy for previewing what other tools see:

# What would Claude Code's context look like here?
coyote --workspace-instructions-file CLAUDE.md --dry-run 'hello'

Verify what is being picked up with coyote --info, which reports the resolved workspace_instructions_file.

Relationship to Other Tools' Conventions

Tool Instructions file Coyote reads it?
Coyote COYOTE.md ✅ (first priority)
Codex CLI AGENTS.md ✅ (second priority)
opencode AGENTS.md ✅ (second priority)
Claude Code CLAUDE.md ✅ (third priority)
Gemini CLI GEMINI.md ✅ (fourth priority)
Cursor .cursor/rules/*.mdc

Unlike Claude Code, Coyote does not concatenate instruction files from every ancestor directory, support @path imports, or load nested files on demand. The first match wins. The Memory system's eagerly-injected index plus on-demand drill files (navigable with IWE graph tools) covers those use cases with better token economics: put a pointer in the index ("working in packages/frontend/? read [[frontend-conventions]]") instead of scattering instruction files.

See Also

  • Memory: agent-curated persistent memory
  • Skills: modular knowledge and capability packs
  • Roles: model behavior customization
  • Environment Variables: includes COYOTE_WORKSPACE_CONFIG_DIR for cross-tool config dirs

Clone this wiki locally