Metadata-Version: 2.4
Name: farrier
Version: 1.1.1
Summary: Render an agent-neutral prompt library into a repository's Codex/Claude/Copilot adapters.
Project-URL: Homepage, https://github.com/GabrielCpp/stablemate
Project-URL: Repository, https://github.com/GabrielCpp/stablemate
Project-URL: Issues, https://github.com/GabrielCpp/stablemate/issues
Author: Gabriel Côté
License-Expression: MIT
License-File: LICENSE
Keywords: agent,claude,codex,copilot,installer,prompts,skills
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Utilities
Requires-Python: >=3.12
Requires-Dist: jinja2>=3.1
Requires-Dist: platformdirs>=4
Requires-Dist: pyyaml>=6.0
Description-Content-Type: text/markdown

# farrier

[![PyPI](https://img.shields.io/pypi/v/farrier.svg)](https://pypi.org/project/farrier/)

**farrier** renders an agent-neutral prompt library into a repository — generating
the skill, prompt, instruction, and workflow adapters expected by Codex, Claude,
and GitHub Copilot, plus the launcher scaffolding that runs them.

A farrier is the craftsman who fits the right gear onto each horse. This tool
fits the shared prompt library onto each repository.

## Install

```bash
pipx install farrier        # or: uv tool install farrier
```

farrier ships **no library content of its own** — the prompt library lives in a
separate repository. Point farrier at it once:

```bash
farrier config set-library /path/to/vigilant-octo/agents
farrier config show
```

`config` writes a small TOML file in your OS config directory
(`~/.config/farrier/config.toml` on Linux, `~/Library/Application Support/farrier/`
on macOS, `%APPDATA%\farrier\` on Windows).

## Use

From a repository that has an `agents.yml`:

```bash
farrier --repo .            # render/install the selected packs
farrier --repo . --check    # verify generated files are up to date (no writes)
```

Rendering is the default action; `farrier install --repo .` is an accepted alias
of `farrier --repo .`.

## Configuring `agents.yml`

`agents.yml` (at your repo root) selects what farrier renders. Every option —
`repo`, `agents`, `packs`, `skills`/`prompts`/`roots`, `scaffolds`, `exclude`,
`localInstructions`, `template`/`vars`, and `workflow` — is documented with
inline comments in **[`agents.example.yml`](https://github.com/GabrielCpp/stablemate/blob/main/farrier/agents.example.yml)**. Copy it to
your repo as `agents.yml` and prune to taste.

## Library layout

The other side of the contract is the **agent library** farrier renders *from* —
what goes in `library/skills/`, `library/prompts/`, `packs/`, `scaffolds/`, and
`workflows/`, the file formats expected, and how source names
map to generated adapters. That is documented in
**[`docs/LAYOUT.md`](https://github.com/GabrielCpp/stablemate/blob/main/farrier/docs/LAYOUT.md)**.

## Locating the library

farrier resolves the library directory with this precedence:

1. `--library DIR`
2. `$FARRIER_LIBRARY_DIR`
3. `library_dir` from the home config (`farrier config set-library`)

If none resolve — or the path does not contain `library/` and `packs/` — farrier
exits with a setup hint.

## Related

- [`workhorse-agent`](https://pypi.org/project/workhorse-agent/) — the fail-soft
  runtime that executes the workflows farrier installs. Both live in the
  [stablemate](https://github.com/GabrielCpp/stablemate) workspace.
