{"_id":"@codeforamerica/blueprint-cli","_rev":"7-add971fa108ab84b7cc505c86fd4434f","name":"@codeforamerica/blueprint-cli","dist-tags":{"latest":"0.2.3"},"versions":{"0.1.0":{"name":"@codeforamerica/blueprint-cli","version":"0.1.0","license":"SEE LICENSE IN LICENSE","_id":"@codeforamerica/blueprint-cli@0.1.0","maintainers":[{"name":"fritzjooste","email":"fritz@fritzjooste.com"},{"name":"alice-sjconsulting","email":"alice@sjconsulting.us"},{"name":"devowhippit","email":"dhirth@codeforamerica.org"},{"name":"chriscorrea","email":"ccorrea@codeforamerica.org"},{"name":"mryhmln","email":"mhamlin@codeforamerica.org"},{"name":"lkacenjar","email":"lkacenjar@codeforamerica.org"}],"homepage":"https://github.com/codeforamerica/safety-net-blueprint#readme","bugs":{"url":"https://github.com/codeforamerica/safety-net-blueprint/issues"},"bin":{"blueprint-resolve":"scripts/resolve.js","blueprint-validate":"scripts/validate.js","blueprint-scaffold-api":"scripts/scaffold-api.js","blueprint-export-schemas":"scripts/export-schemas.js","blueprint-add-api-resource":"scripts/add-api-resource.js","blueprint-generate-ts-clients":"scripts/generate-ts-clients.js","blueprint-generate-postman-collection":"scripts/generate-postman-collection.js"},"dist":{"shasum":"41e7c83d2c9e00b705753c95b1b14e225a6982a5","tarball":"https://registry.npmjs.org/@codeforamerica/blueprint-cli/-/blueprint-cli-0.1.0.tgz","fileCount":26,"integrity":"sha512-iueblxVDmGxaJhOdYRH8g8ol4MqaTyYiVCuzM/4Fj3i0DtHXTDhlnN8k1NOT3jlNltY1GJvhQT+QJUV7IXd6Rw==","signatures":[{"sig":"MEQCICoWcgeM7k9RX9JrMADrijp82gXmRcuMiBl167YNKiTrAiBErAPyQayxPYcKbZ61CN+/M6FfC9XM4Dsz0Z8NJtpKfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":366548},"type":"module","engines":{"node":">=22.11.0"},"gitHead":"590957218a4729cb34da2783be15dd161a110140","scripts":{"test":"node --test tests/*.test.js","test:unit":"node --test tests/*.test.js"},"_npmUser":{"name":"mryhmln","email":"mhamlin@codeforamerica.org"},"repository":{"url":"git+https://github.com/codeforamerica/safety-net-blueprint.git","type":"git","directory":"packages/blueprint-cli"},"_npmVersion":"10.9.8","description":"CLI tooling for the Blueprint framework — validate, resolve, scaffold, and generate artifacts across all contract types","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.12.0","js-yaml":"^4.1.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1","@codeforamerica/blueprint-core":"^0.1.0","@apidevtools/json-schema-ref-parser":"^11.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@redocly/cli":"^2.31.3","@hey-api/openapi-ts":"^0.90.3"},"_npmOperationalInternal":{"tmp":"tmp/blueprint-cli_0.1.0_1789144463744_0.6613831352656445","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@codeforamerica/blueprint-cli","version":"0.2.0","license":"SEE LICENSE IN LICENSE","_id":"@codeforamerica/blueprint-cli@0.2.0","maintainers":[{"name":"fritzjooste","email":"fritz@fritzjooste.com"},{"name":"alice-sjconsulting","email":"alice@sjconsulting.us"},{"name":"devowhippit","email":"dhirth@codeforamerica.org"},{"name":"chriscorrea","email":"ccorrea@codeforamerica.org"},{"name":"mryhmln","email":"mhamlin@codeforamerica.org"},{"name":"lkacenjar","email":"lkacenjar@codeforamerica.org"}],"homepage":"https://github.com/codeforamerica/safety-net-blueprint#readme","bugs":{"url":"https://github.com/codeforamerica/safety-net-blueprint/issues"},"bin":{"blueprint-resolve":"scripts/resolve.js","blueprint-validate":"scripts/validate.js","blueprint-scaffold-api":"scripts/scaffold-api.js","blueprint-export-schemas":"scripts/export-schemas.js","blueprint-add-api-resource":"scripts/add-api-resource.js","blueprint-generate-ts-clients":"scripts/generate-ts-clients.js","blueprint-generate-postman-collection":"scripts/generate-postman-collection.js"},"dist":{"shasum":"c81a1b16fc97489fff81f777b7e127598134ed0d","tarball":"https://registry.npmjs.org/@codeforamerica/blueprint-cli/-/blueprint-cli-0.2.0.tgz","fileCount":26,"integrity":"sha512-4NhaiZo3EFfBByTQTHwYKhAWuSxlXWvVXsfsc9W+RNro373boRQ0fnYsV2/PN8a2gvzTgPDC9W+68oVHch4GPw==","signatures":[{"sig":"MEUCIGvcFdwb+R7tCgSXoEhdCAWJjk4GYa95y0+lm9WgGm3+AiEA3Kxe7u8kvQWRBJDq5oBd64/KYyEJS1r3zFNIb074z3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC6PSDRjCee6FQeDI/IHdsoPR+t9HnaOeexbse4nFfTOQIhAMtB+YfkNjadEdTxcbMA5AqQR/3759gUjpYhUSzU7Fvr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":366799},"type":"module","engines":{"node":">=22.11.0"},"gitHead":"6f440c36a0c63d8d5be2e307a23178a5041d5971","scripts":{"test":"node --test tests/*.test.js","test:unit":"node --test tests/*.test.js"},"_npmUser":{"name":"mryhmln","email":"mhamlin@codeforamerica.org"},"repository":{"url":"git+https://github.com/codeforamerica/safety-net-blueprint.git","type":"git","directory":"packages/blueprint-cli"},"_npmVersion":"10.9.8","description":"CLI tooling for the Blueprint framework — validate, resolve, scaffold, and generate artifacts across all contract types","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.12.0","js-yaml":"^4.1.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1","@codeforamerica/blueprint-core":"^0.1.0","@apidevtools/json-schema-ref-parser":"^11.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@redocly/cli":"^2.31.3","@hey-api/openapi-ts":"^0.90.3"},"_npmOperationalInternal":{"tmp":"tmp/blueprint-cli_0.2.0_1789492876318_0.006060124195882199","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@codeforamerica/blueprint-cli","version":"0.2.1","license":"SEE LICENSE IN LICENSE","_id":"@codeforamerica/blueprint-cli@0.2.1","maintainers":[{"name":"fritzjooste","email":"fritz@fritzjooste.com"},{"name":"alice-sjconsulting","email":"alice@sjconsulting.us"},{"name":"devowhippit","email":"dhirth@codeforamerica.org"},{"name":"chriscorrea","email":"ccorrea@codeforamerica.org"},{"name":"mryhmln","email":"mhamlin@codeforamerica.org"},{"name":"lkacenjar","email":"lkacenjar@codeforamerica.org"}],"homepage":"https://github.com/codeforamerica/safety-net-blueprint#readme","bugs":{"url":"https://github.com/codeforamerica/safety-net-blueprint/issues"},"bin":{"blueprint-resolve":"scripts/resolve.js","blueprint-validate":"scripts/validate.js","blueprint-scaffold-api":"scripts/scaffold-api.js","blueprint-export-schemas":"scripts/export-schemas.js","blueprint-add-api-resource":"scripts/add-api-resource.js","blueprint-generate-ts-clients":"scripts/generate-ts-clients.js","blueprint-generate-postman-collection":"scripts/generate-postman-collection.js"},"dist":{"shasum":"406207c9445615201bca533fe613091942b8ff4f","tarball":"https://registry.npmjs.org/@codeforamerica/blueprint-cli/-/blueprint-cli-0.2.1.tgz","fileCount":26,"integrity":"sha512-tIzX+joX6kRz7VkbJf1n+ChndqW6yux5KDAIFEt44tVfBYXS9qTDVU22J23lYFRrMsm0JfEXUICy4Eaf3V4ZkQ==","signatures":[{"sig":"MEYCIQDolHLuC7O8jGcOArl9MmV5n9trmrxq8RjS/3uV88PgegIhAOH7vDQbypY/k46hIA4eby0ZLeWRsQRMPmVwTnFb2OZt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFDs9noBXxkWDFFNrWC41r81cTzpqsFmyE+WLawe5TrBAiEAi1bSr0Hu2K7nrlV2nHysj1++wer0EDlUJlx/4ZyGZj8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":366799},"type":"module","engines":{"node":">=22.11.0"},"gitHead":"944bc41f9b9ef7407b95bff14e940b74636a76a4","scripts":{"test":"node --test tests/*.test.js","test:unit":"node --test tests/*.test.js"},"_npmUser":{"name":"mryhmln","email":"mhamlin@codeforamerica.org"},"repository":{"url":"git+https://github.com/codeforamerica/safety-net-blueprint.git","type":"git","directory":"packages/blueprint-cli"},"_npmVersion":"10.9.8","description":"CLI tooling for the Blueprint framework — validate, resolve, scaffold, and generate artifacts across all contract types","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.12.0","js-yaml":"^4.1.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1","@codeforamerica/blueprint-core":"^0.1.1","@apidevtools/json-schema-ref-parser":"^11.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@redocly/cli":"^2.31.3","@hey-api/openapi-ts":"^0.90.3"},"_npmOperationalInternal":{"tmp":"tmp/blueprint-cli_0.2.1_1789499117127_0.9337302018398501","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@codeforamerica/blueprint-cli","version":"0.2.2","license":"SEE LICENSE IN LICENSE","_id":"@codeforamerica/blueprint-cli@0.2.2","maintainers":[{"name":"fritzjooste","email":"fritz@fritzjooste.com"},{"name":"alice-sjconsulting","email":"alice@sjconsulting.us"},{"name":"devowhippit","email":"dhirth@codeforamerica.org"},{"name":"chriscorrea","email":"ccorrea@codeforamerica.org"},{"name":"mryhmln","email":"mhamlin@codeforamerica.org"},{"name":"lkacenjar","email":"lkacenjar@codeforamerica.org"}],"homepage":"https://github.com/codeforamerica/safety-net-blueprint#readme","bugs":{"url":"https://github.com/codeforamerica/safety-net-blueprint/issues"},"bin":{"blueprint-resolve":"scripts/resolve.js","blueprint-validate":"scripts/validate.js","blueprint-scaffold-api":"scripts/scaffold-api.js","blueprint-export-schemas":"scripts/export-schemas.js","blueprint-add-api-resource":"scripts/add-api-resource.js","blueprint-generate-ts-clients":"scripts/generate-ts-clients.js","blueprint-generate-postman-collection":"scripts/generate-postman-collection.js"},"dist":{"shasum":"8edcf2a81c6c332131f08546fbff66685583297e","tarball":"https://registry.npmjs.org/@codeforamerica/blueprint-cli/-/blueprint-cli-0.2.2.tgz","fileCount":26,"integrity":"sha512-29qH69bo+mkuXaWpyyiVMR1DqzXp3COAwXI4pzOc+xz5XQ3RyXzOZLepQ8Xgcb91hBiUs75jWU+dq7vL2bBbvw==","signatures":[{"sig":"MEYCIQC768i+I2TCMY1Qi3nLbBKPztMVIyAty9c0tDFmNwdQ4wIhALPuUyzU30hHWxccZnClIPeUh4Nep9I3AKkedVbzEzE7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCUKi/Tmvn4L3REeGKFH0zJhqmqaihNoUCoLJ+gkOVDtQIhAMJoVda1cqWJgtc9TKHOyhaLkA9tknTiGK3BLGUxZKp2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforamerica%2fblueprint-cli@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367379},"type":"module","engines":{"node":">=22.11.0"},"gitHead":"0228d994ff89df2a7ae4d6767aa2ca7a26386a7d","scripts":{"test":"node --test tests/*.test.js","test:unit":"node --test tests/*.test.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0c6e229b-9f40-4bbe-9991-9b744a08b968"}},"repository":{"url":"git+https://github.com/codeforamerica/safety-net-blueprint.git","type":"git","directory":"packages/blueprint-cli"},"_npmVersion":"12.0.2","description":"CLI tooling for the Blueprint framework — validate, resolve, scaffold, and generate artifacts across all contract types","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.12.0","js-yaml":"^4.1.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1","@codeforamerica/blueprint-core":"^0.1.1","@apidevtools/json-schema-ref-parser":"^11.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@redocly/cli":"^2.31.3","@hey-api/openapi-ts":"^0.90.3"},"_npmOperationalInternal":{"tmp":"tmp/blueprint-cli_0.2.2_1789578900131_0.08839578644349255","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"_id":"@codeforamerica/blueprint-cli@0.2.3","bin":{"blueprint-resolve":"scripts/resolve.js","blueprint-validate":"scripts/validate.js","blueprint-scaffold-api":"scripts/scaffold-api.js","blueprint-export-schemas":"scripts/export-schemas.js","blueprint-add-api-resource":"scripts/add-api-resource.js","blueprint-generate-ts-clients":"scripts/generate-ts-clients.js","blueprint-generate-postman-collection":"scripts/generate-postman-collection.js"},"bugs":{"url":"https://github.com/codeforamerica/safety-net-blueprint/issues"},"dist":{"shasum":"720f0ab9fe8f582423e1bcfa592808ada4bd4fe8","tarball":"https://registry.npmjs.org/@codeforamerica/blueprint-cli/-/blueprint-cli-0.2.3.tgz","fileCount":26,"integrity":"sha512-F9Rqxe65HYKv84Mn67tOfTrdRszfrx3D7+bOKk6Go7bLxk5qQGktzbQ4PCK5lwOsBiRe+tjF+pmQ0yZWUuU4Wg==","signatures":[{"sig":"MEUCIQC0aMm51wi6A6Get+1wckXl4RggnoSQaXUSAQ0n00emHgIgMrPYLfKsnbpiWUkLHlKNMiqBbZV71XwBSkixgryoHD0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDzutSwgMonTyBigVsVRMNus8gm53VVuUSwnW2XC+UEEwIgQFxlqCcjZ5/Sw6BeD4v9YqIQwdzMxFIh1lszDfJweRE="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforamerica%2fblueprint-cli@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":368083},"name":"@codeforamerica/blueprint-cli","type":"module","engines":{"node":">=22.11.0"},"gitHead":"1e1cf669249daf78000f39a819a34ccb46092838","license":"SEE LICENSE IN LICENSE","scripts":{"test":"node --test tests/*.test.js","test:unit":"node --test tests/*.test.js"},"version":"0.2.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0c6e229b-9f40-4bbe-9991-9b744a08b968"}},"homepage":"https://github.com/codeforamerica/safety-net-blueprint#readme","repository":{"url":"git+https://github.com/codeforamerica/safety-net-blueprint.git","type":"git","directory":"packages/blueprint-cli"},"_npmVersion":"12.0.2","description":"CLI tooling for the Blueprint framework — validate, resolve, scaffold, and generate artifacts across all contract types","directories":{},"maintainers":[{"name":"fritzjooste","email":"fritz@fritzjooste.com"},{"name":"devowhippit","email":"dhirth@codeforamerica.org"},{"name":"robdiciuccio","email":"rob.diciuccio@gmail.com"},{"name":"chriscorrea","email":"ccorrea@codeforamerica.org"},{"name":"mryhmln","email":"mhamlin@codeforamerica.org"},{"name":"lkacenjar","email":"lkacenjar@codeforamerica.org"}],"_nodeVersion":"22.23.2","dependencies":{"ajv":"^8.12.0","js-yaml":"^4.1.0","pluralize":"^8.0.0","ajv-formats":"^3.0.1","@hey-api/openapi-ts":"^0.90.3","@codeforamerica/blueprint-core":"^0.1.1","@apidevtools/json-schema-ref-parser":"^11.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@redocly/cli":"^2.31.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/blueprint-cli_0.2.3_1789691471573_0.7970954712949125"}}},"time":{"created":"2026-09-11T16:34:23.596Z","modified":"2026-09-18T00:31:12.174Z","0.1.0":"2026-09-11T16:34:23.870Z","0.2.0":"2026-09-15T17:21:16.403Z","0.2.1":"2026-09-15T19:05:17.282Z","0.2.2":"2026-09-16T17:15:00.253Z","0.2.3":"2026-09-18T00:31:11.718Z"},"bugs":{"url":"https://github.com/codeforamerica/safety-net-blueprint/issues"},"license":"SEE LICENSE IN LICENSE","homepage":"https://github.com/codeforamerica/safety-net-blueprint#readme","repository":{"url":"git+https://github.com/codeforamerica/safety-net-blueprint.git","type":"git","directory":"packages/blueprint-cli"},"description":"CLI tooling for the Blueprint framework — validate, resolve, scaffold, and generate artifacts across all contract types","maintainers":[{"name":"fritzjooste","email":"fritz@fritzjooste.com"},{"name":"devowhippit","email":"dhirth@codeforamerica.org"},{"name":"robdiciuccio","email":"rob.diciuccio@gmail.com"},{"name":"chriscorrea","email":"ccorrea@codeforamerica.org"},{"name":"mryhmln","email":"mhamlin@codeforamerica.org"},{"name":"lkacenjar","email":"lkacenjar@codeforamerica.org"}],"readme":"# @codeforamerica/blueprint-cli\n\n> CLI tooling for the Blueprint framework — validate, resolve, scaffold, and generate artifacts across all contract types\n\n[![npm version](https://img.shields.io/npm/v/@codeforamerica/blueprint-cli.svg)](https://www.npmjs.com/package/@codeforamerica/blueprint-cli)\n[![license](https://img.shields.io/npm/l/@codeforamerica/blueprint-cli.svg)](https://github.com/codeforamerica/safety-net-blueprint/blob/main/LICENSE)\n\n> **Pre-release:** This package is at `0.x`. Until `1.0.0`, minor versions may include breaking changes. Pin your version if stability matters.\n\n## Installation\n\n```bash\nnpm install --save-dev @codeforamerica/blueprint-cli\n```\n\n## Typical Workflow\n\n### Building a new domain\n\n1. [Scaffold](#blueprint-scaffold-api) a new spec with CRUD paths and schema variants\n2. [Add resources](#blueprint-add-api-resource) to the domain as needed\n3. [Resolve](#blueprint-resolve) overlays against base specs and generate RPC endpoints from state machines\n4. [Validate](#blueprint-validate) the resolved output\n5. [Generate TypeScript clients](#blueprint-generate-ts-clients) and/or a [Postman collection](#blueprint-generate-postman-collection)\n\nFor the full domain authoring workflow — including state machines, annotations, overlays, and compositions — see the [New Domain Builder Guide](https://github.com/codeforamerica/safety-net-blueprint/blob/main/docs/getting-started/new-domain-builders.md).\n\n### Adopting the Safety Net Contracts\n\n1. Author an overlay file to customize the base contracts for your context — see the [Overlay Guide](https://github.com/codeforamerica/safety-net-blueprint/blob/main/docs/guides/overlay-guide.md)\n2. [Resolve](#blueprint-resolve) the base contracts with your overlay\n3. [Validate](#blueprint-validate) the resolved output\n4. [Generate TypeScript clients](#blueprint-generate-ts-clients) and/or a [Postman collection](#blueprint-generate-postman-collection)\n\n## Commands\n\nAll commands are available as bin scripts. Run them via npm scripts in your `package.json` or directly with `npx`.\n\n### `blueprint-scaffold-api`\n\nScaffolds a new OpenAPI spec with CRUD paths, standard schema variants (create/update/list response), and shared component `$ref`s pre-wired. Generates the full file structure for a new domain.\n\n```bash\nnpx blueprint-scaffold-api \\\n  --name \"permits\" \\\n  --domain \"permits\" \\\n  --resource \"Permit\" \\\n  --out ./src/domains/permits\n```\n\n`--name` is the spec file name; `--domain` sets the `x-domain` field in the spec and defaults to `--name` if omitted.\n\n### `blueprint-add-api-resource`\n\nAdds a new resource to an existing domain spec — generates the paths, schema variants, and operation IDs following Blueprint conventions.\n\n```bash\nnpx blueprint-add-api-resource --name \"permits\" --resource \"Inspection\" --out ./src/domains/permits\n```\n\n### `blueprint-resolve`\n\nMerges base OpenAPI specs with overlay files and generates RPC endpoint definitions from state machines. The primary step before running the mock server, generating clients, or building the explorer.\n\n```bash\nnpx blueprint-resolve \\\n  --spec ./src \\\n  --overlay ./overlays/config.yaml \\\n  --out ./resolved\n```\n\nOverlays let you customize base contracts without forking them — add fields, change descriptions, restrict visibility, or set domain-specific defaults. See the [Overlay Guide](https://github.com/codeforamerica/safety-net-blueprint/blob/main/docs/guides/overlay-guide.md).\n\n### `blueprint-validate`\n\nRuns all validators against a resolved contracts directory in sequence:\n\n1. **OpenAPI validation** — syntax correctness, design pattern conformance (required fields, list response shapes, shared error `$ref`s, foreign key annotations)\n2. **Fragment `$ref` validation** — checks that all `$ref` pointers resolve\n3. **State machine validation** — validates state machine definitions and cross-artifact consistency (emit types matching event catalog entries, guard references, actor roles)\n4. **Annotation validation** — validates field annotation files against their referenced schemas and policy registry\n\n```bash\nnpx blueprint-validate --resolved ./resolved\n```\n\n### `blueprint-generate-ts-clients`\n\nGenerates typed TypeScript clients from resolved OpenAPI specs using `@hey-api/openapi-ts`. Produces per-domain SDK modules with full type coverage.\n\n```bash\nnpx blueprint-generate-ts-clients --spec ./resolved --out ./clients\n```\n\n### `blueprint-generate-postman-collection`\n\nGenerates a Postman collection from resolved specs for use in API testing and contract verification.\n\n```bash\nnpx blueprint-generate-postman-collection --spec ./resolved --out ./postman\n```\n\n### `blueprint-export-schemas`\n\nExports component schemas from resolved OpenAPI specs as standalone JSON Schema files. Useful when downstream tooling — form renderers, validators, non-TypeScript clients — needs JSON Schema but not the full OpenAPI spec.\n\n```bash\nnpx blueprint-export-schemas --spec ./resolved --out ./schemas\n```\n\nOutput is organized by domain:\n\n```\nschemas/\n  intake/\n    Application.json\n    HouseholdMember.json\n    ...\n```\n\nThe domain directory name is taken from `info.x-domain` in each spec, falling back to the filename slug (e.g. `intake` from `intake-openapi.yaml`).\n\n## Changelog\n\nSee [CHANGELOG.md](https://github.com/codeforamerica/safety-net-blueprint/blob/main/packages/blueprint-cli/CHANGELOG.md) for release history.\n\n## Documentation\n\nSee the [Blueprint documentation](https://github.com/codeforamerica/safety-net-blueprint) for full guides and reference.\n\n## License\n\n[PolyForm Noncommercial License 1.0.0](https://polyformproject.org/licenses/noncommercial/1.0.0/)\n","readmeFilename":"README.md"}