schools

Schools are curated repositories of skills, conventions, and configuration for AI coding tools. Everyone on the same school shares the same skill set.

structure

my-school/
├── school.toml      # school metadata & config
├── skills/          # skill directories
│   ├── commit/
│   │   └── SKILL.md
│   ├── review/
│   │   └── SKILL.md
│   ├── .curated/    # same tier as top-level (explicit)
│   ├── .experimental/# opt-in via --include-experimental
│   └── .system/     # opt-in via --include-system
├── rules/           # optional coding conventions
├── commands/        # optional slash commands
└── agents/          # optional agent configs

school.toml defines the school name, env vars, [[mcp]] servers, [[backends]] custom-backend entries, [[roles]], [[imports]], and the [[projects]] catalog. Every section is optional — a school can be skills-only or ship a full configuration surface.

Skills under skills/<name> and skills/.curated/<name> are the curated tier — picked up by wildcard imports by default. .experimental/ and .system/ are hidden from wildcards unless the importer opts in. On name collisions, .curated/ wins, then top-level, then .experimental/, then .system/.

create a school

$ mkdir my-school && cd my-school
$ git init
$ ace school init
# generates school.toml and starter school files

Add skills as folders under skills/ with a SKILL.md file. Add conventions, commands, or agent configs in the optional sibling folders. Push to a git remote.

use a school

$ ace setup ace-rs/school # clone & configure
$ ace # skills are symlinked, backend launches

imports

Schools can import skills from other repositories. Each [[imports]] entry in school.toml records where a skill came from so ace school pull (alias ace school update) knows how to refresh it.

# exact import — a single named skill
[[imports]]
skill = "skill-creator"
source = "anthropics/skills"

# wildcard import — all matching skills, re-discovered on every update
[[imports]]
skill = "frontend-*"
source = "company/school"

# import everything curated from the source
[[imports]]
skill = "*"
source = "company/school"

Glob patterns support * anywhere in the name (*, frontend-*, *-coding). No ?, **, or character classes. Wildcard matches default to the curated tier only — set include_experimental = true or include_system = true on the entry to widen the search.

parent school pattern

To inherit every skill from a company-wide school, import with --all:

$ ace import company/school --all
$ ace school pull # fetches every curated skill

This records skill = "*" in [[imports]]. New skills added to the parent are picked up automatically on subsequent ace school pull runs — no re-import needed.

The source doesn't need to be an ACE school. Any repository with a skills/ folder works — including anthropics/skills and community skills.sh-style collections. No school.toml required on the source.

$ ace import anthropics/skills --all # treat a plain skills repo as a parent
$ ace school pull

propose changes

Skills are symlinked from the school cache into your project. Edits go directly to the cached school repo. Review changes with ace diff, then branch and commit in the school cache before opening a PR.

$ ace diff # see what you changed
# then use git in the school cache to branch, commit, and push