Private and company catalogs¶
The built-in catalog covers general-purpose skills. Skills that encode your own conventions, internal tools, or review rules belong in a catalog you control, and usually one that only your team can read.
A private catalog is an ordinary Git repository. Make it private on GitHub,
GitLab, Bitbucket, or any other host; Repertoire reads it with the same system
git credentials that already work for git clone. It has no authentication
system of its own and never stores tokens or passwords.
Let your agent build it
The built-in repertoire skill teaches your coding agent everything on
this page. After repertoire add repertoire, you can ask the agent to
"create a private skill catalog repository for our team" and it will
scaffold the layout, repertoire.yaml, and SKILL.md files described
below, then test them locally before pushing. See
Let your agent drive Repertoire.
Build a private catalog¶
Scaffold the layout from the directory that will become the catalog repository:
repertoire catalog init company --skill code-reviewer --skill shared-helpers
That writes a valid repertoire.yaml and a SKILL.md placeholder for each
--skill. It does not run Git. Omit [name] to derive the catalog name from
the current directory basename. Omit --skill to scaffold one example skill
named <name>-example. An existing repertoire.yaml is refused unless you
pass --force.
Edit the placeholders, test against the local directory, then git init and
push when you are ready. The manual layout below is what catalog init
produces, so you can check or recreate it by hand.
1. Create a Git repository¶
Create an empty private repository on your Git host (for example
company/agent-skills) and clone it:
git clone git@github.com:company/agent-skills.git
cd agent-skills
2. Lay out the catalog¶
Put each skill in its own directory containing a SKILL.md, and add a
repertoire.yaml at the root that lists them:
agent-skills/
├── repertoire.yaml
└── skills/
└── code-reviewer/
└── SKILL.md
3. Declare the catalog in repertoire.yaml¶
schema: 1
tool: https://github.com/phillarmonic/repertoire-ai
catalog:
name: company
description: Company-owned AI agent skills
skills:
code-reviewer:
path: skills/code-reviewer
shared-helpers:
path: skills/shared-helpers
Rules:
schemamust be1.toolis optional and informational; pointing it at the Repertoire repository tells readers which program owns the file.- Catalog and skill names are 1 to 64 lowercase letters, digits, or single
hyphens (
company-skillsis valid;Company_Skillsis not). The skill directory name must match the skill name exactly. - Avoid generic skill names such as
code,docs, orreview. Agents often show only the short identifier, and once several catalogs are enabled those labels collide. Prefer an owner-prefixed name such asphillarmonkey-code. - The catalog must declare at least one skill, and each
pathmust be a relative path inside the repository (no absolute paths, no..).
4. Author each skill's SKILL.md¶
Every skill directory needs a SKILL.md with YAML frontmatter. name must
match both the key in repertoire.yaml and the directory name; description
is required and must not be empty:
---
name: code-reviewer
description: Review pull requests against the company style guide.
---
# Code reviewer
Instructions for the agent go here.
You may include supporting files next to SKILL.md (scripts, templates,
references). Repertoire copies the directory as data and never executes skill
scripts during install. Symlinks are allowed only when they resolve inside the
skill directory.
Offering starter files with stubs.yaml
A skill can offer small starter files that agents fetch with
repertoire stub get. Add a stubs.yaml beside SKILL.md:
schema: 1
stubs:
editorconfig:
description: Ensure text files end with a newline.
path: assets/.editorconfig
instructions: |
Create or merge the repository-root .editorconfig while preserving
existing settings.
Stub names follow the same lowercase-and-hyphen rule as skill names. Every
entry needs a non-empty description and instructions, and its relative
path must resolve to one regular file inside the skill directory. Invalid
manifests, missing files, directories, and escaping symlinks stop the
skill from installing. See stub
for how agents consume them.
5. Commit and push¶
git add repertoire.yaml skills
git commit -m "Add company skill catalog"
git push -u origin main
Keep the repository private on your Git host so only authorized accounts can clone it.
Check Git access¶
Before registering the catalog, confirm the remote is readable with your normal Git setup:
git ls-remote git@github.com:company/agent-skills.git
# or
git ls-remote https://github.com/company/agent-skills.git
| Transport | How credentials are supplied |
|---|---|
SSH (git@…) |
Active SSH agent and ~/.ssh/config host keys |
HTTPS (https://…) |
Git credential helpers, or provider CLIs such as gh auth setup-git |
If git ls-remote fails, Repertoire will fail too. Fix the SSH agent or
credential helper first.
Never put usernames, passwords, or tokens in the URL. Repertoire rejects such URLs so that secrets stay out of manifests, lock files, command output, and error reports.
Why a missing credential fails immediately
Repertoire runs Git with terminal prompts disabled, so a missing
credential surfaces as an immediate could not read Username error
instead of a hidden password prompt. Catalog operations are also pinned to
HTTP/1.1, because some networks answer GitHub's HTTP/2 POSTs with spurious
401 responses that Git misreports as an authentication failure.
Register and use the catalog¶
repertoire catalog add git@github.com:company/agent-skills.git --name company
# or
repertoire catalog add https://github.com/company/agent-skills.git --name company
Add --ref to pin a branch, tag, or commit; without it the remote default
branch is tracked. Then browse and install:
repertoire list --available --catalog company
repertoire add code-reviewer --catalog company --target all
Pick up new commits with:
repertoire update
Share the catalog with your team¶
Declare the catalog and the skills in the project's repertoire.yaml so every
contributor and CI job installs the same set with repertoire bootstrap. The
catalogs section takes the same source and ref you passed to
catalog add. See Set up a project or team for the full
manifest and workflow. Each developer still needs Git credentials that can
read the catalog repository.
Test a catalog before pushing¶
While developing skills, point a catalog at your local checkout so you do not have to push to try a change:
repertoire catalog add /path/to/agent-skills --name company
# or, without changing the registration:
repertoire --override company=/path/to/agent-skills add code-reviewer --catalog company
See Local overrides for testing.
Use a repository that has no repertoire.yaml¶
A Git repository of SKILL.md directories with no catalog manifest is a
loose catalog. Register it the same way:
repertoire catalog add git@github.com:company/agent-skills.git --name company
repertoire add https://github.com/company/agent-skills.git
Repertoire discovers skills under well-known roots (skills/, .agents/skills,
and similar) and synthesizes a catalog in memory. Lock entries still record the
source commit, so update works. A real repertoire.yaml is what unlocks
platform variants, always-on project instructions, optional hooks, and stubs.
See Loose catalogs.