Documentation Agent integration

Agent Target Integration

This page is the single support matrix for Dalo's agent targets. Portable canonical agent packages are documented in the command reference.

Dalo's built-in targets are directory-based. Each target links the resolved skill set into the folder that agent already reads: Dalo writes one symlink per skill into the target directory and never touches the directory's unmanaged entries. An agent therefore only works with Dalo if it follows a symlinked skill directory.

Run this first:

dalo init
dalo target detect

Support matrix

Target ID Agent Support Verified version Verified on User-level path Project-level path Symlinked skill directory
codex Codex CLI supported codex-cli 0.154.0 2026-09-17 ~/.agents/skills .agents/skills, from the working directory up to the repository root yes, observed
claude Claude Code supported 2.1.235 2026-09-17 ~/.claude/skills .claude/skills yes, observed
cursor Cursor Agent supported 3.13.25 2026-09-28 ~/.cursor/skills .cursor/skills yes, invoked
openclaw OpenClaw supported 2026.9.4 2026-09-17 ~/.agents/skills <workspace>/skills, <workspace>/.agents/skills yes, observed
hermes Hermes supported v2026.9.14 (latest release) 2026-09-17 ~/.hermes/skills .hermes/skills, .agents/skills, after hermes skills trust not verified on this date
opencode OpenCode supported 1.18.31 2026-09-17 ~/.config/opencode/skills .opencode/skills yes, observed
generic any folder-based agent supported — — the path you pass the path you pass depends on the agent

Cursor has a built-in target; see Cursor for verification details and project-level setup.

Codex through OpenCode were verified on 2026-09-17 on macOS, in a throwaway HOME holding a single probe skill whose directory is a symlink to a directory elsewhere — the exact shape dalo sync produces. Cursor was verified separately on 2026-09-28; see its section below.

Project-scoped folders

There are two ways to deliver skills into a repository's own agent folders.

A project installation is the reproducible one. The repository commits a dalo-project.toml that pins its sources, and dalo install restores them into an isolated .dalo/ store and the project folders of the declared agents, in every clone. See Project installations. Project scope supports the claude, codex, opencode, hermes, and openclaw targets.

Redirecting a target reuses your existing store and is a per-machine recipe. A target in that store links a user-level folder by default. Every agent in the matrix also reads a project-level folder — .claude/skills for Claude Code, .agents/skills for Codex and OpenClaw, .opencode/skills for OpenCode, .hermes/skills for Hermes — and a target can be pointed at one of those paths inside a repository:

dalo target link claude /path/to/repo/.claude/skills
dalo target link generic /path/to/repo/.agents/skills
dalo sync
ls -la /path/to/repo/.claude/skills

Both directories then hold one symlink per active skill, exactly as a user-level target does.

Read the caveats before you rely on this. A target ID holds exactly one path, so covering two folders in one repository consumes two target IDs and takes those IDs away from your home directory; a second repository has no ID left. Targets live in the store, not in the repository, so a teammate or a second machine has to run the same commands by hand. The symlinks point at absolute store paths and must not be committed:

/.claude/skills/
/.agents/skills/

dalo target detect prints one informational line when the working directory holds a project-scoped agent folder that no linked target covers. It does not link anything.

Project installations shipped in Dalo 1.1 through #851. The FAQ entry compares both routes and has the full redirect recipe.

Codex

Default skill path:

~/.agents/skills

Link and verify:

dalo target link codex
dalo status
dalo sync
ls -la ~/.agents/skills

How this row was verified: ran codex debug prompt-input with HOME pointed at the throwaway home and the working directory set to a scratch project. The rendered prompt listed the skill roots r0 = $HOME/.agents/skills, r1 = $CODEX_HOME/skills/.system and r2 = $CWD/.agents/skills, and both symlinked probe skills appeared under its Available skills heading. The Codex skills documentation states the same user, repository and admin locations and says Codex follows the symlink target when scanning them.

Claude Code

Default skill path:

~/.claude/skills

Link and verify:

dalo target link claude
dalo status
dalo sync
ls -la ~/.claude/skills

How this row was verified: ran claude --debug --debug-file <path> -p with HOME pointed at the throwaway home, an invalid API key and an unreachable API base URL, so the run never reached the model. The debug log recorded Loading skills from: managed=/Library/Application Support/ClaudeCode/.claude/skills, user=<HOME>/.claude/skills, project=[<cwd>/.claude/skills] followed by Loaded 2 unique skills (2 unconditional, 0 conditional, managed: 0, user: 1, project: 1, additional: 0, legacy commands: 0) — both of them symlinked directories.

OpenClaw

Default skill path:

~/.agents/skills

Link and verify:

dalo target link openclaw
dalo status
dalo sync
ls -la ~/.agents/skills

Codex and OpenClaw can share the same physical directory. Dalo de-duplicates physical target paths during materialization.

How this row was verified: installed openclaw@2026.9.4 from npm into a temporary prefix and ran openclaw skills list --json with HOME pointed at the throwaway home. The symlinked probe skill was listed with "source": "agents-skills-personal", "eligible": true and "modelVisible": true. The OpenClaw skills documentation documents ~/.agents/skills as the personal skill root for the default state directory and <workspace>/skills plus <workspace>/.agents/skills as the project roots.

Hermes

Default skill path:

~/.hermes/skills

Link and verify:

dalo target link hermes
dalo status
dalo sync
ls -la ~/.hermes/skills

How this row was verified: not verified on this date. Hermes ships no non-interactive command that lists skills, and listing them from a session requires model credentials. The latest release is v2026.9.14 (2026-09-14). The user-level path ~/.hermes/skills and the project-level paths come from the official Hermes skills documentation. Hermes also scans additional directories listed under skills.external_dirs in ~/.hermes/config.yaml, which is the supported way to point it at a shared ~/.agents/skills.

OpenCode

Default skill path:

~/.config/opencode/skills

Link and verify:

dalo target link opencode
dalo status
dalo sync
ls -la ~/.config/opencode/skills

OpenCode also reads ~/.claude/skills and ~/.agents/skills unless OPENCODE_DISABLE_EXTERNAL_SKILLS=1 is set, so a linked claude or codex target already reaches it. Link opencode when you want the resolved set in OpenCode's own directory.

How this row was verified: ran opencode --pure debug skill with HOME pointed at the throwaway home. Both probe skills were listed with their symlinked locations, <HOME>/.config/opencode/skills/dalo-probe/SKILL.md and <cwd>/.opencode/skills/dalo-probe-project/SKILL.md. The OpenCode skills documentation documents ~/.config/opencode/skills/<name>/SKILL.md as the global location.

Cursor

Default skill path:

~/.cursor/skills

Link user-level or project-level skills:

# User-level
dalo target link cursor
dalo sync
ls -la ~/.cursor/skills

# Project-level, by redirecting the target of your existing store
dalo target link cursor /path/to/repo/.cursor/skills
dalo sync

A project installation has no cursor target yet. Cursor's documentation also lists a project's .agents/skills and .claude/skills as skill roots, so a project that declares the codex or claude target should reach it; that route was not part of the verification below.

Each target ID records one directory. Cursor also discovers ~/.agents/skills and .agents/skills; a codex target already materializes the user-level shared directory for Cursor.

The Cursor skills documentation lists ~/.cursor/skills/ and ~/.agents/skills/ as user-level roots, and .cursor/skills/, .agents/skills/, .claude/skills/, and .codex/skills/ as project roots. On 2026-09-28, Cursor 3.13.25 on macOS arm64 discovered and invoked Dalo-managed symlinked skills from both ~/.cursor/skills/ and a project's .cursor/skills/; each invocation returned the marker in its test skill.

Dalo blocks a sync when a real unmanaged directory already occupies the skill's target slot and leaves that directory unchanged. Cursor reads project AGENTS.md files as instructions; Dalo can add instruction packs to an explicit file with dalo instructions enable <pack-ref> ./AGENTS.md. There is no native Cursor instruction-file target mapping, so use an explicit file. Dalo preserves user-authored content outside its managed block. See the Cursor rules documentation and the instruction reference.

Any other folder-based agent

dalo target link generic /path/to/agent/skills
dalo sync

Open an issue with the skill path and a short verification transcript if you can confirm a built-in target for another agent.

Source: docs/agents.md