Thanks for adding a stack! Extensions are declarative JSON — no code.
-
Create the manifest at
extensions/<id>.json. Theidmust be kebab-case and match the filename. See existing files for examples and the README for the format. -
Register it — add an entry to
registry.json:{ "id": "your-id", "name": "Your Stack", "description": "Short description.", "url": "https://raw.githubusercontent.com/granspace/extensions/main/extensions/your-id.json" } -
Validate locally:
node scripts/validate.mjs
CI runs the same check on your pull request.
- Detection uses exact filenames, not globs. Pick a marker file a project of
that stack always has (e.g.
Gemfile,pom.xml,Cargo.toml). - Don't reuse a Granspace built-in
id(node, docker, unity, php, python, go, rust) — those can't be shadowed. - Keep commands non-interactive and generally useful (install / run / test / build). Avoid framework-specific assumptions unless the marker file implies it.
kindis one ofdev | build | test | prod | other.
A JSON Schema is provided at schema.json for editor
autocomplete/validation.