id: extension-manifest-committed
name: VS Code extension manifest committed
description: >
  .vscode/extensions.json must exist and be committed to the repository.
  Without it, AI agents and developers reinstall extensions session after session:
  the development environment is underspecified and the toolchain is not reproducible.
  A committed extensions manifest ensures every contributor and every AI session starts
  with the same editor toolchain. Gate passes when .vscode/extensions.json exists and
  contains a non-empty recommendations array.
property: Self-describing
tags: [any]
phase: development
trigger: commit
blocking: false
check:
  type: script
  command: >
    test -f .vscode/extensions.json &&
    node -e "const e=JSON.parse(require('fs').readFileSync('.vscode/extensions.json'));
    if(!e.recommendations||!e.recommendations.length){process.exit(1)}"
