Skip to content

Validation and Linting Reference

Central reference for all validation scripts, linting commands, git hooks, and CI workflows.

Jump to: Architecture · Lefthook Hooks · Validation Scripts · CI Workflows · Running Locally

Validation runs at three stages, catching issues progressively earlier:

flowchart LR
    A["Pre-Commit<br/>(lefthook)"] --> B["Pre-Push<br/>(lefthook)"]
    B --> C["CI<br/>(GitHub Actions)"]
    style A fill:#e8f5e9,stroke:#4caf50,color:#000
    style B fill:#fff3e0,stroke:#ff9800,color:#000
    style C fill:#ffebee,stroke:#f44336,color:#000
  1. Pre-commit — validates staged files only (fast, file-type scoped, parallel)
  2. Pre-push — validates all changed files vs main (domain-scoped, parallel)
  3. CI — validates the full repository on every PR and push to main

All hooks are defined in lefthook.yml at the repository root.

HookTrigger (glob)Purpose
markdown-lint*.mdmarkdownlint on staged markdown files
link-checksite/src/content/docs/**/*.{md,mdx}Verify URLs in staged docs files
h2-syncSKILL.md, azure-artifacts filesCheck H2 heading sync across sources
artifact-validationagent-output/**/*.mdValidate artifact H2 structure against templates
agents**/*.agent.md, **/*.prompt.mdAgent frontmatter, model alignment, body size
instructions**/*.instructions.md, agents, skillsInstruction frontmatter and cross-reference validity
secrets-baseline(all staged files)gitleaks secret scan (soft-skip if not installed)
python-linttools/mcp-servers/**/*.pyRuff linter on Python files
terraform-fmt*.tfTerraform formatting check
terraform-validate*.tfTerraform validation per project
iac-security-baselineinfra/bicep/**/*.bicep, infra/terraform/**/*.tfTLS 1.2, HTTPS-only, no public blob, managed identity
HookPurpose
commitlintEnforce Conventional Commits format
HookPurpose
branch-namingValidate branch name uses an approved prefix
branch-scopeValidate domain branches only modify in-scope files
diff-based-checkRun domain-scoped validators for changed file types

All scripts are in the tools/scripts/ directory. Run via npm run <command>.

npm CommandScriptPurpose
validate:agentsvalidate-agents.mjsAgent frontmatter, body size, model alignment
validate:skillsvalidate-skills.mjsSkill format, affinity, references, stale refs
validate:skill-checksvalidate-skill-checks.mjsSkill size (≤500 lines) and references
validate:instruction-checksvalidate-instruction-checks.mjsInstruction frontmatter and applyTo patterns
validate:agent-registryvalidate-agent-registry.mjsAgent registry consistency
validate:workflow-graphvalidate-workflow-graph.mjsDAG integrity (no orphans, no cycles)
npm CommandScriptPurpose
validate:artifactsvalidate-artifacts.mjsH2 sync, template compliance, and auto-fix (with --fix)
e2e:validatevalidate-e2e-step.mjsE2E pipeline structural validation
e2e:benchmarkbenchmark-e2e.mjs8-dimension benchmark scoring
npm CommandScriptPurpose
lint:governance-refsvalidate-governance-refs.mjsGovernance guardrails integrity
validate:no-hardcoded-countsvalidate-no-hardcoded-counts.mjsPrevent hardcoded entity counts
lint:deprecated-refsvalidate-no-deprecated-refs.mjsBlock deprecated API/pattern references
validate:iac-security-baselinevalidate-iac-security-baseline.mjsIaC security baseline (TLS, HTTPS, blob, identity, SQL auth)
npm CommandScriptPurpose
validate:session-statevalidate-session-state.mjsSchema validation + deprecated lock/claim field detection
npm CommandScriptPurpose
lint:glob-auditvalidate-glob-audit.mjsDetect overly broad glob patterns
lint:orphaned-contentvalidate-orphaned-content.mjsDetect unreferenced skills/content
lint:docs-freshnesscheck-docs-freshness.mjsDocumentation staleness detection
lint:version-syncvalidate-version-sync.mjsVersion consistency across files
npm CommandScriptPurpose
validate:vscodevalidate-vscode-config.mjsVS Code settings completeness
validate:hooksvalidate-hooks.mjsHook script structure and syntax
test:hookstest-hooks.shHook integration tests (bats)
lint:mcp-configvalidate-mcp-config.mjsMCP server configuration validity
npm CommandToolPurpose
lint:mdmarkdownlint-cli2Markdown formatting and style
lint:linksmarkdown-link-checkURL validity in all markdown files
lint:links:docsmarkdown-link-checkURL validity in site docs
lint:jsonlint-json.mjsJSON/JSONC syntax validation
lint:pythonruffPython code quality (tools/mcp-servers/azure-pricing/)
lint:terraform-fmtterraform fmtTerraform formatting compliance
validate:terraformterraform validateTerraform validation per project
npm CommandPurpose
validate:allRun all validators (parallel Node + external)
validate:_nodeAll Node.js validators in parallel
validate:_externalAll external tool validators in parallel
validate:agentsAgent frontmatter, body, model alignment
validate:artifactsH2 sync, template compliance, auto-fix
validate:skillsSkill format, affinity, references, stale
audit:quarterlyQuarterly context audit checks

All workflows are in .github/workflows/.

WorkflowFileTriggerPurpose
CIci.ymlPR to main, push to mainFull validation suite (markdown, agents, skills, hooks, gitleaks, bats tests, MCP, VS Code config)
Branch Enforcementbranch-enforcement.ymlPR to mainBranch naming convention and scope validation
Link Checklink-check.ymlDocs changesURL validity in documentation
Docsdocs.ymlDocs changesBuild and deploy Astro Starlight site
E2E Validatione2e-validation.ymlAgent output changesE2E pipeline structural validation
Weekly Maintenanceweekly-maintenance.ymlScheduled (weekly)Freshness audits, orphaned content, glob audit
Azure Deprecation Trackerazure-deprecation-tracker.ymlScheduledTrack Azure service deprecations
Terminal window
# Run everything
npm run validate:all
# Run a specific category
npm run lint:md # Markdown only
npm run validate:agents # Agent definitions only
npm run validate:session-state # Session state only
# Auto-fix where supported
npm run lint:md:fix # Fix markdown issues
npm run fix:artifacts -- <file> --apply # Fix artifact H2 headings
npm run lint:python:fix # Fix Python lint issues