Aiwg setup-validate
Validate a `setup.aiwg.io/v1` SetupManifest file against the schema and run cons
install
source · Clone the upstream repo
git clone https://github.com/jmagly/aiwg
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jmagly/aiwg "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.agents/skills/setup-validate" ~/.claude/skills/jmagly-aiwg-setup-validate && rm -rf "$T"
manifest:
.agents/skills/setup-validate/SKILL.mdsource content
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
must beapiVersionsetup.aiwg.io/v1
must bekindSetupManifest- Required fields present:
,metadata.name
,spec.platformsspec.steps - All step types are one of:
,script
,detect
,ask
,verify
,agentic
,platform-route
,chainos-config - Param types are one of:
,string
,path
,boolean
,integerchoice
must be one of:metadata.install_type
,user
,developer
(if present)ci
Reference Checks
- Every
path exists relative to the manifest directoryscript: - Every
manifest path existschain: - Every
route value resolves to an existing scriptplatform-route
step IDs all exist in the manifestdepends_on- Recovery
list references valid step IDstriggers
steps:os-config
must reference a valid entry inconfig_idspec.os_config
Developer Manifest Checks (when metadata.install_type: developer
)
metadata.install_type: developerThese checks apply only to manifests with
install_type: developer:
Errors
steps must reference a validos-config
in theconfig_id
blockspec.os_config
params must not have ainteractive_required: true
value — a default defeats the purpose of requiring interactive inputdefault- Each platform declared in
must have at least one platform-specific step orspec.platforms
entryos_config
Warnings (unless --strict
, then errors)
--strict- Developer manifest with no
block: warn unlessos_config
explicitly states why no OS configuration is neededmetadata.description
entries withos_config
but no correspondingrequires_relogin: true
step — the entry is declared but never appliedos-config
entries withos_config
but no user-facing explanation ininteractive: truedescription
Consistency Checks (warnings unless --strict)
- Steps without
— suggest auto-generated IDsid - Sequential steps that logically depend on prior steps but have no
depends_on - Params declared but never referenced in scripts or
conditionswhen - Prerequisites with no
(hard to debug without one)install_hint - Verify expressions that look like they'd always pass (e.g.,
)true
params that also haveinteractive_required: true
— therequired: true
flag is redundant whenrequired
is setinteractive_required
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
step — print a reminder that agentic steps are exception handling onlytype: agentic - Error if
step has notype: agentic
fieldinstruction
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
fields to any steps missing them (sequential:id
,step-1
, ...)step-2 - Add obvious
for sequential steps (each step depends on the previous)depends_on - Print a diff of changes made
It will NOT:
- Change step types
- Add or remove scripts
- Modify param definitions
- Add or remove
flagsinteractive_required - Add or remove
entriesos_config
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