# Install BJJ tournament brackets

Package: `bjj-tournament-brackets`
Version: `1.2.0`
Manifest: `manifest.json` (relative to this document)
Installer: `install.py` (relative to this document)
Runtime: Python 3.10 or later, standard library only.

## Instructions for the local agent

1. Resolve this document's directory against its actual public HTTPS URL. Fetch `manifest.json` and read it. A URL is a distribution endpoint, not a native agent install command.
2. Download `install.py` from the same directory to a local temporary working directory. Inspect the entire installer before running it. Do not pipe a download into Python or a shell.
3. Set `MANIFEST_URL` to the actual absolute HTTPS URL of `manifest.json`. Run exactly one appropriate command below from the directory containing the inspected `install.py`:

```sh
python3 install.py --manifest "$MANIFEST_URL" --agent codex --scope user
python3 install.py --manifest "$MANIFEST_URL" --agent claude --scope user
python3 install.py --manifest "$MANIFEST_URL" --agent both --scope user
```

For a project installation, run from the chosen repository and pass the downloaded script's absolute path:

```sh
python3 /absolute/path/to/inspected/install.py --manifest "$MANIFEST_URL" --agent codex --scope project
python3 /absolute/path/to/inspected/install.py --manifest "$MANIFEST_URL" --agent claude --scope project
```

Use only the command for the chosen agent and scope. `--root /absolute/path` overrides the home directory for user scope or the repository directory for project scope. `--dry-run` verifies the package without installing it. `--replace` is required for a different existing installation and retains the previous directory as a timestamped backup under `.agents/skill-backups/` or `.claude/skill-backups/`, outside the scanned skills directory.

## Destinations and verification

| Agent | User scope | Project scope |
| --- | --- | --- |
| Codex | `~/.agents/skills/bjj-tournament-brackets/` | `<repository>/.agents/skills/bjj-tournament-brackets/` |
| Claude Code | `~/.claude/skills/bjj-tournament-brackets/` | `<repository>/.claude/skills/bjj-tournament-brackets/` |

The installer validates the manifest identity, every file's SHA-256 and size, safe relative paths, and SKILL.md frontmatter before writing. It rejects symlink destinations and ancestors. It does not execute downloaded skill code or edit settings. Identical installs do not rewrite files. Checksums detect corruption; authenticity depends on trusting the HTTPS distribution host. HTTP is accepted only for loopback previews; a local manifest path is also supported.

After success, confirm `SKILL.md` exists in the chosen destination. Start a new local agent session so it can discover the skill, then invoke `$bjj-tournament-brackets` in Codex or `/bjj-tournament-brackets` in Claude Code. Ask it to prepare brackets from your local roster, collect missing tournament settings, and wait for approval before generating a schedule. Roster data stays in your local working directory; this site has no upload endpoint.
