Open sourceRust CLI · v1.10.0

Manage your agent's setup. Just ask.

One reviewed set of skills, instructions, and hooks, synced into every agent on every machine. Ask your agent to add or update them. Dalo checks approvals and never overwrites what it doesn't own.

Paste into your coding agent

Install Dalo, the agent skill manager.

For local coding agents on macOS and Linux.

Agent can't find Dalo?

Install Dalo from https://dalo.sh/install.md and set it up for this agent.

Prefer the terminal? Install the CLI
curl -fsSL https://dalo.sh/install.sh | sh

One binary into ~/.local/bin, no sudo. The SHA-256 checksum is always verified, Sigstore provenance when cosign is installed. Installer source · Uninstall guide · Windows via WSL.

One shared setup

Your team chooses the skills.
Everyone can use the same set.

Illustrative workflow · sharing your team's own skills
1

Choose the team skills

The team decides what belongs in the shared set.

acme/agent-skills

Team repository

  • incident-review
  • release-notes

Your team's skills, kept in Git.

2

Connect the repository

Add the team's repository once on your machine.

Dalo

acme/agent-skills

Repository connected
3

Sync the same set

Team members use the shared skills in their own agents.

Alex's laptop

Codex

Sam's laptop

Claude Code

Mia's laptop

Cursor

Set up a team repository 6 built-in agents + any skill folder

Your first step is a message.

Your agent does the work. No separate model, API key, or server.

  1. Ask your agent to set it up

    Install Dalo, the agent skill manager.

  2. Tell it what you want to do

    Type $dalo in Codex or pick Dalo in your agent's skill picker, then ask in your own words.

    Read the conversation guide
Prefer commands? Follow the CLI guide
Or try the CLI in a throwaway sandbox

No CLI yet? Use npx getdalo in place of dalo, and unset DALO_STORE SKILLS_DIR when you're done.

first sync
# sandbox: no real agent folders touched
$ export DALO_STORE="$(mktemp -d)/store"
$ export SKILLS_DIR="$(mktemp -d)/skills"
$ dalo init
$ dalo target link generic "$SKILLS_DIR"
 
# try a real public catalog
$ dalo source add-catalog sebastian https://github.com/sebastian-software/skills.sebastian-software.com.git
$ dalo source inspect sebastian
$ dalo source select sebastian effective-web
$ dalo audit sebastian:effective-web
$ dalo approve skill sebastian:effective-web
$ dalo sync
security preflight: deterministic checks only

Not starting from zero?

Dalo leaves existing folders alone until you decide.

  • Skills already in an agent folder

    Ask: “Move my existing skills to Dalo and keep my changes.” Adopt a skill

  • A project that uses skills.sh

    Ask: “Move this project from skills.sh to Dalo.” Migration guide

  • Skills for one repository

    Ask: “Give every clone of this repo the same skills.” Project installations

  • A team sharing skills

    Ask: “Connect our team's skill repository.” Catalog approvals stay on each machine. Team repository guide

One source of truth

One pinned set. Every machine.

Skills sit at an exact Git commit until you advance the pin. Then every machine gets the same version.

Interactive example · pinned versions
acme/agent-skills
v1Current team pin
v2Available updateNew
Your team's pinned setTeam version v1
incident-reviewrelease-notes
Alexv1
Miav1

A new version does not change the team's pin.

v2 is available. Your team stays on v1.

Updates happen when you choose to advance the pin.

Reviewed first

Review skills before they reach an agent.

Your agent explains a skill before you trust it. Dalo checks every skill against fifteen local security rules, and catalog skills, tools, and hooks wait for your approval.

Read the security model
Interactive example · catalog approval
effective-webPublic catalog skill
Approval
CodexNot linked yet

Local preflight supports your review.

Your decisionAlex reviews the skill before approving it.
review first

The skill waits for your explicit approval.

Checks do not approve a skill for you.

Illustrates local approval for a catalog skill.

Safe by default

Only touches what it owns.

Sync updates only the links and managed blocks Dalo owns. Your own files stay put, and conflicts wait for your call. Want a preview? Ask for a --dry-run.

Illustrative workflow · file ownership
Sam's agent folderClaude Code · ~/.claude/skills
Dalo
Managed by Dalo
incident-reviewUpdated
release-notesUpdated
my-draft/Your own files
Unchanged

Managed skills change. Your own folder stays put.

Two managed links updated. Your files are unchanged.

Dalo reports conflicts instead of overwriting your files.

When your agent setup becomes team infrastructure.

Aspect Dalo skills.sh agentfiles
Built for Teams managing skills, instructions, and hooks Discovering and installing public skills Browsing and editing agent files in Obsidian
Beyond skills Managed instructions, portable plugins, approved tools and hooks Installs skills Browses rules and agent files; installs skills
Pinning Exact commits in lockfiles Branch or tag plus content hash Updates to latest HEAD
Existing folders Never overwritten Replaced on install Replaced on install
Review Preflight, audits, explicit approval Audit pages on skills.sh None built in

Snapshot from September 2026 for the skills CLI (v1.6.0) and agentfiles (0.9.1); the Dalo column reflects Dalo 1.10 (October 2026). Read the full comparison

Early, and used every day.

Dalo is v1.10.0, and we run it on our own machines every day. Sources, deterministic resolution, security audits and review gates, safe sync, and diagnostics have shipped under the 1.x compatibility contract. That contract and the security model also say what Dalo doesn't promise.

Who it's for

  • Teams sharing skills across people and machines
  • Anyone who wants exact pins and a review step before a skill reaches an agent
  • People who'd rather talk to their agent than learn a CLI

Not (yet) for

  • Native Windows (WSL works)
  • Finding skills: browse skills.sh, then pin your picks with Dalo
  • A one-off try: npx skills is quicker

Get it wrong. Dalo gets you back.

Typos get a suggestion, and a blocked sync names the command that unblocks it.

recovery, not dead ends
$ dalo synk
error: unrecognized subcommand 'synk'
  tip: a similar subcommand exists: 'sync'
 
$ dalo approve skill company:relese-helper
error: skill `company:relese-helper` was not found; did you mean `company:release-helper`?; known skills: company:new-skill, company:release-helper
 
$ dalo sync
dalo store: ~/.dalo
nothing materialized: resolution is incomplete
  pending approval: sebastian:effective-web (run: dalo approve skill sebastian:effective-web)

Just ask.
You keep the final say.

Install Dalo, the agent skill manager.

Open source under MIT or Apache-2.0, for macOS and Linux. Agent setup guide

Original score. Piano: Salamander Grand Piano by Alexander Holm, CC BY 3.0.