Profiles, Catalogs, and ODS Packs
Standard profiles, custom profiles, precedence rules, profile mapping matrix, and ODS Packs.
Profiles, Catalogs, and ODS Packs
Profiles answer what kind of document a file is. They define expected H2 section headings checked during validation.
ODS uses a two-tiered Standard (Built-in) vs. Workspace (Custom) layering model for profiles and tags:
| Layer | Source | Enforcement |
|---|---|---|
| Standard Profiles | Built into the specification / ods binary (13 core profiles) |
Always available; section lint for known shapes |
| Custom Profiles | Explicitly declared under custom_profiles in root ods.toml, or imported ODS Packs (packs:) |
Additive catalogs; unknown name → warning (falls back to Default Profile (note)) |
Prefer Standard Profiles first (note, guide, feature, decision, sop, api, architecture, policy, meeting, faq, checklist, agent, skill). There is no index or spec profile. Introduce a Custom Profile or ODS Pack only when a repeated document class is worth standardizing across teams.
Resolution Precedence
When resolving profile definitions (Zero Folder Auto-Discovery):
1. Standard Profiles (built-in 13 core profiles) // always loaded first
2. Explicit custom profile catalog paths listed in custom_profiles (ods.toml): // workspace-local
3. Custom profiles in imported ODS Packs listed in packs: // vendor / linked packs
- First definition of a name wins.
- Later duplicate definitions trigger a conflict warning (CI lint (compliant) should fail).
- Custom profiles are additive; they cannot overwrite or replace a Standard Profile name.
- Custom profiles are recognized strictly when explicitly declared in
custom_profiles (ods.toml):or importedpacks:. Unlisted directories are not auto-discovered.
Custom profiles (one command)
ods profile init rfc # scaffold .ods/profiles/rfc.md + register custom_profiles (ods.toml):
ods profile init rfc --no-register # scaffold only
ods profile show rfc
ods profiles # list standard + custom
By default, profile init appends .ods/profiles/<name>.md under root custom_profiles (ods.toml):. No folder auto-discovery: unlisted paths are ignored.
Section aliases
Workspace section aliases live in root ods.toml under [aliases] and extend which H2 headings satisfy a profile section check. Standard profiles already ship pipe-alternatives (e.g. Goal | Objective | Purpose).
ods aliases
ods alias add Goal Objective
ODS Packs (ods pack)
A Profile defines a single document structural schema (profile: decision). A Pack (v1) is a reusable directory/repo whose primary engine effect is importing custom profile catalogs (ods-profiles/ or pack root). Packs may also carry Markdown SOPs/guides as ordinary docs; skills install and template engines are separate surfaces (ods skill install, ods init --skills) — not automatic pack apply.
Workspaces declare custom profiles and imported ODS Packs in their root ods.toml:
spec = "0.1"
ignore = ["src"]
custom_profiles = [".ods/profiles/rfc.md"]
packs = ["vendor/engineering-pack", "../shared-company-pack"]
Multi-Transport ods pack add
ods pack add <source> [--auto-update frequency] supports Git-native transport across five sources:
- GitHub Shorthand:
ods pack add owner/repo(Git clone intovendor/repo). - HTTPS Git URL:
ods pack add https://github.com/acme/pack.git(Remote HTTPS clone). - SSH Git URL:
ods pack add git@github.com:acme/pack.git(Remote SSH clone). - Local Path / Link:
ods pack add ../shared-company-pack(Monorepo & local pack links/symlinks). - File URL:
ods pack add file:///opt/packs/security(Air-gapped enterprise CI volume mounts).
Profile Mapping Matrix (“Which Profile Should I Use?”)
| Document Intent | Recommended Standard Profile | Custom Profile / Pack Option |
|---|---|---|
| Product Requirements / PRD | feature |
— |
| System Design / Technical Architecture | architecture |
— |
| Interface / API Specification | api |
— |
| Architecture Decision / Choice / ADR | decision |
— |
| Standard Operating Procedure / Runbook | sop |
— |
| Rules / Policy / Governance | policy |
— |
| Tutorial / How-To Guide | guide |
— |
| Audit / Release Gates | checklist |
— |
| Meeting Notes / Discussion Summary | meeting |
— |
| Frequently Asked Questions | faq |
— |
| Directory Navigation | index |
— |
| General Prose / Formal Spec / Note | note |
— |
Profile resolution order
- Built-in standard profiles
- Explicit custom profiles listed in root
custom_profiles (ods.toml): - Custom profiles in imported
packs: