Modifying the CLI Manifest Schema
SkillDev toolsChanging the current application manifest JSON schema and aligning CLI schema references.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Modifying the CLI Manifest Schema skill
What this skill tells your AI
The instructions your AI receives, as published by golemcloud/golem in .agents/skills/modifying-cli-manifest-schema/SKILL.md and read by ahel’s review.
Use this skill when changing the Golem application manifest JSON schema under
cli/schema.golem.cloud/app/golem/ or when adding/removing manifest fields in
cli/golem-cli that must be reflected in schema validation and generated
template references.
Do not use this skill for the structured command output schema under
cli/golem-cli/command-output-schema/command-output.schema.json. For
StructuredOutput types, structured-output serializers, or command-output schema generators, use
modifying-cli-output-schema instead.
Core Rules
- Change the current manifest contract directly and update every in-tree parser, model, template, example, fixture, test, schema reference, and generated application that consumes it.
- Do not add or preserve compatibility parsing, fallback defaults, upgrade paths, aliases, deprecated fields, migrations, backfills, or support for older manifest versions.
- Edit the schema directory named by
manifest_schema_version!()unless release or schema-hosting work requires a new publication identifier. A new directory is a publication decision, not a compatibility mechanism. - When a new schema identifier is required, copy the current directory, update its
$id, make it the sole current schema reference, and apply the contract change there. Do not backfill historical schema directories. - If the YAML document version changes, update the CLI to accept the new current version rather than keeping the previous version supported.
Important Terminology
- Manifest version: the version of the YAML document itself, exposed as
sdk::MANIFESTincli/golem-cli/src/versions.rs. - Manifest schema version: the version of the JSON schema under
cli/schema.golem.cloud/app/golem/<version>/golem.schema.json, exposed viamanifest_schema_version!()incli/golem-cli/src/versions.rs.
These are NOT the same concept and do not have to move together.
Schema hosting may use development identifiers such as 1.6.0-dev.8 while the manifest document
uses a release-line identifier such as 1.6.0. Follow explicit release direction when choosing a
new publication identifier; do not invent a version bump merely to retain the old schema.
Workflow
- Read
cli/golem-cli/src/versions.rsand identify the schema directory named bymanifest_schema_version!(). - Modify that current schema in place, or create a new publication directory only when the task's release/schema-hosting requirements call for one.
- Update the Rust manifest model and serde behavior so the implementation and JSON Schema describe the same contract.
- Update
cli/golem-cli/src/versions.rs:- change
sdk::MANIFESTonly when the YAML document version changes; - change
manifest_schema_version!()only when using a new schema publication identifier.
- change
- If
sdk::MANIFESTchanges, replace old-version policy and upgrade behavior incli/golem-cli/src/app/manifest_version.rsandmanifest_upgrade.rswith the new current contract. Do not keep previous versions accepted or generate compatibility upgrades. - Check every schema-version consumer, especially:
cli/golem-cli/src/lib.rscli/golem-cli/src/app/template/snippet.rscli/golem-cli/src/app/build/check/mod.rs- tests containing embedded
$schemareferences
- Update all in-tree manifests, templates, examples, fixtures, tests, and generated artifacts that use the changed field or version.
- Run focused validation, checks, and tests.
Things To Watch
- Do not assume
sdk::MANIFESTandmanifest_schema_version!()should always match. - When introducing a new field or enum value, ensure both serde parsing and JSON schema validation agree.
- If the CLI emits manifest templates/snippets, make sure they reference the new schema version.
- Historical schema directories are publication artifacts, not contracts that current CLI code must continue accepting. Leave unrelated history untouched, but do not update it or route current behavior through it.
Useful Files
cli/golem-cli/src/versions.rscli/golem-cli/src/lib.rscli/golem-cli/src/app/template/snippet.rscli/golem-cli/src/app/manifest_version.rscli/golem-cli/src/app/manifest_upgrade.rscli/golem-cli/src/app/build/check/mod.rscli/golem-cli/src/model/app_raw.rscli/schema.golem.cloud/app/golem/*/golem.schema.json
Verification Checklist
- The current schema validates the changed manifest shape and rejects removed shapes.
- Serde parsing and JSON Schema validation agree.
- CLI version constants and emitted
$schemareferences point to the sole current contract. - No compatibility parser, alias, old-version support, upgrade path, migration, or backfill was added or retained for the changed contract.
- All in-tree manifests and generated examples use the current shape.
cargo check -p golem-clipasses.- Focused manifest schema/version tests pass with
--report-time.
Signals
- GitHub stars
- 2k
- Forks
- 212
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
modifying-cli-manifest-schema- Source
- github.com/golemcloud/golem