[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83852":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":13,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":36,"readmeContent":37,"aiSummary":10,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":38,"discoverSource":39},83852,"kiira","AlemTuzlak\u002Fkiira","AlemTuzlak","Type-check the TypeScript & JavaScript code in your Markdown against your real project — in your editor, the CLI, and CI.","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=CodeForge.typedown-vscode",null,"TypeScript",73,1,51,0,2,18,13,55.7,"MIT License",false,"main",true,[25,26,27,28,29,30,31,32,33,34,35],"cli","developer-tools","docs-as-code","documentation","javascript","linter","markdown","monorepo","type-checking","typescript","vscode-extension","2026-06-12 04:01:42","\u003Cdiv align=\"center\">\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fraw.githubusercontent.com\u002FAlemTuzlak\u002Fkiira\u002Fmain\u002Fassets\u002Fcover-light.png\" \u002F>\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fraw.githubusercontent.com\u002FAlemTuzlak\u002Fkiira\u002Fmain\u002Fassets\u002Fcover-dark.png\" \u002F>\n  \u003Cimg alt=\"Kiira — type-check the code in your Markdown\" src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FAlemTuzlak\u002Fkiira\u002Fmain\u002Fassets\u002Fcover-dark.png\" width=\"860\" \u002F>\n\u003C\u002Fpicture>\n\n# Kiira\n\n**Type-check the code in your Markdown.**\n\nKiira extracts TypeScript and JavaScript code fences from your Markdown docs, type-checks\nthem against your real project API, and reports any errors right back on the Markdown line —\nin your editor, on the command line, and in CI.\n\n[![VS Code Marketplace](https:\u002F\u002Fimg.shields.io\u002Fvisual-studio-marketplace\u002Fv\u002FCodeForge.kiira-vscode?label=VS%20Code%20Marketplace&logo=visualstudiocode)](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=CodeForge.kiira-vscode)\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fkiira?label=kiira&logo=npm)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fkiira)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](LICENSE)\n\n\u003C\u002Fdiv>\n\n---\n\n## Documentation\n\n📚 **Full documentation lives in [`\u002Fdocs`](docs)** — a browsable site covering every CLI\nfeature, configuration, CI recipes, and the VS Code extension. Run it locally with\n`pnpm install && pnpm run dev` from inside `docs\u002F`, or deploy it (Docker \u002F Fly.io configs are\nincluded).\n\n## Why\n\nDocs are increasingly written and updated by agents, and agents hallucinate APIs. Kiira\ncatches the things that make a copy-pasted example fail:\n\n- invalid imports and missing exports\n- wrong package subpaths\n- wrong function, option, or prop names\n- invalid TypeScript \u002F JavaScript (with `checkJs`)\n- non-copy-pasteable examples — unless explicitly marked partial or ignored\n\n## Packages\n\n| Package                                     | Description                                            |\n| ------------------------------------------- | ------------------------------------------------------ |\n| [`kiira-core`](packages\u002Fcore)           | Extraction, virtual files, type-checking, diagnostics. |\n| [`kiira`](packages\u002Fcli)             | `kiira check` for local and CI validation.          |\n| [`kiira-vscode`](packages\u002Fvscode)        | Live squiggles inside Markdown code fences.            |\n| [`AlemTuzlak\u002Fkiira@v1`](action.yml)       | GitHub composite action for CI.                        |\n\n## Quick start\n\n```bash\npnpm add -D kiira\n```\n\nCreate a `tsconfig.docs.json` and (optionally) a `kiira.config.ts`, then run:\n\n```bash\nkiira check\n```\n\n### Fence format\n\n````md\n```ts\nimport { createAgent } from \"@tanstack\u002Fai\"\n```\n````\n\nAdd metadata to control validation:\n\n````md\n```tsx fixture=react validate=type name=basic-chat\nimport { useChat } from \"@tanstack\u002Fai\u002Freact\"\n\nexport function Chat() {\n  const chat = useChat()\n  return \u003Cdiv>{chat.messages.length}\u003C\u002Fdiv>\n}\n```\n````\n\nSupported metadata: `ignore`, `validate=type|runtime|none`, `fixture=\u003Cname>`, `name=\u003Cid>`,\n`package=workspace|packed`, `group=\u003Cid>`.\n\n### Grouping snippets\n\nBy default each fence is checked as an isolated module. When a walkthrough is split across\nseveral fences (a later fence uses a `const` declared in an earlier one), tag them with the\nsame `group`:\n\n````md\n```ts group=quickstart\nconst client = createClient()\n```\n\n```ts group=quickstart\nawait client.send(\"hi\")   \u002F\u002F resolves: same group as the snippet above\n```\n````\n\nKiira also **detects** ungrouped continuations automatically — if grouping a document's\nsnippets would resolve \"cannot find name\" errors, it warns and `kiira check --fix` adds the\n`group=` tags for you.\n\n## Monorepos\n\nIn `packageMode: \"workspace\"` (the default) Kiira discovers your pnpm\u002Fnpm\u002Fyarn workspace,\nmaps every package name to its source, and adds each package's `node_modules` as a resolution\nfallback. So in a monorepo, docs that import `@your-scope\u002F*` **and** third-party libs resolve\nout of the box — no hand-written `tsconfig` `paths` required.\n\n## Per-glob overrides\n\nWhen a docs set spans multiple frameworks, a single `jsx`\u002F`jsxImportSource` can't serve all of\nthem. Use `overrides` to set compiler options for matching files:\n\n```ts\nexport default defineConfig({\n  include: [\"docs\u002F**\u002F*.md\"],\n  overrides: [\n    { include: [\"**\u002F*solid*\"], jsxImportSource: \"solid-js\" },\n    { include: [\"**\u002F*preact*\"], jsxImportSource: \"preact\" },\n  ],\n})\n```\n\nEach override's non-`include` fields are merged onto the base compiler options for matching\nfiles (Kiira runs a separate TypeScript program per distinct option set). Kiira also\n**detects** the framework from the file path: if a file's JSX fails for lack of the right\nruntime types (TS7026), it suggests a `jsxImportSource` override and `kiira check --fix`\nwrites it into a JSON config for you.\n\n## Language-tag checking\n\nKiira warns when a `ts` fence actually contains JSX (it should be `tsx`), checks it as `tsx`\nanyway so you get real type errors instead of a syntax-error cascade, and can rewrite the tag\nfor you:\n\n```bash\nkiira check --fix    # rewrites mistagged fences (ts\u002Ftypescript -> tsx)\n```\n\n## CLI\n\n```bash\nkiira check                     # validate everything in your include globs\nkiira check --entry docs        # check a directory (repeatable)\nkiira check --entry docs --ignore docs\u002Fapi   # ...excluding a subdirectory\nkiira check \"docs\u002F**\u002F*.md\"      # validate specific files\u002Fglobs\nkiira check --reporter json     # machine-readable output\nkiira check --reporter github   # GitHub Actions annotations\nkiira check --fix               # rewrite mistagged code fences (ts -> tsx)\nkiira check --verbose           # full messages + code frames (default is compact)\nkiira init                      # scaffold kiira.config.ts + tsconfig.docs.json\n```\n\n### Flags\n\n| Flag | Description |\n| --- | --- |\n| `--entry \u003Cpath>` | Directory, file, or glob to check. Repeatable. Overrides `include`. |\n| `--ignore \u003Cpath>` | Directory, file, or glob to exclude. Repeatable (e.g. `--ignore docs\u002Fapi`). |\n| `--config \u003Cpath>` | Path to a Kiira config file. |\n| `--reporter \u003Cname>` | Output format: `pretty` (default), `json`, or `github` (Actions annotations). |\n| `--fix` | Apply auto-fixes: rewrite mistagged fences (`ts`→`tsx`), add `group=` tags, write framework `jsxImportSource` overrides. |\n| `--verbose` | Full error messages and code frames (default output is compact). |\n| `--raw` | Plain text — disable colored output. |\n| `--static` | Disable the loading spinner. |\n| `-h, --help` | Show help. |\n| `-v, --version` | Show the version. |\n\nExit codes: `0` clean, `1` validation errors, `2` config\u002Fruntime failure.\n\n### Configuration\n\n`kiira.config.ts` (or `.js`\u002F`.json`); all fields are optional except `include`:\n\n```ts\nimport { defineConfig } from \"kiira-core\"\n\nexport default defineConfig({\n  include: [\"docs\u002F**\u002F*.md\", \"README.md\"],\n  exclude: [\"**\u002Fnode_modules\u002F**\"],\n  tsconfig: \"tsconfig.docs.json\",   \u002F\u002F defaults to tsconfig.docs.json, then tsconfig.json\n  packageMode: \"workspace\",          \u002F\u002F \"workspace\" (default) | \"packed\"\n  defaultValidate: \"type\",           \u002F\u002F \"type\" (default) | \"runtime\" | \"none\"\n  checkUnusedSymbols: false,          \u002F\u002F report TS6133 unused locals\u002Fparams\u002Fimports\n  checkRelativeImports: false,        \u002F\u002F report unresolved .\u002F and ..\u002F imports\n  overrides: [\n    { include: [\"**\u002F*solid*\"], jsxImportSource: \"solid-js\" },\n  ],\n  fixtures: {\n    react: { type: \"wrap\", before: \"import React from 'react'\", after: \"\" },\n  },\n  defaultFixture: undefined,\n  languages: [\"ts\", \"tsx\", \"js\", \"jsx\"],\n})\n```\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `include` | — | Markdown globs to check (required). |\n| `exclude` | `[]` | Globs to skip. |\n| `tsconfig` | auto | tsconfig to source compiler options from. |\n| `packageMode` | `workspace` | Resolve monorepo packages (`workspace`) or rely on installed packages (`packed`). |\n| `defaultValidate` | `type` | Default validation mode for fences without a `validate=` tag. |\n| `checkUnusedSymbols` | `false` | Report unused locals\u002Fparams\u002Fimports (TS6133). |\n| `checkRelativeImports` | `false` | Report unresolved relative imports. |\n| `overrides` | `[]` | Per-glob `compilerOptions` (e.g. `jsxImportSource`). |\n| `fixtures` | `{}` | Named code to prepend\u002Fwrap around snippets. |\n| `defaultFixture` | — | Fixture applied to fences without a `fixture=` tag. |\n| `languages` | all | Fence languages to check. |\n\n### Fence metadata\n\nAdd tokens after the language on the fence info string:\n\n````md\n```tsx fixture=react validate=type name=basic-chat group=quickstart\n````\n\n| Token | Description |\n| --- | --- |\n| `ignore` | Skip this fence entirely. |\n| `validate=type\\|runtime\\|none` | Override the validation mode for this fence. |\n| `fixture=\u003Cname>` | Wrap the snippet with a named fixture from config. |\n| `name=\u003Cid>` | A stable label for the snippet (shown in tooling). |\n| `group=\u003Cid>` | Type-check fences sharing an id together, in document order. |\n| `package=workspace\\|packed` | Override the package resolution mode for this fence. |\n\nUnused locals\u002Fparameters\u002Fimports (TS6133) are **ignored by default** — doc snippets\nroutinely declare things they don't use. Set `checkUnusedSymbols: true` in your config to\nenforce them.\n\nUnresolved **relative** imports (`.\u002Fx`, `..\u002Fx`) are also **ignored by default** — snippets\noften \"import\" from an imaginary sibling file standing in for an earlier snippet or the\nreader's project. Bare package imports (`@scope\u002Fpkg`, `react`) are always checked. Set\n`checkRelativeImports: true` to enforce relative imports too.\n\n## Editor (VS Code)\n\nInstall **Kiira** from the\n[VS Code Marketplace](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=CodeForge.kiira-vscode)\n(or `ext install CodeForge.kiira-vscode`). It also publishes to\n[Open VSX](https:\u002F\u002Fopen-vsx.org\u002Fextension\u002FCodeForge\u002Fkiira-vscode).\n\nIt type-checks your Markdown code fences against your real project, live:\n\n- **Live diagnostics** — type errors appear as you type (debounced) and on save,\n  mapped to the exact line inside the fence.\n- **Quick fixes** (`Ctrl+.` \u002F `Cmd+.`):\n  - TypeScript's own fixes inside fences — **auto-import a missing symbol**, fix a\n    misspelled name, add a missing `await`, implement an interface, …\n  - Kiira's fixes — change a mistagged `` ```ts `` fence to `` ```tsx `` for JSX,\n    or tag continuation snippets with `group=…`.\n- **Inspect** the generated virtual file for any snippet.\n\n### Commands\n\n| Command | Description |\n| --- | --- |\n| `Kiira: Check Current File` | Re-check the active Markdown document. |\n| `Kiira: Check Workspace` | Check every Markdown file in the workspace. |\n| `Kiira: Open Virtual File For Snippet` | Inspect the generated code for a fence. |\n| `Kiira: Restart Kiira Server` | Clear and re-check all open documents. |\n\n### Settings\n\n| Setting | Default | Description |\n| --- | --- | --- |\n| `kiira.enable` | `true` | Enable Kiira diagnostics in Markdown files. |\n| `kiira.configPath` | `kiira.config.ts` | Path to the Kiira config, relative to the workspace root. |\n| `kiira.debounceMs` | `300` | Delay before re-checking after a change. |\n| `kiira.checkOnChange` | `true` | Re-check as the document changes (debounced). |\n| `kiira.checkOnSave` | `true` | Re-check when the document is saved. |\n| `kiira.showGeneratedDiagnostics` | `false` | Show diagnostics from generated fixture code (debugging). |\n\n## CI\n\nUse the [composite action](action.yml):\n\n```yaml\n- uses: AlemTuzlak\u002Fkiira@v1\n  with:\n    command: pnpm kiira check\n    reporter: github\n```\n\n## Examples\n\n| Example                                | Shows                                              |\n| -------------------------------------- | -------------------------------------------------- |\n| [`examples\u002Fbasic`](examples\u002Fbasic)     | Plain TypeScript snippets against the `node` types. |\n| [`examples\u002Freact`](examples\u002Freact)     | `tsx` snippets with `react` and wrap fixtures.      |\n| [`examples\u002Fmonorepo`](examples\u002Fmonorepo) | One config validating docs across many packages.  |\n\n## Development\n\nThis is a pnpm + Nx monorepo.\n\n```bash\npnpm install\npnpm build:all   # build every package\npnpm test        # check + typecheck + unit tests + build\n```\n\n## License\n\nMIT © AlemTuzlak\n","2026-06-11 04:11:38","CREATED_QUERY"]