The build_manifest.py script extracts symbols and imports. To add a new language:
- Add the file extension to
LANGUAGE_EXTENSIONSinscripts/common.py - Create
extract_<language>_symbols()inbuild_manifest.py - Create
extract_<language>_imports()inbuild_manifest.py - Add endpoint detection patterns for the language's frameworks
- Create a directory in
adapters/<your-cli>/ - Wrap the prompts from
prompts/in your CLI's native format - Update
install.shto detect and install your adapter
- Edit
repo_universe/curated/invariants.yaml - Every invariant must have:
- At least one target (must resolve to a real node)
- At least one verification obligation
- Confidence, owner, and subsystem metadata
- Run
/validate-universeto check resolution
invariants.yaml— must-not-break contractsownership.yaml— team ownership declarationssource_of_truth.yaml— what wins when artifacts diverge
All target references must resolve to real nodes in repo_universe/generated/nodes.json.
The query output schema is locked in docs/specs/query-contract.md. Adding fields:
- Add the field to the spec
- Update
query_impact.pyto populate it - Update
check_query_schema.pyto validate it - Update the skill and prompts to use it
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Make your changes following the conventions above
- Commit with a descriptive message (
git commit -m "Add: description of change") - Push to your fork (
git push origin feature/your-feature) - Open a Pull Request against
main
Pull requests should include:
- Description of what changed and why
- Any testing you performed
- Reference to related issues (if applicable)