{"owner":"glideapps","repo":"quicktype","hasSkills":true,"totalSkillsCount":11,"totalTokensCount":5117,"categories":["plugin-manifest","anthropic-skill","claude-rule"],"hasMcp":false,"mcpConfig":null,"found":["packages/quicktype-vscode/README.md","packages/quicktype-vscode/package.json","packages/quicktype-graphql-input/package.json","packages/quicktype-graphql-input/tsconfig.json","packages/quicktype-typescript-input/tsconfig.json","packages/quicktype-vscode/tsconfig.json","packages/quicktype-typescript-input/package.json","CLAUDE.md","packages/quicktype-core/package.json","packages/quicktype-core/tsconfig.esm.json","packages/quicktype-core/tsconfig.json"],"skills":{"packages/quicktype-vscode/README.md":"**Supports** `C (cJSON)`, `C#`, `C++`, `Crystal`, `Dart`, `Elm`, `Flow`, `Go`, `Haskell`, `JSON Schema`, `Java`, `JavaScript`, `JavaScript PropTypes`, `Kotlin`, `Objective-C`, `PHP`, `Pike`, `Python`, `Ruby`, `Rust`, `Scala3`, `Smithy`, `Swift`, `TypeScript`, `TypeScript Effect Schema` and `TypeScript Zod`\n\n-   Interactively generate types and (de-)serialization code from JSON, JSON Schema, and TypeScript\n-   Paste JSON/JSON Schema/TypeScript as code\n\n![](https://raw.githubusercontent.com/quicktype/quicktype-vscode/master/media/demo-interactive.gif)\n\n`quicktype` infers types from sample JSON data, then outputs strongly typed models and serializers for working with that data in your desired programming language. For more explanation, read [A first look at quicktype](http://blog.quicktype.io/first-look/).\n\nIn any JSON file, use the command \"Open quicktype for JSON\" to summon quicktype, which will generate types from the JSON. Invoke \"Change quicktype's target language\" to pick a different language. There are similar \"Open quicktype\" commands for JSON Schema and TypeScript.\n\nAnother way to use quicktype is to copy JSON into the clipboard and invoke \"Paste JSON as code/types\":\n\n![](https://raw.githubusercontent.com/quicktype/quicktype-vscode/master/media/demo.gif)\n\nFor a more powerful experience, including custom options and the ability to generate code from multiple JSON samples, try [quicktype.io](https://app.quicktype.io).\n\n## Installing\n\nThis extension is available for free in the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items/quicktype.quicktype)\n\n## Customization\n\n-   `quicktype.justTypes`: Generate only types, or also produce (de)serialization code when using \"Open quicktype\". When using \"Paste\", you can pick between the commands for \"types\" and \"code\", without having to set this option.\n\n-   `quicktype.inferMaps`, `quicktype.inferEnums`, `quicktype.inferDateTimes`, `quicktype.inferUuids`, `quicktype.inferBoolStrings`, `quicktype.inferIntegerStrings`: Tell quicktype whether it should try to infer those types from the input JSON. This is not a precise science, so sometimes the guess will be wrong, which is why you can turn them off through these options. Also, quicktype doesn't support dates, UUIDs and stringified integers/booleans in all target languages yet.\n\n## Contribute!\n\nquicktype is an open source project, and we're always happy about contributors. If you can think of a way to improve [this extension](https://github.com/quicktype/quicktype-vscode), or [quicktype](https://github.com/quicktype/quicktype), please consider contributing, especially if you know TypeScript. Code is only one way to contribute, though: we're particularly short on documentation. We'd also love to hear your feedback - come [talk to us on Slack](http://slack.quicktype.io)!\n\nIf you find a bug, please [report it on GitHub](https://github.com/quicktype/quicktype-vscode/issues).\n","packages/quicktype-vscode/package.json":"{\n    \"name\": \"quicktype\",\n    \"displayName\": \"Paste JSON as Code\",\n    \"description\": \"Copy JSON, paste as Go, TypeScript, C#, C++ and more.\",\n    \"version\": \"24.0.0\",\n    \"publisher\": \"quicktype\",\n    \"icon\": \"media/icon.png\",\n    \"galleryBanner\": {\n        \"color\": \"#00212b\",\n        \"theme\": \"dark\"\n    },\n    \"homepage\": \"https://quicktype.io\",\n    \"author\": {\n        \"name\": \"quicktype.io\",\n        \"email\": \"hello@quicktype.io\"\n    },\n    \"bugs\": {\n        \"url\": \"https://github.com/quicktype/issues\"\n    },\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/glideapps/quicktype\"\n    },\n    \"engines\": {\n        \"vscode\": \"^1.87.0\"\n    },\n    \"categories\": [\n        \"Other\"\n    ],\n    \"keywords\": [\n        \"json\",\n        \"converter\"\n    ],\n    \"markdown\": \"github\",\n    \"main\": \"dist/extension.js\",\n    \"vsce\": {\n        \"dependencies\": false\n    },\n    \"contributes\": {\n        \"configuration\": {\n            \"type\": \"object\",\n            \"title\": \"quicktype\",\n            \"properties\": {\n                \"quicktype.justTypes\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Produce only types; no (de-)serialization code\"\n                },\n                \"quicktype.inferMaps\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Infer maps when object keys look like map keys.\"\n                },\n                \"quicktype.inferEnums\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Infer enums when there aren't many different string values.\"\n                },\n                \"quicktype.inferDateTimes\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Use date-time types for strings that look like date-times.\"\n                },\n                \"quicktype.inferUuids\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Use UUID types for strings that look like UUIDs.\"\n                },\n                \"quicktype.inferIntegerStrings\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Convert stringified integers into integers, and back.\"\n                },\n                \"quicktype.inferBooleanStrings\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Convert stringified booleans into booleans, and back.\"\n                }\n            }\n        },\n        \"commands\": [\n            {\n                \"command\": \"quicktype.pasteJSONAsTypes\",\n                \"title\": \"Paste JSON as Types\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONAsTypesAndSerialization\",\n                \"title\": \"Paste JSON as Code\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONSchemaAsTypes\",\n                \"title\": \"Paste JSON Schema as Types\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONSchemaAsTypesAndSerialization\",\n                \"title\": \"Paste JSON Schema as Code\"\n            },\n            {\n                \"command\": \"quicktype.pasteTypeScriptAsTypesAndSerialization\",\n                \"title\": \"Paste TypeScript as Code\"\n            },\n            {\n                \"command\": \"quicktype.openForJSON\",\n                \"title\": \"Open quicktype for JSON\"\n            },\n            {\n                \"command\": \"quicktype.openForJSONSchema\",\n                \"title\": \"Open quicktype for JSON Schema\"\n            },\n            {\n                \"command\": \"quicktype.openForTypeScript\",\n                \"title\": \"Open quicktype for TypeScript\"\n            },\n            {\n                \"command\": \"quicktype.changeTargetLanguage\",\n                \"title\": \"Set quicktype target language\"\n            }\n        ],\n        \"keybindings\": [\n            {\n                \"command\": \"quicktype.pasteJSONAsTypesAndSerialization\",\n                \"key\": \"ctrl+shift+V\",\n                \"mac\": \"cmd+shift+V\",\n                \"when\": \"editorTextFocus && editorLangId != 'markdown'\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONAsTypes\",\n                \"key\": \"ctrl+shift+alt+V\",\n                \"mac\": \"cmd+shift+alt+V\",\n                \"when\": \"editorTextFocus\"\n            }\n        ]\n    },\n    \"scripts\": {\n        \"pub\": \"vsce publish -p $VSCE_TOKEN\",\n        \"package\": \"vsce package\",\n        \"build\": \"node ../../node_modules/typescript/bin/tsc -p ./\",\n        \"watch\": \"node ../../node_modules/typescript/bin/tsc -watch -p ./\",\n        \"test\": \"npm run build && node ./node_modules/vscode/bin/test\",\n        \"vscode:prepublish\": \"npm run esbuild-base -- --minify\",\n        \"esbuild-base\": \"esbuild ./src/extension.ts --bundle --outfile=dist/extension.js --external:vscode --format=cjs --platform=node\",\n        \"esbuild\": \"npm run esbuild-base -- --sourcemap\",\n        \"esbuild-watch\": \"npm run esbuild-base -- --sourcemap --watch\"\n    },\n    \"devDependencies\": {\n        \"@types/mocha\": \"^10.0.6\",\n        \"@types/node\": \"~20.19.0\",\n        \"@types/node-persist\": \"^3.1.8\",\n        \"@types/readable-stream\": \"^4.0.10\",\n        \"@types/vscode\": \"^1.87.0\",\n        \"@vscode/test-cli\": \"^0.0.15\",\n        \"@vscode/test-electron\": \"^2.5.2\",\n        \"@vscode/vsce\": \"^3.9.2\",\n        \"typescript\": \"~7.0.2\",\n        \"node-persist\": \"^4.0.1\",\n        \"quicktype-core\": \"file:../quicktype-core\",\n        \"quicktype-typescript-input\": \"file:../quicktype-typescript-input\",\n        \"unicode-properties\": \"github:quicktype/unicode-properties#dist\"\n    }\n}\n","packages/quicktype-graphql-input/package.json":"{\n    \"name\": \"quicktype-graphql-input\",\n    \"version\": \"24.0.0\",\n    \"package\": \"Package for using GraphQL as an input language to quicktype\",\n    \"license\": \"Apache-2.0\",\n    \"main\": \"dist/index.js\",\n    \"types\": \"dist/index.d.ts\",\n    \"repository\": \"https://github.com/glideapps/quicktype\",\n    \"engines\": {\n        \"node\": \">=20.0.0\"\n    },\n    \"scripts\": {\n        \"clean\": \"rm -rf dist node_modules *~\",\n        \"build\": \"node ../../node_modules/typescript/bin/tsc\"\n    },\n    \"dependencies\": {\n        \"quicktype-core\": \"file:../quicktype-core\",\n        \"collection-utils\": \"^1.0.1\",\n        \"graphql\": \"^16.11.0\"\n    },\n    \"devDependencies\": {\n        \"@types/node\": \"~20.19.0\",\n        \"typescript\": \"~7.0.2\"\n    },\n    \"files\": [\n        \"dist\"\n    ]\n}\n","packages/quicktype-graphql-input/tsconfig.json":"{\n    \"compilerOptions\": {\n        \"target\": \"es6\",\n        \"module\": \"commonjs\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"allowJs\": false,\n        \"declaration\": true,\n        \"strict\": true,\n        \"alwaysStrict\": true,\n        \"outDir\": \"dist\",\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"esModuleInterop\": true,\n        \"rootDir\": \"src\"\n    },\n    \"include\": [\"src\"]\n}\n","packages/quicktype-typescript-input/tsconfig.json":"{\n    \"compilerOptions\": {\n        \"target\": \"es6\",\n        \"module\": \"commonjs\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"allowJs\": false,\n        \"declaration\": true,\n        \"strict\": true,\n        \"alwaysStrict\": true,\n        \"outDir\": \"dist\",\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"esModuleInterop\": true,\n        \"rootDir\": \"src\"\n    },\n    \"include\": [\"src\"]\n}\n","packages/quicktype-vscode/tsconfig.json":"{\n    \"compilerOptions\": {\n        \"module\": \"commonjs\",\n        \"target\": \"es6\",\n        \"outDir\": \"out\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"sourceMap\": true,\n        \"rootDir\": \".\",\n        \"allowJs\": false,\n        \"strict\": true,\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"esModuleInterop\": true\n    },\n    \"exclude\": [\"node_modules\", \".vscode-test\"]\n}\n","packages/quicktype-typescript-input/package.json":"{\n    \"name\": \"quicktype-typescript-input\",\n    \"version\": \"24.0.0\",\n    \"description\": \"Package for using TypeScript as an input language to quicktype\",\n    \"license\": \"Apache-2.0\",\n    \"main\": \"dist/index.js\",\n    \"types\": \"dist/index.d.ts\",\n    \"repository\": \"https://github.com/glideapps/quicktype\",\n    \"engines\": {\n        \"node\": \">=20.0.0\"\n    },\n    \"scripts\": {\n        \"clean\": \"rm -rf dist node_modules *~\",\n        \"build\": \"node ../../node_modules/typescript/bin/tsc\"\n    },\n    \"dependencies\": {\n        \"quicktype-core\": \"file:../quicktype-core\",\n        \"typescript\": \"5.9.3\",\n        \"typescript-json-schema\": \"0.67.4\"\n    },\n    \"devDependencies\": {\n        \"@types/node\": \"~20.19.0\"\n    },\n    \"files\": [\n        \"dist\"\n    ]\n}\n","CLAUDE.md":"# Repository conventions\n\n## Environment\n\n- This is a TypeScript/npm monorepo using npm workspaces.\n- Prefer the Node version from `.nvmrc` (`nvm use`; currently Node 24.6.0). The root CLI package requires Node >= 20.19.0; the library workspaces require Node >= 20.0.0.\n- Install dependencies with `npm ci`.\n\n## Build and run\n\nBuild everything with:\n\n```bash\nnpm run build\n```\n\nThis runs `npm run clean`, builds all workspaces that have a `build` script, and then runs the root `tsc`.\n\nAfter building, the CLI entry point is `dist/index.js`:\n\n```bash\nnode dist/index.js --version\nnode dist/index.js --help\n```\n\nFor live rebuild/re-run while developing renderer output, use:\n\n```bash\nnpm start -- \"<quicktype args>\"\n```\n\n## Testing\n\n### Test strategy\n\nquicktype's primary testing method is end-to-end fixture tests driven by JSON and JSON Schema files. For each sample input, a fixture generates code for a language, runs a driver program in `test/fixtures/<language>/` that deserializes the sample and serializes it back, and compares the round-tripped JSON to the input.\n\nAny change that affects generated output **must** be covered by a JSON or JSON Schema fixture test, either by enabling existing inputs for the language or by adding new ones. Unit tests in `test/unit/` complement fixtures for behavior that fixtures cannot express, such as asserting that code is not generated, API-level behavior, or fast local iteration. Do not add a unit test when a fixture test already covers the behavior.\n\n### Fixture layout and configuration\n\n- JSON inputs live in `test/inputs/json/`. `priority/` and `samples/` form the default input set; `misc/` is omitted under `QUICKTEST` and for languages with `skipMiscJSON`. Per-language `skipJSON` and `includeJSON` settings can further restrict inputs.\n- JSON Schema inputs live in `test/inputs/schema/`. A `*.schema` can have a same-basename `.json` sample and numbered `.N.json` samples. Numbered `.N.fail.<feature>.json` files are expected failures for languages that declare that feature; `.N.fail.json` files apply regardless of features. An expected-failure sample must make the generated program exit nonzero.\n- `test/inputs/json/priority/keywords.json`, `test/inputs/schema/keyword-enum.schema`, and `test/inputs/schema/keyword-unions.schema` are generated by `test/make-keyword-tests.sh` from `test/keywords.txt`. Never edit them directly: add the keyword to `test/keywords.txt`, optionally followed by a tab and a JSON value for the JSON sample, then regenerate.\n- New schema fixture tests should have at least one positive and one negative test case unless there is a compelling reason not to.\n- Per-language configuration—input filters, renderer options, and `features`—lives in `test/languages.ts`.\n- Fixtures and their filter names are registered in `test/fixtures.ts`; driver programs live in `test/fixtures/<language>/`.\n\n### Test commands\n\nRun the standalone Vitest unit and regression tests with:\n\n```bash\nnpm run test:unit\nnpm run test:unit:watch\n```\n\nRun fixture tests with:\n\n```bash\nnpm run test:fixtures\n```\n\nUse fixture filters for focused local testing. Fixture names are registered in `test/fixtures.ts`; comma-separated groups are supported:\n\n```bash\nQUICKTEST=true FIXTURE=javascript npm run test:fixtures\nQUICKTEST=true FIXTURE=typescript npm run test:fixtures -- test/inputs/json/samples/pokedex.json\nFIXTURE=php npm run test:fixtures\nFIXTURE=schema-php npm run test:fixtures\nCPUs=2 QUICKTEST=true FIXTURE=javascript npm run test:fixtures\n```\n\n`QUICKTEST=true` skips the large miscellaneous JSON input set. Arguments after `--` select sample files or directories.\n\n`npm test` runs the Vitest suite followed by all fixture tests. The full fixture suite requires external language toolchains such as .NET, Java/Maven, Go, Rust, Python/mypy, PHP, Ruby, Kotlin, Scala, and Elixir; it will fail when a required toolchain is unavailable. GitHub Actions uses focused fixture groups configured in `.github/workflows/test-pr.yaml`, for example `QUICKTEST=true FIXTURE=${{ matrix.fixture }} npm run test:fixtures`.\n\nFormatting and linting use Biome:\n\n```bash\nnpm run lint\nnpm run lint:fix\n```\n\n## Known CI flakiness\n\nThree fixture-CI failure modes are infrastructure flakes rather than test or PR bugs:\n\n- **scala3-upickle**: the Bloop compiler server sometimes times out after 30 seconds at startup, and `maven-nightlies` artifact downloads sometimes fail.\n- **elm**: fixture setup (`rm -rf elm-stuff && elm make Warmup.elm`) can race the compiler and deadlock on `elm-stuff/*.dat` file locks.\n- **cjson**: `cJSON.c` is downloaded from raw.githubusercontent.com at test time and can encounter transient SSL or connection failures.\n\nThe fixture matrix uses `fail-fast: true`, so one flaky job cancels sibling language jobs. The `test-complete` check only mirrors the matrix and is not an independent failure.\n\nFor now, retry these failed jobs with `gh run rerun <run-id> --failed`. Treat a failure in one of these areas as real only if it reproduces across retries or the PR touches that area.\n\n## Releasing and version bumps\n\nDo not bump versions in any `package.json` before a release. Package manifest versions are intentionally allowed to be stale in the repository.\n\nTo publish, create a GitHub Release targeting the commit to release. Stable tags have the form `vMAJOR.MINOR.PATCH` (for example, `v24.0.0`); prerelease tags have the form `vMAJOR.MINOR.PATCH-preN` (for example, `v25.0.0-pre1`). Publishing the release triggers the npm workflow, which publishes stable versions under the `latest` dist-tag and prereleases under `pre`. The VS Code Marketplace workflow runs only for stable tags.\n\nBoth workflows derive the version exclusively from the release tag and stamp all manifests in the Actions checkout before publishing; those changes are not committed. The release version must be greater than every earlier non-draft GitHub Release with a supported tag. Publication is refused if npm or the VS Code Marketplace already has a newer supported version; an exact version match is skipped, so rerunning a partially completed release is safe.\n\nTest the release-version helper with:\n\n```bash\nnpm run test:release\n```\n","packages/quicktype-core/package.json":"{\n    \"name\": \"quicktype-core\",\n    \"version\": \"24.0.0\",\n    \"description\": \"The quicktype engine as a library\",\n    \"license\": \"Apache-2.0\",\n    \"main\": \"dist/index.js\",\n    \"types\": \"dist/index.d.ts\",\n    \"exports\": {\n        \".\": {\n            \"import\": {\n                \"types\": \"./dist/esm/index.d.ts\",\n                \"default\": \"./dist/esm/index.js\"\n            },\n            \"require\": {\n                \"types\": \"./dist/index.d.ts\",\n                \"default\": \"./dist/index.js\"\n            }\n        },\n        \"./dist/*\": \"./dist/*\",\n        \"./package.json\": \"./package.json\"\n    },\n    \"repository\": \"https://github.com/glideapps/quicktype\",\n    \"engines\": {\n        \"node\": \">=20.0.0\"\n    },\n    \"scripts\": {\n        \"clean\": \"rm -rf dist node_modules *~\",\n        \"build\": \"npm run build:cjs && npm run build:esm\",\n        \"build:cjs\": \"node ../../node_modules/typescript/bin/tsc -p tsconfig.json\",\n        \"build:esm\": \"node ../../node_modules/typescript/bin/tsc -p tsconfig.esm.json && node script/write-esm-package-json.mjs\"\n    },\n    \"dependencies\": {\n        \"@glideapps/ts-necessities\": \"2.2.3\",\n        \"@types/readable-stream\": \"4.0.10\",\n        \"@types/urijs\": \"^1.19.26\",\n        \"browser-or-node\": \"^3.0.0\",\n        \"collection-utils\": \"^1.0.1\",\n        \"is-url\": \"^1.2.4\",\n        \"lodash\": \"^4.18.1\",\n        \"pluralize\": \"^8.0.0\",\n        \"readable-stream\": \"4.5.2\",\n        \"unicode-properties\": \"^1.4.1\",\n        \"urijs\": \"^1.19.1\",\n        \"wordwrap\": \"^1.0.0\",\n        \"yaml\": \"^2.9.0\"\n    },\n    \"devDependencies\": {\n        \"@types/browser-or-node\": \"^1.3.2\",\n        \"@types/is-url\": \"^1.2.32\",\n        \"@types/node\": \"~20.19.0\",\n        \"@types/pluralize\": \"0.0.30\",\n        \"@types/unicode-properties\": \"^1.3.2\",\n        \"@types/wordwrap\": \"^1.0.3\",\n        \"typescript\": \"~7.0.2\"\n    },\n    \"files\": [\n        \"dist\"\n    ],\n    \"browser\": {\n        \"fs\": false,\n        \"path\": false\n    }\n}\n","packages/quicktype-core/tsconfig.esm.json":"{\n    \"extends\": \"./tsconfig.json\",\n    \"compilerOptions\": {\n        // The ESM leg of the dual build. \"nodenext\" can't be used here: this\n        // package has no `\"type\": \"module\"`, so nodenext would classify the\n        // sources as CommonJS and emit CJS. Instead we emit plain ES modules\n        // and make Node treat `dist/esm` as ESM via the `{\"type\": \"module\"}`\n        // marker that script/write-esm-package-json.mjs drops into the output\n        // directory. Relative imports in src/ carry explicit \".js\" extensions\n        // so the emitted files are resolvable by Node's ESM loader, which\n        // does no extension guessing.\n        \"module\": \"esnext\",\n        \"moduleResolution\": \"bundler\",\n        \"outDir\": \"dist/esm\"\n    }\n}\n","packages/quicktype-core/tsconfig.json":"{\n    \"compilerOptions\": {\n        \"target\": \"es6\",\n        \"module\": \"commonjs\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"allowJs\": false,\n        \"declaration\": true,\n        \"strict\": true,\n        \"outDir\": \"dist\",\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"noFallthroughCasesInSwitch\": true,\n        \"esModuleInterop\": true,\n        \"rootDir\": \"src\"\n    },\n    \"include\": [\"src\"]\n}\n"},"files":{"packages/quicktype-vscode/README.md":"**Supports** `C (cJSON)`, `C#`, `C++`, `Crystal`, `Dart`, `Elm`, `Flow`, `Go`, `Haskell`, `JSON Schema`, `Java`, `JavaScript`, `JavaScript PropTypes`, `Kotlin`, `Objective-C`, `PHP`, `Pike`, `Python`, `Ruby`, `Rust`, `Scala3`, `Smithy`, `Swift`, `TypeScript`, `TypeScript Effect Schema` and `TypeScript Zod`\n\n-   Interactively generate types and (de-)serialization code from JSON, JSON Schema, and TypeScript\n-   Paste JSON/JSON Schema/TypeScript as code\n\n![](https://raw.githubusercontent.com/quicktype/quicktype-vscode/master/media/demo-interactive.gif)\n\n`quicktype` infers types from sample JSON data, then outputs strongly typed models and serializers for working with that data in your desired programming language. For more explanation, read [A first look at quicktype](http://blog.quicktype.io/first-look/).\n\nIn any JSON file, use the command \"Open quicktype for JSON\" to summon quicktype, which will generate types from the JSON. Invoke \"Change quicktype's target language\" to pick a different language. There are similar \"Open quicktype\" commands for JSON Schema and TypeScript.\n\nAnother way to use quicktype is to copy JSON into the clipboard and invoke \"Paste JSON as code/types\":\n\n![](https://raw.githubusercontent.com/quicktype/quicktype-vscode/master/media/demo.gif)\n\nFor a more powerful experience, including custom options and the ability to generate code from multiple JSON samples, try [quicktype.io](https://app.quicktype.io).\n\n## Installing\n\nThis extension is available for free in the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items/quicktype.quicktype)\n\n## Customization\n\n-   `quicktype.justTypes`: Generate only types, or also produce (de)serialization code when using \"Open quicktype\". When using \"Paste\", you can pick between the commands for \"types\" and \"code\", without having to set this option.\n\n-   `quicktype.inferMaps`, `quicktype.inferEnums`, `quicktype.inferDateTimes`, `quicktype.inferUuids`, `quicktype.inferBoolStrings`, `quicktype.inferIntegerStrings`: Tell quicktype whether it should try to infer those types from the input JSON. This is not a precise science, so sometimes the guess will be wrong, which is why you can turn them off through these options. Also, quicktype doesn't support dates, UUIDs and stringified integers/booleans in all target languages yet.\n\n## Contribute!\n\nquicktype is an open source project, and we're always happy about contributors. If you can think of a way to improve [this extension](https://github.com/quicktype/quicktype-vscode), or [quicktype](https://github.com/quicktype/quicktype), please consider contributing, especially if you know TypeScript. Code is only one way to contribute, though: we're particularly short on documentation. We'd also love to hear your feedback - come [talk to us on Slack](http://slack.quicktype.io)!\n\nIf you find a bug, please [report it on GitHub](https://github.com/quicktype/quicktype-vscode/issues).\n","packages/quicktype-vscode/package.json":"{\n    \"name\": \"quicktype\",\n    \"displayName\": \"Paste JSON as Code\",\n    \"description\": \"Copy JSON, paste as Go, TypeScript, C#, C++ and more.\",\n    \"version\": \"24.0.0\",\n    \"publisher\": \"quicktype\",\n    \"icon\": \"media/icon.png\",\n    \"galleryBanner\": {\n        \"color\": \"#00212b\",\n        \"theme\": \"dark\"\n    },\n    \"homepage\": \"https://quicktype.io\",\n    \"author\": {\n        \"name\": \"quicktype.io\",\n        \"email\": \"hello@quicktype.io\"\n    },\n    \"bugs\": {\n        \"url\": \"https://github.com/quicktype/issues\"\n    },\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/glideapps/quicktype\"\n    },\n    \"engines\": {\n        \"vscode\": \"^1.87.0\"\n    },\n    \"categories\": [\n        \"Other\"\n    ],\n    \"keywords\": [\n        \"json\",\n        \"converter\"\n    ],\n    \"markdown\": \"github\",\n    \"main\": \"dist/extension.js\",\n    \"vsce\": {\n        \"dependencies\": false\n    },\n    \"contributes\": {\n        \"configuration\": {\n            \"type\": \"object\",\n            \"title\": \"quicktype\",\n            \"properties\": {\n                \"quicktype.justTypes\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Produce only types; no (de-)serialization code\"\n                },\n                \"quicktype.inferMaps\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Infer maps when object keys look like map keys.\"\n                },\n                \"quicktype.inferEnums\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Infer enums when there aren't many different string values.\"\n                },\n                \"quicktype.inferDateTimes\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Use date-time types for strings that look like date-times.\"\n                },\n                \"quicktype.inferUuids\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Use UUID types for strings that look like UUIDs.\"\n                },\n                \"quicktype.inferIntegerStrings\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Convert stringified integers into integers, and back.\"\n                },\n                \"quicktype.inferBooleanStrings\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Convert stringified booleans into booleans, and back.\"\n                }\n            }\n        },\n        \"commands\": [\n            {\n                \"command\": \"quicktype.pasteJSONAsTypes\",\n                \"title\": \"Paste JSON as Types\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONAsTypesAndSerialization\",\n                \"title\": \"Paste JSON as Code\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONSchemaAsTypes\",\n                \"title\": \"Paste JSON Schema as Types\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONSchemaAsTypesAndSerialization\",\n                \"title\": \"Paste JSON Schema as Code\"\n            },\n            {\n                \"command\": \"quicktype.pasteTypeScriptAsTypesAndSerialization\",\n                \"title\": \"Paste TypeScript as Code\"\n            },\n            {\n                \"command\": \"quicktype.openForJSON\",\n                \"title\": \"Open quicktype for JSON\"\n            },\n            {\n                \"command\": \"quicktype.openForJSONSchema\",\n                \"title\": \"Open quicktype for JSON Schema\"\n            },\n            {\n                \"command\": \"quicktype.openForTypeScript\",\n                \"title\": \"Open quicktype for TypeScript\"\n            },\n            {\n                \"command\": \"quicktype.changeTargetLanguage\",\n                \"title\": \"Set quicktype target language\"\n            }\n        ],\n        \"keybindings\": [\n            {\n                \"command\": \"quicktype.pasteJSONAsTypesAndSerialization\",\n                \"key\": \"ctrl+shift+V\",\n                \"mac\": \"cmd+shift+V\",\n                \"when\": \"editorTextFocus && editorLangId != 'markdown'\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONAsTypes\",\n                \"key\": \"ctrl+shift+alt+V\",\n                \"mac\": \"cmd+shift+alt+V\",\n                \"when\": \"editorTextFocus\"\n            }\n        ]\n    },\n    \"scripts\": {\n        \"pub\": \"vsce publish -p $VSCE_TOKEN\",\n        \"package\": \"vsce package\",\n        \"build\": \"node ../../node_modules/typescript/bin/tsc -p ./\",\n        \"watch\": \"node ../../node_modules/typescript/bin/tsc -watch -p ./\",\n        \"test\": \"npm run build && node ./node_modules/vscode/bin/test\",\n        \"vscode:prepublish\": \"npm run esbuild-base -- --minify\",\n        \"esbuild-base\": \"esbuild ./src/extension.ts --bundle --outfile=dist/extension.js --external:vscode --format=cjs --platform=node\",\n        \"esbuild\": \"npm run esbuild-base -- --sourcemap\",\n        \"esbuild-watch\": \"npm run esbuild-base -- --sourcemap --watch\"\n    },\n    \"devDependencies\": {\n        \"@types/mocha\": \"^10.0.6\",\n        \"@types/node\": \"~20.19.0\",\n        \"@types/node-persist\": \"^3.1.8\",\n        \"@types/readable-stream\": \"^4.0.10\",\n        \"@types/vscode\": \"^1.87.0\",\n        \"@vscode/test-cli\": \"^0.0.15\",\n        \"@vscode/test-electron\": \"^2.5.2\",\n        \"@vscode/vsce\": \"^3.9.2\",\n        \"typescript\": \"~7.0.2\",\n        \"node-persist\": \"^4.0.1\",\n        \"quicktype-core\": \"file:../quicktype-core\",\n        \"quicktype-typescript-input\": \"file:../quicktype-typescript-input\",\n        \"unicode-properties\": \"github:quicktype/unicode-properties#dist\"\n    }\n}\n","packages/quicktype-graphql-input/package.json":"{\n    \"name\": \"quicktype-graphql-input\",\n    \"version\": \"24.0.0\",\n    \"package\": \"Package for using GraphQL as an input language to quicktype\",\n    \"license\": \"Apache-2.0\",\n    \"main\": \"dist/index.js\",\n    \"types\": \"dist/index.d.ts\",\n    \"repository\": \"https://github.com/glideapps/quicktype\",\n    \"engines\": {\n        \"node\": \">=20.0.0\"\n    },\n    \"scripts\": {\n        \"clean\": \"rm -rf dist node_modules *~\",\n        \"build\": \"node ../../node_modules/typescript/bin/tsc\"\n    },\n    \"dependencies\": {\n        \"quicktype-core\": \"file:../quicktype-core\",\n        \"collection-utils\": \"^1.0.1\",\n        \"graphql\": \"^16.11.0\"\n    },\n    \"devDependencies\": {\n        \"@types/node\": \"~20.19.0\",\n        \"typescript\": \"~7.0.2\"\n    },\n    \"files\": [\n        \"dist\"\n    ]\n}\n","packages/quicktype-graphql-input/tsconfig.json":"{\n    \"compilerOptions\": {\n        \"target\": \"es6\",\n        \"module\": \"commonjs\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"allowJs\": false,\n        \"declaration\": true,\n        \"strict\": true,\n        \"alwaysStrict\": true,\n        \"outDir\": \"dist\",\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"esModuleInterop\": true,\n        \"rootDir\": \"src\"\n    },\n    \"include\": [\"src\"]\n}\n","packages/quicktype-typescript-input/tsconfig.json":"{\n    \"compilerOptions\": {\n        \"target\": \"es6\",\n        \"module\": \"commonjs\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"allowJs\": false,\n        \"declaration\": true,\n        \"strict\": true,\n        \"alwaysStrict\": true,\n        \"outDir\": \"dist\",\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"esModuleInterop\": true,\n        \"rootDir\": \"src\"\n    },\n    \"include\": [\"src\"]\n}\n","packages/quicktype-vscode/tsconfig.json":"{\n    \"compilerOptions\": {\n        \"module\": \"commonjs\",\n        \"target\": \"es6\",\n        \"outDir\": \"out\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"sourceMap\": true,\n        \"rootDir\": \".\",\n        \"allowJs\": false,\n        \"strict\": true,\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"esModuleInterop\": true\n    },\n    \"exclude\": [\"node_modules\", \".vscode-test\"]\n}\n","packages/quicktype-typescript-input/package.json":"{\n    \"name\": \"quicktype-typescript-input\",\n    \"version\": \"24.0.0\",\n    \"description\": \"Package for using TypeScript as an input language to quicktype\",\n    \"license\": \"Apache-2.0\",\n    \"main\": \"dist/index.js\",\n    \"types\": \"dist/index.d.ts\",\n    \"repository\": \"https://github.com/glideapps/quicktype\",\n    \"engines\": {\n        \"node\": \">=20.0.0\"\n    },\n    \"scripts\": {\n        \"clean\": \"rm -rf dist node_modules *~\",\n        \"build\": \"node ../../node_modules/typescript/bin/tsc\"\n    },\n    \"dependencies\": {\n        \"quicktype-core\": \"file:../quicktype-core\",\n        \"typescript\": \"5.9.3\",\n        \"typescript-json-schema\": \"0.67.4\"\n    },\n    \"devDependencies\": {\n        \"@types/node\": \"~20.19.0\"\n    },\n    \"files\": [\n        \"dist\"\n    ]\n}\n","CLAUDE.md":"# Repository conventions\n\n## Environment\n\n- This is a TypeScript/npm monorepo using npm workspaces.\n- Prefer the Node version from `.nvmrc` (`nvm use`; currently Node 24.6.0). The root CLI package requires Node >= 20.19.0; the library workspaces require Node >= 20.0.0.\n- Install dependencies with `npm ci`.\n\n## Build and run\n\nBuild everything with:\n\n```bash\nnpm run build\n```\n\nThis runs `npm run clean`, builds all workspaces that have a `build` script, and then runs the root `tsc`.\n\nAfter building, the CLI entry point is `dist/index.js`:\n\n```bash\nnode dist/index.js --version\nnode dist/index.js --help\n```\n\nFor live rebuild/re-run while developing renderer output, use:\n\n```bash\nnpm start -- \"<quicktype args>\"\n```\n\n## Testing\n\n### Test strategy\n\nquicktype's primary testing method is end-to-end fixture tests driven by JSON and JSON Schema files. For each sample input, a fixture generates code for a language, runs a driver program in `test/fixtures/<language>/` that deserializes the sample and serializes it back, and compares the round-tripped JSON to the input.\n\nAny change that affects generated output **must** be covered by a JSON or JSON Schema fixture test, either by enabling existing inputs for the language or by adding new ones. Unit tests in `test/unit/` complement fixtures for behavior that fixtures cannot express, such as asserting that code is not generated, API-level behavior, or fast local iteration. Do not add a unit test when a fixture test already covers the behavior.\n\n### Fixture layout and configuration\n\n- JSON inputs live in `test/inputs/json/`. `priority/` and `samples/` form the default input set; `misc/` is omitted under `QUICKTEST` and for languages with `skipMiscJSON`. Per-language `skipJSON` and `includeJSON` settings can further restrict inputs.\n- JSON Schema inputs live in `test/inputs/schema/`. A `*.schema` can have a same-basename `.json` sample and numbered `.N.json` samples. Numbered `.N.fail.<feature>.json` files are expected failures for languages that declare that feature; `.N.fail.json` files apply regardless of features. An expected-failure sample must make the generated program exit nonzero.\n- `test/inputs/json/priority/keywords.json`, `test/inputs/schema/keyword-enum.schema`, and `test/inputs/schema/keyword-unions.schema` are generated by `test/make-keyword-tests.sh` from `test/keywords.txt`. Never edit them directly: add the keyword to `test/keywords.txt`, optionally followed by a tab and a JSON value for the JSON sample, then regenerate.\n- New schema fixture tests should have at least one positive and one negative test case unless there is a compelling reason not to.\n- Per-language configuration—input filters, renderer options, and `features`—lives in `test/languages.ts`.\n- Fixtures and their filter names are registered in `test/fixtures.ts`; driver programs live in `test/fixtures/<language>/`.\n\n### Test commands\n\nRun the standalone Vitest unit and regression tests with:\n\n```bash\nnpm run test:unit\nnpm run test:unit:watch\n```\n\nRun fixture tests with:\n\n```bash\nnpm run test:fixtures\n```\n\nUse fixture filters for focused local testing. Fixture names are registered in `test/fixtures.ts`; comma-separated groups are supported:\n\n```bash\nQUICKTEST=true FIXTURE=javascript npm run test:fixtures\nQUICKTEST=true FIXTURE=typescript npm run test:fixtures -- test/inputs/json/samples/pokedex.json\nFIXTURE=php npm run test:fixtures\nFIXTURE=schema-php npm run test:fixtures\nCPUs=2 QUICKTEST=true FIXTURE=javascript npm run test:fixtures\n```\n\n`QUICKTEST=true` skips the large miscellaneous JSON input set. Arguments after `--` select sample files or directories.\n\n`npm test` runs the Vitest suite followed by all fixture tests. The full fixture suite requires external language toolchains such as .NET, Java/Maven, Go, Rust, Python/mypy, PHP, Ruby, Kotlin, Scala, and Elixir; it will fail when a required toolchain is unavailable. GitHub Actions uses focused fixture groups configured in `.github/workflows/test-pr.yaml`, for example `QUICKTEST=true FIXTURE=${{ matrix.fixture }} npm run test:fixtures`.\n\nFormatting and linting use Biome:\n\n```bash\nnpm run lint\nnpm run lint:fix\n```\n\n## Known CI flakiness\n\nThree fixture-CI failure modes are infrastructure flakes rather than test or PR bugs:\n\n- **scala3-upickle**: the Bloop compiler server sometimes times out after 30 seconds at startup, and `maven-nightlies` artifact downloads sometimes fail.\n- **elm**: fixture setup (`rm -rf elm-stuff && elm make Warmup.elm`) can race the compiler and deadlock on `elm-stuff/*.dat` file locks.\n- **cjson**: `cJSON.c` is downloaded from raw.githubusercontent.com at test time and can encounter transient SSL or connection failures.\n\nThe fixture matrix uses `fail-fast: true`, so one flaky job cancels sibling language jobs. The `test-complete` check only mirrors the matrix and is not an independent failure.\n\nFor now, retry these failed jobs with `gh run rerun <run-id> --failed`. Treat a failure in one of these areas as real only if it reproduces across retries or the PR touches that area.\n\n## Releasing and version bumps\n\nDo not bump versions in any `package.json` before a release. Package manifest versions are intentionally allowed to be stale in the repository.\n\nTo publish, create a GitHub Release targeting the commit to release. Stable tags have the form `vMAJOR.MINOR.PATCH` (for example, `v24.0.0`); prerelease tags have the form `vMAJOR.MINOR.PATCH-preN` (for example, `v25.0.0-pre1`). Publishing the release triggers the npm workflow, which publishes stable versions under the `latest` dist-tag and prereleases under `pre`. The VS Code Marketplace workflow runs only for stable tags.\n\nBoth workflows derive the version exclusively from the release tag and stamp all manifests in the Actions checkout before publishing; those changes are not committed. The release version must be greater than every earlier non-draft GitHub Release with a supported tag. Publication is refused if npm or the VS Code Marketplace already has a newer supported version; an exact version match is skipped, so rerunning a partially completed release is safe.\n\nTest the release-version helper with:\n\n```bash\nnpm run test:release\n```\n","packages/quicktype-core/package.json":"{\n    \"name\": \"quicktype-core\",\n    \"version\": \"24.0.0\",\n    \"description\": \"The quicktype engine as a library\",\n    \"license\": \"Apache-2.0\",\n    \"main\": \"dist/index.js\",\n    \"types\": \"dist/index.d.ts\",\n    \"exports\": {\n        \".\": {\n            \"import\": {\n                \"types\": \"./dist/esm/index.d.ts\",\n                \"default\": \"./dist/esm/index.js\"\n            },\n            \"require\": {\n                \"types\": \"./dist/index.d.ts\",\n                \"default\": \"./dist/index.js\"\n            }\n        },\n        \"./dist/*\": \"./dist/*\",\n        \"./package.json\": \"./package.json\"\n    },\n    \"repository\": \"https://github.com/glideapps/quicktype\",\n    \"engines\": {\n        \"node\": \">=20.0.0\"\n    },\n    \"scripts\": {\n        \"clean\": \"rm -rf dist node_modules *~\",\n        \"build\": \"npm run build:cjs && npm run build:esm\",\n        \"build:cjs\": \"node ../../node_modules/typescript/bin/tsc -p tsconfig.json\",\n        \"build:esm\": \"node ../../node_modules/typescript/bin/tsc -p tsconfig.esm.json && node script/write-esm-package-json.mjs\"\n    },\n    \"dependencies\": {\n        \"@glideapps/ts-necessities\": \"2.2.3\",\n        \"@types/readable-stream\": \"4.0.10\",\n        \"@types/urijs\": \"^1.19.26\",\n        \"browser-or-node\": \"^3.0.0\",\n        \"collection-utils\": \"^1.0.1\",\n        \"is-url\": \"^1.2.4\",\n        \"lodash\": \"^4.18.1\",\n        \"pluralize\": \"^8.0.0\",\n        \"readable-stream\": \"4.5.2\",\n        \"unicode-properties\": \"^1.4.1\",\n        \"urijs\": \"^1.19.1\",\n        \"wordwrap\": \"^1.0.0\",\n        \"yaml\": \"^2.9.0\"\n    },\n    \"devDependencies\": {\n        \"@types/browser-or-node\": \"^1.3.2\",\n        \"@types/is-url\": \"^1.2.32\",\n        \"@types/node\": \"~20.19.0\",\n        \"@types/pluralize\": \"0.0.30\",\n        \"@types/unicode-properties\": \"^1.3.2\",\n        \"@types/wordwrap\": \"^1.0.3\",\n        \"typescript\": \"~7.0.2\"\n    },\n    \"files\": [\n        \"dist\"\n    ],\n    \"browser\": {\n        \"fs\": false,\n        \"path\": false\n    }\n}\n","packages/quicktype-core/tsconfig.esm.json":"{\n    \"extends\": \"./tsconfig.json\",\n    \"compilerOptions\": {\n        // The ESM leg of the dual build. \"nodenext\" can't be used here: this\n        // package has no `\"type\": \"module\"`, so nodenext would classify the\n        // sources as CommonJS and emit CJS. Instead we emit plain ES modules\n        // and make Node treat `dist/esm` as ESM via the `{\"type\": \"module\"}`\n        // marker that script/write-esm-package-json.mjs drops into the output\n        // directory. Relative imports in src/ carry explicit \".js\" extensions\n        // so the emitted files are resolvable by Node's ESM loader, which\n        // does no extension guessing.\n        \"module\": \"esnext\",\n        \"moduleResolution\": \"bundler\",\n        \"outDir\": \"dist/esm\"\n    }\n}\n","packages/quicktype-core/tsconfig.json":"{\n    \"compilerOptions\": {\n        \"target\": \"es6\",\n        \"module\": \"commonjs\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"allowJs\": false,\n        \"declaration\": true,\n        \"strict\": true,\n        \"outDir\": \"dist\",\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"noFallthroughCasesInSwitch\": true,\n        \"esModuleInterop\": true,\n        \"rootDir\": \"src\"\n    },\n    \"include\": [\"src\"]\n}\n"},"items":[{"name":"package.json","path":"packages/quicktype-core/package.json","rawUrl":"https://raw.githubusercontent.com/glideapps/quicktype/HEAD/packages/quicktype-core/package.json","title":"quicktype-core","category":"anthropic-skill","format":"json","content":"{\n    \"name\": \"quicktype-core\",\n    \"version\": \"24.0.0\",\n    \"description\": \"The quicktype engine as a library\",\n    \"license\": \"Apache-2.0\",\n    \"main\": \"dist/index.js\",\n    \"types\": \"dist/index.d.ts\",\n    \"exports\": {\n        \".\": {\n            \"import\": {\n                \"types\": \"./dist/esm/index.d.ts\",\n                \"default\": \"./dist/esm/index.js\"\n            },\n            \"require\": {\n                \"types\": \"./dist/index.d.ts\",\n                \"default\": \"./dist/index.js\"\n            }\n        },\n        \"./dist/*\": \"./dist/*\",\n        \"./package.json\": \"./package.json\"\n    },\n    \"repository\": \"https://github.com/glideapps/quicktype\",\n    \"engines\": {\n        \"node\": \">=20.0.0\"\n    },\n    \"scripts\": {\n        \"clean\": \"rm -rf dist node_modules *~\",\n        \"build\": \"npm run build:cjs && npm run build:esm\",\n        \"build:cjs\": \"node ../../node_modules/typescript/bin/tsc -p tsconfig.json\",\n        \"build:esm\": \"node ../../node_modules/typescript/bin/tsc -p tsconfig.esm.json && node script/write-esm-package-json.mjs\"\n    },\n    \"dependencies\": {\n        \"@glideapps/ts-necessities\": \"2.2.3\",\n        \"@types/readable-stream\": \"4.0.10\",\n        \"@types/urijs\": \"^1.19.26\",\n        \"browser-or-node\": \"^3.0.0\",\n        \"collection-utils\": \"^1.0.1\",\n        \"is-url\": \"^1.2.4\",\n        \"lodash\": \"^4.18.1\",\n        \"pluralize\": \"^8.0.0\",\n        \"readable-stream\": \"4.5.2\",\n        \"unicode-properties\": \"^1.4.1\",\n        \"urijs\": \"^1.19.1\",\n        \"wordwrap\": \"^1.0.0\",\n        \"yaml\": \"^2.9.0\"\n    },\n    \"devDependencies\": {\n        \"@types/browser-or-node\": \"^1.3.2\",\n        \"@types/is-url\": \"^1.2.32\",\n        \"@types/node\": \"~20.19.0\",\n        \"@types/pluralize\": \"0.0.30\",\n        \"@types/unicode-properties\": \"^1.3.2\",\n        \"@types/wordwrap\": \"^1.0.3\",\n        \"typescript\": \"~7.0.2\"\n    },\n    \"files\": [\n        \"dist\"\n    ],\n    \"browser\": {\n        \"fs\": false,\n        \"path\": false\n    }\n}\n","frontmatter":{"name":"quicktype-core","version":"24.0.0","description":"The quicktype engine as a library","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./dist/*":"./dist/*","./package.json":"./package.json"},"repository":"https://github.com/glideapps/quicktype","engines":{"node":">=20.0.0"},"scripts":{"clean":"rm -rf dist node_modules *~","build":"npm run build:cjs && npm run build:esm","build:cjs":"node ../../node_modules/typescript/bin/tsc -p tsconfig.json","build:esm":"node ../../node_modules/typescript/bin/tsc -p tsconfig.esm.json && node script/write-esm-package-json.mjs"},"dependencies":{"@glideapps/ts-necessities":"2.2.3","@types/readable-stream":"4.0.10","@types/urijs":"^1.19.26","browser-or-node":"^3.0.0","collection-utils":"^1.0.1","is-url":"^1.2.4","lodash":"^4.18.1","pluralize":"^8.0.0","readable-stream":"4.5.2","unicode-properties":"^1.4.1","urijs":"^1.19.1","wordwrap":"^1.0.0","yaml":"^2.9.0"},"devDependencies":{"@types/browser-or-node":"^1.3.2","@types/is-url":"^1.2.32","@types/node":"~20.19.0","@types/pluralize":"0.0.30","@types/unicode-properties":"^1.3.2","@types/wordwrap":"^1.0.3","typescript":"~7.0.2"},"files":["dist"],"browser":{"fs":false,"path":false}},"isInternal":false,"tokens":586,"sizeBytes":1933},{"name":"tsconfig.esm.json","path":"packages/quicktype-core/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/glideapps/quicktype/HEAD/packages/quicktype-core/tsconfig.esm.json","title":"Quicktype-core Skill","category":"anthropic-skill","format":"json","content":"{\n    \"extends\": \"./tsconfig.json\",\n    \"compilerOptions\": {\n        // The ESM leg of the dual build. \"nodenext\" can't be used here: this\n        // package has no `\"type\": \"module\"`, so nodenext would classify the\n        // sources as CommonJS and emit CJS. Instead we emit plain ES modules\n        // and make Node treat `dist/esm` as ESM via the `{\"type\": \"module\"}`\n        // marker that script/write-esm-package-json.mjs drops into the output\n        // directory. Relative imports in src/ carry explicit \".js\" extensions\n        // so the emitted files are resolvable by Node's ESM loader, which\n        // does no extension guessing.\n        \"module\": \"esnext\",\n        \"moduleResolution\": \"bundler\",\n        \"outDir\": \"dist/esm\"\n    }\n}\n","isInternal":false,"tokens":190,"sizeBytes":748},{"name":"tsconfig.json","path":"packages/quicktype-core/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/glideapps/quicktype/HEAD/packages/quicktype-core/tsconfig.json","title":"Quicktype-core Skill","category":"anthropic-skill","format":"json","content":"{\n    \"compilerOptions\": {\n        \"target\": \"es6\",\n        \"module\": \"commonjs\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"allowJs\": false,\n        \"declaration\": true,\n        \"strict\": true,\n        \"outDir\": \"dist\",\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"noFallthroughCasesInSwitch\": true,\n        \"esModuleInterop\": true,\n        \"rootDir\": \"src\"\n    },\n    \"include\": [\"src\"]\n}\n","frontmatter":{"compilerOptions":{"target":"es6","module":"commonjs","lib":["es6","esnext.asynciterable"],"allowJs":false,"declaration":true,"strict":true,"outDir":"dist","noUnusedLocals":true,"noUnusedParameters":true,"noFallthroughCasesInSwitch":true,"esModuleInterop":true,"rootDir":"src"},"include":["src"]},"isInternal":false,"tokens":118,"sizeBytes":437},{"name":"package.json","path":"packages/quicktype-graphql-input/package.json","rawUrl":"https://raw.githubusercontent.com/glideapps/quicktype/HEAD/packages/quicktype-graphql-input/package.json","title":"quicktype-graphql-input","category":"anthropic-skill","format":"json","content":"{\n    \"name\": \"quicktype-graphql-input\",\n    \"version\": \"24.0.0\",\n    \"package\": \"Package for using GraphQL as an input language to quicktype\",\n    \"license\": \"Apache-2.0\",\n    \"main\": \"dist/index.js\",\n    \"types\": \"dist/index.d.ts\",\n    \"repository\": \"https://github.com/glideapps/quicktype\",\n    \"engines\": {\n        \"node\": \">=20.0.0\"\n    },\n    \"scripts\": {\n        \"clean\": \"rm -rf dist node_modules *~\",\n        \"build\": \"node ../../node_modules/typescript/bin/tsc\"\n    },\n    \"dependencies\": {\n        \"quicktype-core\": \"file:../quicktype-core\",\n        \"collection-utils\": \"^1.0.1\",\n        \"graphql\": \"^16.11.0\"\n    },\n    \"devDependencies\": {\n        \"@types/node\": \"~20.19.0\",\n        \"typescript\": \"~7.0.2\"\n    },\n    \"files\": [\n        \"dist\"\n    ]\n}\n","frontmatter":{"name":"quicktype-graphql-input","version":"24.0.0","package":"Package for using GraphQL as an input language to quicktype","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","repository":"https://github.com/glideapps/quicktype","engines":{"node":">=20.0.0"},"scripts":{"clean":"rm -rf dist node_modules *~","build":"node ../../node_modules/typescript/bin/tsc"},"dependencies":{"quicktype-core":"file:../quicktype-core","collection-utils":"^1.0.1","graphql":"^16.11.0"},"devDependencies":{"@types/node":"~20.19.0","typescript":"~7.0.2"},"files":["dist"]},"isInternal":false,"tokens":229,"sizeBytes":764},{"name":"tsconfig.json","path":"packages/quicktype-graphql-input/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/glideapps/quicktype/HEAD/packages/quicktype-graphql-input/tsconfig.json","title":"Quicktype-graphql-input Skill","category":"anthropic-skill","format":"json","content":"{\n    \"compilerOptions\": {\n        \"target\": \"es6\",\n        \"module\": \"commonjs\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"allowJs\": false,\n        \"declaration\": true,\n        \"strict\": true,\n        \"alwaysStrict\": true,\n        \"outDir\": \"dist\",\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"esModuleInterop\": true,\n        \"rootDir\": \"src\"\n    },\n    \"include\": [\"src\"]\n}\n","frontmatter":{"compilerOptions":{"target":"es6","module":"commonjs","lib":["es6","esnext.asynciterable"],"allowJs":false,"declaration":true,"strict":true,"alwaysStrict":true,"outDir":"dist","noUnusedLocals":true,"noUnusedParameters":true,"esModuleInterop":true,"rootDir":"src"},"include":["src"]},"isInternal":false,"tokens":114,"sizeBytes":423},{"name":"package.json","path":"packages/quicktype-typescript-input/package.json","rawUrl":"https://raw.githubusercontent.com/glideapps/quicktype/HEAD/packages/quicktype-typescript-input/package.json","title":"quicktype-typescript-input","category":"anthropic-skill","format":"json","content":"{\n    \"name\": \"quicktype-typescript-input\",\n    \"version\": \"24.0.0\",\n    \"description\": \"Package for using TypeScript as an input language to quicktype\",\n    \"license\": \"Apache-2.0\",\n    \"main\": \"dist/index.js\",\n    \"types\": \"dist/index.d.ts\",\n    \"repository\": \"https://github.com/glideapps/quicktype\",\n    \"engines\": {\n        \"node\": \">=20.0.0\"\n    },\n    \"scripts\": {\n        \"clean\": \"rm -rf dist node_modules *~\",\n        \"build\": \"node ../../node_modules/typescript/bin/tsc\"\n    },\n    \"dependencies\": {\n        \"quicktype-core\": \"file:../quicktype-core\",\n        \"typescript\": \"5.9.3\",\n        \"typescript-json-schema\": \"0.67.4\"\n    },\n    \"devDependencies\": {\n        \"@types/node\": \"~20.19.0\"\n    },\n    \"files\": [\n        \"dist\"\n    ]\n}\n","frontmatter":{"name":"quicktype-typescript-input","version":"24.0.0","description":"Package for using TypeScript as an input language to quicktype","license":"Apache-2.0","main":"dist/index.js","types":"dist/index.d.ts","repository":"https://github.com/glideapps/quicktype","engines":{"node":">=20.0.0"},"scripts":{"clean":"rm -rf dist node_modules *~","build":"node ../../node_modules/typescript/bin/tsc"},"dependencies":{"quicktype-core":"file:../quicktype-core","typescript":"5.9.3","typescript-json-schema":"0.67.4"},"devDependencies":{"@types/node":"~20.19.0"},"files":["dist"]},"isInternal":false,"tokens":219,"sizeBytes":748},{"name":"tsconfig.json","path":"packages/quicktype-typescript-input/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/glideapps/quicktype/HEAD/packages/quicktype-typescript-input/tsconfig.json","title":"Quicktype-typescript-input Skill","category":"anthropic-skill","format":"json","content":"{\n    \"compilerOptions\": {\n        \"target\": \"es6\",\n        \"module\": \"commonjs\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"allowJs\": false,\n        \"declaration\": true,\n        \"strict\": true,\n        \"alwaysStrict\": true,\n        \"outDir\": \"dist\",\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"esModuleInterop\": true,\n        \"rootDir\": \"src\"\n    },\n    \"include\": [\"src\"]\n}\n","frontmatter":{"compilerOptions":{"target":"es6","module":"commonjs","lib":["es6","esnext.asynciterable"],"allowJs":false,"declaration":true,"strict":true,"alwaysStrict":true,"outDir":"dist","noUnusedLocals":true,"noUnusedParameters":true,"esModuleInterop":true,"rootDir":"src"},"include":["src"]},"isInternal":false,"tokens":114,"sizeBytes":423},{"name":"package.json","path":"packages/quicktype-vscode/package.json","rawUrl":"https://raw.githubusercontent.com/glideapps/quicktype/HEAD/packages/quicktype-vscode/package.json","title":"quicktype","category":"anthropic-skill","format":"json","content":"{\n    \"name\": \"quicktype\",\n    \"displayName\": \"Paste JSON as Code\",\n    \"description\": \"Copy JSON, paste as Go, TypeScript, C#, C++ and more.\",\n    \"version\": \"24.0.0\",\n    \"publisher\": \"quicktype\",\n    \"icon\": \"media/icon.png\",\n    \"galleryBanner\": {\n        \"color\": \"#00212b\",\n        \"theme\": \"dark\"\n    },\n    \"homepage\": \"https://quicktype.io\",\n    \"author\": {\n        \"name\": \"quicktype.io\",\n        \"email\": \"hello@quicktype.io\"\n    },\n    \"bugs\": {\n        \"url\": \"https://github.com/quicktype/issues\"\n    },\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/glideapps/quicktype\"\n    },\n    \"engines\": {\n        \"vscode\": \"^1.87.0\"\n    },\n    \"categories\": [\n        \"Other\"\n    ],\n    \"keywords\": [\n        \"json\",\n        \"converter\"\n    ],\n    \"markdown\": \"github\",\n    \"main\": \"dist/extension.js\",\n    \"vsce\": {\n        \"dependencies\": false\n    },\n    \"contributes\": {\n        \"configuration\": {\n            \"type\": \"object\",\n            \"title\": \"quicktype\",\n            \"properties\": {\n                \"quicktype.justTypes\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Produce only types; no (de-)serialization code\"\n                },\n                \"quicktype.inferMaps\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Infer maps when object keys look like map keys.\"\n                },\n                \"quicktype.inferEnums\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Infer enums when there aren't many different string values.\"\n                },\n                \"quicktype.inferDateTimes\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Use date-time types for strings that look like date-times.\"\n                },\n                \"quicktype.inferUuids\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Use UUID types for strings that look like UUIDs.\"\n                },\n                \"quicktype.inferIntegerStrings\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Convert stringified integers into integers, and back.\"\n                },\n                \"quicktype.inferBooleanStrings\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Convert stringified booleans into booleans, and back.\"\n                }\n            }\n        },\n        \"commands\": [\n            {\n                \"command\": \"quicktype.pasteJSONAsTypes\",\n                \"title\": \"Paste JSON as Types\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONAsTypesAndSerialization\",\n                \"title\": \"Paste JSON as Code\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONSchemaAsTypes\",\n                \"title\": \"Paste JSON Schema as Types\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONSchemaAsTypesAndSerialization\",\n                \"title\": \"Paste JSON Schema as Code\"\n            },\n            {\n                \"command\": \"quicktype.pasteTypeScriptAsTypesAndSerialization\",\n                \"title\": \"Paste TypeScript as Code\"\n            },\n            {\n                \"command\": \"quicktype.openForJSON\",\n                \"title\": \"Open quicktype for JSON\"\n            },\n            {\n                \"command\": \"quicktype.openForJSONSchema\",\n                \"title\": \"Open quicktype for JSON Schema\"\n            },\n            {\n                \"command\": \"quicktype.openForTypeScript\",\n                \"title\": \"Open quicktype for TypeScript\"\n            },\n            {\n                \"command\": \"quicktype.changeTargetLanguage\",\n                \"title\": \"Set quicktype target language\"\n            }\n        ],\n        \"keybindings\": [\n            {\n                \"command\": \"quicktype.pasteJSONAsTypesAndSerialization\",\n                \"key\": \"ctrl+shift+V\",\n                \"mac\": \"cmd+shift+V\",\n                \"when\": \"editorTextFocus && editorLangId != 'markdown'\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONAsTypes\",\n                \"key\": \"ctrl+shift+alt+V\",\n                \"mac\": \"cmd+shift+alt+V\",\n                \"when\": \"editorTextFocus\"\n            }\n        ]\n    },\n    \"scripts\": {\n        \"pub\": \"vsce publish -p $VSCE_TOKEN\",\n        \"package\": \"vsce package\",\n        \"build\": \"node ../../node_modules/typescript/bin/tsc -p ./\",\n        \"watch\": \"node ../../node_modules/typescript/bin/tsc -watch -p ./\",\n        \"test\": \"npm run build && node ./node_modules/vscode/bin/test\",\n        \"vscode:prepublish\": \"npm run esbuild-base -- --minify\",\n        \"esbuild-base\": \"esbuild ./src/extension.ts --bundle --outfile=dist/extension.js --external:vscode --format=cjs --platform=node\",\n        \"esbuild\": \"npm run esbuild-base -- --sourcemap\",\n        \"esbuild-watch\": \"npm run esbuild-base -- --sourcemap --watch\"\n    },\n    \"devDependencies\": {\n        \"@types/mocha\": \"^10.0.6\",\n        \"@types/node\": \"~20.19.0\",\n        \"@types/node-persist\": \"^3.1.8\",\n        \"@types/readable-stream\": \"^4.0.10\",\n        \"@types/vscode\": \"^1.87.0\",\n        \"@vscode/test-cli\": \"^0.0.15\",\n        \"@vscode/test-electron\": \"^2.5.2\",\n        \"@vscode/vsce\": \"^3.9.2\",\n        \"typescript\": \"~7.0.2\",\n        \"node-persist\": \"^4.0.1\",\n        \"quicktype-core\": \"file:../quicktype-core\",\n        \"quicktype-typescript-input\": \"file:../quicktype-typescript-input\",\n        \"unicode-properties\": \"github:quicktype/unicode-properties#dist\"\n    }\n}\n","frontmatter":{"name":"quicktype","displayName":"Paste JSON as Code","description":"Copy JSON, paste as Go, TypeScript, C#, C++ and more.","version":"24.0.0","publisher":"quicktype","icon":"media/icon.png","galleryBanner":{"color":"#00212b","theme":"dark"},"homepage":"https://quicktype.io","author":{"name":"quicktype.io","email":"hello@quicktype.io"},"bugs":{"url":"https://github.com/quicktype/issues"},"repository":{"type":"git","url":"https://github.com/glideapps/quicktype"},"engines":{"vscode":"^1.87.0"},"categories":["Other"],"keywords":["json","converter"],"markdown":"github","main":"dist/extension.js","vsce":{"dependencies":false},"contributes":{"configuration":{"type":"object","title":"quicktype","properties":{"quicktype.justTypes":{"type":"boolean","default":true,"description":"Produce only types; no (de-)serialization code"},"quicktype.inferMaps":{"type":"boolean","default":true,"description":"Infer maps when object keys look like map keys."},"quicktype.inferEnums":{"type":"boolean","default":true,"description":"Infer enums when there aren't many different string values."},"quicktype.inferDateTimes":{"type":"boolean","default":true,"description":"Use date-time types for strings that look like date-times."},"quicktype.inferUuids":{"type":"boolean","default":true,"description":"Use UUID types for strings that look like UUIDs."},"quicktype.inferIntegerStrings":{"type":"boolean","default":true,"description":"Convert stringified integers into integers, and back."},"quicktype.inferBooleanStrings":{"type":"boolean","default":true,"description":"Convert stringified booleans into booleans, and back."}}},"commands":[{"command":"quicktype.pasteJSONAsTypes","title":"Paste JSON as Types"},{"command":"quicktype.pasteJSONAsTypesAndSerialization","title":"Paste JSON as Code"},{"command":"quicktype.pasteJSONSchemaAsTypes","title":"Paste JSON Schema as Types"},{"command":"quicktype.pasteJSONSchemaAsTypesAndSerialization","title":"Paste JSON Schema as Code"},{"command":"quicktype.pasteTypeScriptAsTypesAndSerialization","title":"Paste TypeScript as Code"},{"command":"quicktype.openForJSON","title":"Open quicktype for JSON"},{"command":"quicktype.openForJSONSchema","title":"Open quicktype for JSON Schema"},{"command":"quicktype.openForTypeScript","title":"Open quicktype for TypeScript"},{"command":"quicktype.changeTargetLanguage","title":"Set quicktype target language"}],"keybindings":[{"command":"quicktype.pasteJSONAsTypesAndSerialization","key":"ctrl+shift+V","mac":"cmd+shift+V","when":"editorTextFocus && editorLangId != 'markdown'"},{"command":"quicktype.pasteJSONAsTypes","key":"ctrl+shift+alt+V","mac":"cmd+shift+alt+V","when":"editorTextFocus"}]},"scripts":{"pub":"vsce publish -p $VSCE_TOKEN","package":"vsce package","build":"node ../../node_modules/typescript/bin/tsc -p ./","watch":"node ../../node_modules/typescript/bin/tsc -watch -p ./","test":"npm run build && node ./node_modules/vscode/bin/test","vscode:prepublish":"npm run esbuild-base -- --minify","esbuild-base":"esbuild ./src/extension.ts --bundle --outfile=dist/extension.js --external:vscode --format=cjs --platform=node","esbuild":"npm run esbuild-base -- --sourcemap","esbuild-watch":"npm run esbuild-base -- --sourcemap --watch"},"devDependencies":{"@types/mocha":"^10.0.6","@types/node":"~20.19.0","@types/node-persist":"^3.1.8","@types/readable-stream":"^4.0.10","@types/vscode":"^1.87.0","@vscode/test-cli":"^0.0.15","@vscode/test-electron":"^2.5.2","@vscode/vsce":"^3.9.2","typescript":"~7.0.2","node-persist":"^4.0.1","quicktype-core":"file:../quicktype-core","quicktype-typescript-input":"file:../quicktype-typescript-input","unicode-properties":"github:quicktype/unicode-properties#dist"}},"isInternal":false,"tokens":1332,"sizeBytes":5778},{"name":"tsconfig.json","path":"packages/quicktype-vscode/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/glideapps/quicktype/HEAD/packages/quicktype-vscode/tsconfig.json","title":"Quicktype-vscode Skill","category":"anthropic-skill","format":"json","content":"{\n    \"compilerOptions\": {\n        \"module\": \"commonjs\",\n        \"target\": \"es6\",\n        \"outDir\": \"out\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"sourceMap\": true,\n        \"rootDir\": \".\",\n        \"allowJs\": false,\n        \"strict\": true,\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"esModuleInterop\": true\n    },\n    \"exclude\": [\"node_modules\", \".vscode-test\"]\n}\n","frontmatter":{"compilerOptions":{"module":"commonjs","target":"es6","outDir":"out","lib":["es6","esnext.asynciterable"],"sourceMap":true,"rootDir":".","allowJs":false,"strict":true,"noUnusedLocals":true,"noUnusedParameters":true,"esModuleInterop":true},"exclude":["node_modules",".vscode-test"]},"isInternal":false,"tokens":113,"sizeBytes":413},{"name":"CLAUDE.md","path":"CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/glideapps/quicktype/HEAD/CLAUDE.md","title":"Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# Repository conventions\n\n## Environment\n\n- This is a TypeScript/npm monorepo using npm workspaces.\n- Prefer the Node version from `.nvmrc` (`nvm use`; currently Node 24.6.0). The root CLI package requires Node >= 20.19.0; the library workspaces require Node >= 20.0.0.\n- Install dependencies with `npm ci`.\n\n## Build and run\n\nBuild everything with:\n\n```bash\nnpm run build\n```\n\nThis runs `npm run clean`, builds all workspaces that have a `build` script, and then runs the root `tsc`.\n\nAfter building, the CLI entry point is `dist/index.js`:\n\n```bash\nnode dist/index.js --version\nnode dist/index.js --help\n```\n\nFor live rebuild/re-run while developing renderer output, use:\n\n```bash\nnpm start -- \"<quicktype args>\"\n```\n\n## Testing\n\n### Test strategy\n\nquicktype's primary testing method is end-to-end fixture tests driven by JSON and JSON Schema files. For each sample input, a fixture generates code for a language, runs a driver program in `test/fixtures/<language>/` that deserializes the sample and serializes it back, and compares the round-tripped JSON to the input.\n\nAny change that affects generated output **must** be covered by a JSON or JSON Schema fixture test, either by enabling existing inputs for the language or by adding new ones. Unit tests in `test/unit/` complement fixtures for behavior that fixtures cannot express, such as asserting that code is not generated, API-level behavior, or fast local iteration. Do not add a unit test when a fixture test already covers the behavior.\n\n### Fixture layout and configuration\n\n- JSON inputs live in `test/inputs/json/`. `priority/` and `samples/` form the default input set; `misc/` is omitted under `QUICKTEST` and for languages with `skipMiscJSON`. Per-language `skipJSON` and `includeJSON` settings can further restrict inputs.\n- JSON Schema inputs live in `test/inputs/schema/`. A `*.schema` can have a same-basename `.json` sample and numbered `.N.json` samples. Numbered `.N.fail.<feature>.json` files are expected failures for languages that declare that feature; `.N.fail.json` files apply regardless of features. An expected-failure sample must make the generated program exit nonzero.\n- `test/inputs/json/priority/keywords.json`, `test/inputs/schema/keyword-enum.schema`, and `test/inputs/schema/keyword-unions.schema` are generated by `test/make-keyword-tests.sh` from `test/keywords.txt`. Never edit them directly: add the keyword to `test/keywords.txt`, optionally followed by a tab and a JSON value for the JSON sample, then regenerate.\n- New schema fixture tests should have at least one positive and one negative test case unless there is a compelling reason not to.\n- Per-language configuration—input filters, renderer options, and `features`—lives in `test/languages.ts`.\n- Fixtures and their filter names are registered in `test/fixtures.ts`; driver programs live in `test/fixtures/<language>/`.\n\n### Test commands\n\nRun the standalone Vitest unit and regression tests with:\n\n```bash\nnpm run test:unit\nnpm run test:unit:watch\n```\n\nRun fixture tests with:\n\n```bash\nnpm run test:fixtures\n```\n\nUse fixture filters for focused local testing. Fixture names are registered in `test/fixtures.ts`; comma-separated groups are supported:\n\n```bash\nQUICKTEST=true FIXTURE=javascript npm run test:fixtures\nQUICKTEST=true FIXTURE=typescript npm run test:fixtures -- test/inputs/json/samples/pokedex.json\nFIXTURE=php npm run test:fixtures\nFIXTURE=schema-php npm run test:fixtures\nCPUs=2 QUICKTEST=true FIXTURE=javascript npm run test:fixtures\n```\n\n`QUICKTEST=true` skips the large miscellaneous JSON input set. Arguments after `--` select sample files or directories.\n\n`npm test` runs the Vitest suite followed by all fixture tests. The full fixture suite requires external language toolchains such as .NET, Java/Maven, Go, Rust, Python/mypy, PHP, Ruby, Kotlin, Scala, and Elixir; it will fail when a required toolchain is unavailable. GitHub Actions uses focused fixture groups configured in `.github/workflows/test-pr.yaml`, for example `QUICKTEST=true FIXTURE=${{ matrix.fixture }} npm run test:fixtures`.\n\nFormatting and linting use Biome:\n\n```bash\nnpm run lint\nnpm run lint:fix\n```\n\n## Known CI flakiness\n\nThree fixture-CI failure modes are infrastructure flakes rather than test or PR bugs:\n\n- **scala3-upickle**: the Bloop compiler server sometimes times out after 30 seconds at startup, and `maven-nightlies` artifact downloads sometimes fail.\n- **elm**: fixture setup (`rm -rf elm-stuff && elm make Warmup.elm`) can race the compiler and deadlock on `elm-stuff/*.dat` file locks.\n- **cjson**: `cJSON.c` is downloaded from raw.githubusercontent.com at test time and can encounter transient SSL or connection failures.\n\nThe fixture matrix uses `fail-fast: true`, so one flaky job cancels sibling language jobs. The `test-complete` check only mirrors the matrix and is not an independent failure.\n\nFor now, retry these failed jobs with `gh run rerun <run-id> --failed`. Treat a failure in one of these areas as real only if it reproduces across retries or the PR touches that area.\n\n## Releasing and version bumps\n\nDo not bump versions in any `package.json` before a release. Package manifest versions are intentionally allowed to be stale in the repository.\n\nTo publish, create a GitHub Release targeting the commit to release. Stable tags have the form `vMAJOR.MINOR.PATCH` (for example, `v24.0.0`); prerelease tags have the form `vMAJOR.MINOR.PATCH-preN` (for example, `v25.0.0-pre1`). Publishing the release triggers the npm workflow, which publishes stable versions under the `latest` dist-tag and prereleases under `pre`. The VS Code Marketplace workflow runs only for stable tags.\n\nBoth workflows derive the version exclusively from the release tag and stamp all manifests in the Actions checkout before publishing; those changes are not committed. The release version must be greater than every earlier non-draft GitHub Release with a supported tag. Publication is refused if npm or the VS Code Marketplace already has a newer supported version; an exact version match is skipped, so rerunning a partially completed release is safe.\n\nTest the release-version helper with:\n\n```bash\nnpm run test:release\n```\n","isInternal":false,"tokens":1407,"sizeBytes":6190},{"name":"README.md","path":"packages/quicktype-vscode/README.md","rawUrl":"https://raw.githubusercontent.com/glideapps/quicktype/HEAD/packages/quicktype-vscode/README.md","title":"quicktype-vscode Documentation","category":"plugin-manifest","format":"markdown","content":"**Supports** `C (cJSON)`, `C#`, `C++`, `Crystal`, `Dart`, `Elm`, `Flow`, `Go`, `Haskell`, `JSON Schema`, `Java`, `JavaScript`, `JavaScript PropTypes`, `Kotlin`, `Objective-C`, `PHP`, `Pike`, `Python`, `Ruby`, `Rust`, `Scala3`, `Smithy`, `Swift`, `TypeScript`, `TypeScript Effect Schema` and `TypeScript Zod`\n\n-   Interactively generate types and (de-)serialization code from JSON, JSON Schema, and TypeScript\n-   Paste JSON/JSON Schema/TypeScript as code\n\n![](https://raw.githubusercontent.com/quicktype/quicktype-vscode/master/media/demo-interactive.gif)\n\n`quicktype` infers types from sample JSON data, then outputs strongly typed models and serializers for working with that data in your desired programming language. For more explanation, read [A first look at quicktype](http://blog.quicktype.io/first-look/).\n\nIn any JSON file, use the command \"Open quicktype for JSON\" to summon quicktype, which will generate types from the JSON. Invoke \"Change quicktype's target language\" to pick a different language. There are similar \"Open quicktype\" commands for JSON Schema and TypeScript.\n\nAnother way to use quicktype is to copy JSON into the clipboard and invoke \"Paste JSON as code/types\":\n\n![](https://raw.githubusercontent.com/quicktype/quicktype-vscode/master/media/demo.gif)\n\nFor a more powerful experience, including custom options and the ability to generate code from multiple JSON samples, try [quicktype.io](https://app.quicktype.io).\n\n## Installing\n\nThis extension is available for free in the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items/quicktype.quicktype)\n\n## Customization\n\n-   `quicktype.justTypes`: Generate only types, or also produce (de)serialization code when using \"Open quicktype\". When using \"Paste\", you can pick between the commands for \"types\" and \"code\", without having to set this option.\n\n-   `quicktype.inferMaps`, `quicktype.inferEnums`, `quicktype.inferDateTimes`, `quicktype.inferUuids`, `quicktype.inferBoolStrings`, `quicktype.inferIntegerStrings`: Tell quicktype whether it should try to infer those types from the input JSON. This is not a precise science, so sometimes the guess will be wrong, which is why you can turn them off through these options. Also, quicktype doesn't support dates, UUIDs and stringified integers/booleans in all target languages yet.\n\n## Contribute!\n\nquicktype is an open source project, and we're always happy about contributors. If you can think of a way to improve [this extension](https://github.com/quicktype/quicktype-vscode), or [quicktype](https://github.com/quicktype/quicktype), please consider contributing, especially if you know TypeScript. Code is only one way to contribute, though: we're particularly short on documentation. We'd also love to hear your feedback - come [talk to us on Slack](http://slack.quicktype.io)!\n\nIf you find a bug, please [report it on GitHub](https://github.com/quicktype/quicktype-vscode/issues).\n","isInternal":false,"tokens":695,"sizeBytes":2937}],"systemPromptSnippet":"<yakaai_skills repo=\"glideapps/quicktype\">\n<!-- File: packages/quicktype-core/package.json (Tokens: ~586 | Category: anthropic-skill) -->\n{\n    \"name\": \"quicktype-core\",\n    \"version\": \"24.0.0\",\n    \"description\": \"The quicktype engine as a library\",\n    \"license\": \"Apache-2.0\",\n    \"main\": \"dist/index.js\",\n    \"types\": \"dist/index.d.ts\",\n    \"exports\": {\n        \".\": {\n            \"import\": {\n                \"types\": \"./dist/esm/index.d.ts\",\n                \"default\": \"./dist/esm/index.js\"\n            },\n            \"require\": {\n                \"types\": \"./dist/index.d.ts\",\n                \"default\": \"./dist/index.js\"\n            }\n        },\n        \"./dist/*\": \"./dist/*\",\n        \"./package.json\": \"./package.json\"\n    },\n    \"repository\": \"https://github.com/glideapps/quicktype\",\n    \"engines\": {\n        \"node\": \">=20.0.0\"\n    },\n    \"scripts\": {\n        \"clean\": \"rm -rf dist node_modules *~\",\n        \"build\": \"npm run build:cjs && npm run build:esm\",\n        \"build:cjs\": \"node ../../node_modules/typescript/bin/tsc -p tsconfig.json\",\n        \"build:esm\": \"node ../../node_modules/typescript/bin/tsc -p tsconfig.esm.json && node script/write-esm-package-json.mjs\"\n    },\n    \"dependencies\": {\n        \"@glideapps/ts-necessities\": \"2.2.3\",\n        \"@types/readable-stream\": \"4.0.10\",\n        \"@types/urijs\": \"^1.19.26\",\n        \"browser-or-node\": \"^3.0.0\",\n        \"collection-utils\": \"^1.0.1\",\n        \"is-url\": \"^1.2.4\",\n        \"lodash\": \"^4.18.1\",\n        \"pluralize\": \"^8.0.0\",\n        \"readable-stream\": \"4.5.2\",\n        \"unicode-properties\": \"^1.4.1\",\n        \"urijs\": \"^1.19.1\",\n        \"wordwrap\": \"^1.0.0\",\n        \"yaml\": \"^2.9.0\"\n    },\n    \"devDependencies\": {\n        \"@types/browser-or-node\": \"^1.3.2\",\n        \"@types/is-url\": \"^1.2.32\",\n        \"@types/node\": \"~20.19.0\",\n        \"@types/pluralize\": \"0.0.30\",\n        \"@types/unicode-properties\": \"^1.3.2\",\n        \"@types/wordwrap\": \"^1.0.3\",\n        \"typescript\": \"~7.0.2\"\n    },\n    \"files\": [\n        \"dist\"\n    ],\n    \"browser\": {\n        \"fs\": false,\n        \"path\": false\n    }\n}\n\n<!-- File: packages/quicktype-core/tsconfig.esm.json (Tokens: ~190 | Category: anthropic-skill) -->\n{\n    \"extends\": \"./tsconfig.json\",\n    \"compilerOptions\": {\n        // The ESM leg of the dual build. \"nodenext\" can't be used here: this\n        // package has no `\"type\": \"module\"`, so nodenext would classify the\n        // sources as CommonJS and emit CJS. Instead we emit plain ES modules\n        // and make Node treat `dist/esm` as ESM via the `{\"type\": \"module\"}`\n        // marker that script/write-esm-package-json.mjs drops into the output\n        // directory. Relative imports in src/ carry explicit \".js\" extensions\n        // so the emitted files are resolvable by Node's ESM loader, which\n        // does no extension guessing.\n        \"module\": \"esnext\",\n        \"moduleResolution\": \"bundler\",\n        \"outDir\": \"dist/esm\"\n    }\n}\n\n<!-- File: packages/quicktype-core/tsconfig.json (Tokens: ~118 | Category: anthropic-skill) -->\n{\n    \"compilerOptions\": {\n        \"target\": \"es6\",\n        \"module\": \"commonjs\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"allowJs\": false,\n        \"declaration\": true,\n        \"strict\": true,\n        \"outDir\": \"dist\",\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"noFallthroughCasesInSwitch\": true,\n        \"esModuleInterop\": true,\n        \"rootDir\": \"src\"\n    },\n    \"include\": [\"src\"]\n}\n\n<!-- File: packages/quicktype-graphql-input/package.json (Tokens: ~229 | Category: anthropic-skill) -->\n{\n    \"name\": \"quicktype-graphql-input\",\n    \"version\": \"24.0.0\",\n    \"package\": \"Package for using GraphQL as an input language to quicktype\",\n    \"license\": \"Apache-2.0\",\n    \"main\": \"dist/index.js\",\n    \"types\": \"dist/index.d.ts\",\n    \"repository\": \"https://github.com/glideapps/quicktype\",\n    \"engines\": {\n        \"node\": \">=20.0.0\"\n    },\n    \"scripts\": {\n        \"clean\": \"rm -rf dist node_modules *~\",\n        \"build\": \"node ../../node_modules/typescript/bin/tsc\"\n    },\n    \"dependencies\": {\n        \"quicktype-core\": \"file:../quicktype-core\",\n        \"collection-utils\": \"^1.0.1\",\n        \"graphql\": \"^16.11.0\"\n    },\n    \"devDependencies\": {\n        \"@types/node\": \"~20.19.0\",\n        \"typescript\": \"~7.0.2\"\n    },\n    \"files\": [\n        \"dist\"\n    ]\n}\n\n<!-- File: packages/quicktype-graphql-input/tsconfig.json (Tokens: ~114 | Category: anthropic-skill) -->\n{\n    \"compilerOptions\": {\n        \"target\": \"es6\",\n        \"module\": \"commonjs\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"allowJs\": false,\n        \"declaration\": true,\n        \"strict\": true,\n        \"alwaysStrict\": true,\n        \"outDir\": \"dist\",\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"esModuleInterop\": true,\n        \"rootDir\": \"src\"\n    },\n    \"include\": [\"src\"]\n}\n\n<!-- File: packages/quicktype-typescript-input/package.json (Tokens: ~219 | Category: anthropic-skill) -->\n{\n    \"name\": \"quicktype-typescript-input\",\n    \"version\": \"24.0.0\",\n    \"description\": \"Package for using TypeScript as an input language to quicktype\",\n    \"license\": \"Apache-2.0\",\n    \"main\": \"dist/index.js\",\n    \"types\": \"dist/index.d.ts\",\n    \"repository\": \"https://github.com/glideapps/quicktype\",\n    \"engines\": {\n        \"node\": \">=20.0.0\"\n    },\n    \"scripts\": {\n        \"clean\": \"rm -rf dist node_modules *~\",\n        \"build\": \"node ../../node_modules/typescript/bin/tsc\"\n    },\n    \"dependencies\": {\n        \"quicktype-core\": \"file:../quicktype-core\",\n        \"typescript\": \"5.9.3\",\n        \"typescript-json-schema\": \"0.67.4\"\n    },\n    \"devDependencies\": {\n        \"@types/node\": \"~20.19.0\"\n    },\n    \"files\": [\n        \"dist\"\n    ]\n}\n\n<!-- File: packages/quicktype-typescript-input/tsconfig.json (Tokens: ~114 | Category: anthropic-skill) -->\n{\n    \"compilerOptions\": {\n        \"target\": \"es6\",\n        \"module\": \"commonjs\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"allowJs\": false,\n        \"declaration\": true,\n        \"strict\": true,\n        \"alwaysStrict\": true,\n        \"outDir\": \"dist\",\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"esModuleInterop\": true,\n        \"rootDir\": \"src\"\n    },\n    \"include\": [\"src\"]\n}\n\n<!-- File: packages/quicktype-vscode/package.json (Tokens: ~1332 | Category: anthropic-skill) -->\n{\n    \"name\": \"quicktype\",\n    \"displayName\": \"Paste JSON as Code\",\n    \"description\": \"Copy JSON, paste as Go, TypeScript, C#, C++ and more.\",\n    \"version\": \"24.0.0\",\n    \"publisher\": \"quicktype\",\n    \"icon\": \"media/icon.png\",\n    \"galleryBanner\": {\n        \"color\": \"#00212b\",\n        \"theme\": \"dark\"\n    },\n    \"homepage\": \"https://quicktype.io\",\n    \"author\": {\n        \"name\": \"quicktype.io\",\n        \"email\": \"hello@quicktype.io\"\n    },\n    \"bugs\": {\n        \"url\": \"https://github.com/quicktype/issues\"\n    },\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/glideapps/quicktype\"\n    },\n    \"engines\": {\n        \"vscode\": \"^1.87.0\"\n    },\n    \"categories\": [\n        \"Other\"\n    ],\n    \"keywords\": [\n        \"json\",\n        \"converter\"\n    ],\n    \"markdown\": \"github\",\n    \"main\": \"dist/extension.js\",\n    \"vsce\": {\n        \"dependencies\": false\n    },\n    \"contributes\": {\n        \"configuration\": {\n            \"type\": \"object\",\n            \"title\": \"quicktype\",\n            \"properties\": {\n                \"quicktype.justTypes\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Produce only types; no (de-)serialization code\"\n                },\n                \"quicktype.inferMaps\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Infer maps when object keys look like map keys.\"\n                },\n                \"quicktype.inferEnums\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Infer enums when there aren't many different string values.\"\n                },\n                \"quicktype.inferDateTimes\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Use date-time types for strings that look like date-times.\"\n                },\n                \"quicktype.inferUuids\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Use UUID types for strings that look like UUIDs.\"\n                },\n                \"quicktype.inferIntegerStrings\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Convert stringified integers into integers, and back.\"\n                },\n                \"quicktype.inferBooleanStrings\": {\n                    \"type\": \"boolean\",\n                    \"default\": true,\n                    \"description\": \"Convert stringified booleans into booleans, and back.\"\n                }\n            }\n        },\n        \"commands\": [\n            {\n                \"command\": \"quicktype.pasteJSONAsTypes\",\n                \"title\": \"Paste JSON as Types\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONAsTypesAndSerialization\",\n                \"title\": \"Paste JSON as Code\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONSchemaAsTypes\",\n                \"title\": \"Paste JSON Schema as Types\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONSchemaAsTypesAndSerialization\",\n                \"title\": \"Paste JSON Schema as Code\"\n            },\n            {\n                \"command\": \"quicktype.pasteTypeScriptAsTypesAndSerialization\",\n                \"title\": \"Paste TypeScript as Code\"\n            },\n            {\n                \"command\": \"quicktype.openForJSON\",\n                \"title\": \"Open quicktype for JSON\"\n            },\n            {\n                \"command\": \"quicktype.openForJSONSchema\",\n                \"title\": \"Open quicktype for JSON Schema\"\n            },\n            {\n                \"command\": \"quicktype.openForTypeScript\",\n                \"title\": \"Open quicktype for TypeScript\"\n            },\n            {\n                \"command\": \"quicktype.changeTargetLanguage\",\n                \"title\": \"Set quicktype target language\"\n            }\n        ],\n        \"keybindings\": [\n            {\n                \"command\": \"quicktype.pasteJSONAsTypesAndSerialization\",\n                \"key\": \"ctrl+shift+V\",\n                \"mac\": \"cmd+shift+V\",\n                \"when\": \"editorTextFocus && editorLangId != 'markdown'\"\n            },\n            {\n                \"command\": \"quicktype.pasteJSONAsTypes\",\n                \"key\": \"ctrl+shift+alt+V\",\n                \"mac\": \"cmd+shift+alt+V\",\n                \"when\": \"editorTextFocus\"\n            }\n        ]\n    },\n    \"scripts\": {\n        \"pub\": \"vsce publish -p $VSCE_TOKEN\",\n        \"package\": \"vsce package\",\n        \"build\": \"node ../../node_modules/typescript/bin/tsc -p ./\",\n        \"watch\": \"node ../../node_modules/typescript/bin/tsc -watch -p ./\",\n        \"test\": \"npm run build && node ./node_modules/vscode/bin/test\",\n        \"vscode:prepublish\": \"npm run esbuild-base -- --minify\",\n        \"esbuild-base\": \"esbuild ./src/extension.ts --bundle --outfile=dist/extension.js --external:vscode --format=cjs --platform=node\",\n        \"esbuild\": \"npm run esbuild-base -- --sourcemap\",\n        \"esbuild-watch\": \"npm run esbuild-base -- --sourcemap --watch\"\n    },\n    \"devDependencies\": {\n        \"@types/mocha\": \"^10.0.6\",\n        \"@types/node\": \"~20.19.0\",\n        \"@types/node-persist\": \"^3.1.8\",\n        \"@types/readable-stream\": \"^4.0.10\",\n        \"@types/vscode\": \"^1.87.0\",\n        \"@vscode/test-cli\": \"^0.0.15\",\n        \"@vscode/test-electron\": \"^2.5.2\",\n        \"@vscode/vsce\": \"^3.9.2\",\n        \"typescript\": \"~7.0.2\",\n        \"node-persist\": \"^4.0.1\",\n        \"quicktype-core\": \"file:../quicktype-core\",\n        \"quicktype-typescript-input\": \"file:../quicktype-typescript-input\",\n        \"unicode-properties\": \"github:quicktype/unicode-properties#dist\"\n    }\n}\n\n<!-- File: packages/quicktype-vscode/tsconfig.json (Tokens: ~113 | Category: anthropic-skill) -->\n{\n    \"compilerOptions\": {\n        \"module\": \"commonjs\",\n        \"target\": \"es6\",\n        \"outDir\": \"out\",\n        \"lib\": [\"es6\", \"esnext.asynciterable\"],\n        \"sourceMap\": true,\n        \"rootDir\": \".\",\n        \"allowJs\": false,\n        \"strict\": true,\n        \"noUnusedLocals\": true,\n        \"noUnusedParameters\": true,\n        \"esModuleInterop\": true\n    },\n    \"exclude\": [\"node_modules\", \".vscode-test\"]\n}\n\n<!-- File: CLAUDE.md (Tokens: ~1407 | Category: claude-rule) -->\n# Repository conventions\n\n## Environment\n\n- This is a TypeScript/npm monorepo using npm workspaces.\n- Prefer the Node version from `.nvmrc` (`nvm use`; currently Node 24.6.0). The root CLI package requires Node >= 20.19.0; the library workspaces require Node >= 20.0.0.\n- Install dependencies with `npm ci`.\n\n## Build and run\n\nBuild everything with:\n\n```bash\nnpm run build\n```\n\nThis runs `npm run clean`, builds all workspaces that have a `build` script, and then runs the root `tsc`.\n\nAfter building, the CLI entry point is `dist/index.js`:\n\n```bash\nnode dist/index.js --version\nnode dist/index.js --help\n```\n\nFor live rebuild/re-run while developing renderer output, use:\n\n```bash\nnpm start -- \"<quicktype args>\"\n```\n\n## Testing\n\n### Test strategy\n\nquicktype's primary testing method is end-to-end fixture tests driven by JSON and JSON Schema files. For each sample input, a fixture generates code for a language, runs a driver program in `test/fixtures/<language>/` that deserializes the sample and serializes it back, and compares the round-tripped JSON to the input.\n\nAny change that affects generated output **must** be covered by a JSON or JSON Schema fixture test, either by enabling existing inputs for the language or by adding new ones. Unit tests in `test/unit/` complement fixtures for behavior that fixtures cannot express, such as asserting that code is not generated, API-level behavior, or fast local iteration. Do not add a unit test when a fixture test already covers the behavior.\n\n### Fixture layout and configuration\n\n- JSON inputs live in `test/inputs/json/`. `priority/` and `samples/` form the default input set; `misc/` is omitted under `QUICKTEST` and for languages with `skipMiscJSON`. Per-language `skipJSON` and `includeJSON` settings can further restrict inputs.\n- JSON Schema inputs live in `test/inputs/schema/`. A `*.schema` can have a same-basename `.json` sample and numbered `.N.json` samples. Numbered `.N.fail.<feature>.json` files are expected failures for languages that declare that feature; `.N.fail.json` files apply regardless of features. An expected-failure sample must make the generated program exit nonzero.\n- `test/inputs/json/priority/keywords.json`, `test/inputs/schema/keyword-enum.schema`, and `test/inputs/schema/keyword-unions.schema` are generated by `test/make-keyword-tests.sh` from `test/keywords.txt`. Never edit them directly: add the keyword to `test/keywords.txt`, optionally followed by a tab and a JSON value for the JSON sample, then regenerate.\n- New schema fixture tests should have at least one positive and one negative test case unless there is a compelling reason not to.\n- Per-language configuration—input filters, renderer options, and `features`—lives in `test/languages.ts`.\n- Fixtures and their filter names are registered in `test/fixtures.ts`; driver programs live in `test/fixtures/<language>/`.\n\n### Test commands\n\nRun the standalone Vitest unit and regression tests with:\n\n```bash\nnpm run test:unit\nnpm run test:unit:watch\n```\n\nRun fixture tests with:\n\n```bash\nnpm run test:fixtures\n```\n\nUse fixture filters for focused local testing. Fixture names are registered in `test/fixtures.ts`; comma-separated groups are supported:\n\n```bash\nQUICKTEST=true FIXTURE=javascript npm run test:fixtures\nQUICKTEST=true FIXTURE=typescript npm run test:fixtures -- test/inputs/json/samples/pokedex.json\nFIXTURE=php npm run test:fixtures\nFIXTURE=schema-php npm run test:fixtures\nCPUs=2 QUICKTEST=true FIXTURE=javascript npm run test:fixtures\n```\n\n`QUICKTEST=true` skips the large miscellaneous JSON input set. Arguments after `--` select sample files or directories.\n\n`npm test` runs the Vitest suite followed by all fixture tests. The full fixture suite requires external language toolchains such as .NET, Java/Maven, Go, Rust, Python/mypy, PHP, Ruby, Kotlin, Scala, and Elixir; it will fail when a required toolchain is unavailable. GitHub Actions uses focused fixture groups configured in `.github/workflows/test-pr.yaml`, for example `QUICKTEST=true FIXTURE=${{ matrix.fixture }} npm run test:fixtures`.\n\nFormatting and linting use Biome:\n\n```bash\nnpm run lint\nnpm run lint:fix\n```\n\n## Known CI flakiness\n\nThree fixture-CI failure modes are infrastructure flakes rather than test or PR bugs:\n\n- **scala3-upickle**: the Bloop compiler server sometimes times out after 30 seconds at startup, and `maven-nightlies` artifact downloads sometimes fail.\n- **elm**: fixture setup (`rm -rf elm-stuff && elm make Warmup.elm`) can race the compiler and deadlock on `elm-stuff/*.dat` file locks.\n- **cjson**: `cJSON.c` is downloaded from raw.githubusercontent.com at test time and can encounter transient SSL or connection failures.\n\nThe fixture matrix uses `fail-fast: true`, so one flaky job cancels sibling language jobs. The `test-complete` check only mirrors the matrix and is not an independent failure.\n\nFor now, retry these failed jobs with `gh run rerun <run-id> --failed`. Treat a failure in one of these areas as real only if it reproduces across retries or the PR touches that area.\n\n## Releasing and version bumps\n\nDo not bump versions in any `package.json` before a release. Package manifest versions are intentionally allowed to be stale in the repository.\n\nTo publish, create a GitHub Release targeting the commit to release. Stable tags have the form `vMAJOR.MINOR.PATCH` (for example, `v24.0.0`); prerelease tags have the form `vMAJOR.MINOR.PATCH-preN` (for example, `v25.0.0-pre1`). Publishing the release triggers the npm workflow, which publishes stable versions under the `latest` dist-tag and prereleases under `pre`. The VS Code Marketplace workflow runs only for stable tags.\n\nBoth workflows derive the version exclusively from the release tag and stamp all manifests in the Actions checkout before publishing; those changes are not committed. The release version must be greater than every earlier non-draft GitHub Release with a supported tag. Publication is refused if npm or the VS Code Marketplace already has a newer supported version; an exact version match is skipped, so rerunning a partially completed release is safe.\n\nTest the release-version helper with:\n\n```bash\nnpm run test:release\n```\n\n<!-- File: packages/quicktype-vscode/README.md (Tokens: ~695 | Category: plugin-manifest) -->\n**Supports** `C (cJSON)`, `C#`, `C++`, `Crystal`, `Dart`, `Elm`, `Flow`, `Go`, `Haskell`, `JSON Schema`, `Java`, `JavaScript`, `JavaScript PropTypes`, `Kotlin`, `Objective-C`, `PHP`, `Pike`, `Python`, `Ruby`, `Rust`, `Scala3`, `Smithy`, `Swift`, `TypeScript`, `TypeScript Effect Schema` and `TypeScript Zod`\n\n-   Interactively generate types and (de-)serialization code from JSON, JSON Schema, and TypeScript\n-   Paste JSON/JSON Schema/TypeScript as code\n\n![](https://raw.githubusercontent.com/quicktype/quicktype-vscode/master/media/demo-interactive.gif)\n\n`quicktype` infers types from sample JSON data, then outputs strongly typed models and serializers for working with that data in your desired programming language. For more explanation, read [A first look at quicktype](http://blog.quicktype.io/first-look/).\n\nIn any JSON file, use the command \"Open quicktype for JSON\" to summon quicktype, which will generate types from the JSON. Invoke \"Change quicktype's target language\" to pick a different language. There are similar \"Open quicktype\" commands for JSON Schema and TypeScript.\n\nAnother way to use quicktype is to copy JSON into the clipboard and invoke \"Paste JSON as code/types\":\n\n![](https://raw.githubusercontent.com/quicktype/quicktype-vscode/master/media/demo.gif)\n\nFor a more powerful experience, including custom options and the ability to generate code from multiple JSON samples, try [quicktype.io](https://app.quicktype.io).\n\n## Installing\n\nThis extension is available for free in the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items/quicktype.quicktype)\n\n## Customization\n\n-   `quicktype.justTypes`: Generate only types, or also produce (de)serialization code when using \"Open quicktype\". When using \"Paste\", you can pick between the commands for \"types\" and \"code\", without having to set this option.\n\n-   `quicktype.inferMaps`, `quicktype.inferEnums`, `quicktype.inferDateTimes`, `quicktype.inferUuids`, `quicktype.inferBoolStrings`, `quicktype.inferIntegerStrings`: Tell quicktype whether it should try to infer those types from the input JSON. This is not a precise science, so sometimes the guess will be wrong, which is why you can turn them off through these options. Also, quicktype doesn't support dates, UUIDs and stringified integers/booleans in all target languages yet.\n\n## Contribute!\n\nquicktype is an open source project, and we're always happy about contributors. If you can think of a way to improve [this extension](https://github.com/quicktype/quicktype-vscode), or [quicktype](https://github.com/quicktype/quicktype), please consider contributing, especially if you know TypeScript. Code is only one way to contribute, though: we're particularly short on documentation. We'd also love to hear your feedback - come [talk to us on Slack](http://slack.quicktype.io)!\n\nIf you find a bug, please [report it on GitHub](https://github.com/quicktype/quicktype-vscode/issues).\n</yakaai_skills>"}