Quality Gate Detection
Dynamically detect project quality gates from package.json scripts and frameworks.
Prerequisites
- •Read access to
package.jsonin the project root
Detection Process
Step 1: Analyze Project Scripts (Hybrid Diagnosis)
Read package.json and inspect the scripts section to identify verification commands.
Priority Heuristics:
- •Test: Look for
test,test:unit,test:ci. Preference:npm testor specific script. - •Lint: Look for
lint,lint:fix,eslint. Preference:npm run lint. - •Typecheck: Look for
typecheck,tsc,build. Preference:npm run typecheckortsc --noEmit. - •Browser/E2E: Look for
test:browser,e2e,cypress,playwright. Preference:npm run test:browser.
Framework Detection:
- •Identify test runner:
jest,vitest,mocha,ava. - •Identify linter:
eslint,tslint,biome. - •Identify builder/runtime:
tsc,vite,next,webpack.
Step 2: Formulate Verification Commands
Construct the actual commands to be run by the agent.
- •If a script exists (e.g.,
"test": "jest"), usenpm run test. - •If no script exists but framework is detected (e.g.,
jestin dependencies), try standard binarynpx jest. - •MISSING: If no scripts/frameworks are detected for a category, leave the command empty. Do NOT assume defaults like
npm testexist.
Step 3: Execution (Just-in-Time)
Use the detected commands immediately to verify your work.
- •Do not write a
quality-gates.jsonfile. - •Do not ask for permission to run standard checks unless they are destructive.
- •Simply execute the commands as part of your verification loop.
Edge Cases
Ambiguous Scripts:
- •If multiple scripts match (e.g.,
testandtest:all), prefer the one that seems most appropriate for local verification (oftentestortest:unit). - •When in doubt, note the ambiguity in the "rationale".
Missing Scripts:
- •If a category (e.g.,
lint) has no script and no detected config, omit it from the required gates. Report it as "Not Detected".
Validation
- •Verify
package.jsonexists and is valid JSON. - •Ensure derived commands are executable (e.g., don't suggest
npm run lintiflintscript is missing).
Reference Documentation
- •Config Template: See
tools/config.jsonfor full configuration structure