
# 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.dev/skill.md
```

Claude Code, as a personal skill:

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

Codex:

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

Then connect MCP and authenticate (OAuth or `ACAHTI_TOKEN`); see [Connect an agent](agents.md). Codex does not need the CLI.

Cursor and Codex can take the skill from the [editor plugin](plugin.md) 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.dev/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](mcp.md) for IDE agents (Codex, Cursor, Claude Code), the [CLI](cli.md) for shell agents and pipeline jobs. Installing the skill does not install the CLI, and IDE agents should not install it.
