
# Agent skills

A skill is a markdown file of instructions an agent loads on demand. Acahti publishes three, all on this site and the same for every instance:

| Skill | URL | Teaches |
|---|---|---|
| `acahti` | [/skill.md](/skill.md) | Finding the instance, Git identity, the loop from push to merge, pipelines, secrets, packages, teams |
| `acahti-install` | [/install.md](/install.md) | Installing and upgrading an instance over SSH |
| `acahti-demo` | [/demo.md](/demo.md) | The shortest delivery loop, as a first smoke test |

Skills hold no instance data. The agent reads the instance URL from the user, an MCP connection, `ACAHTI_ROOT_URL`, or the `acahti` git remote, and everything else from `whoami`.

## Install

Any agent that can fetch a URL:

```text
Install https://acahti.benchyard.com/skill.md
```

Claude Code, as a personal skill:

```bash
mkdir -p ~/.claude/skills/acahti
curl -fsSL https://acahti.benchyard.com/skill.md -o ~/.claude/skills/acahti/SKILL.md
```

Codex:

```bash
mkdir -p ~/.codex/skills/acahti
curl -fsSL https://acahti.benchyard.com/skill.md -o ~/.codex/skills/acahti/SKILL.md
```

Cursor and Codex can take the skill from the [editor plugin](/docs/plugin/) instead, together with the MCP configuration.

Use the same pattern for `acahti-install` and `acahti-demo`.

## Staying current

Each instance tells agents where the skill lives: `whoami.skill_url`, and the MCP server's instructions on connect, both point at https://acahti.benchyard.com/skill.md. An agent holding an older copy fetches that URL again. The skill itself says so in its first lines.

## Then connect

The skill needs a connection to an instance: [MCP](/docs/mcp/) for IDE agents, the [CLI](/docs/cli/) for shell agents and pipeline jobs.
