No description
Find a file
Natalie 3dc5a9b321 feat(conventions): codify lilith v0-v4 conventions (py/rust/gd + 7 general)
Mined the egirl->cocotte lineage + the prose agentic configs. Per-language
standards (py/rust/gd) and general conventions: service_architecture,
multi_agent_workflow, error_handling_logging, mcp_server_patterns,
naming_conventions, tenancy_patterns (draft), database_patterns. Captures the
canonical/latest where versions diverged. 14/14 lint:yaml-valid.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 08:42:44 -04:00
programming_gd feat(conventions): codify lilith v0-v4 conventions (py/rust/gd + 7 general) 2026-06-29 08:42:44 -04:00
programming_general feat(conventions): codify lilith v0-v4 conventions (py/rust/gd + 7 general) 2026-06-29 08:42:44 -04:00
programming_py feat(conventions): codify lilith v0-v4 conventions (py/rust/gd + 7 general) 2026-06-29 08:42:44 -04:00
programming_rust feat(conventions): codify lilith v0-v4 conventions (py/rust/gd + 7 general) 2026-06-29 08:42:44 -04:00
programming_swift feat(conventions): seed central workspace+coding conventions repo 2026-06-29 08:19:39 -04:00
programming_ts feat(conventions): apiVersion+semver versioning, run lint:yaml CLI, rename infra_manifest 2026-06-29 08:36:10 -04:00
scripts/cli feat(conventions): apiVersion+semver versioning, run lint:yaml CLI, rename infra_manifest 2026-06-29 08:36:10 -04:00
convention.yaml.schema feat(conventions): apiVersion+semver versioning, run lint:yaml CLI, rename infra_manifest 2026-06-29 08:36:10 -04:00
README.md feat(conventions): apiVersion+semver versioning, run lint:yaml CLI, rename infra_manifest 2026-06-29 08:36:10 -04:00
run feat(conventions): apiVersion+semver versioning, run lint:yaml CLI, rename infra_manifest 2026-06-29 08:36:10 -04:00

@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 as convention:<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.