# Install & update the skill

Download the canonical Semel skill, install it into your harness, verify its checksum, and keep it current with fail-closed managed updates.

The Semel skill (`semel-bootstrap`) teaches your agent the workflow. The supported path downloads a small installer from the public docs site, lets you inspect it before execution, and installs a content-addressed skill only after its signed release identity and bytes pass verification.

## Download
<a id="download"></a>

Save the public installer, inspect the saved file, and read its help before running it. Do not use a `curl | node` pipeline: inspection is part of the supported trust path.

**Public installer**

```bash
curl -fsSLo semel-install.mjs https://docs.semel.ai/downloads/semel-install.mjs
less semel-install.mjs
node semel-install.mjs --help
```

The installer reads the production manifest at `https://mcp.semel.ai/.well-known/semel-skill.json`. That manifest names the immutable skill URL, version, protocol range, SHA-256, signed release statement, and key ID. The installer accepts only HTTPS artifact URLs and a publisher key pinned in its own source.

## Install into your harness
<a id="install-location"></a>

Choose the absolute `SKILL.md` path your harness loads, then pass it explicitly. The same installer supports exactly `codex` and `claude`; it never guesses a home directory or copies into several harnesses at once.

**Install to Codex or Claude Code**

```bash
node semel-install.mjs --harness codex --path /absolute/path/to/skills/semel/SKILL.md
node semel-install.mjs --harness claude --path /absolute/path/to/skills/semel/SKILL.md
```

Run one line for the harness and path you chose. After installation, start a new harness session and invoke `/semel`. OpenClaw, Cursor, generic MCP clients, and guessed shared install locations are outside this installer’s launch-supported contract.

## Version & protocol compatibility
<a id="compatibility"></a>

The skill declares the protocol majors it supports. Semel’s protocol is at **major 1** today. A skill outside the supported major fails discovery with `PROTOCOL_VERSION_UNSUPPORTED`; update it via the managed updater below. The [Versioning & changelog](https://docs.semel.ai/changelog) page tracks the current skill and protocol versions.

## Verify the checksum
<a id="verify"></a>

The installer performs the required verification itself: Ed25519 signature over the release statement, statement/manifest identity, supported protocol major, downloaded-byte SHA-256, and a skill frontmatter smoke check. For an independent byte check, compare the installed file to the manifest:

**Verify SHA-256**

```bash
curl -fsSLo semel-skill-manifest.json https://mcp.semel.ai/.well-known/semel-skill.json
shasum -a 256 /absolute/path/to/skills/semel/SKILL.md
# Compare with the manifest "sha256" after also verifying its publisher signature.
```

## Managed updates, uninstall & rollback
<a id="updates"></a>

Managed updates are fail-closed. A verified candidate is written to a staging file and activated atomically. An existing installer-managed copy is backed up; a custom local copy is refused unless an operator deliberately passes `--allow-custom` after preserving changes. Signature, network, hash, compatibility, smoke, or activation failure keeps or restores the prior copy. `--active-pinned-session` defers without network or filesystem changes. `--preference` accepts `update_now`, `always_current`, `snooze`, or `disabled`. To uninstall, remove the chosen `SKILL.md` plus its adjacent `.semel-release.json` and `.semel-update-preference.json` metadata after ending active sessions.

> **Caution:** A `failed_restore` outcome needs operator attention and reports the preserved backup paths. Do not delete those files or retry with `--allow-custom`; restore the last verified copy first.

Canonical page: https://docs.semel.ai/install
