{"_id":"mandrel","_rev":"117-3274cb701fcd4ab8d16dcd793ac518d2","name":"mandrel","dist-tags":{"latest":"2.75.0"},"versions":{"1.57.0":{"name":"mandrel","version":"1.57.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.57.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"d4fcc46308662535d75ca4e78b6454f46416eecc","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.57.0.tgz","fileCount":843,"integrity":"sha512-GyCoY6CkuCDUpSY8d+8Pt4DajtZPt5KaiJOA/4J75wAt1XvagvdtvDzaGabKuqQjJLXMsGdlbfxroNc2YIr/Fw==","signatures":[{"sig":"MEUCIFCrabD624CE0PeatUhmGWilvwC2DbH//InVufLxHn/rAiEAg2ODxVhAMT92d8FbW4h5tlc7nXjQY0UGrmgNndhdCS8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.57.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6330149},"main":"index.js","type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"0fcd2204018d73904fa977183310ade63e2cdc7b","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","typescript":">=5.0.0","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.57.0_1781122471324_0.7354313870195572","host":"s3://npm-registry-packages-npm-production"}},"1.58.0":{"name":"mandrel","version":"1.58.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.58.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"96e0ccd90e088b94350b4938c223d915bdf43f2f","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.58.0.tgz","fileCount":844,"integrity":"sha512-4+CHSZe6ECqEhJWZlj5t4SS8f89iPnU43ocw4MBsud4SVfzoj34IAE6YuIP6KM/Kl2lLmXHEQLcGjml6stYDeQ==","signatures":[{"sig":"MEQCIEUCBLoae+n/1umx/FI4BbijBfBFrKyb30wCG6+p7EAHAiByjtB9k0Tv5tFnRXd882/V5fjncCz1KKsNPpnztP5PyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.58.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6339301},"main":"index.js","type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"1775526f58d1b439963b86497f0d696672ae85bd","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","typescript":">=5.0.0","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.58.0_1781129561696_0.2676861893467324","host":"s3://npm-registry-packages-npm-production"}},"1.59.0":{"name":"mandrel","version":"1.59.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.59.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"60dd462a16c0f8e7354dc9e771529fbb673a2229","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.59.0.tgz","fileCount":856,"integrity":"sha512-+vBUNwilkPZEbVT3uYkXQoVG2jfh8gVLU7Y8uTQ2bMsl+i9wI/l19nPiFBpjmR4kTj/iYcBmhDevJbdc3cQe0Q==","signatures":[{"sig":"MEUCIQCVjN07UHRYb786AJVnWZ1iP+d8E/p9/Ku8+jNNMuwMtQIgJmhvcxwWAngyNHJQlGnro88lMfP8jEFgA+ZMwQlhAGU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.59.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6379221},"main":"index.js","type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"9cdc39b60a44d34bb9cceb495c3723a570bd02fb","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","typescript":">=5.0.0","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.59.0_1781197390657_0.9943176973509955","host":"s3://npm-registry-packages-npm-production"}},"1.60.0":{"name":"mandrel","version":"1.60.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.60.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"a4438465d3a7da26e1430777764cd4436e48c463","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.60.0.tgz","fileCount":860,"integrity":"sha512-jDhXQizEgFC3WkZU5ks17+QkxzDQWXWGJcgFwiW3J8I8ZAqRwdi9JYo8AvpewnjLkG7APgGiAyHpA71W/zsQyw==","signatures":[{"sig":"MEUCIQCa0/YAD8IF62oaYYYSUGUVgWTHnKbdjVuMh/0w1vJxVQIgCPmN9+FuMAQEllsNviySRtwTPfJqtfhpXXllrOtnOjQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.60.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6549938},"main":"index.js","type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"01a68497868cbd2c02e2c780ecbb20072021bb17","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","typescript":">=5.0.0","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.60.0_1781218045428_0.1101872615123829","host":"s3://npm-registry-packages-npm-production"}},"1.61.0":{"name":"mandrel","version":"1.61.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.61.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"903f605fe6526503deafd1d3c855c2cda5528d23","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.61.0.tgz","fileCount":854,"integrity":"sha512-PNnIVB8sy8UOVi/lPvmmUF01WVmtqPVERLxQH5wGyhOeAjv06+FkTiiaUT5yFVaQ5QXqcCBMzGxy69GbI7VOCQ==","signatures":[{"sig":"MEUCIDPOFmD+tIO9b075HVTNJ7e8EVVpqXPzcgV2Mawlg+5vAiEA1VMY3wu8++Ov/U2NaMlFT+JTPYYPd7F+hI/Q4UyTKRk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.61.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6502462},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"1cfa4ce3ee82d9d0e4dffa919bc53a85344696fd","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","typescript":">=5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.61.0_1781231809679_0.368057014280887","host":"s3://npm-registry-packages-npm-production"}},"1.62.0":{"name":"mandrel","version":"1.62.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.62.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"e1fa73f2387e54175cdca3f132ef30cec37ba308","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.62.0.tgz","fileCount":854,"integrity":"sha512-/HedoQ2kjqMP3UAoQmgL0h2ex63Zq9BglVREvqrP/AW/sTb9pvCADqXLEUT9P/O96d/xcVNXOT1t2W3NPqyVVw==","signatures":[{"sig":"MEUCIQDJwSHWM81lql+XaXQMGkwR9N0ECcardhs+HdDZB2ry2AIgN0WjYkHmxWeOmG+sYVXq0sJZuD8aLIHXUPcnMOpbL0g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.62.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6512506},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"92eef420fa5ade4abe07ed931b5aeb8e4947f766","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","typescript":">=5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.62.0_1781265913402_0.7292805634622783","host":"s3://npm-registry-packages-npm-production"}},"1.63.0":{"name":"mandrel","version":"1.63.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.63.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"de08af3e66305b75360b740b61e6112cbf7d7402","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.63.0.tgz","fileCount":856,"integrity":"sha512-d5lU1z2hPsdAJnWjTk+954sQCqL/IfKwEZdReCJ5ygAjuchhwRFs7BMNeaanHv9ZZF8EYB4D7f9kRgpblWDnxQ==","signatures":[{"sig":"MEUCIQDvIYY3v8Gj5/wna8bwMe+RIKEEf5kVBfD2y1srqle/GwIgSvwNNomkXnTCYgIozn0d6Km6vKYHW6D4Iv/IXThz1Lk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.63.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6550776},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"d72b5f99489dc8ff6cdeb395bdd13e71db60d298","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","typescript":">=5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.63.0_1781357454833_0.19485410897355515","host":"s3://npm-registry-packages-npm-production"}},"1.64.0":{"name":"mandrel","version":"1.64.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.64.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"10be55836708d801817dc538d79938e64d788bb5","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.64.0.tgz","fileCount":855,"integrity":"sha512-7aGStblAZsHg6I9mx6sjMyt1zvrUEtW6ZEDo/SP2RRTrpYGSx5A1NMJki8AuVi2IbMDRA/y0yCP2SrzX5j7PKQ==","signatures":[{"sig":"MEUCIF/Vcv9A7fbjUNXbLsmyHqjQTO69U0D7v6aPV2pCh23sAiEApeRLzt9n0stNTC/KuQoiDGJrcF4vWbD1AD0VcvSUxcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.64.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6553064},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"eb12d122bf849348ba6644f168a251c9219ae0ed","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","typescript":">=5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.64.0_1781408887262_0.9662824614947234","host":"s3://npm-registry-packages-npm-production"}},"1.65.0":{"name":"mandrel","version":"1.65.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.65.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"f2890083a1c5e60dd2c20601135a0a3f51aaf663","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.65.0.tgz","fileCount":855,"integrity":"sha512-zpc7LVzQbtavzmhD4C4h5SGOTHrpyah+k0QuGuAX/dgcg+CMheq/cNBxdEoVmnx2MdLOafKcUqoM8dtP/aemYw==","signatures":[{"sig":"MEQCIGtnMPMZIcfQ8uarRBnk+lymI8FjELP4jkUaqbgv9fOzAiAYbbA7Ga0Haze8qWZg+fwyY6Yx1eetiIo/MK1ps8Ct3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.65.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6562289},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"0a288920d39c4d531afea60ea949dcfbdb66e6aa","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.65.0_1781475607216_0.750437698185036","host":"s3://npm-registry-packages-npm-production"}},"1.66.0":{"name":"mandrel","version":"1.66.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.66.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"71ded4bb865c06a126e709579f65cc2bbe2b834e","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.66.0.tgz","fileCount":855,"integrity":"sha512-e24xSiXieGwwRsXUMO//tex20+dzir/V5TJgVEZ7Vtqyhsnox0LRzocr+zmifLU0qxmSy7AE3uBg3QNl4rI+2w==","signatures":[{"sig":"MEUCIQDsjtzNIDt+0i8nijroBoL6edcATu878nmWN73f9EMdIgIgbHkj9ge7kHUBaOXTsGB44fM4WL5iKBUle3rD0MbxVQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.66.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6568123},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"f1c590c61dcb32a2e1befd8b8d3d5545a3e67ad6","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.66.0_1781482814698_0.9431382589310857","host":"s3://npm-registry-packages-npm-production"}},"1.67.0":{"name":"mandrel","version":"1.67.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.67.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"c78560b910c21e0112e0f5982256f32bd80add3c","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.67.0.tgz","fileCount":858,"integrity":"sha512-fPP1hjh0hSw7oQZ0OT5e1uIZbolo3S9GcMTxBVi5ptRLa7UI2vvdyrNEihdgUNUzrA4F24ONrOiHZw/Ijf7Hpw==","signatures":[{"sig":"MEUCIQCyj7QoTd/I/8bR3+hNAkRw1ZO0vhb0lpNL/vxeUxtwxwIgT3HCFpaBJDixbxstqpAkhyq7heacYaPZy4HC9wStSGU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.67.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6633537},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"440c3a13d608fb1c28f6cf44c0c3886ce53a3536","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.67.0_1781534286579_0.3338967170317628","host":"s3://npm-registry-packages-npm-production"}},"1.68.0":{"name":"mandrel","version":"1.68.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.68.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"c290014392bcbd71639489cab29b4b8ad43d8014","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.68.0.tgz","fileCount":858,"integrity":"sha512-CBxLTukgGsjJEl4K1Up/qUnpuhyLo3oFbY23uxw/k8B0Znp5Uq+RwfTgC3QdYz8tyrY2dCNTa708alVRvr3Zow==","signatures":[{"sig":"MEUCIQCIJtvM8ML/ghG/mY1IFphpHSBxuoWJLgM8V7XBJo5EXgIgftAaBT4MAL9RuHqn6Sln5PNPPI9BZ0MkLB9rQWNNWX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.68.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6639837},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"b083590ada0d7731228bc5812754d1e5616afe6a","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.68.0_1781536262934_0.8753467235576713","host":"s3://npm-registry-packages-npm-production"}},"1.69.0":{"name":"mandrel","version":"1.69.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.69.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"3afdc91ce605688eaed6afc0faf7f8f5b8fd6ac5","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.69.0.tgz","fileCount":858,"integrity":"sha512-wmvpcl7MR30UPjs9vrhuxSN/ol7tirhFMKGcSXitbDlrMUubZuTdDpaWnVJTJ9jWumgE+/dtpR4jCDo1XTnZoA==","signatures":[{"sig":"MEYCIQDYfSGjq9mcny0bLz29UN8NYjV0jiRoiFq/qNkvK9FILAIhAKQ51VPjBH8aUIlT7VsTjwZUonMMf/3zzuhaQqqHDIag","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.69.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6673062},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"bc8b7a25b002312604b5ef0a6a07bc641ca38db1","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.1.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.14.0","husky":"^9.1.7","jscpd":"^4.2.4","memfs":"^4.57.2","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.4","@biomejs/biome":"^2.4.15","@commitlint/cli":"^21.0.1","markdownlint-cli2":"^0.18.1","@commitlint/config-conventional":"^21.0.1"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.69.0_1781573623653_0.014598453544664158","host":"s3://npm-registry-packages-npm-production"}},"1.70.0":{"name":"mandrel","version":"1.70.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.70.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"0994ea67d635b6a31266260137e587c7ebc3e800","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.70.0.tgz","fileCount":862,"integrity":"sha512-tjMm8ZvXahv9uCTT916vK1jyDnX0sVQgDpJqoyADeGVdV9C0Qe7Hn/rtSg9o9g1+mzxIL/zD3XTLuQUBtP8ItA==","signatures":[{"sig":"MEQCIE2SdNrRuXw1RLK6OpTeC8asISK5idCvelkOMfjEGcKZAiAH/LhYkJed1JyExBEY0k1PIHrrZGqvwsPHly8FMGGUhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.70.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6745272},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"54c84c70c3f16f3124c83f744bad336ec224848e","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.70.0_1781621550168_0.8432602791469996","host":"s3://npm-registry-packages-npm-production"}},"1.71.0":{"name":"mandrel","version":"1.71.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.71.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"98305b532d9bb735adf210be08ea54b41dbcc9c5","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.71.0.tgz","fileCount":860,"integrity":"sha512-DrJyp2l6T3RBbr8zoIT1Ero2EKKKQhw6VK1qdxa2ktwbTluEe/LvlDLIO8VRaA/AKEejYacpA7F7VP78RLzR4w==","signatures":[{"sig":"MEYCIQDpE5AfyS98GE4GT7JeCwKxEgyy1V63/Z/TC5S5Uc1h/QIhAOIhfMn1ranX0SS4UG+o0tOF3aIcla/BRNnsk+kspxfb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.71.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6745455},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"5c7430af1a3e8e4a43d3fef7677833a37ade8fef","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.71.0_1781645157050_0.44627121535858727","host":"s3://npm-registry-packages-npm-production"}},"1.72.0":{"name":"mandrel","version":"1.72.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.72.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"f86e09c19ae8a9cf7062ff9329a53a268fdfe0c9","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.72.0.tgz","fileCount":860,"integrity":"sha512-5CDjg30NOHc2NVgu0R6pKz+wENs50K2LGRkkmukqK/O+rLcFyHYVc9Wz4fDIaqcuXbQbbIduxazOQIqq1jHAWg==","signatures":[{"sig":"MEUCIQD3hrzs2d21EGg1Zr+zkHRwuggoMKLt3K6w1gPk2p2JVgIgDHjjd4ot8SltuxhTz8+pytZLzpGI4vO0ms9BlcZ9KhI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.72.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6756776},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"091b8ce99a0939df543effedba0eb91e08bef95b","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.72.0_1781662093306_0.5298292979529888","host":"s3://npm-registry-packages-npm-production"}},"1.73.0":{"name":"mandrel","version":"1.73.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.73.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"ec9ab7076fc8db936a44e315a8e8f76ddfbae72f","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.73.0.tgz","fileCount":864,"integrity":"sha512-HWBrQSg3QqCs4GiwDxqZBmCtXVFQNo2Q49qCAIolWfDjRlvXcNd7A708i6Xa37zCVjCuyoAe70FzHYFc6QiC9A==","signatures":[{"sig":"MEQCICk3w/r87ivVLyH79lmJJLr0rFvxe8yAIAHe1ATcs6+nAiAfeKZnd7F3tw0BgUSnB/HkFoKvScR9KWo10MPUir6X3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.73.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6793734},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"df21321a49f27eaca795f97b78d255900a765df5","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.73.0_1781725586441_0.4721600278194029","host":"s3://npm-registry-packages-npm-production"}},"1.74.0":{"name":"mandrel","version":"1.74.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.74.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"212d6db88c70548cf4655b87350912c68d6a90fb","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.74.0.tgz","fileCount":865,"integrity":"sha512-wG4bqjmRn9TwY+U3h04YKrlm5eE++FO+aLUXoxmSxGRLRfApz/mrkhakhHg1TM7dF5SrLthRcFFcWsJBB8UVRw==","signatures":[{"sig":"MEUCIQDOk3CJkvRSD8S0U9G6tPkEynWxqnAGFRRHh7LDmvUtigIgNsdP6+LOri7MWDOZ1SmCDyNdYSz0ol3ncKHM11fqYXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.74.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6799698},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"2dde5c3ce93a65129792e8765478391f7b4838fa","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.74.0_1781868023966_0.0000363923868107463","host":"s3://npm-registry-packages-npm-production"}},"1.75.0":{"name":"mandrel","version":"1.75.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.75.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"277eec154667ddc7fd558bf8ed9c566f5664d9e8","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.75.0.tgz","fileCount":865,"integrity":"sha512-Ws8Eh+pekVFBAugI55h51IQm+nn4eXfP82PsdVfhin9jTDD1r320Ut+ZgkRyeiUng7SI0Waj4rvCJXeoCnh+hA==","signatures":[{"sig":"MEUCIQDwGmiA0saMeZVTsC/MEht4ioCZAfpnNkaJX/0+ywpb0wIgFIiuX7wIgSYBe2s2dROzlvk2rBTFL7Is7MNlj87uLcI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.75.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6802752},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"9c58b5a23a379d46a1c631212397c7a4d594351c","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.75.0_1781870019340_0.1671023092566053","host":"s3://npm-registry-packages-npm-production"}},"1.76.0":{"name":"mandrel","version":"1.76.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.76.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"425c9353449bddef7c4f67e90b7607954408cd5f","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.76.0.tgz","fileCount":865,"integrity":"sha512-Ex6K1DRS0p4+8JnQV7YAdW5UmX9jSmlOCw5N/gcNLNtDWT23iZGQi6P/hQ7Y5JnG1WD7AdftmWmYnsM88760ug==","signatures":[{"sig":"MEYCIQC6vBvdLwsrpuS2hkTD/XHwkIywg3kTDKk+Ue8mW3GojwIhAOgxeTeZV09uW3qUJwbRCmqRbPbSOk+ARdSuyIME2GRP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.76.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6805000},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"1e2bee701fb9db93712e3c06a4f1aa0456ffccf0","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.76.0_1782246714634_0.7106222007359007","host":"s3://npm-registry-packages-npm-production"}},"1.77.0":{"name":"mandrel","version":"1.77.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.77.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"b5e2bf712c05e6ff179c90707dc7f732b5306d58","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.77.0.tgz","fileCount":867,"integrity":"sha512-9FDrNP9rRSPd54k9ggextnTQMNSE/wYsdgvVCQWVwjHESlEODwXBxmUWk6sP+Gf4U6Fs5/CyT4ssN4tGg7Qgfw==","signatures":[{"sig":"MEUCIHoXTEouTcM2eqzVHuJb5dTHlhZJMbK072R106T55kPMAiEA9r0RCkaZ+NvgK13n5jWMU3tuFR4eBGTTAGvcYitBlCo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.77.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6888318},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"07ad7c6ccffd2e529cc58575e09ec78edca86b4b","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.77.0_1782305102487_0.09347454443216519","host":"s3://npm-registry-packages-npm-production"}},"1.78.0":{"name":"mandrel","version":"1.78.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.78.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"905119eee5df377d71291692924a4f769a543659","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.78.0.tgz","fileCount":875,"integrity":"sha512-U33ngmmdZxrBE47c6fKVCe+V5rgYMHdxSZXnMEKpUSivy6oOLB4GBgU17ZIQTCvvWB2szwiJBbspCtmBaTe2kw==","signatures":[{"sig":"MEYCIQD7TCDFTmqFju5DE1qgtAa7FiYX017buDbbxGGELoPA8QIhALt5ky2iQtKe23FD4rWqv+g4xcNv9pJJE6bY99nNT2GX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.78.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6940330},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"607709aabeea27c7a4009d3327cf169c500aa47b","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"dsj1984","email":"dsj1984@gmail.com"},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"10.9.8","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.78.0_1782320203213_0.6996106594701665","host":"s3://npm-registry-packages-npm-production"}},"1.79.0":{"name":"mandrel","version":"1.79.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.79.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"c61ca7ef4f50c74b6235ea2e86023d9971f92332","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.79.0.tgz","fileCount":875,"integrity":"sha512-xVw+onIUbk/8JEZkLoF2oj0+UfeZExCisZYeNntGVK6jTdO7D4r2TuFtxzEWJ2zVEDXIa9BoQwgMj/c+GP2tRw==","signatures":[{"sig":"MEYCIQCuWTWcQmdZnRjfTV2NFWC//gqzv3GBPuNts6Ar7HYJIQIhAMLcK9S1/3Ivq88RwR8M0L4h4ptayhkwn8vLB9jTDw0a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.79.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6944701},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"8ec3a389c67f8cf899923f576a6e669961f86d00","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.0","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.79.0_1782858144231_0.4769707176471898","host":"s3://npm-registry-packages-npm-production"}},"1.80.0":{"name":"mandrel","version":"1.80.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.80.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"4608d797292b9df1e0d64dcfe4885d5c1db02187","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.80.0.tgz","fileCount":875,"integrity":"sha512-a5OBl7x2cdwkNhirqFtodj6VVrhAyAGHFw1BXxX/dJtJujV1e3jWE6NdBlEPefWH5b2fK3Gna6ZvOMRYSDjuJA==","signatures":[{"sig":"MEYCIQCWsdC6MnBFWfU/XkQfHC5FutPvaFRGCto4YTq8yFWGPAIhAIitD4Hz7Jrylib2bTD8kQL3Yq/KiN+z4O6PXVclShXE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.80.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6950278},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"2495f7433b5e9d58293172239033280bcb8e2b0b","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.0","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.80.0_1782872817530_0.30121690969225146","host":"s3://npm-registry-packages-npm-production"}},"1.81.0":{"name":"mandrel","version":"1.81.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.81.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"a6bece051f407d9189eed4e46cf82ec1410ea5cc","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.81.0.tgz","fileCount":875,"integrity":"sha512-GiJWqkeNib/eK/23XPNk9jKhBipAyPlHZeYmHqqP0N3vWu7glUzRJeExy6XtRT8lghCYyP3N6Mct8OX47RmVqQ==","signatures":[{"sig":"MEYCIQD0DFKKa+M1OqgBOKhI0kIIz6SH9NK6FkOaVz4YPHHsEwIhAN+PeLbXYc0PB9Z4nNGJslx+BHP6vTsbeTrLZh2IcGUv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.81.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6958065},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"3a8543e91c320069facfd4cdadf8309a9b1f6942","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.0","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.81.0_1782874858981_0.4064208396671978","host":"s3://npm-registry-packages-npm-production"}},"1.82.0":{"name":"mandrel","version":"1.82.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.82.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"198e3a0d777932e165209a29a37b17f15e047afb","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.82.0.tgz","fileCount":872,"integrity":"sha512-8zzMk7H3B6XQvmGCRn8aQm602inYaWZmDNO6eqNcGtUKGeBAQQMG3jJIFRitoVYKxm+nJOOe5UoHYIcpG6bmwQ==","signatures":[{"sig":"MEQCIA7j1AGj7OR5vVmH6rPN1CYdpnOYr3kceJcTCzmL4uwqAiB60hGbYjC4+qZGjkFbpr1zNZDFzNld8rgEFmbK3hi3Nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.82.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6961868},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"7023e130b48b453447041e9455c61692e9aa58e3","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.82.0_1783127638654_0.3545258006271712","host":"s3://npm-registry-packages-npm-production"}},"1.83.0":{"name":"mandrel","version":"1.83.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.83.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"2c3c98d57633aed6ef372b7148a89965c3ed1c09","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.83.0.tgz","fileCount":882,"integrity":"sha512-E16DmYaExPi8g4SFfzYIcItB+V9QQDs4Dc3ad7eYa5hZgNupvnLp9qTjD8UaA7KFnJCkanBaZuksYP0ReD3pnw==","signatures":[{"sig":"MEUCIQCQM5KwMO1DQZlkoA92LNJ070wRLN4eTVkBaOCHhQCazwIge+SliuaqvNSCn8+XGlJ94P5ELhGbRJRclrG5TzyZTzI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.83.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7047543},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"6f3c43a14f6caa07120f5f5128f25fbfc3386936","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.83.0_1783211646777_0.05447145192603231","host":"s3://npm-registry-packages-npm-production"}},"1.84.0":{"name":"mandrel","version":"1.84.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.84.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"e79420d93bb6273a5235da75393b948339ca5752","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.84.0.tgz","fileCount":882,"integrity":"sha512-BRKBcwRQJ0NlVfKCdpIagrB1C1c+CluLjymneAVo9lZI8urJO0+jH3w+SndbOOwMJrCwRM2JNS8lJv0mb2cv+w==","signatures":[{"sig":"MEYCIQDSv6WifX0tSkC7Qhw0WkV/IYDztIWgaJIwv/EejDB89gIhALk+fohx8d1bpl15J3itxkZ7cf+HsZfuCuifj5+WU0Uc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.84.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7052986},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"0e132b37e47b8bfc7cb30b23a2e4393ff3cd7b5b","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.84.0_1783275192624_0.8175869651216607","host":"s3://npm-registry-packages-npm-production"}},"1.85.0":{"name":"mandrel","version":"1.85.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.85.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"044c06713c1581486e7496a968acbf630c4000fe","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.85.0.tgz","fileCount":883,"integrity":"sha512-nq+jjhMsuhum8NBGmBkpJJS+swNPP1BCmloGkZjzBZdZe9yrmILHlHPgSxBhgMnrjzE8U9fTqzoMHoO2Z7HfxA==","signatures":[{"sig":"MEUCIAtkJ3HYh7nhNubghHnZ6WDO4VqTSuiG/tlejfJnxwf8AiEAg1LXKFmeEUPeEceul+4eV4BkWF89Sx93h2V4LajXBYs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.85.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7116234},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"f7b7fb007e202de3fcf233e564b9a171a8c02c05","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.85.0_1783385944165_0.33879317323493274","host":"s3://npm-registry-packages-npm-production"}},"1.86.0":{"name":"mandrel","version":"1.86.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.86.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"5f17c901def1eb9efd8891c2175e68288915ff73","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.86.0.tgz","fileCount":885,"integrity":"sha512-8NXBlKt4Z9fxyLFrhkBhrOtP4DJhggQ0uIbzWwI2RMUdCnSf+kWMYYIFll5QKxEYnjQolPX9VONMA4z4ULmxiQ==","signatures":[{"sig":"MEUCIQCrwnj52W/CT/luR3S6plMMPg58/mIUJb9q6jmZc/dMLAIgR4WZTAAsAsA8Ma+GO/WD1PkODroqpoim8hoeBlGk6Uw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.86.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7151907},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"da054d221c294504549763b8004bfe749c087a1a","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.86.0_1783443742527_0.16306070958649754","host":"s3://npm-registry-packages-npm-production"}},"1.87.0":{"name":"mandrel","version":"1.87.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.87.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"f6a033a6294ca410e5d03f6d02bb79f69c4db9ea","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.87.0.tgz","fileCount":886,"integrity":"sha512-ILds3BOWmrgv/qSX4IMGifyI/JDAbgViQWGe269Sc/L9JuS/DPPZTyEopVGam+aYXaTcb/K1un3RwfzA8McNyQ==","signatures":[{"sig":"MEYCIQDtuaCTy6bZw+Yt9ufbQSDEAkEXenk/+vrx79F05IUXWQIhAI4JR8WoZXzyU57JLE1mQ6NKYM+Sc65EDW9JbkApd8br","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.87.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7202877},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"63d52a0a877177ad94729a6a47fe9a597412a5da","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.87.0_1783525453337_0.9105005120785048","host":"s3://npm-registry-packages-npm-production"}},"1.88.0":{"name":"mandrel","version":"1.88.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.88.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"5d9c25224e4875c1b51ecb1cc652d0d24e0f8d92","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.88.0.tgz","fileCount":886,"integrity":"sha512-FEtRZB4M5e3g80tUWuKcoS0+7P6n+uZ8TF58S0ON4SG4CJl9uWszj6mSuhVL62O5lE0bmu3Zwgx4AaJ70+jrIQ==","signatures":[{"sig":"MEQCIHehRVflnBNBzfWoL570RLHve6AgT9h+AYaeeKW9lJDuAiBHJwtA29bYrsxkyQBNdvhgzyUSbURmrH7ICK4fcuNAdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.88.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7219042},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"6e332a2c397dd56ea4e68008c43e4e7376fc011b","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.88.0_1783595557846_0.1344297617201009","host":"s3://npm-registry-packages-npm-production"}},"1.89.0":{"name":"mandrel","version":"1.89.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.89.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"8e10114b11500e7f60b081e6c671bfdde77c0272","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.89.0.tgz","fileCount":914,"integrity":"sha512-GxW3txMChxtJM0UZNzj+9vB6UgLda6+rdJwUfARi9DvwXctEj7aeNmbuK3wFMO3/vV/4vjxoQfhq67UdHn969w==","signatures":[{"sig":"MEUCIQCY1/pwaWbZtlHQ14ITNHDRL6GPIOPiR9MeXkOpdGxFMwIgGufh5AxjMYK9lNqy+Sjr6jY4pw1q0nXzbPNLGZp8M6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.89.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7483770},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"0109164181db90507f08fe45a5311bfc915059e8","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.89.0_1783807766995_0.971008061117332","host":"s3://npm-registry-packages-npm-production"}},"1.90.0":{"name":"mandrel","version":"1.90.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.90.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"e0dc9590ddbbd375c608aa167bc04bddd7658bce","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.90.0.tgz","fileCount":915,"integrity":"sha512-V3AksSy8pYTBXIYE5fXbcd4XVmBqomGaD3v7jU4ZFr4Yz6qX9gWVuNp7YHOEitWUZulKjVlB+vzyy7E30Kw8eQ==","signatures":[{"sig":"MEYCIQDpPcyCOchzmAbqGIVlQeCxmLaY7X9fEq/UIx/AQwVXNwIhAM3xsI1QKXGPZfkCGCKlRhJTEygRVPN493nsaWiGNW0i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.90.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7505397},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"618bb77414e6d1522c7d99718471d79e0014f68a","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.90.0_1783862714389_0.1961752575679916","host":"s3://npm-registry-packages-npm-production"}},"1.91.0":{"name":"mandrel","version":"1.91.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.91.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"3e56f6693a73306b5816a9da0c5bbd4f285846c1","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.91.0.tgz","fileCount":916,"integrity":"sha512-Px9zj5TVppM0JHpPh78Wa8yAUIMVCWstL1ExyK68nwMSQ6JPjqqCbDV6kcnWtartQQScdxRG2K4FcqlfKi/lIw==","signatures":[{"sig":"MEYCIQD7kjfKlpacwH84dn5i3gGbCbIyedsRcqVVwLkJGWg97AIhAJAxEp4fvg7cOp2gPNj7lKCGz31yaigx+GvivmHbczDB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.91.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7517842},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"fc86caf5e0876ba0ff74bf265d74eef5a6cfb2e7","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.91.0_1783873532240_0.5618098739410622","host":"s3://npm-registry-packages-npm-production"}},"1.92.0":{"name":"mandrel","version":"1.92.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.92.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"54fb9a434716879e29da373858dd73f4e2ad3351","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.92.0.tgz","fileCount":904,"integrity":"sha512-z7WZH3DxYAeciISp+YEnrrxbByW1LRVQpHuu1LgRNFzva/guh3CNToTjrPBuWqG5IAxh+AtL2tpHGJ15IhFcXA==","signatures":[{"sig":"MEQCICLjuNzytVAyfCVRzzWOUJb+cIcjqa2LBZT1Sc4gb3T+AiACXyzszScJRE0pobmTlO7jPf8+1/7h4Ei0sv/jiRyZOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.92.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7480825},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"ffde967d9c3d27cbb01dda9a5de8c3158e9fa0be","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.92.0_1783889351089_0.9225591106000604","host":"s3://npm-registry-packages-npm-production"}},"1.93.0":{"name":"mandrel","version":"1.93.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.93.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"ca75d285ffb366f2a6ced9fc8378abcb89c826ab","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.93.0.tgz","fileCount":905,"integrity":"sha512-vayZKKJCzBIjpN82AdXxVwD5CvK3+pUQiDp+GNRC6tF9CI6Y2yzpeNcE4cc6DGjF1JEhGMLrilHcykJGdJbEBw==","signatures":[{"sig":"MEQCIEg3Cft6QAxqILq2qdp/r55F9fIVkCe1wtarmt5b2P5dAiB/C1fvCfdgZ79CeeOMlHfNqrmmTrdxCuQD7N0xIrrPkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.93.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7502807},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"6830bff03d6547efdfd15be8e0a567c066852ea6","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.93.0_1783897272959_0.8968341829463713","host":"s3://npm-registry-packages-npm-production"}},"1.94.0":{"name":"mandrel","version":"1.94.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@1.94.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"e17283efce217a4a4a2fb8f2f28bc515e2665dc5","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-1.94.0.tgz","fileCount":869,"integrity":"sha512-6+bfU6xWdWwRcbwfZ+TEeKEo7IXftWVM/ahSW23RWFG+fdhV7fhM7DD3azSm2jAPqwdfU0Teo5pJvsz+4mqdcA==","signatures":[{"sig":"MEUCID+2e9yT7OjIPyDrrA8ds1wWxFP/yRb9qrD+GnOl3Iy7AiEApO1ug1MUHMMPbRdxMv13FszOXuKH4VIu/ISC/QywaaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@1.94.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7339870},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"98c52df080378e792c53133f2d7bbb75e76911ae","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, personas, skills, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_1.94.0_1783960018969_0.781131989989128","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"mandrel","version":"2.0.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.0.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"6ab107e258082ba6337a2ba7c109f9e10dede002","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.0.0.tgz","fileCount":703,"integrity":"sha512-cfbNBQ1Hpu1apxGxkWaxfAQPUKQePXUPI+Pe/+OBGsNUkAqPdHETJqY3vk7rvt6vzyNS45KU/f2z8smIaUj0pQ==","signatures":[{"sig":"MEYCIQDxWVvlJcw7gXQuJ4a9ebhw9pqW8BifBPsfXVZHteIMjgIhALlRqgfgGET391fHHiNY/+u4Jv5qOwI3LcWYPg9paBq5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5404157},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"c94917391fddd6b82ce9e8a0e2b190b7916dddab","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.0.0_1784149836296_0.6599617311618335","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"mandrel","version":"2.1.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.1.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"59c7691093add8d52497de106a7050690fb23c6e","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.1.0.tgz","fileCount":668,"integrity":"sha512-ufR+IltKQZDbN43mZbLLBKTd9kQxQW5/4KeyXNl1/lwuMRtzhrfrK5nxAWnUjGjAbSCt5UGjvo4pNeLMEqguUw==","signatures":[{"sig":"MEUCIGlN12nalJ0ez8OmRp3TTMUHy7d2MZ8ZQ+j4qDW+dL11AiEAh/qaIhoIzKj/OALEjAMv3Typ9ym7jD9EMJSXagPx9jU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5438697},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"9fe550e12e14e39017a3d7c41b0288d1166d80b5","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/quality-preview.js --changed-since HEAD && node .agents/scripts/check-dead-exports.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.1.0_1784287341067_0.9083833358846336","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"mandrel","version":"2.2.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.2.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"8ae6a3155c39d97c240e99bd2e1a1e92f8a82575","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.2.0.tgz","fileCount":675,"integrity":"sha512-ipsW38kPC6c10id+IeAwINhuwEwxoccbctQ2Tm4LesT5w3fcoIps7+P8sI0ZwM+Q3wODiNaHtBhZ1WiFLoSfCg==","signatures":[{"sig":"MEQCIBgYQjVsJrz/U2C+vvE1inKI2StSyL+AJPlgl/Gdd0DpAiA/Xs6nyG+D8N9HlgLXGXHb00KF8rHNeWV5JOuyq5A1/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5506789},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"786ecdc9444b578e8c022116c2e081e00a15eb3a","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.2.0_1784303055274_0.044973288480772755","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"mandrel","version":"2.3.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.3.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"0a192966384acd7bb11fca5a272e577adc8fd1b9","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.3.0.tgz","fileCount":675,"integrity":"sha512-rS76LUjxDVsBx1D6LOLlO3k/7EuFRUwjVPM9m+bDy4/8f6QWz7DPKNSto6+xaUXCipoLzK6lPxxjLwFphXx7aA==","signatures":[{"sig":"MEUCIQDqMLtdXj+YK/+mf5IawDHsxByGu11a7JRJdZVl6VZzVgIgARle425X5pQ7jEalodd2pfLkJyirF2wSUP01mUMMQU8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5510269},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"4d9d32cbe3420f8c0fed41ed428e1b12b114f142","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.3.0_1784306132768_0.5609685686204138","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"mandrel","version":"2.4.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.4.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"06b9de7ea2c2efb99b01373696074d127de96d47","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.4.0.tgz","fileCount":675,"integrity":"sha512-tmScG2uINwJSsbtwAGGMbp/rvE6ef26SZd5AIdYre9vGPbe5F1BLsIhkk4fX7uJ9tx8XFR+/wWJPLCs9+Eog7A==","signatures":[{"sig":"MEUCIQDqSmXJhovS5yLYtmANKE8mzxnQ8G3zrRkxTze6/GJx7wIgf/QNRoijTiCJlK4glLJ0DiXbqnsuZ+IVw6GV6hxizQ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5539277},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"16aa7f689cc0e9e995487714ab4519d88fde7cd2","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.4.0_1784319266363_0.41343783533383527","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"mandrel","version":"2.5.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.5.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"a488bb10996ea7cc29704df89c6a3e9a32656504","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.5.0.tgz","fileCount":682,"integrity":"sha512-uvtccUohm5HTA5UurdnBWyW4xYM6NJuRQoFYtTxOgJWVF6JcEZnvP24rYmi10OC05A/PlMgx2ddZzWJ8r9hhiw==","signatures":[{"sig":"MEUCIHwrJvwJeFnYBu1Qgho0KVBJue55xFioMvu2/IvWOttEAiEA0l4vMx4BGWqirXz0GES/5cN+osVdCv5CRoXo1kZ8Y+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5673220},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"45757f366d7dbf5e5f2221520b07fcad22042613","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.5.0_1784501440947_0.32412957986471813","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"mandrel","version":"2.6.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.6.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"f09180b4e86b1503a5d1efeba04800f519131b90","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.6.0.tgz","fileCount":682,"integrity":"sha512-GkyNnU/ocx/hM9ZMPG8a/dufLVrEX2EE8vn3r1RyCYfpElnuVl6ee5AuwNoCTXayQ/Ozw+svut7lRzC2PAIO8A==","signatures":[{"sig":"MEYCIQDPulX++9AzxO+OA55wf3TyejJA8XcjR8kH4ZNDbl8x4AIhAJlUeIV7pbTLWY9ztI5+5XiYfI942euHC6P3BV2VqntZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5685228},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"791ccad9d7a4d2c00cceb087620b77aa0fddf5e0","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.6.0_1784544412386_0.5712645534743452","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"mandrel","version":"2.7.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.7.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"719113174fb7df89d3e19b3a6faf291399ec917b","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.7.0.tgz","fileCount":682,"integrity":"sha512-TquYAluGuZTVBvtWc/vlsJt8lynamm3IGGlu7U07f7gFlz11n3XxXKisEq8Fi8z67qED3xL+Ufsg+PkFgdXiOg==","signatures":[{"sig":"MEUCIFIgLrM/lHxRReKWWRYsC1F5xvszulb4VrFCPw6Hl0TfAiEAv9Fg7A33i8GR5WRCS3RdKOP8ts8nEBju9W+VV1DlD/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5695859},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"bcc01922353a0dbb9c6749f4222f0c1f3ebe79e4","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.7.0_1784627661112_0.9115640981773498","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"mandrel","version":"2.8.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.8.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"57b6769a53a6c48605584e5b4ad571a61eaa2b5f","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.8.0.tgz","fileCount":687,"integrity":"sha512-aYQVcH3al6enOnp3BGisM3goe3nXCRd0tbA6rFGpCx++C/xINUNUHcbhXwuqnLFDU9dyLev52k3fVTqd9rGQuA==","signatures":[{"sig":"MEQCIAW/eHMlQwH7HNtxxateeiUfEAASQ8iFp1zmE4VCSVR0AiAlObPqNz4UibpXodHikW2vDnNz0Xkf/PY50l8i2H2KnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5500820},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"8d3d4ef7aa681efad9c87372271e16c64408b1ac","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.8.0_1784654047536_0.995801246976165","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"mandrel","version":"2.9.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.9.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"7d1e601221e594f9d9d9fb1570b3e28b4fc8efa8","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.9.0.tgz","fileCount":692,"integrity":"sha512-M9tJ89OjiXm98L0RvIimAVr6Nl0KW33eYrPZ/6Z/pxARUuh/GN3ico52kq3fvuNiwZlpzMXcrNIL+TgeWhdeyw==","signatures":[{"sig":"MEQCIFmOgZpy+gctRi3p1XC/lalOaoRrlFRXnh84EbUHdNnXAiBWwCZbUDTn+3/qD+Com+oRSANPPYmPaOd8z4aQY16TRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5562342},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"679aa92d00ae01ed9a2e6c88cea8e125f3477d1d","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.9.0_1784675630019_0.3198937047516244","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"mandrel","version":"2.10.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.10.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"f56e68dc07861c31c2bd02cb7ad3af219101ffff","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.10.0.tgz","fileCount":698,"integrity":"sha512-7z/PiuPXDt4gDiZ1wm7xoCOSQct+QRnYaFKf01CCqMUACufcnG8dWVmiVGUaDqK5+P8CyD3w9+0u3woJK7iBgw==","signatures":[{"sig":"MEYCIQCmBOiRTZ/wwIZ2gxNfO8RRAVCwiSI1Tg5xGbWhIKR3WgIhALLfTnVPSgQqhqtNCwbJL8o0reavSCnAiq5jNWBMyKpZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5672631},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"38b11dda9352708f56ab988378f5b98756fb9c21","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.10.0_1784825058805_0.23525817497657053","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"mandrel","version":"2.11.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.11.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"cf88190cee1b330a9de0f6211dd9215f7a3accbf","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.11.0.tgz","fileCount":701,"integrity":"sha512-Q/vVPvN8/T5VjeYsZeqPGQ33NsHC7h2HjgSYpA2qVmHI7x4XAgiyGLOlqiIKPg6HTAsNPMGiBeX8yRx7DDrClA==","signatures":[{"sig":"MEUCIQCMrV1hYB3QzWkKVt0ztkfjbGhIbs5gJlUqxy96Ut29BwIgGi4x6J21WdVRctJNFL0ZxFE2w56dgFA9jTiwKEyI1Rk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5715698},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"4751d59be97c9f0195253fdc488b6843b42e1aac","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.11.0_1784839824189_0.29210767665541404","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"mandrel","version":"2.12.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.12.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"5d415fa73b97bdc27eb3394455d95d849d4e7c4c","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.12.0.tgz","fileCount":704,"integrity":"sha512-dJom1PnkSo78SfzOn/myn/LcbVksNvK2b4XMPJUz9GdR0FzgKho1ypwN8B6bnfh1+aH4XF2fc0JUACLKPuc3jw==","signatures":[{"sig":"MEUCIB6O51de3ORLgq+6U7Mr8Z6ZeLfi0mgH2/HpGmTxXrvpAiEAv4GHhSjzf72RCEgaRV1ZBegu7h4UhfHdoDCtD7WYGuY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5737330},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"9d99ffc50dd1f2a056b5e4ef4e047459ac7b55ec","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.12.0_1784854086801_0.4584757904187762","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"mandrel","version":"2.13.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.13.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"2f9ff32df52f48d01bf798deefe625b158a0dedd","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.13.0.tgz","fileCount":707,"integrity":"sha512-MDUZ05NZXvIk7bSgsxCb+uzxRDc3Wzn6lXfbFH8amRmIGKggruBxkL2o5raN3DdRl+c5d2zXwW4p3QrYUb+Anw==","signatures":[{"sig":"MEUCIQDc5tFUwstvk8qxbcwVs/Q105CpQATl3GmtvvwVOD/FuQIgXniwx5VkQfbNq8Ivl/8XsFOwS01mKTKJHPqsLf4za5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5785057},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"4ec95cce3490e4c56eaa3474975669a72682b9ed","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.13.0_1784893750424_0.9794115599166138","host":"s3://npm-registry-packages-npm-production"}},"2.14.0":{"name":"mandrel","version":"2.14.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.14.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"ec26f098d39d90f42c988cc2a35ebc1cee9f3729","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.14.0.tgz","fileCount":707,"integrity":"sha512-Fwjf74Vj2KdhAjuMOWOS6XROCEuVt+tvhU/t7iyhBbdQ0CsmSR/qb0aWgc9uWYuBbRlV+pMx1zx8cZC4ZdJtMQ==","signatures":[{"sig":"MEQCIFFUxqaLl74+MKU9G+yN4EHCpPgz60hsBgOyUPj6BdR0AiBCwbNQgk0V1pLwkR8xb8vEgRx4iLNNjnMr00JmzCtrBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5798947},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"6a71efb4a6f43eb58fe0024b899a31bd00f72c78","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.14.0_1784923348075_0.823016451012109","host":"s3://npm-registry-packages-npm-production"}},"2.15.0":{"name":"mandrel","version":"2.15.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.15.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"44cdc650cc6b0384c748df02774ecec81a3bf31b","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.15.0.tgz","fileCount":710,"integrity":"sha512-8eS2Xj2nGt6oR8mK/bwuZhR9lA7TUvP6qgChC8hNio258y+uoFv2aPXO8hhpctNhaTpL+CqYioCFesx5b36mBQ==","signatures":[{"sig":"MEYCIQCHLTOiCqKpyt3pxuv1EbxKX6vYtVw/ASk+VyYM3h8rdwIhAMkvGhAo0bPw7t8XeTJi0cU5PqHsAIhXI38FerTKJQ+S","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5861665},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"76c749c654bb476035d917dd17113a75cf3e1b6d","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.15.0_1784980058848_0.5541519134180246","host":"s3://npm-registry-packages-npm-production"}},"2.16.0":{"name":"mandrel","version":"2.16.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.16.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"ccce27e3d9b299419089e71e3a9e31eed8e8863a","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.16.0.tgz","fileCount":711,"integrity":"sha512-ZfWZwc+U3GtTpICs/W9gCEO+ALGiLC9a4OfnqbN51hX/SjNQRqgm2E/weW12McMtHqCHH7xrwCE7WaVhnlaUmw==","signatures":[{"sig":"MEQCICduPglMdHTHfBQIyM1TqWG3tiZx78vwhwjUd5KRuqB4AiAbhpYiYs8KILY2O3MUHkXqnigaoZUbG7c16f7UKAKdtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5894028},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"d45c064d35fd7b281c1788920005e415e92e471d","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.16.0_1784991056043_0.05297374556125445","host":"s3://npm-registry-packages-npm-production"}},"2.17.0":{"name":"mandrel","version":"2.17.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.17.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"3403729914ca9ad85efa231b324301b8ea533e6b","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.17.0.tgz","fileCount":719,"integrity":"sha512-IvSFdJ7W2aKdhg4HP9VKbdqoVp1fF4ddUYyJcLEYeKBui0dLsOwVYV1KU/NSY+81ua3Ve22YguOwkBcNLSY8NA==","signatures":[{"sig":"MEUCIAW/BLqX7Hpx45kt0vD8p3rBJzpAZL2my+7ArUD+yZysAiEAq0n7gYir3Pk9W8jpce43jBjokZO4YRH01XUPBeOMdPc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6015001},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"9871f0f15eff28f96012e0e729553a5abeee0aad","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.17.0_1785078153944_0.05818266408281825","host":"s3://npm-registry-packages-npm-production"}},"2.18.0":{"name":"mandrel","version":"2.18.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.18.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"025a3b6596b26eafe59a20f5898f6dfb39e476c2","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.18.0.tgz","fileCount":720,"integrity":"sha512-xlugV5LH8D2XixGmDhJZfrhdCcwrVoLYvbOoncyyrXNnVDdeTgN73sR9u3gmpXriOwoD195n3juQinYPp6OVbw==","signatures":[{"sig":"MEQCIEUyzmacryLNqzb7CMrncfhmRNE4/xyQ5hmpoEsawiTpAiApZScTiFbwwSYtALAEN2eO+qClcg5Est2VP4ETxTvtvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6046570},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"d4801dcaac73b53c0589f455a86c6e35822c0ea8","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.18.0_1785107055663_0.7338430536639833","host":"s3://npm-registry-packages-npm-production"}},"2.19.0":{"name":"mandrel","version":"2.19.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.19.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"fb848709476eeaf9ef081bbfd2ed65ac97507aed","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.19.0.tgz","fileCount":720,"integrity":"sha512-6bofDQDItOi2eGFLSTcvxsZ7rCsbvYAVwqF0GMRFEq9GV1n18GFXDB8wns//8Vgy6y7u+aJK2HNu2G9Cp5cm2Q==","signatures":[{"sig":"MEUCIQC2y64MXjEn6tOLOWpQr/6u9q98BUu7+6FTh/iuLyDa0QIgYteAS9smQPl4TXVvtrLo7mvcqkgROpyGlIp5HNUcFh4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6052155},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"3c77e8371f8d3f615e8f8020c8a51d520779320a","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.19.0_1785113714930_0.2990569764021336","host":"s3://npm-registry-packages-npm-production"}},"2.20.0":{"name":"mandrel","version":"2.20.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.20.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"abef5780a0e86e51d433c7b9e1456626df3d22b0","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.20.0.tgz","fileCount":719,"integrity":"sha512-9t50Yb6IF2tMzYMaHtlsDyA5JwOCK8DQ2KxCynEHjBWmXbGK8vIY7R+h7uBBh56YZQtEyUddPydBetk8RGLQ4Q==","signatures":[{"sig":"MEQCIH+G6gyOvyVVCrj+1MWuWFBLvqWRwFQ/nLJJt7Widx2bAiAFF/3hvRdCuyiNcLcgx60qw1UqvNP1XCVrs6UL685nhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6042560},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"2d813e0307ee08d4745a303fec024768a1e378de","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.20.0_1785177783732_0.7129356279576864","host":"s3://npm-registry-packages-npm-production"}},"2.21.0":{"name":"mandrel","version":"2.21.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.21.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"7ba91b525d188366f9841b1e338df984a7b95f33","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.21.0.tgz","fileCount":719,"integrity":"sha512-9xf9rIBTKTPSiTke1g8C3taniuEC/xqXLFlzpAk5SA3+KZU1y9iYsxE95mdimuLQDGqrzTzbn4+ejpH7negn5Q==","signatures":[{"sig":"MEUCIFJvEmHCC2a50p728W+oYCWtTCeHiLGiKOGwLaVt4gYiAiEArWsENU87O6YOqjGlNF3KSrqTstjRddawN5SowflwB/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6077285},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"7b1afa756f4f0c054762ae9b682cd009af611fef","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.21.0_1785202438031_0.22146592265375653","host":"s3://npm-registry-packages-npm-production"}},"2.22.0":{"name":"mandrel","version":"2.22.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.22.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"9b6d573028570fa3f1de3b9fc65c861c400a4601","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.22.0.tgz","fileCount":723,"integrity":"sha512-+CttKjywR3D/W4GeazuoMhSSYZGh/d646gbKyEyGbZ9nCEWmZD82IjGO1A9oy3br0W1oTpUV87U9qrLw+xwIzw==","signatures":[{"sig":"MEUCIH5g7yB4pluy1HKQJdI7QkOdu3vuUv/ykLaEnGPSQN+TAiEApVq/TBD06ZDU/aRblFSXw5ttiUs6X0w0eCuXXkMBWuo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6178450},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"95ffd832d2695e56555489d61187baf04bc439d5","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.22.0_1785410316005_0.978493282596238","host":"s3://npm-registry-packages-npm-production"}},"2.23.0":{"name":"mandrel","version":"2.23.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.23.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"28df84347b112c62150191afa7fe487b830924b3","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.23.0.tgz","fileCount":723,"integrity":"sha512-VB2oXv0lIgCMeKwG1li4fRi9KBk9ysL7hjROArZuxxVN9XfiR5j3UQzB9SWZnqMFlyVgmSyvyQK0dRu+Yc1lVA==","signatures":[{"sig":"MEUCIGzupUGnjelTjLgSSHWwMQ/285V7L2sJR86hVKrgX8CGAiEAxpFBisXcmbkTSMNvllxLrHyVip2eJUGLWrTQyypCeSg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6203663},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"ea0e59137fcf31bcde05b75705c4e4eeb2093356","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.23.0_1785455139491_0.759599114808865","host":"s3://npm-registry-packages-npm-production"}},"2.24.0":{"name":"mandrel","version":"2.24.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.24.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"f50a247462d476395c4999583becedb9c6685ec4","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.24.0.tgz","fileCount":728,"integrity":"sha512-WOV5frB3AblfMXnuleXZlAvJKa22uOluCKiotuY8tTCx/nhv0Z7m46msnDSwz59W3cHADMaNHEyv4RTqEd2DNA==","signatures":[{"sig":"MEYCIQDtBB972aqUGs9nvcnm2hCRUblm8mow5IIPulhU0/Fu0AIhAKgfHWUE7DEQ9ZCDP9AP+APd8AAF5N4u+kq/mNhJozZD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6254701},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"d3712ea622aeee2f48596837a13014cce1c2c738","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.24.0_1785502848932_0.7745994830597978","host":"s3://npm-registry-packages-npm-production"}},"2.25.0":{"name":"mandrel","version":"2.25.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.25.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"db1b9822a8b492648e46350ee05603f007c6a910","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.25.0.tgz","fileCount":732,"integrity":"sha512-9rxsIOCsVCRfYrHZTKCQSGIPSTzeVFn/tZFUl3wX94krWaTxMcHdJq5eGCBoxt/cNcrXfX4uJx0l/S2WmmQQFg==","signatures":[{"sig":"MEUCIDnOcB5N/3Q6+Tuw8gnGQW/5Pz1eYglr9eUSqv6Ra7GjAiEAg6gHfVy/spa4UtI6vGDfXQ8w2QA/7USCm0Tpcw8VUyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6433942},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"1b565c9a0dc7f3a7a3a0b8f07c7c46655ca603fd","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","pretest":"node .agents/scripts/test-wrapper.js && node .agents/scripts/validate-skills.js","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","pretest:quick":"node .agents/scripts/test-wrapper.js","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","pretest:integration":"node .agents/scripts/test-wrapper.js","check:context-budget":"node .agents/scripts/check-context-budget.js","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.25.0_1785626240817_0.3770301665907758","host":"s3://npm-registry-packages-npm-production"}},"2.26.0":{"name":"mandrel","version":"2.26.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.26.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"468c55a7ffa29330fc07a6a0f431b5e0af715d68","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.26.0.tgz","fileCount":758,"integrity":"sha512-SI7MAQ7NjpKPcbnXP7lYcNwEw4gVoV6Ll1wOSdUziQbk5QyzN2e+4z6hEP8wz97Fh6SRfBvkoo1LOm6cxoDqQg==","signatures":[{"sig":"MEUCIQDdfNb1WIDv1ZkDFdYngTqXfarJBZkZ+pcc0PuAtAnpyAIgbR5PRmUtm4/3pVLQi4bjEuLvokzPK/mwr60rv6wvKZI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6699582},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"9aa0d2fdc8b4f00d51ae34dacc5f34e0b262270c","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.26.0_1785753456428_0.35874096996166216","host":"s3://npm-registry-packages-npm-production"}},"2.27.0":{"name":"mandrel","version":"2.27.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.27.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"43e019ff423b46110240460e7fa1a6fd68e2491a","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.27.0.tgz","fileCount":758,"integrity":"sha512-klAc/zGI0yJ2vPcAxOy9tHbiBoexGobG+osssBEKFPD9okTahNJTlKsmPZg746aOqJ+PRwJ3yidNwBVsdBu8xg==","signatures":[{"sig":"MEYCIQD1xF8MJ0Y79ILhb94c388Z6R6el5C6pk1X6dv3PUYR0AIhALTQV8zaUJm5q+V0uDXR9MI0GV/tkFfEvimoox1Qq50g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6700831},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"4f1283bf6fb3b9f34e8ff6e60e4de978fcd99a8f","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.27.0_1785758202609_0.7857027516293187","host":"s3://npm-registry-packages-npm-production"}},"2.28.0":{"name":"mandrel","version":"2.28.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.28.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"55f82f9b57208fdc644c0b645474904a8987aefa","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.28.0.tgz","fileCount":759,"integrity":"sha512-saAPXuthEiOb5AFTyePa+kdLXvW6RixDZ3ZTMIov1GHxFH3oa4hTze6bJQL+982PXeppw77t0GkkB5BDndQ0Ww==","signatures":[{"sig":"MEUCIBPbBlpN054ZN4tiLcO8R1ipcs7yNXeG9PEheSereR0yAiEA2y3u3kEhn6rPUYxBqDcAW1RF1P5Ad2mH57jBVKLV89E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6707383},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"8f8d7802c67582ff7905599597f10c85cd6fb792","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.28.0_1785765042710_0.003390077576316486","host":"s3://npm-registry-packages-npm-production"}},"2.29.0":{"name":"mandrel","version":"2.29.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.29.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"d4970ab3dae8caf2e086e29986728d8b41cdaf53","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.29.0.tgz","fileCount":768,"integrity":"sha512-u0ETlwlwvQa95+92nkhFfvy2SbZjOnUKYuGFO5l9RmqJ0RupjuBuruq5uYAf/+X+RQ9kFmLSoqgkhX4wjgANZg==","signatures":[{"sig":"MEQCIEIMSyhMJdRTGogop8v8MW2RMnyCaHH+uyqw95s2fk2xAiAjhV02sutHzWg6uh03YnPSs0Tqp/xVNew2orIExwSJLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.29.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6739930},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"260b88c13965cd80101b40f179b7dbdc8167eb67","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.29.0_1785788418846_0.2557671461644633","host":"s3://npm-registry-packages-npm-production"}},"2.30.0":{"name":"mandrel","version":"2.30.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.30.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"ec05381323eafc550ad6390723547812c0d4061e","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.30.0.tgz","fileCount":768,"integrity":"sha512-3a6dene33rZW6ndTlw4WGgpueli2Alu0SaqdEuTjSmnIsRIJg1fVSwlPM+4+Gpk8+hJUvPhzPfVGIsXlcdw9Zg==","signatures":[{"sig":"MEQCICoP4LQ+LzbzsBBKxLN4XZ5KSCD5fKvj4JbtyHp6G3NAAiBviz8LoMjoC1bndFPgkaVtkUoBybzB1FNMBfM3f6ID/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.30.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6743870},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"31eb0d5e10f1b7878176d53d3d85a9071971ffc9","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.30.0_1785809780046_0.654879637665883","host":"s3://npm-registry-packages-npm-production"}},"2.31.0":{"name":"mandrel","version":"2.31.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.31.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"c886fa7b0de4909d155d89dbb289d1d810f3e4fe","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.31.0.tgz","fileCount":768,"integrity":"sha512-IxaslBkUq2fXt8P1FDJW1ecKSAR0ECG1J0eis6xb0wzZKTK6ABGJia6YwHNvkUnWf+J5gzguBPoY3XSWUxuR2Q==","signatures":[{"sig":"MEYCIQC5OecvDgOONhJaFhUvLPXLLFoEU6rx0LoF/oqfPlZSLAIhAM6lFiqogZVRXMiM0lhVqtbM5EZEBgaRliryGquf6IUc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.31.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6750677},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"1a0fadc32fbafdec0d991ef3183b6733c291e167","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-lifecycle-doc-drift.js && node .agents/scripts/check-doc-links.js && node .agents/scripts/check-gherkin-placeholders.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","string-argv":"^0.3.2","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.31.0_1785929464552_0.8861104721085771","host":"s3://npm-registry-packages-npm-production"}},"2.32.0":{"name":"mandrel","version":"2.32.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.32.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"195e46a159751e7c6d941bb3c48d91624fb5426f","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.32.0.tgz","fileCount":718,"integrity":"sha512-dtDmYiEQDJwEVwZAJXA4l4kEhtSfW+faiTE/xiQr74HUy9OX4Eq+1FDYG9DuAuOmtrrejDca9rqLa32vXne6pg==","signatures":[{"sig":"MEYCIQC3BhCwVwaRKZIN3Gn3eP7kjgFa3eIrZJOHVEspw/kn6gIhAIj6sr7hk57JyXQYLt5U3jqFUqhFINyiTmUYzVlubJE/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.32.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6610159},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"ebca60c15572a30245158f945fed6e92a2f16c6d","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.2.0","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.2.0","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.32.0_1786022843106_0.28498682205151216","host":"s3://npm-registry-packages-npm-production"}},"2.33.0":{"name":"mandrel","version":"2.33.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.33.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"7b214b382a06b0600169de65943490351af44484","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.33.0.tgz","fileCount":723,"integrity":"sha512-XYmbyMtCZOGq5qA1k3yXt1ii3RVH7SzJqs4OhV8LJRf8P8a4qEEZ7vVXAAxlmdaxu0ZR7+KyBbeZBjHdj595XQ==","signatures":[{"sig":"MEYCIQCBuHtw+MYA1lzcfscfquHZnaYpYs6UBeWDT1fjfIoywQIhALriA5FwNW3SXnop1kTY3HozlgFjDQet9pbzkpSx8TAY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.33.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6703342},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"88eb3a1132efbfe21a654f9a548e76a6e4091aab","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.33.0_1786118069866_0.8920980283828355","host":"s3://npm-registry-packages-npm-production"}},"2.34.0":{"name":"mandrel","version":"2.34.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.34.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"256d2b2597d8558b8692284aefc3750d5e23735c","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.34.0.tgz","fileCount":724,"integrity":"sha512-cn5JSkVH33QNcGpi/GKSG6VB6ZjCgAML9WMhemn40sDvWlyxUr58qfgxjhYnlxsMJz2kiXyemU520F3iT40p+Q==","signatures":[{"sig":"MEUCIQCWKBpYGgBEoIvJwdaT/QGvQNihFdVmtktZXPX+tRnNNwIgdUQzckIb+do1PdVhK6jOlkc3sJ4BtJog/lIHy42uVLI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.34.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6717584},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"f4519dd534d0e65655feedcfe4ea1f3f4e35b044","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.34.0_1787790776785_0.41905377216453776","host":"s3://npm-registry-packages-npm-production"}},"2.35.0":{"name":"mandrel","version":"2.35.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.35.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"a954f67f51a70f88d1f02e5875d21db472003c06","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.35.0.tgz","fileCount":726,"integrity":"sha512-b6X4uYVidLA+tUXtKQf74Lbnu7ffJrqlSeo5MaHyb9VS910P+205H6hy7X/hZNwRWhivp3GR8tD04xAQFjOEsA==","signatures":[{"sig":"MEYCIQDogds4V/h5/ixX4DbzhrlNNYaIbqWK4hpC7VYGYEQocwIhAMF67tpH1ruVT9AGf9PCm2T/R4t+t1wpb5T1q3UG5m1C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.35.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6747267},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"0d82d9bbf125044da897ff95cc8ef08a3f3f186a","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-lifecycle-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-lifecycle-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.35.0_1787943967523_0.32569064651876123","host":"s3://npm-registry-packages-npm-production"}},"2.36.0":{"name":"mandrel","version":"2.36.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.36.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"129e76c5d0f70beaea4d52f81418495fade61975","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.36.0.tgz","fileCount":726,"integrity":"sha512-1AStytGavRLuknEj5nvs4fBK5EPYVIepqIoPXQmtMSeoZImlEv1zEeZ75UPerEBT7d8cp3V5f2t3/QKK3XJDcA==","signatures":[{"sig":"MEUCIQCz7lmOuIgPovZzjcf3kpA1+INfHExUBDp9rDhsBMFiEAIgOT4KO0G6EFgkCll5M73RhK0EduKLr/3zHZoIBTvwkDI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.36.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6768432},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"fca9f175d5fc725d1b0f660ad0bd4bcaf8c2cc57","scripts":{"lint":"node .agents/scripts/run-lint.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":">=5.0.0","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.36.0_1788023157420_0.6347182346126714","host":"s3://npm-registry-packages-npm-production"}},"2.37.0":{"name":"mandrel","version":"2.37.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.37.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"628c003c247468e080a8ce9b24f32f0212077e75","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.37.0.tgz","fileCount":724,"integrity":"sha512-gfi/0YMitUQPSl//RGVmi0hDg+5Bn9qUM8MU7xp+Pq3BsubQnC0/vD6MAI2nO1iU4+JQLCIXwdRFZrB6UNypxA==","signatures":[{"sig":"MEYCIQChbZhDstWASRTprgLgGOkC2XpBUsd90ZQhMVmxoFPJWAIhALGZnSZNpOUGDDqfovPlXpJIOji+Q2V/LTi7EGEW4Bsh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.37.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7211979},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"01d14b5fc88b210694ae3b57d7e1edf8c41b68e7","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.37.0_1788458047028_0.5735183528934313","host":"s3://npm-registry-packages-npm-production"}},"2.38.0":{"name":"mandrel","version":"2.38.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.38.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"505e029706e8d132fe606fa05f7fa5b6b49321d1","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.38.0.tgz","fileCount":724,"integrity":"sha512-qeFwVSxQRcfGxS7b3LPcP94z38FM4sQQunLXE/Sj5ghsEVePiHVIeQz47VJCbDgtfQ3OouFplFjvMRwoN1iAVw==","signatures":[{"sig":"MEUCIQCbtzxLoXgQBoJWOZKVuBz8QsqOAKNInMNfDiD+7dsJwQIgJUObi8/8e+9WzQdZWqJiSc4YBQAvhgJ48oLMckfhN2U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.38.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7219424},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"b1c2b826f28515f21a77c311e98c8dcff07cb5d2","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.38.0_1788526592891_0.1403859774437819","host":"s3://npm-registry-packages-npm-production"}},"2.39.0":{"name":"mandrel","version":"2.39.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.39.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"08e91289ef75749430a7ae4459a257f7f07c89b6","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.39.0.tgz","fileCount":725,"integrity":"sha512-CKDh7PaBu0G5BPuopWdu3kLX6cZvc+pKNvp93Yjam/pJPRbYJ2/BIaWunYkvJm1YdTG1NT5D8OXIaiJmzWg42A==","signatures":[{"sig":"MEUCIQDLNKfXLSb4IH1wSN/yDI0eZ3kb7TMOhiECpEzjetIy2wIgea6qsI7NA26PD52ndkq3fyzzpn5PUf2f5cLjW3gy16A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.39.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7246273},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"d00310f76e9e454593accc41544c9b6e7c616cb0","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.39.0_1788571381164_0.6625975544395963","host":"s3://npm-registry-packages-npm-production"}},"2.40.0":{"name":"mandrel","version":"2.40.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.40.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"abc5cc62de7225ebca68af084b318884f5afdcb6","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.40.0.tgz","fileCount":732,"integrity":"sha512-TFtOoU01vgIB3WahmmHZI4eGz6uCX976u8uuIWaXuN11kCDP2JlMlNOJboHFOiF957noPqSmd1zCINAWLJo95w==","signatures":[{"sig":"MEQCIBDdlmLIFq6u92+iox+fXokBDjtKr/AP/kv6x+E5EdxhAiAXdYBXxM1CpQgV58fPz8o+AHMt7Zt9zY+6We74ZJpIIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.40.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7337470},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"0bb25f8e4b3e9ae804f09a5c803d8e52c9dd4713","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.40.0_1788657629377_0.5862443329065992","host":"s3://npm-registry-packages-npm-production"}},"2.41.0":{"name":"mandrel","version":"2.41.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.41.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"16ff7009993d620107c733962535503e197d3ee7","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.41.0.tgz","fileCount":726,"integrity":"sha512-ohGSSIvodNnVWAklqQLFii4jDacz8IKDk0xw8keEmuNU9OoH08Uo+UIWArcPNo/7D1yCm8Cww31EWWc+vyg5tw==","signatures":[{"sig":"MEUCIQCrDtcLxAxpQD5xYgP7d3FBoBRt7n9aBUBIifP7PDZbYQIgRcImWswnzxgkSn+573ZLdyMD+AUCeMkldU0Q/R5CsWc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.41.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7298040},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"d939f9779cf5eb258962c9d479f643d1db3a1cc4","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.41.0_1788702223419_0.17751685893151392","host":"s3://npm-registry-packages-npm-production"}},"2.42.0":{"name":"mandrel","version":"2.42.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.42.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"7bc2da57df57a65cdfc4d6833825f1497aed50b6","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.42.0.tgz","fileCount":729,"integrity":"sha512-T1Y8Acr5FclQ7nAH4zOlPF4pZr56+kuglBPzIPx7QoLc/4PWRKawiWBHUrahYivE+4tMOuhCjy7ga1Gw/0Mp1A==","signatures":[{"sig":"MEQCIGrSU8huJR+LtpAqsEV/QRHoSQFz9wiXN01ThmwH7IXEAiBc7g1qPcLpyVejtiEYDFaR/tl7fWJw+cHUhYtikT0+aQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.42.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7359208},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"e20be6efdc595bec781db3bcc6c57af07ecfc2ad","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.42.0_1788718149635_0.3521045141748018","host":"s3://npm-registry-packages-npm-production"}},"2.43.0":{"name":"mandrel","version":"2.43.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.43.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"7d11b71e09669f86d2384c5a8482730365f85ab0","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.43.0.tgz","fileCount":729,"integrity":"sha512-Lekq6GOZnEW47yLd4L94Z/I8IqDE3xMO1yoZC3mcsuipJ/kq6fEn7TM5T6YVVulQlMO2IWEoPmZ9HZzKcGMTyw==","signatures":[{"sig":"MEYCIQC03RCaCs8Qta81S5GREXPqZMyX043GTD76woBmGkhIsQIhAM7dQS1j1lFJj6UaRK06ZBbuKGzsFyqQUY8aZUEEpH+U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.43.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7372296},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"154fe9242f216c72eac710261383beb0f93492b1","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.43.0_1788781997608_0.3032562516395476","host":"s3://npm-registry-packages-npm-production"}},"2.44.0":{"name":"mandrel","version":"2.44.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.44.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"2aed738b30eba54125c885e1d66857a0c53fd1b3","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.44.0.tgz","fileCount":732,"integrity":"sha512-Xz1rOpIUSSE/z80i512lou/F4syYx25/GbB2hfWtG1GJuHbQJfDXiQsFYQ8Lrgsd6lmfSQ/GOV4ImQgmExP88Q==","signatures":[{"sig":"MEUCIHRcZO/OMgK6ZPPzRq2plmym3XmhJ+Ewu7TM44t730AIAiEAvNqkmIDx2ApcvS78OQdSxi3er8/B7yRwCV8l6VauY+4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.44.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7412953},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"182935bb0121ae262a854f1ffb7c0ea3c6123e9b","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.44.0_1788790870579_0.7511038136500452","host":"s3://npm-registry-packages-npm-production"}},"2.45.0":{"name":"mandrel","version":"2.45.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.45.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"455786b4c6319dd8d69893c346aed6a598017a72","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.45.0.tgz","fileCount":732,"integrity":"sha512-LUmwU1g44EptsAE42w7eFKl13OWicu5HfX9F/w4hV+wnsH5HDIF5HhPnbEmXSFPdlQY0qoH4UVHF+jWR4dz+iw==","signatures":[{"sig":"MEQCIEi/m+tTGe3ydw/fGGUVjGGY3RbaF36zaZP+BV0Ip9wlAiBdF7Km56Hoyk2M375Qmv/Y76WmBwjncXbPIYyf5RXeaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.45.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7414108},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"cc194a97e32d89cecf4e76b7fe0ddc86b536423c","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.45.0_1788791884569_0.6508142191009632","host":"s3://npm-registry-packages-npm-production"}},"2.46.0":{"name":"mandrel","version":"2.46.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.46.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"37feb73ae8985b339f33070f11c4ac4117e63364","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.46.0.tgz","fileCount":732,"integrity":"sha512-hznEeD/4Ijd+W9P2NaEqOGkBg3KlmexjKHya7mmQ2oKsqEEekX9ZcaFqqzQBOInVWRB8V0OYQk8BBFiFB62AIA==","signatures":[{"sig":"MEUCIQDEtZqF/zAM6PEM3FCGOUW51hkhqEnME32/TiFUxnwg1wIgG1aDwFfw2l4/7/DJeWCMLDzI6ChC7tYA/g8T1tf2DAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.46.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7419041},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"fcfd30f8a8e58dd9aabd04d8eb5e549a8ebe5ea4","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.46.0_1788795393349_0.7655251911424912","host":"s3://npm-registry-packages-npm-production"}},"2.47.0":{"name":"mandrel","version":"2.47.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.47.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"55c60accd8e31a58505928fe3f8284cabaa68fba","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.47.0.tgz","fileCount":733,"integrity":"sha512-2VqQUTPExgqVqtIQsIXdrjihb15hlV1lK0jsG3QtxrwLTD3QVjJF+iHOHzl/8b1B2NStk5jrKoPCq7m8Styh9Q==","signatures":[{"sig":"MEUCIDZHZKMySBnn0jGd/FaOfLhiDoZy9D0bPnoXXxCuvbSRAiEA9QhX2eUo3kWOOKo+JLvObUVtqMq6+OVg9/mK4vV6y64=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.47.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7438979},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"69e015b35e9e2e36141c20de560614a8088c1347","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.47.0_1788800036557_0.4131631239525746","host":"s3://npm-registry-packages-npm-production"}},"2.48.0":{"name":"mandrel","version":"2.48.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.48.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"d6df6ec416365280b1ef36e755122ec8089aed02","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.48.0.tgz","fileCount":736,"integrity":"sha512-6LmNwP7m5r2dNarL6s109bY4iMk6O84P2Xspo1qBRTkJsGvvkj5Fq9cAa5kzldmOF3RcMAjMuPCkCqyMLuHG+w==","signatures":[{"sig":"MEUCIARKZNlA5E/bYOel/M3E7BUJgSE3NhNiUU3tVKtEX9S4AiEAlniTtgGr7YOBucZnd4pRp5EnB1nuiYk1j57tShbgYhE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.48.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7481471},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"812c8be373e1985962e3ca0ae9068e8926a6192b","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.48.0_1788827906041_0.44104736250158094","host":"s3://npm-registry-packages-npm-production"}},"2.49.0":{"name":"mandrel","version":"2.49.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.49.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"814da2933ea622e43839a98cc8ddfc5525506261","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.49.0.tgz","fileCount":738,"integrity":"sha512-lQqdJwY3mfQGHpBWyiHy6QfTIJoHLuFJaXYTIhjGPhETYhf9uRDQAQZFh8LNf3JTB3SRJNJKfL7pH+kTC+5h7g==","signatures":[{"sig":"MEQCIAWmgd1tphxZcsCZ6ahZu0nF/9deuk7MtDgXmagcRz6qAiB4vwB64P/LJTzT/krnaweb9VhnBC0eWsrWcdG5JMJbNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.49.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7506697},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"756db8be2da6a3020b2afda12fb4e0d59c4008cd","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.49.0_1788866011756_0.43047326238091155","host":"s3://npm-registry-packages-npm-production"}},"2.50.0":{"name":"mandrel","version":"2.50.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.50.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"ebb91ad8cf9414a1b2fb3710e382d81add97b14a","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.50.0.tgz","fileCount":738,"integrity":"sha512-VhPBFNwcTybNtt3oklADm2WTcEYoF5Tdl6dHik6l/eZgNPNqCwrGMtFCYV8RQYzZ9W4lxyuriRozoP67OSwiPA==","signatures":[{"sig":"MEUCIQC212oaYXPqQFIeI3jQnwichy7RcQMDtvu0+Y+jTTdzYgIgdfc3D4BMQSD1fXFPK/xVMzPTVXSSVtAg5nGwI6MCTAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.50.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7509915},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"a0779ede1d976aaa340b98622c0561f27f56b0a6","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.50.0_1788867146292_0.8338063651314516","host":"s3://npm-registry-packages-npm-production"}},"2.51.0":{"name":"mandrel","version":"2.51.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.51.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"d96bc65eff37b83801205171fc1e9a65a524cb2b","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.51.0.tgz","fileCount":740,"integrity":"sha512-oB8cWphxJtOTimULF01Qc1yuF18kVJwi4QXgtZ4AfhzVqx9+d1k/ggOApsytMneqiIjI89KStwS++xGi98YJPQ==","signatures":[{"sig":"MEYCIQCJtiNv3H6PyIpgMtDZAbA7QokCH99qh5ltnpXM1sCF4gIhALgXGA0/zIctMw1sC5zIHFgyQ3/oKFbJHKbGsLY9sr0m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.51.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7527067},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"bf30e2db8dc528fd80e743771247d516e88bd603","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.51.0_1788882762599_0.7314469172223397","host":"s3://npm-registry-packages-npm-production"}},"2.52.0":{"name":"mandrel","version":"2.52.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.52.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.2.0 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"3d397dca25ad694a08f4d1427ec0dc38a0964442","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.52.0.tgz","fileCount":741,"integrity":"sha512-BxQ3ZeFhohKg7y6jWCALEAdMInrsfZ/ZbCp9O631f+WrXIonhD72iy/qfyzTkNcOiMrj4hQfo6pIidC2/6wBag==","signatures":[{"sig":"MEYCIQDHnUxXV+7/m9v1Wou1Kd8CI6qoIkNSgdzCeFjkxSqzRwIhAJZTR7d39kKvfDVCqfRP01cGML+wxD9NTG+ybWSFOZm9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.52.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7541590},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"fbfbcf703a56b4d39b32b4f8265e3a8c3a9c41ab","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.1","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.52.0_1788894532839_0.725616321608521","host":"s3://npm-registry-packages-npm-production"}},"2.53.0":{"name":"mandrel","version":"2.53.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.53.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"3b122fba02b7af39027c79277891584134f9e448","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.53.0.tgz","fileCount":745,"integrity":"sha512-8aKvd7p7z1piru1Or9G4hufPybK0pWuTt8Jw5vlNQz7fItfAgw2mphZqDRc6kY1/nPShBydTO95oQoaj+OUUZA==","signatures":[{"sig":"MEUCIFmasbW02YANFoAUdWfAsNVSu7n8Qz9L0XBaNFfjzdZaAiEAylxXc+xmQmqMXk9A0oKFAe87QVobDDN/r6A+NmwfaPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.53.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7579683},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"b4259917e1d223aac8c004fbb4f40be1e0f9e94a","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && node .agents/scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.53.0_1788920720677_0.08762058955922325","host":"s3://npm-registry-packages-npm-production"}},"2.54.0":{"name":"mandrel","version":"2.54.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.54.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"40c078c98fdcaadb2af9ca9e545c75ef03e9a9e5","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.54.0.tgz","fileCount":745,"integrity":"sha512-kp08uAyTcNbjmc3aiWkTN866AxBAzECmaa8vY0zRDm8XDpymD+brXM2Cyf0iqqSWCFiH8oKRymFZk+6SBhOxSQ==","signatures":[{"sig":"MEQCIElle9sCotzfv6mtqNOAhQamiCwhGvkjoxC07E4URuTqAiAQCJ0Icju8MEXkVVsVAB2ftswWHu6YxStaN6JxCAbvIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.54.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7585246},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"a510531368959adfd96439c33456a36f7865df10","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && node .agents/scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.54.0_1788980961622_0.4238899399667455","host":"s3://npm-registry-packages-npm-production"}},"2.55.0":{"name":"mandrel","version":"2.55.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.55.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"c93901a5c613f7c2bc0dc0a30ba1e7607bcb41b0","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.55.0.tgz","fileCount":752,"integrity":"sha512-tPoETCSkGKzvilewxeal+zqtHRevpOAo2wDahSnj+ObxX2kmNGncHbTVYN3DeIhQVtlHNnt4GL5mhbbqy4VQjA==","signatures":[{"sig":"MEUCIElWDzPssc1WTxbEpXSaG2kIwamMEKpc3DK7Kvd1kxsQAiEAg9F81Qj9KMY9Maxglvs9IEVtQkKetvY3krbY0lqkHqk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAQikWnnjappeqo47vnv7gINvaqf3D6P6tnGiuO3cXGvAiEA+E2NI5iZNPwevKX7z9CGjh3UU12kYW3ez3sO9aKPShk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.55.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7857222},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"a1a7a355fa1d209605aa62dfe6bbaa34e009a0dc","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && node .agents/scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.55.0_1789086422284_0.37597029193518083","host":"s3://npm-registry-packages-npm-production"}},"2.56.0":{"name":"mandrel","version":"2.56.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.56.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"7bf97e6d9003063d28bfe02c517fd01d66b6b773","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.56.0.tgz","fileCount":758,"integrity":"sha512-hr/t5a+9Sgoh+u7I0IuYTOyrs2NUuuhKmV6XO6rG5zKdLGDLAnpyM3zhEo83+BtfvJ95Xg5Jlhpm3pTd+A7bEg==","signatures":[{"sig":"MEUCIBqz6sCwi9kULLJ2/mJchAMC5Gb9YkyY7avoEtNrhPKoAiEA+c3mNG/D6zNb78xOgrbkMQIKGBgEwoMjM3OrOugGQts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDscYCrQuVQ3CDEQGQYU2g/n04mk6Am9bYnh1TM7LBWlQIhAOB2xZmyXWZGt1+9pjfSNZEMaINrFuxF1KXeWjzQwY60","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.56.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7952126},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"1c77654946e31aa1d474f942ad9955f6d9891a1d","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && node .agents/scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.56.0_1789139728249_0.7599829825387856","host":"s3://npm-registry-packages-npm-production"}},"2.57.0":{"name":"mandrel","version":"2.57.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.57.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"847cf066443dcb5eae62ce0a802a748f71fe2409","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.57.0.tgz","fileCount":764,"integrity":"sha512-1TOSt0vnldAMsy/dRZlHw8op2wfwHoaB9siVS6s3vZpcaT/T1RQdy+cXZ+fxTSlwpfAbrFpNHCg/g6cEK5a8xg==","signatures":[{"sig":"MEUCIQDAGBxPpWpbGXxoDqCbCXkOScFTBHiEDku6Yy2GtYc9MQIgYr8Ze/g51HW5bawQfE5O0T5TWTWOGu2RDFMEKSU85EU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCaJeUc33nk2tNiNkOb8RsTpr/kZmIHgmvS5S8cYg/IOQIgAoRKRhlpGJhWTHvGmK4KlQgV7AeoE4e1SNWpwBb3GBA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.57.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7801444},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"e24b6f25f7ed512aa83433b5f6154876cec4a16c","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && node .agents/scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.57.0_1789237115322_0.32058044008132947","host":"s3://npm-registry-packages-npm-production"}},"2.58.0":{"name":"mandrel","version":"2.58.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.58.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"870ba86546d2fe63e8b524da93cbbafbafc0db12","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.58.0.tgz","fileCount":767,"integrity":"sha512-gn8j3cpBjfWagDv5FA4MpYCo8f/hMExhND1L/Jdia+AET0u0STFq1B4c0MF1bQdkenyXSi3FvhG9+x4v3T39Kw==","signatures":[{"sig":"MEQCIEfc4i31CyPVZ0KOQ1SQ7h0At6f8YObrggGnyfKqaefHAiBklbnPMPPq/0Mk7E0D1kU2GBmzidrS35cFpjwE6Up/3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH5gvUWxaGGrsDkFKgyX7wWWPnB/O6a3L0LyymqmOKfrAiEApriQzz5W3+F7nyVDIcFFDSl1K1B+UfKCjHgQ+yvQqM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.58.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7835829},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"f2985e18e41b54e90185816666d4dcb41d8e6f0b","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && node .agents/scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","typhonjs-escomplex":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.58.0_1789257267630_0.5165877298999804","host":"s3://npm-registry-packages-npm-production"}},"2.59.0":{"name":"mandrel","version":"2.59.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.59.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"cbeaaca66bc02d30402a803796b955258cd815d8","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.59.0.tgz","fileCount":768,"integrity":"sha512-zFNjBUI+BZ7tm3novHNMpJXFueWG1zrKRcssK5H7fLZ9BdJgls3ZpaJEMOtvoYghxJ6jWwXAjfHtoEAWR5A5+g==","signatures":[{"sig":"MEUCIERg/S9kbWQwYn9E1iT5JRKnS71INe1sCeVdzwbtTFevAiEAkMGEUobLNAKsYOPa8dJ+jq81tvJ/Avwq6p7Ut3FFlGE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCQ19b4EQ3D1uHjqTXauC+due6dewBfeHXwjVDigKPjNQIhALQFrNRQaWqFl94lqCzUpYOqQ7BOZ1KLUjkHCjWt5P7n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.59.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7855099},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"a8f046f52f74ec3da1dcaa1f1e6b60e4addd8428","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && node .agents/scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.59.0_1789397911982_0.9734805550541141","host":"s3://npm-registry-packages-npm-production"}},"2.60.0":{"name":"mandrel","version":"2.60.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.60.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"92e74caf298f7620d7ec2b1d8318330d65eb4623","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.60.0.tgz","fileCount":768,"integrity":"sha512-KEb82q25zUcbA7Mrdny4ZPj3yLMzilqqyVW9VtH1sjigF5CDMcZsneH3Tgp0f1FFQhlFzx+FKohOs5gHiIT14A==","signatures":[{"sig":"MEQCIFwqw/ZUbrV6rok8Iqwf1joYWuE1AsFyxoaC7nsc9/yhAiB7Kw9bSYhXELefE8rOrbLoycdABRnkjD/iX8iJe6NXFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGIaoChPXY5k5JAS4wrfaXNDneUkh/Q4/mkTby1dwQz/AiBm6V68bwynQyy4DapZsjCDlMjy5kVPhV9BrfwPfq39MA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.60.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7908771},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"845701e0284e42d54eec96614d23fff121a6655c","scripts":{"lint":"node .agents/scripts/run-lint.js && node .agents/scripts/check-generated-validator.js --check && node .agents/scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node .agents/scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node .agents/scripts/test-isolate.js","test:profile":"node .agents/scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node .agents/scripts/run-coverage.js","validator:gen":"node .agents/scripts/check-generated-validator.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node .agents/scripts/prune-baseline-orphans.js","baselines:scope":"node .agents/scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node .agents/scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node .agents/scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node .agents/scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node .agents/scripts/update-dead-exports-baseline.js && node .agents/scripts/update-dead-exports-baseline.js --production","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node .agents/scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.60.0_1789692854602_0.8768433262976227","host":"s3://npm-registry-packages-npm-production"}},"2.61.0":{"name":"mandrel","version":"2.61.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.61.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"b8a0af38bed6eb63b0db83b5263d8c3038cd2456","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.61.0.tgz","fileCount":707,"integrity":"sha512-wHYM1gkPVELesTBgzTaWPDYJxUxQYaQR145J/5FIlL/VSg19dEQYFDdfFVzBLKu83zEqJOH6ZzuReRpIDgTCKA==","signatures":[{"sig":"MEYCIQCyrEuJzTM3QMTeWhH+tb26Rf8KG+k2DhbLewuW598pJQIhAPYSa9vFwkqL53TBPG3lq0b6J/BC9624qZGmMzTDaFCA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHxbWgmv+8YD19ShFdf1wbj15OzFtPdDxOjBQUVmlXbCAiEA+XRWoEe80O1sKSrEYqM9647hlgRfVo28kr9zxesYksM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.61.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5125422},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"45580663b71f2ee78f978bdb0bdbfbe9aa1b2021","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.61.0_1789756064963_0.16571261188933284","host":"s3://npm-registry-packages-npm-production"}},"2.62.0":{"name":"mandrel","version":"2.62.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.62.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"842a65d381dc83d46746d08aa59ab5c2acdb53a6","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.62.0.tgz","fileCount":708,"integrity":"sha512-DVCJ93WwfSZpGfIEwlE9JD/XYUqLwfAv3zhh1PRm171EJnzyJ26+mR74Ugr4L8I4VpOOEvxIy/5fJe61mjL+RA==","signatures":[{"sig":"MEQCIGnqm65DuxRZI8CLwQcnFKGgxKZvLP9ob4k2/4YjPrI0AiBpyDDJ4BBdz+VaNLMs803w+gR2PjtCfG33jPU9PxhLmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC/E5p0segSZu+SUH4ZZGirOqaZjEA15aKP/cLfgdLNVQIgCIIwPsgXrD3t3C2oRZDnMgloozmeKrv0N4h12l3K7fQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.62.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5134727},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"03da945c354ecd5808289db11492a607b1b27f40","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.62.0_1789761240858_0.12420163523518846","host":"s3://npm-registry-packages-npm-production"}},"2.63.0":{"name":"mandrel","version":"2.63.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.63.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"2e6db0865f1a0cd4a8b2b8f83e107fb1664be3ca","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.63.0.tgz","fileCount":710,"integrity":"sha512-2OaU0wSyg6wTUQklHFpB5fRQZUq5RX1h8lIHaVPtzM7+59ObYsKeqpa17hdjPj/jviOjRWcXEX/4GU8jqz09dQ==","signatures":[{"sig":"MEYCIQC7fco/PFhdB0+RYYAwE98xEX67eP8AFradPOZDGCWVBgIhAL9/GgKgqqYZbXIaTvJIfHBxCGil1qFogr5spjysd35/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCT8Sum32EJQeqLWfv0OxhRE8oLa/ntFdCP9aXslmbEQQIgBNTdnBYmnZpK9c/6+wWjZXvaMa0fiIg5nvJ23jDBYLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.63.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5128692},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"b57428ff35653ade529be2b82ff37e7e4ea4eb93","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.63.0_1789775188872_0.5333811845932335","host":"s3://npm-registry-packages-npm-production"}},"2.64.0":{"name":"mandrel","version":"2.64.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.64.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"0d831735a262894613d449bfea2688ecf34db94e","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.64.0.tgz","fileCount":711,"integrity":"sha512-WVqbayGgF/x5iEuxj392++AI9i5gVJOZzRyQxGS52el67sumyNl2JGcnvijUKa5U2/0V5kwGTnq9z85VNTVFTw==","signatures":[{"sig":"MEQCICccBWhXWtRcwU2e0XD9Z0oaY0s2SVstrbCNKwceJYRPAiBZp+kYK7VwuNQySzmPZQ5/7Dz3yqQIR0L1DQZmalSNZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDGudryIQWjowV4FVRd6ga+XT6KdK4nUPg20lEiK7yNawIhAIzGTWITd3xCJ5BO/K8cKKkofpyLLEqpRzjcyb17i91Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.64.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5137075},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"39cc1af79d3ef8295ba86d45b4d9c45e8d501473","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.64.0_1789783942940_0.06753645446086165","host":"s3://npm-registry-packages-npm-production"}},"2.65.0":{"name":"mandrel","version":"2.65.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.65.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"8075d087e7d257adeb2f28603055b0fab41e615a","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.65.0.tgz","fileCount":712,"integrity":"sha512-wGa09eCqlMhkcp4aYtzIWRFFPFj2iv3YfTnBL1Aym/YFSU1cfWlAQ3Z5WqpDGwqFScY+bMRoDPaYxD1XxRsBCg==","signatures":[{"sig":"MEUCIBBNbYy6+0C6AqFBUzKn9NN7esaXkMtub7A95ziDw/3/AiEAqUacL2YwEfBfysVYSsc5g1LxKwlqMtyON4y1el8RhHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBhOVkDRX3U0WW5JIJgPyVSyaOvdx/t6vAuuvN0KntfXAiEA26ipuMZKwZRXVy+hTCuANfoAJnFi4LMpbGL1vXKTFSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.65.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5141520},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"f2f20eb057847940e6bb735ddd89a5be79d33ff6","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","fast-check":"^4.10.2","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.65.0_1790211704336_0.41946567233237664","host":"s3://npm-registry-packages-npm-production"}},"2.66.0":{"name":"mandrel","version":"2.66.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.66.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"3c86591d3e1bdbf672ba7789a5ec1654a0f7413b","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.66.0.tgz","fileCount":716,"integrity":"sha512-xc2uXAw2SrpvmWqBoQXI4/hRrb/Ann/wcXjtY9x71kpsuDdSs0ciWA9iD8Ux2uvQC1XF3y4foU4lfPPIaCHOQg==","signatures":[{"sig":"MEYCIQCiXk2j5cpZV+vDMZWlNCz+sWa4nu3MxUWYw5uuX10HeAIhAL6nS3WpdFjHqIRdXCXi35WHKE5nbFIrRa/X+lqBo0yR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDZTXZk6O+GO0ZIaiT3INIL0jrPFyjgIspMk/ohfxuyiQIhAML9KkvMHVj5Key8ReOYeza+PmfJnYxFF1+ZnhTnQEHp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.66.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5161678},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"576aa05fd7fad3fb516a033dabfe13c1f30bf939","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","fast-check":"^4.10.2","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0 <7","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.66.0_1790385541757_0.10732718889314952","host":"s3://npm-registry-packages-npm-production"}},"2.67.0":{"name":"mandrel","version":"2.67.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.67.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"2c5146d9e37e03f4884c9e39f1025903017487e4","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.67.0.tgz","fileCount":723,"integrity":"sha512-HmEX/kdUYosBsx+cXCnDw/Hnqg933LCv0BdcElc4bZ5zmjzIWhU7uo3K2HaZGm9EKql2nc1tcOnzWFLAEc+iYQ==","signatures":[{"sig":"MEUCIHqPXugzc336uex20Jgq6vEqMn93FQ9t9+4t+seuLDFxAiEAuhOBMQTfRcb2nnb+xxHw0DFEkZNjlfNCJK78WCtnb6E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDfJf/DldpJKEaPkvOGMO5z0wyn1zlSB9svqO3gqvcLjQIgQegnG5Nq5gESsi0UH+G1W3aATs/JkuUAqR97H5rBQ6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.67.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5219321},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"3f5b38aa62532d617e36c3a044f6f482970e726d","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","fast-check":"^4.10.2","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0 <7","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.67.0_1790435565220_0.9424514381664315","host":"s3://npm-registry-packages-npm-production"}},"2.68.0":{"name":"mandrel","version":"2.68.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.68.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"e774c4fec82b4df33ef140974b2813a395048017","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.68.0.tgz","fileCount":732,"integrity":"sha512-Fy0r2c8H1pEl+nEGha3XtZ3AqWfp45cpOHeptDmu2QWcYYj2JMoKsWwKTq4ncCA86Nf8f/XGm4oLLlBWz6sIiw==","signatures":[{"sig":"MEUCIQDT1v9+MTu/iO664deIufgj/NL8YFCPsYjVuXz6AXmLOwIgSWw2JpBn4hSrvKvVek56q58oW+GeqKIcL9fVV1ZqTN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICOF59AidnnBg8ZpTU9qBtYi5lS6+qPB6ztnF0U3WxhOAiEA7mXaypdYgUcDGbV5YV3Q/yrNvLKhugw68ZRDLz5/Id4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.68.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5333111},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"3d85d291ccb81cb28c2d6fffa312e96baf48cfb8","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","fast-check":"^4.10.2","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0 <7","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.68.0_1790458245754_0.5609439605097002","host":"s3://npm-registry-packages-npm-production"}},"2.69.0":{"name":"mandrel","version":"2.69.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.69.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"17238dc02041472ac0b545cef8e38f81ce19178a","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.69.0.tgz","fileCount":732,"integrity":"sha512-DTWGgq+520m7MifsubGOcVHbAkguICGO/Lp7Hak6FzonXy2UvqlY0VWDZqzNoW1bXVIU02l1/PU4fiAtepBtOA==","signatures":[{"sig":"MEUCIBtF8QWKvEZuJl897vjKSvDdwz3MaipU4ClQWIj93PmTAiEAwQ+6zGDNwSuxQzQrThzdiyB6ppZcmE097Nm718Mwz6k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCID0BEzYdh9yj+ZPBf+OaVf4PQ06r85VlFBma7etvMuD0AiAExlCHsnX0ImHsVyUUY8407C2OGYVVWWd+0L7twvOSDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.69.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5333483},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"eb9f4e472115be5b1e7ede13a6c3975215bad685","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","fast-check":"^4.10.2","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0 <7","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.69.0_1790551053327_0.6963345540440278","host":"s3://npm-registry-packages-npm-production"}},"2.70.0":{"name":"mandrel","version":"2.70.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.70.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"000d3ec7a139fd5e3926e8e0beb60ba421c9daa8","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.70.0.tgz","fileCount":729,"integrity":"sha512-z4KAThwFRfpCl8L221ElzeAj2tFzNfkIBQN893CElz0zN7V9UE2a1YUorNX27ie6Qa4bER+ZPuxXME9EWPDJog==","signatures":[{"sig":"MEUCID/OriKNv6Fc5E3jFFH7lkzhKGNt6SrmNol7wBEGd3loAiEA4ukgWkuHK1VponAebX/iO7nPvJ5RviROiCx7ogRi7rw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDLeTq3kVmxY51c+Wr6aWdM2nOuo6GyeMjExYVHaorLSAiEAyKBZ8YEeQ6TsY1nNRNetUe/uixnWhlsU8zPxXqrPToM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.70.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5298609},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"9c7662b5bc2305d797fffcf033a0b3c9deb23b53","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.2.0"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","fast-check":"^4.10.2","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0 <7","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.70.0_1790683188384_0.619101739043207","host":"s3://npm-registry-packages-npm-production"}},"2.71.0":{"name":"mandrel","version":"2.71.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.71.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","overrides.markdown-it":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT markdown-it 14.1.1, which carries GHSA-253c-mchw-3w2r (moderate — quadratic linkify paths block the event loop). The advisory’s vulnerable range is everything < 14.3.1, so this tree-wide ^14.3.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.23.3, a breaking bump coupled to the js-yaml major above; do not take it. `npm run lint` is what must be re-run if this pin moves.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"5e22ea2b2cd4dd495609e1c906e949572d38e908","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.71.0.tgz","fileCount":733,"integrity":"sha512-f8qhLFWzDBmUIYbaf2/mUQYikC3Afdo1g7RO2VFuBjB3alGIUS680CsvCoycdI0Z8ivk1g8hwFTOSEIokYIq1A==","signatures":[{"sig":"MEYCIQDb1kSO2497dR9dHWOcpmRT3KGi/oIPAEK419p2XF0tlQIhAJ/2ZM0HjlRJFpANtx++X+1WQ5JOjhZ32KVUPG+fIzMJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAMgozLCliuahvk0vG20R2fi66unDB9DJjrwJYpmrgzbAiB7cMvLcUEGYJVfd6UtEGb7SL+b5vdZne94k2wUXQMU6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.71.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5362305},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"6312838192768b6755084a9839a97a7b0832b0e8","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.3.1"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","fast-check":"^4.10.2","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0 <7","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.71.0_1790812232586_0.7284582806882978","host":"s3://npm-registry-packages-npm-production"}},"2.72.0":{"name":"mandrel","version":"2.72.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.72.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","overrides.markdown-it":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT markdown-it 14.1.1, which carries GHSA-253c-mchw-3w2r (moderate — quadratic linkify paths block the event loop). The advisory’s vulnerable range is everything < 14.3.1, so this tree-wide ^14.3.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.23.3, a breaking bump coupled to the js-yaml major above; do not take it. `npm run lint` is what must be re-run if this pin moves.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"bcf05a5de80746d689e71aef961e6463ff0d8a17","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.72.0.tgz","fileCount":737,"integrity":"sha512-eemVXbfTzmshZ9AcPZ5yIclPTy18Zww0yRqu22CsfPiRH7vtfyVnqbwx6n7V5wLyEmM3thIvj0pRRiRpQxDbYw==","signatures":[{"sig":"MEUCIGcnXWKUjwXtWIlR8+tiO9WighAyDTAUfAl2m0R7m2aAAiEAz4uJ6dlsM6ZZl6vp2mpQMGwA0nEQADuD8Gw3tTaorSc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAfnklDiQxw8qETQzDKaqwbXTKYo6qc+JsLMEm3Lz/9RAiEAnZt8xBV7DPxGt/bV2BLjo6+AbuCiCyIfI854fffQ9P0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.72.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5401033},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"5939871d8e2c4ff2946a1f0fe2f7ab4808344678","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.3.1"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","fast-check":"^4.10.2","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0 <7","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.72.0_1790875873971_0.7275180874229283","host":"s3://npm-registry-packages-npm-production"}},"2.73.0":{"name":"mandrel","version":"2.73.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.73.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","overrides.markdown-it":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT markdown-it 14.1.1, which carries GHSA-253c-mchw-3w2r (moderate — quadratic linkify paths block the event loop). The advisory’s vulnerable range is everything < 14.3.1, so this tree-wide ^14.3.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.23.3, a breaking bump coupled to the js-yaml major above; do not take it. `npm run lint` is what must be re-run if this pin moves.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"4b1845d3253b094c41fed16838d063dff56cafbd","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.73.0.tgz","fileCount":737,"integrity":"sha512-N+0aCtqpFEMKcSFaF6H9dYLX06r2u09eBl0N4vmRbPzI542y+vTUt2uO29FfTafL0RHDRH1WI1fX8hKTDo6yGQ==","signatures":[{"sig":"MEYCIQDNsLS1ZwZ4BZsUB3spklcA1Er5NpMA0bB1NharnIrITQIhAIDqnWQ6NBJc6eU+I2T8HrNxKhq3rADmffU0i0R84InK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHQULHLny3uyU9DI+v7mPapbCBZ7UHoIoadoKfM4qDQQAiEA6GKj2J1Jl+3JoM8G3OoiypDuOpYgxVS059hgxJH4b9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.73.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5403138},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"891cf38a5c1385064f067778b14654d4e84d6b8a","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.3.1"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","fast-check":"^4.10.2","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0 <7","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.73.0_1790937665413_0.5841250349048885","host":"s3://npm-registry-packages-npm-production"}},"2.74.0":{"name":"mandrel","version":"2.74.0","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"author":"","license":"MIT","_id":"mandrel@2.74.0","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"homepage":"https://github.com/dsj1984/mandrel#readme","bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","overrides.markdown-it":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT markdown-it 14.1.1, which carries GHSA-253c-mchw-3w2r (moderate — quadratic linkify paths block the event loop). The advisory’s vulnerable range is everything < 14.3.1, so this tree-wide ^14.3.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.23.3, a breaking bump coupled to the js-yaml major above; do not take it. `npm run lint` is what must be re-run if this pin moves.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"bin":{"mandrel":"bin/mandrel.js"},"dist":{"shasum":"8fe19f60a124699f1bc63eb6919927a7499f77a5","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.74.0.tgz","fileCount":742,"integrity":"sha512-iTF78xRuBjnUSezdGo+qEUo+CJS8lp3lMOiWN8ZC56apJK5bjaMJ4ROHfTEGU/JviJ4VNoC3E0FOgjxmAjPVSg==","signatures":[{"sig":"MEQCIFiXBcq1AR8yGO0vHW6MIaTvvjwZWfSVODwaXCh8GqP0AiBJfBr7VW3KHiDDI5juAO8kzuFdjsqchkwKnZZi7RdLcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAZBxZ6JjY/+F8Dx1AH1kA5sstSf61taAiu8A474KG1bAiAvPf+SyW18pM/d1gzBQ8S2Nf6xuo3QMFIAbZCjk+uk8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.74.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5424243},"type":"module","engines":{"node":">=22.22.1 <25"},"gitHead":"461d4ad4bc49c4f0b4e1429b9f52013b09cfad93","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.3.1"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"_nodeVersion":"22.23.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","fast-check":"^4.10.2","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0 <7","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mandrel_2.74.0_1790955961107_0.1722193821226119","host":"s3://npm-registry-packages-npm-production"}},"2.75.0":{"//":{"overrides.js-yaml":"COUPLED to devDependencies.markdownlint-cli2 — do not bump either alone, and do NOT drop this override. It is load-bearing: markdownlint-cli2 0.22.x pulls js-yaml 4.1.1, which carries GHSA-52cp-r559-cp3m (high) and GHSA-h67p-54hq-rp68 (moderate); removing the override was measured to reintroduce both (1 high + 1 moderate), while with it in place `npm audit` is clean. An npm override also wins over a transitive package's own pin, so this tree-wide ^4.3.2 is imposed on every js-yaml consumer regardless of what they declare — and markdownlint-cli2 0.23.x declares an exact js-yaml 5.2.1. A dry-run bump confirmed the trap: markdownlint-cli2 0.23.1 resolves against js-yaml 4.3.0, two majors off what it declares, silently. The only safe move is to raise this override and bump markdownlint-cli2 in ONE reviewed commit (first confirming cosmiconfig, under @commitlint/cli, tolerates the same major). renovate.json excludes markdownlint-cli2 from devDependency auto-merge so that pair cannot drift apart unattended. The floor has since been raised twice for advisories against the pinned range itself (most recently to ^4.3.2 for GHSA-2883-xcg3-v3hh, whose fix is 4.3.2) — raising it is safe and does NOT touch the coupling above; check-pinned-override-notes.js now fails the build if this sentence and the pin disagree.","overrides.smol-toml":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT smol-toml 1.6.1, which carries GHSA-7w5x-hrqm-74c2 (high — denial of service via malformed TOML). The advisory’s vulnerable range is everything <= 1.7.0, so no lockfile-only resolution reaches a patched version and this tree-wide ^1.7.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.21.0 — a DOWNGRADE presented as a breaking change; do not take it. An npm override wins over a transitive package’s own exact pin, so markdownlint-cli2 runs against a minor it never declared: `npm run lint` was confirmed green under the forced version and is what must be re-run if this pin moves. knip declares ^1.6.1 and is satisfied natively. smol-toml is NOT a direct dependency, so unlike overrides.js-yaml there is no lockstep duplicate range to keep in sync.","dependencies.js-yaml":"States the SAME range as overrides.js-yaml above. The two are deliberate duplicates — npm has no way to reference the direct range from the overrides block — so they MUST move in lockstep; changing one without the other silently splits the direct and transitive resolutions.","overrides.markdown-it":"Load-bearing: markdownlint-cli2 0.22.1 declares an EXACT markdown-it 14.1.1, which carries GHSA-253c-mchw-3w2r (moderate — quadratic linkify paths block the event loop). The advisory’s vulnerable range is everything < 14.3.1, so this tree-wide ^14.3.1 pin is what clears it. npm’s own `audit fix --force` instead proposes markdownlint-cli2 0.23.3, a breaking bump coupled to the js-yaml major above; do not take it. `npm run lint` is what must be re-run if this pin moves.","peerDependencies.@cucumber/gherkin":"OPTIONAL peer, mirroring the `typescript` precedent, and deliberately NOT a runtime dependency. `check-gherkin-corpus.js` is the only consumer and it is opt-in behind `qa.gherkinLint`, so a consumer with no BDD tier must gain nothing from an upgrade. The devDependency alongside it is what lets this repository's own suite drive the real parser. The gate resolves it through a require path anchored at the consumer project — `.agents/` reaches a consumer by plain file copy, so a bare specifier would resolve against the consumer's module chain, which under a non-hoisting linker need not hold it."},"_id":"mandrel@2.75.0","bin":{"mandrel":"bin/mandrel.js"},"bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"dist":{"shasum":"7144cba0d71c403267f937125f3a048c147b20dc","tarball":"https://registry.npmjs.org/mandrel/-/mandrel-2.75.0.tgz","fileCount":744,"integrity":"sha512-CHsyGt/RCgmS5TMCivAt78DT8rtr7EwVh9NWN8YrzwOs8DERyNm9Pc76o4eRZAsoZSfbU8qq/pEOzAmZFJSVng==","signatures":[{"sig":"MEYCIQCDuxVuoJFbdnOp5lgah/hkzbzMiuYWML1wZqKHNQLuoAIhALnxMT+byPtWysyZ1wuG8WD9sJi4kBmw0PesQ6yB/Eqr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDTjRlWymAwM5dnMNN2glfCwWCZ/wG+rwxZ2ZqsStTjCwIhAL9UzTY8HalDCX9+UGgEC50d6lBqZ4QhgfiNsagWFS9A"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mandrel@2.75.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5463562},"name":"mandrel","type":"module","author":"","engines":{"node":">=22.22.1 <25"},"gitHead":"8bf716f60a30eb86214da52242bc6052e1267532","license":"MIT","scripts":{"lint":"node scripts/run-lint.js && node scripts/check-generated-validator.js --check && node scripts/check-pinned-override-notes.js && npm run docs:check","test":"node .agents/scripts/run-tests.js","format":"biome format --write .","verify":"node scripts/run-verify.js","lint:md":"markdownlint-cli2 \".agents/**/*.md\" \"*.md\" \"!node_modules/**\" \"!.worktrees/**\"","prepare":"husky && npm run sync:commands && npm run sync:agents && npm run baselines:merge-driver","docs:gen":"node .agents/scripts/generate-config-docs.js && node .agents/scripts/generate-workflows-doc.js && node .agents/scripts/generate-lens-checklists.js","test:e2e":"node .agents/scripts/run-tests.js --tier e2e","typecheck":"node -e \"process.exit(0)\"","check:arch":"node .agents/scripts/check-arch-cycles.js","crap:check":"node .agents/scripts/check-baselines.js --gate crap","docs:check":"node .agents/scripts/generate-config-docs.js --check && node .agents/scripts/generate-workflows-doc.js --check && node .agents/scripts/generate-lens-checklists.js --check && node .agents/scripts/check-doc-links.js && npm run skills:check","test:quick":"node .agents/scripts/run-tests.js --tier quick","crap:update":"node .agents/scripts/update-crap-baseline.js","postinstall":"node bin/postinstall.js mandrel sync","sync:agents":"node .agents/scripts/sync-claude-agents.js","test:census":"SPAWN_CENSUS_OUT=\"${SPAWN_CENSUS_OUT:-temp/census.json}\" NODE_OPTIONS=\"--require $PWD/tests/fixtures/spawn-census.cjs\" node .agents/scripts/run-tests.js","format:check":"biome ci .","skills:check":"node .agents/scripts/generate-skills-index.js --check","skills:index":"node .agents/scripts/generate-skills-index.js","test:isolate":"node scripts/test-isolate.js","test:profile":"node scripts/run-test-profile.js","crap:reanchor":"node .agents/scripts/update-crap-baseline.js --full-scope","quality:watch":"node .agents/scripts/quality-watch.js","sync:commands":"node bin/mandrel.js sync-commands","test:coverage":"node scripts/run-coverage.js","validator:gen":"node scripts/check-generated-validator.js","config:ceiling":"node scripts/check-agentrc-key-ceiling.js","coverage:check":"node .agents/scripts/check-baselines.js --gate coverage","baselines:prune":"node scripts/prune-baseline-orphans.js","baselines:scope":"node scripts/check-baseline-scope.js","coverage:update":"node .agents/scripts/update-coverage-baseline.js","quality:preview":"node .agents/scripts/check-dead-exports.js && node .agents/scripts/quality-preview.js","validator:check":"node scripts/check-generated-validator.js --check","//test-preflight":"There are deliberately NO pretest* scripts (Story #4936). .npmrc sets ignore-scripts=true as supply-chain defence (CWE-1357), and that suppresses every pre*/post* lifecycle script for `npm run` too — so a pretest entry here would look like a gate and never execute. Each tier's preflight is declared once in .agents/scripts/lib/test-runner-contract.js and invoked by the runners themselves, which is why it fires for `npm test`, `npm run test:coverage` and a bare `node .agents/scripts/run-tests.js` alike.","check:cyclomatic":"node .agents/scripts/check-cyclomatic.js","test:integration":"node .agents/scripts/run-tests.js --tier integration","check:schema-refs":"node scripts/check-schema-references.js","coverage:reanchor":"node .agents/scripts/update-coverage-baseline.js --full-scope","cyclomatic:update":"node .agents/scripts/check-cyclomatic.js --update","duplication:check":"node .agents/scripts/check-baselines.js --gate duplication","check:knip-entries":"node scripts/check-knip-entries.js","duplication:update":"node .agents/scripts/update-duplication-baseline.js","baseline:agents-loc":"node baselines/agents-loc-baseline.mjs","dead-exports:update":"node scripts/update-dead-exports-baseline.js && node scripts/update-dead-exports-baseline.js --production","check:comment-policy":"node scripts/check-comment-policy.js","check:context-budget":"node .agents/scripts/check-context-budget.js","duplication:reanchor":"node .agents/scripts/update-duplication-baseline.js --full-scope","maintainability:check":"node .agents/scripts/check-baselines.js --gate maintainability","baselines:merge-driver":"node .agents/scripts/merge-baseline.js --install","maintainability:update":"node .agents/scripts/update-maintainability-baseline.js","check:workflow-citations":"node scripts/check-workflow-citations.js","maintainability:reanchor":"node .agents/scripts/update-maintainability-baseline.js --full-scope","//resident-context-reports":"check:context-budget and check:workflow-citations are REPORTS, not ratchets (Story #5340, ADR 20260917-5340). check:context-budget still fails when the alwaysLoaded tier exceeds its recorded total plus the committed tolerance; its workflow tier, and check:workflow-citations in full, print and always exit 0. A green run is not evidence the numbers held — read the output."},"version":"2.75.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"ec8f468c-f934-4e12-a1b6-582ca772d3a1"}},"homepage":"https://github.com/dsj1984/mandrel#readme","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"overrides":{"js-yaml":"^4.3.2","smol-toml":"^1.7.1","markdown-it":"^14.3.1"},"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"_npmVersion":"11.18.0","description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","directories":{},"maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"_nodeVersion":"22.23.3","dependencies":{"ajv":"^8.20.0","js-yaml":"^4.3.2","minimatch":"^10.0.0","picomatch":"^4.0.4","ajv-formats":"^3.0.1","@babel/parser":"^7.29.3","babel-runtime":"^6.26.0","typhonjs-ast-walker":"^0.2.1","typhonjs-escomplex-commons":"^0.1.1","escomplex-plugin-metrics-module":"^0.1.0","escomplex-plugin-syntax-babylon":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","knip":"^6.17.1","husky":"^9.1.7","jscpd":"^4.2.5","memfs":"^4.57.7","chokidar":"^5.0.0","node-pty":"^1.0.0","fast-check":"^4.10.2","typescript":"^6.0.3","lint-staged":"^17.0.7","@biomejs/biome":"^2.5.0","@commitlint/cli":"^21.0.2","@cucumber/gherkin":"^42.0.1","markdownlint-cli2":"^0.22.1","@commitlint/config-conventional":"^21.0.2"},"peerDependencies":{"typescript":">=5.0.0 <7","@cucumber/gherkin":">=32.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@cucumber/gherkin":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mandrel_2.75.0_1790985573492_0.2562205732687819"}}},"time":{"created":"2026-06-10T20:14:31.161Z","modified":"2026-10-02T23:59:33.913Z","0.0.1":"2019-12-30T05:33:49.283Z","1.57.0":"2026-06-10T20:14:31.527Z","1.58.0":"2026-06-10T22:12:41.852Z","1.59.0":"2026-06-11T17:03:10.881Z","1.60.0":"2026-06-11T22:47:25.633Z","1.61.0":"2026-06-12T02:36:49.894Z","1.62.0":"2026-06-12T12:05:13.699Z","1.63.0":"2026-06-13T13:30:55.062Z","1.64.0":"2026-06-14T03:48:07.489Z","1.65.0":"2026-06-14T22:20:07.370Z","1.66.0":"2026-06-15T00:20:14.859Z","1.67.0":"2026-06-15T14:38:06.780Z","1.68.0":"2026-06-15T15:11:03.135Z","1.69.0":"2026-06-16T01:33:43.873Z","1.70.0":"2026-06-16T14:52:30.409Z","1.71.0":"2026-06-16T21:25:57.304Z","1.72.0":"2026-06-17T02:08:13.558Z","1.73.0":"2026-06-17T19:46:26.606Z","1.74.0":"2026-06-19T11:20:24.145Z","1.75.0":"2026-06-19T11:53:39.511Z","1.76.0":"2026-06-23T20:31:54.843Z","1.77.0":"2026-06-24T12:45:02.672Z","1.78.0":"2026-06-24T16:56:43.480Z","1.79.0":"2026-06-30T22:22:24.443Z","1.80.0":"2026-07-01T02:26:57.760Z","1.81.0":"2026-07-01T03:00:59.206Z","1.82.0":"2026-07-04T01:13:58.884Z","1.83.0":"2026-07-05T00:34:06.969Z","1.84.0":"2026-07-05T18:13:12.869Z","1.85.0":"2026-07-07T00:59:04.350Z","1.86.0":"2026-07-07T17:02:22.735Z","1.87.0":"2026-07-08T15:44:13.549Z","1.88.0":"2026-07-09T11:12:38.106Z","1.89.0":"2026-07-11T22:09:27.188Z","1.90.0":"2026-07-12T13:25:14.594Z","1.91.0":"2026-07-12T16:25:32.461Z","1.92.0":"2026-07-12T20:49:11.302Z","1.93.0":"2026-07-12T23:01:13.145Z","1.94.0":"2026-07-13T16:26:59.207Z","2.0.0":"2026-07-15T21:10:36.515Z","2.1.0":"2026-07-17T11:22:21.248Z","2.2.0":"2026-07-17T15:44:15.477Z","2.3.0":"2026-07-17T16:35:32.941Z","2.4.0":"2026-07-17T20:14:26.584Z","2.5.0":"2026-07-19T22:50:41.138Z","2.6.0":"2026-07-20T10:46:52.553Z","2.7.0":"2026-07-21T09:54:21.323Z","2.8.0":"2026-07-21T17:14:07.765Z","2.9.0":"2026-07-21T23:13:50.248Z","2.10.0":"2026-07-23T16:44:19.053Z","2.11.0":"2026-07-23T20:50:24.378Z","2.12.0":"2026-07-24T00:48:06.996Z","2.13.0":"2026-07-24T11:49:10.683Z","2.14.0":"2026-07-24T20:02:28.278Z","2.15.0":"2026-07-25T11:47:39.022Z","2.16.0":"2026-07-25T14:50:56.272Z","2.17.0":"2026-07-26T15:02:34.150Z","2.18.0":"2026-07-26T23:04:15.890Z","2.19.0":"2026-07-27T00:55:15.122Z","2.20.0":"2026-07-27T18:43:03.949Z","2.21.0":"2026-07-28T01:33:58.200Z","2.22.0":"2026-07-30T11:18:36.164Z","2.23.0":"2026-07-30T23:45:39.689Z","2.24.0":"2026-07-31T13:00:49.129Z","2.25.0":"2026-08-01T23:17:21.005Z","2.26.0":"2026-08-03T10:37:36.625Z","2.27.0":"2026-08-03T11:56:42.817Z","2.28.0":"2026-08-03T13:50:42.986Z","2.29.0":"2026-08-03T20:20:19.132Z","2.30.0":"2026-08-04T02:16:20.317Z","2.31.0":"2026-08-05T11:31:04.797Z","2.32.0":"2026-08-06T13:27:23.372Z","2.33.0":"2026-08-07T15:54:29.989Z","2.34.0":"2026-08-27T00:32:56.960Z","2.35.0":"2026-08-28T19:06:07.754Z","2.36.0":"2026-08-29T17:05:57.607Z","2.37.0":"2026-09-03T17:54:07.221Z","2.38.0":"2026-09-04T12:56:33.080Z","2.39.0":"2026-09-05T01:23:01.383Z","2.40.0":"2026-09-06T01:20:29.570Z","2.41.0":"2026-09-06T13:43:43.619Z","2.42.0":"2026-09-06T18:09:09.863Z","2.43.0":"2026-09-07T11:53:17.791Z","2.44.0":"2026-09-07T14:21:10.759Z","2.45.0":"2026-09-07T14:38:04.772Z","2.46.0":"2026-09-07T15:36:33.549Z","2.47.0":"2026-09-07T16:53:56.770Z","2.48.0":"2026-09-08T00:38:26.250Z","2.49.0":"2026-09-08T11:13:31.982Z","2.50.0":"2026-09-08T11:32:26.555Z","2.51.0":"2026-09-08T15:52:42.816Z","2.52.0":"2026-09-08T19:08:53.057Z","2.53.0":"2026-09-09T02:25:20.890Z","2.54.0":"2026-09-09T19:09:21.818Z","2.55.0":"2026-09-11T00:27:02.452Z","2.56.0":"2026-09-11T15:15:28.480Z","2.57.0":"2026-09-12T18:18:35.516Z","2.58.0":"2026-09-12T23:54:27.781Z","2.59.0":"2026-09-14T14:58:32.233Z","2.60.0":"2026-09-18T00:54:14.781Z","2.61.0":"2026-09-18T18:27:45.335Z","2.62.0":"2026-09-18T19:54:01.009Z","2.63.0":"2026-09-18T23:46:28.975Z","2.64.0":"2026-09-19T02:12:23.069Z","2.65.0":"2026-09-24T01:01:44.499Z","2.66.0":"2026-09-26T01:19:01.873Z","2.67.0":"2026-09-26T15:12:45.571Z","2.68.0":"2026-09-26T21:30:45.870Z","2.69.0":"2026-09-27T23:17:33.490Z","2.70.0":"2026-09-29T11:59:48.520Z","2.71.0":"2026-09-30T23:50:32.731Z","2.72.0":"2026-10-01T17:31:14.119Z","2.73.0":"2026-10-02T10:41:05.557Z","2.74.0":"2026-10-02T15:46:01.249Z","2.75.0":"2026-10-02T23:59:33.619Z"},"bugs":{"url":"https://github.com/dsj1984/mandrel/issues"},"license":"MIT","homepage":"https://github.com/dsj1984/mandrel#readme","keywords":["claude-code","ai-agents","sdlc","workflow","orchestration","agentic"],"repository":{"url":"git+https://github.com/dsj1984/mandrel.git","type":"git"},"description":"Claude Code-first opinionated workflow framework: instructions, skills, rules, and SDLC workflows that govern AI coding assistants.","maintainers":[{"name":"dsj1984","email":"dsj1984@gmail.com"}],"readme":"# Mandrel\n\n[![CI / CD](https://github.com/dsj1984/mandrel/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/dsj1984/mandrel/actions/workflows/ci.yml)\n\nAn opinionated workflow framework for AI coding assistants built on\nStory-centric GitHub orchestration. Planning, execution, and state all live\nnatively in GitHub Issues, Labels, and Projects V2.\n\n## Prerequisites\n\nMandrel is distributed as the\n[`mandrel`](https://www.npmjs.com/package/mandrel) npm\npackage and wires its orchestration into your project's GitHub repository.\nYou do **not** need a pre-created Git repo or GitHub remote — `bootstrap.js`\nprovisions both as part of a cold start (`git init` → `gh repo create --push`\n→ `gh project create`). You need:\n\n- **Node.js** >= 22.22.1 (< 25).\n- **`git`** on your `PATH`.\n- **GitHub CLI `gh`** >= 2.40, authenticated — run `gh auth login` once so\n  orchestration scripts pick up your token from the OS keychain. A vanilla\n  `gh auth login` token does **not** carry the `project` scope needed to\n  provision the GitHub Projects V2 board; bootstrap degrades to\n  warn-and-skip-board in that case (no hard failure). To enable board\n  provisioning, grant the scope with `gh auth refresh -s project` (re-auth\n  in the browser when prompted) before running `bootstrap.js`.\n\n## Quickstart\n\nThe canonical cold-start path is one command, then one slash command:\n\n```bash\nnpx mandrel init        # install mandrel → sync → prompt → bootstrap → onboarding tail → /mandrel-plan handoff\n```\n\n```text\n# then, inside Claude Code (commands load from .claude/commands/):\n/mandrel-plan --seed \"…\"   # interrogate → author one Story (default) → persist\n/mandrel-deliver <id>      # story-<id> → PR → main\n```\n\n`npx mandrel init` installs `mandrel` (when `./.agents/` is absent),\nmaterializes it via `mandrel sync`, then asks whether to **configure now**\n(option 1 → runs `bootstrap.js`, then the onboarding tail: stack detection,\ndocs scaffolding offer, `mandrel doctor` readiness gate, and a `/mandrel-plan`\nhandoff) or stop at **just the files** (option 2 → re-run `mandrel init`\nany time to configure). Pass `--assume-yes` for a non-interactive run that\nproceeds straight to configure (and forwards the flag to bootstrap). When\n`./.agents/` is already present (you ran `npm install mandrel` first), `init`\nskips the install/sync and goes straight to the prompt. Once `mandrel init`\ncompletes, you land at the `/mandrel-plan` handoff — run `/mandrel-plan --seed \"<idea>\"` to\nauthor your first Story, then deliver it with `/mandrel-deliver <storyId>`\n(`story-<id>` → PR → `main`).\n\n### Manual equivalent\n\nIf you prefer to drive the steps `mandrel init` wraps by hand, run them from\nyour project root:\n\n```bash\nnpm install mandrel   # pin an exact, provenance-signed version\nnpx mandrel sync                # materialize ./.agents/ from the package\nnode .agents/scripts/bootstrap.js\n```\n\n`npm install mandrel` pins an exact, provenance-signed version in\nyour lockfile. The package's `postinstall` hook runs `mandrel sync`\nbest-effort, so `./.agents/` is usually materialized automatically; the\nexplicit `npx mandrel sync` above is the belt-and-suspenders step for\n`--ignore-scripts` or sandboxed-CI installs. Run `npx mandrel doctor` any\ntime to confirm the install is healthy.\n\n> **pnpm users — hoist mandrel's runtime deps.** The materialized\n> `./.agents/scripts/*.js` run from your project root and resolve their\n> third-party deps (ajv, js-yaml, …) from your top-level `node_modules`.\n> npm and yarn hoist transitive deps there automatically; pnpm's default\n> isolated layout does **not** — it keeps them in the `.pnpm` virtual store,\n> so the framework scripts (and `mandrel doctor`'s `runtime-deps` check)\n> cannot see them. Add the following to your `.npmrc` before installing:\n>\n> ```ini\n> # Lift mandrel's runtime deps to the top-level node_modules so the\n> # materialized .agents/scripts can resolve them.\n> shamefully-hoist=true\n> ```\n>\n> Prefer a surgical alternative? Replace `shamefully-hoist` with a scoped\n> `public-hoist-pattern[]=` line per package listed in\n> `.agents/runtime-deps.json` — read the file rather than copying a list from\n> here, since the complexity kernel's closure is several packages. If\n> `mandrel doctor` reports `runtime-deps missing: …`, this is the fix.\n\n`bootstrap.js` is interactive on a TTY and auto-accepts the\nowner/repo/base branch/operator handle it can infer from your local\n`git remote` and `git config user.name` — you only get prompted for\nfields it can't infer (typically the optional Projects V2 number). When the\nfolder is not yet a git repo, or the GitHub repo doesn't exist, it\nprovisions them: `git init` plus a first commit, then\n`gh repo create --source=. --push` (use `--visibility private|public|internal`,\ndefault `private`, to set the new repo's visibility), then `gh project create`\nfor the Projects V2 board. Override anything inferred with `--owner`,\n`--repo`, `--base-branch`, or `--operator-handle`. For CI / scripted installs\npass `--assume-yes` plus whichever overrides you need. The script is\nidempotent — safe to re-run anytime.\n\nFor the consumer reference and the end-to-end workflow narrative, see\n[`.agents/README.md`](.agents/README.md) and\n[`docs/SDLC.md`](docs/SDLC.md). Every `.agentrc.json` key is\ndocumented in [`.agents/docs/configuration.md`](.agents/docs/configuration.md), and the\nslash-command index lives in\n[`.agents/docs/workflows.md`](.agents/docs/workflows.md).\n\n## Update\n\nAdvance `mandrel` to the newest published version and\nre-materialize `./.agents/` in one command:\n\n```bash\nnpx mandrel update\n```\n\n`mandrel update` runs an ordered cycle:\n\n1. **Resolve** the newest published version (a `npm view mandrel\n   version` registry probe) and the currently installed version.\n2. **No-op short-circuit** — already on the newest version ⇒ nothing to do.\n3. **Install** the target version with the project's package manager —\n   auto-detected from the lockfile (`pnpm-lock.yaml` ⇒ pnpm, `yarn.lock` ⇒\n   yarn, otherwise npm) so the bump lands in your real lockfile. The\n   dependency bump is left **staged** on disk — `mandrel update` performs no\n   `git add` / `git commit`, so you review and commit the lockfile change\n   yourself.\n4. **Sync** — re-materialize `./.agents/` from the freshly installed payload.\n5. **Migrate** — apply version-keyed migration steps for the crossed range.\n6. **Doctor** — run the check registry to verify the resulting install.\n7. **Surface** the target changelog section.\n\n### Flags\n\n- `--dry-run` — print the resolved target version and the ordered step\n  plan, then exit. No dependency is bumped, no file is written, no seam\n  runs.\n- `--install-cmd \"<cmd>\"` — override the auto-detected install command. The\n  package manager is normally detected from your lockfile\n  (`pnpm-lock.yaml` ⇒ `pnpm add -D …`, `yarn.lock` ⇒ `yarn add -D …`,\n  otherwise `npm install …`), so an override is rarely needed. When you do\n  pass one, a `{target}` placeholder is substituted with the resolved newest\n  version — e.g. `--install-cmd \"pnpm add -D mandrel@{target} -w\"` —\n  so the override can still consume the auto-probed version. The registry\n  probe always stays on `npm view` (it is a PM-agnostic registry query).\n\n### Manual equivalent\n\nIf you prefer to drive the steps by hand:\n\n```bash\nnpm install mandrel@latest   # or pnpm add / yarn up\nnpx mandrel sync                        # re-materialize ./.agents/\nnpx mandrel doctor                      # verify the install\n```\n\n## Benchmarking\n\nMandrel's effectiveness is measured by a separate companion repo,\n**[mandrel-bench](https://github.com/dsj1984/mandrel-bench)** — a *consumer* of\nthe published `mandrel` package. It pins a specific framework version,\nmaterializes it via `mandrel sync`, and drives Mandrel's own `/mandrel-plan`→`/mandrel-deliver`\npipeline (plus a bare-model control) over a scenario corpus. Each run is scored\nacross five dimensions — Quality, Planning fidelity, and Autonomy (what the\nscaffolding *buys*) versus Efficiency and Overhead ratio (what it *costs*) —\nreported as distributions with a noise-band, tracking the framework's\n**value-add over the bare-model baseline** across versions and models.\n\nThe benchmark lives in its own repo on purpose: holding the harness fixed while\nvarying the pinned `mandrel` version cleanly decouples harness-version from\nframework-version, and running through the published-package + `mandrel sync`\npath exercises the real consumer contract. The dependency is one-directional —\n`mandrel-bench` depends on `mandrel`, never the reverse. See the\n[mandrel-bench README](https://github.com/dsj1984/mandrel-bench#readme) for the\ndimensions, run model, and how to benchmark a new version.\n\n## Contributors\n\nThe published `mandrel` package ships three directories — `.agents/`, `bin/`,\nand `lib/` — plus the single file `docs/CHANGELOG.md`, and excludes the\n`__tests__` subtrees under `.agents/` and `lib/` (see the `files` array in\n[`package.json`](package.json)).\n`.agents/` is the payload `mandrel sync` materializes into a consumer's\n`./.agents/` directory; `bin/mandrel.js` and its `lib/` implementation stay\ninside `node_modules/mandrel/` and back the `npx mandrel …` CLI used\nthroughout this README. Everything else in this repository — `docs/`,\n`tests/`, `.github/`, the root tooling configs — is internal development\ntooling and is not published.\n\nCommon commands while developing the framework itself:\n\n```bash\nnpm run lint           # biome + markdownlint + repo ratchets + generated-doc drift\nnpm run format         # biome format — JavaScript/JSON only, not markdown\nnpm test               # framework tests\nnpm run test:coverage  # tests with coverage gate\n```\n\nDeeper reference material lives in `docs/` rather than inline here:\n\n- [`docs/architecture.md`](docs/architecture.md) — module map, repo\n  layout, state machine, and tech stack.\n- [`.agents/docs/configuration.md`](.agents/docs/configuration.md) — every `.agentrc.json`\n  key explained.\n- [`.agents/docs/workflows.md`](.agents/docs/workflows.md) — slash-command\n  index (auto-generated from the workflow set).\n- [`docs/CHANGELOG.md`](docs/CHANGELOG.md) — release history.\n- [`AGENTS.md`](AGENTS.md) — the repository-level orientation pointer; it\n  links on to [`docs/onboarding.md`](docs/onboarding.md) for the layout,\n  commands, and development standards.\n- [`docs/release-operations.md`](docs/release-operations.md) — the Release\n  Checklist, the Install Matrix release gate, the single-package release\n  topology, PAT / npm-token setup, and the major-version policy. Releases are\n  automated by `release-please`: land Conventional Commits on `main` and it\n  opens a combined `chore: release main` PR that squash-merges itself once\n  CI is green, tags `main`, and publishes `mandrel` to npm.\n\nInstall scripts are disabled by default: the committed\n[`.npmrc`](.npmrc) sets `ignore-scripts=true`, so `npm install` / `npm ci`\nwill not execute dependency lifecycle hooks — a defense-in-depth measure\nagainst malicious lifecycle scripts in compromised transitive packages\n(CWE-1357). CI passes `--ignore-scripts` explicitly. If you knowingly need\ninstall scripts for a specific install, run\n`npm install --ignore-scripts=false` for that invocation only.\n\nCRAP and Maintainability gates fire at four sites — `.husky/pre-commit`\n(`quality-preview.js --staged`, scored on the staged index), `.husky/pre-push`\n(diff-scoped against `origin/main`), close-validation (story close), and CI\n(`ci.yml`, push + PR) — against the same thresholds from\n`delivery.quality.*` in `.agentrc.json`. All four are **blocking**: the\npre-commit hook fires earliest and refuses the commit on a threshold\nviolation, and a green `npm run lint` / `npm test` / `check-baselines.js`\nrun does not predict it.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}