convention.yaml.schema (meta-schema) + per-language dirs (general/ts/swift/py/ rust/gd). Seed conventions: recursive_code_workspace (the ~/Code @org tree, always-active), infra_manifest (per-project .infra.yaml + its schema), and ts/code_standards + general/git_commit (shifted from the prose agentic configs). Referenced by global config as convention:<name>(<args>). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1.6 KiB
1.6 KiB
@conventions
Single source of truth for workspace + coding conventions, shared by every project
under ~/Code (and known to global agentic config, so any agent in any repo can
resolve them).
Layout
@conventions/
├── convention.yaml.schema # meta-schema every convention validates against
├── programming_general/<name>.yaml # language-agnostic conventions
├── programming_ts/<name>.yaml # TypeScript
├── programming_swift/<name>.yaml # Swift
├── programming_py/<name>.yaml # Python
├── programming_rust/<name>.yaml # Rust
└── programming_gd/<name>.yaml # GDScript
A convention
A <name>.yaml is metadata + rules, and may:
- accept
params— referenced asconvention:<name>(<args>), e.g.convention:recursive_code_workspace(~/Code); - define a manifest via
providesFile— a file (e.g..infra.yaml) every conforming project must contain, with a nested JSON Schema for its contents.
Validate a convention file against convention.yaml.schema; validate a project's
manifest against the convention's providesFile.schema.
How agents use it
Global config points agents here. An agent resolves convention:<name> by reading
programming_<scope>/<name>.yaml, applies its rules, and (for providesFile
conventions) reads/writes the project's manifest to that schema. Conventions are
data, not prose — tooling (a future infra-apply, linters, scaffolders) can consume
them directly.
Seed conventions
programming_general/recursive_code_workspace.yaml— the~/Code@org layout.programming_general/infra-manifest.yaml— per-project.infra.yaml.