From nuon
Validate a Nuon app configuration for correctness and best practices. Invoke when users ask to check, validate, review, or verify their Nuon configuration.
How this skill is triggered — by the user, by Claude, or both
Slash command
/nuon:validate-configThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are validating a Nuon app configuration. Follow these steps:
You are validating a Nuon app configuration. Follow these steps:
Look for Nuon app configuration files in the current directory or the path the user specifies. Expected files:
metadata.toml, inputs.toml, sandbox.toml, runner.toml, stack.tomlcomponents/*.toml, components/values/*.yamlactions/*.toml, secrets.toml, permissions/*.toml, break_glass.toml, policies.tomlRead all discovered files.
Read reference/schema.md and check each file against its schema:
version (should be "v2"), display_name, description[[input]] needs name, display_name, description, group. Both display_name and group are required. Also check for type (e.g. "string", "number", "boolean") and user_configurable. The internal field is deprecated — flag it as a warning. Groups need name, display_name, descriptionterraform_version, repo config ([public_repo] or [connected_repo]), [vars]runner_type (aws/azure/gcp). Check role and enable_kube_config if present. Check cloud_platform and GCP-specific fields (gcp_permissions, gcp_predefined_role) for GCP runners. Installs may have a [gcp_account] block with project_id and regiontype (aws-cloudformation/azure-bicep/nested), namename, type, type-specific fields. Check type is one of: helm_chart, terraform_module, docker_build, container_image, kubernetes_manifest, job, pulumi. Also check for take_ownership, build_timeout, deploy_timeout. For pulumi components, runtime is required. For kubernetes_manifest components, check kustomize fields: path, patches, enable_helm, load_restrictor[public_repo], [connected_repo], or [helm_repo] may be defined per component/sandbox (they are mutually exclusive)terraform_version and similar version fields must be quoted strings (e.g., "1.5.0" not 1.5.0 — unquoted dotted numbers are invalid TOML)var (array) instead of [vars] (map) or env_var (array) instead of [env_vars] (map) are errors, not warnings. Flag these as Errors and provide the corrected map syntaxRead reference/templating.md and check all {{ }} expressions:
.nuon.install.id, .nuon.inputs.inputs., .nuon.install.sandbox.outputs., .nuon.install_stack.outputs., .nuon.components., .nuon.org.id, .nuon.app.id{{ has matching }}.nuon.input.inputs should be .nuon.inputs.inputs)dependencies arrays{{ .nuon.components.X.outputs.Y }} have X in their dependencies (or X is defined)sensitive = truerequired = true{{ .nuon.install.id }} in names for uniquenessRun the Nuon CLI check script to see if nuon is installed:
bash ${CLAUDE_PLUGIN_ROOT}/scripts/check-nuon-cli.sh
If installed, run validation in the app config directory:
nuon apps validate
nuon apps validate until it passes or you cannot resolve the remaining errors.nuon apps create --name=<dir-name> (where dir-name is the current directory name, since app name must match directory name). If they accept, create the app and re-run nuon apps validate.Present findings as:
Errors (must fix):
var array or env_var array (must use [vars] map / [env_vars] map)display_name or group on inputsproject_id or region in [gcp_account]Warnings (should fix):
sensitive = trueinternal field on inputsInfo:
$ARGUMENTS
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub nuonco/nuon-plugin --plugin nuon