setup-validate
Validate a setup.aiwg.io/v1 SetupManifest file against the schema and run consistency checks.
Trigger Phrases
- "validate setup manifest"
- "check setup.manifest.yaml"
- "aiwg setup-validate [manifest]"
- "lint installer manifest"
- "verify my setup manifest"
Parameters
manifest (positional, optional)
Path to the setup.manifest.yaml. Default: ./setup.manifest.yaml.
--schema (optional)
Path to schema file. Default: auto-located from AIWG installation.
--strict (optional)
Fail on warnings in addition to errors.
--fix (optional)
Auto-fix simple issues (missing id, missing depends_on on sequential steps).
Validation Checks
Schema Validation
apiVersionmust besetup.aiwg.io/v1kindmust beSetupManifest- Required fields present:
metadata.name,spec.platforms,spec.steps - All step types are one of:
script,detect,ask,verify,agentic,platform-route,chain,os-config - Param types are one of:
string,path,boolean,integer,choice metadata.install_typemust be one of:user,developer,ci(if present)
Reference Checks
- Every
script:path exists relative to the manifest directory - Every
chain:manifest path exists - Every
platform-routeroute value resolves to an existing script depends_onstep IDs all exist in the manifest- Recovery
triggerslist references valid step IDs os-configsteps:config_idmust reference a valid entry inspec.os_config
Developer Manifest Checks (when metadata.install_type: developer)
These checks apply only to manifests with install_type: developer:
Errors
os-configsteps must reference a validconfig_idin thespec.os_configblockinteractive_required: trueparams must not have adefaultvalue — a default defeats the purpose of requiring interactive input- Each platform declared in
spec.platformsmust have at least one platform-specific step oros_configentry
Warnings (unless --strict, then errors)
- Developer manifest with no
os_configblock: warn unlessmetadata.descriptionexplicitly states why no OS configuration is needed os_configentries withrequires_relogin: truebut no correspondingos-configstep — the entry is declared but never appliedos_configentries withinteractive: truebut no user-facing explanation indescription
Consistency Checks (warnings unless --strict)
- Steps without
id— suggest auto-generated IDs - Sequential steps that logically depend on prior steps but have no
depends_on - Params declared but never referenced in scripts or
whenconditions - Prerequisites with no
install_hint(hard to debug without one) - Verify expressions that look like they'd always pass (e.g.,
true) interactive_required: trueparams that also haverequired: true— therequiredflag is redundant wheninteractive_requiredis set
Script Safety Checks
- Scripts that exist: read first 5 lines to confirm they source lib scripts
- Warn if a script template is used directly without customization (template placeholder text detected)
Agentic Step Audit
- Warn on any
type: agenticstep — print a reminder that agentic steps are exception handling only - Error if
type: agenticstep has noinstructionfield
Output Format
Validating: setup.dev.manifest.yaml
Schema: ✓ Valid (setup.aiwg.io/v1 / SetupManifest)
Install type: developer
Metadata: ✓ name=myapp-dev version=1.0.0
Platform: ✓ linux (ubuntu, debian), macos
Params: ✓ 4 params (INSTALL_DIR required, LOCAL_DOMAIN interactive_required, SSH_EMAIL interactive_required, IDE interactive_required)
Prerequisites: ✓ 2 checked (git >=2.30, docker)
OS Config: ✓ 3 entries (docker-group [linux, requires_relogin], inotify-watches [linux], xcode-cli-tools [macos, interactive])
Steps (7):
✓ clone script installer/scripts/clone.sh [exists]
✓ setup-git-config script installer/scripts/dev/setup-git-config.sh [exists]
✓ setup-ssh-key script installer/scripts/dev/setup-ssh-key.sh [exists]
✓ apply-docker-group os-config config_id=docker-group [valid]
✓ apply-inotify os-config config_id=inotify-watches [valid]
✓ configure-dev script installer/scripts/dev/configure-dev.sh [exists]
✓ verify-dev script installer/scripts/dev/verify-dev.sh [exists]
Recovery (1):
✓ full-reset script [exists]
Warnings (1):
⚠ xcode-cli-tools os_config entry declared but no os-config step applies it
Result: VALID (1 warning)
Error Example
Errors (2):
✗ Step 'apply-docker-group': config_id 'docker-group' not found in os_config block
✗ Param 'LOCAL_DOMAIN': interactive_required=true but has a default value — remove the default
Result: INVALID — fix errors before running
Auto-fix (--fix)
When --fix is passed, the skill will:
- Add
idfields to any steps missing them (sequential:step-1,step-2, ...) - Add obvious
depends_onfor sequential steps (each step depends on the previous) - Print a diff of changes made
It will NOT:
- Change step types
- Add or remove scripts
- Modify param definitions
- Add or remove
interactive_requiredflags - Add or remove
os_configentries
References
- Schema:
agentic/code/addons/agentic-installer/schemas/v1/setup-manifest.schema.json - Run skill:
agentic/code/addons/agentic-installer/skills/setup-run/SKILL.md - Generate skill:
agentic/code/addons/agentic-installer/skills/setup-generate/SKILL.md