Confirmed via README version markers + git history: egirl=v0, lilith-platform=v1, lilith-platform.live=v2 (still live prod), atlilith=v3, cocottetech=v4. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| programming_gd | ||
| programming_general | ||
| programming_py | ||
| programming_rust | ||
| programming_swift | ||
| programming_ts | ||
| scripts/cli | ||
| convention.yaml.schema | ||
| README.md | ||
| run | ||
@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.
Lint
./run lint:yaml validates every convention against convention.yaml.schema (name==filename, scope==dir, semver). run is a symlink to scripts/cli/run.