{"id":50723248,"url":"https://github.com/pradeepmouli/skillit","last_synced_at":"2026-06-10T02:02:06.834Z","repository":{"id":346057780,"uuid":"1188207316","full_name":"pradeepmouli/skillit","owner":"pradeepmouli","description":"Generate AI agent skills (SKILL.md) from TypeScript API docs — TypeDoc plugin + CLI + Docusaurus/VitePress","archived":false,"fork":false,"pushed_at":"2026-06-04T15:39:12.000Z","size":3495,"stargazers_count":4,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2026-06-04T16:07:05.859Z","etag":null,"topics":["agent-skills","ai","api-documentation","claude-code","cli","code-generation","copilot","cursor","developer-tools","documentation","docusaurus","jsdoc","llm","llms-txt","skill-md","typedoc","typedoc-plugin","typescript","vitepress"],"latest_commit_sha":null,"homepage":"https://pradeepmouli.github.io/skillit/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pradeepmouli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"pradeepmouli"}},"created_at":"2026-03-21T19:01:07.000Z","updated_at":"2026-06-04T15:39:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"d16ab485-c48c-4eb5-aff2-20fa7fb490d2","html_url":"https://github.com/pradeepmouli/skillit","commit_stats":null,"previous_names":["pradeepmouli/to-skills","pradeepmouli/skillit"],"tags_count":86,"template":false,"template_full_name":null,"purl":"pkg:github/pradeepmouli/skillit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pradeepmouli%2Fskillit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pradeepmouli%2Fskillit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pradeepmouli%2Fskillit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pradeepmouli%2Fskillit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pradeepmouli","download_url":"https://codeload.github.com/pradeepmouli/skillit/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pradeepmouli%2Fskillit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34133404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-skills","ai","api-documentation","claude-code","cli","code-generation","copilot","cursor","developer-tools","documentation","docusaurus","jsdoc","llm","llms-txt","skill-md","typedoc","typedoc-plugin","typescript","vitepress"],"created_at":"2026-06-10T02:02:04.222Z","updated_at":"2026-06-10T02:02:06.826Z","avatar_url":"https://github.com/pradeepmouli.png","language":"TypeScript","funding_links":["https://github.com/sponsors/pradeepmouli"],"categories":[],"sub_categories":[],"readme":"# skillit\n\n\u003e **skillit** — Compile-time generator of AI agent skills from your codebase.\n\nInline docs, CLI definitions, config schemas, and examples compile into progressively disclosed [SKILL.md](https://agentskills.io) files that any LLM can discover. Integrated with TypeDoc, with support for conventional repo docs, and plugins for Docusaurus and VitePress provided for what code can't cover.\n\n## MCP Servers (orthogonal workflow)\n\n`skillit` can also generate skills from **any live MCP server**, even when the\nserver was not authored with `skillit`.\n\nThis is separate from the TypeDoc/docs extraction flow above: it introspects MCP\ntools/resources/prompts over stdio or HTTP and emits a progressive-disclosure\n`SKILL.md`. You can render:\n\n- native MCP launch instructions (`mcp:` frontmatter in `SKILL.md`, which tells\n  MCP-capable agents how to start/connect to the server), or\n- CLI-proxy launch instructions for non-MCP harnesses (such as mcpc/fastmcp).\n\n```bash\n# Inspect any running or launchable MCP server and generate skills\nnpx skillit mcp extract \\\n  --command \"npx -y @modelcontextprotocol/server-filesystem /tmp\" \\\n  --out ./skills\n\n# Optional: install non-default CLI invocation adapters\nnpm install --save-dev @skillit/target-mcpc @skillit/target-fastmcp\n\n# Emit CLI-proxy invocation variants for non-MCP agents\nnpx skillit mcp extract \\\n  --command \"npx -y @modelcontextprotocol/server-filesystem /tmp\" \\\n  --invocation cli:mcpc \\\n  --invocation cli:fastmcp \\\n  --out ./skills\n```\n\nFor server package authors, `skillit mcp bundle` can be run in your build to\nship pre-generated skills with your MCP package.\n\nSee [`packages/mcp/README.md`](packages/mcp/README.md) for install, extract,\nbundle, config-file batch mode (`mcp.json` / `claude_desktop_config.json`), and\nprogrammatic API details.\n\n### Bootstrap (recommended): `/skillit-bootstrap`\n\nThe primary way to create or improve a skill is the **`/skillit-bootstrap`**\nClaude Code skill (bundled with `@skillit/client`). It runs the deterministic\ngenerate → audit loop and lets the agent enrich your repo's source (JSDoc,\nREADME, examples, package.json) until the skill hits its grade target — you\nnever hand-edit a `SKILL.md`.\n\n```bash\n# Install the bundled skill into your project (one time)\ncp -R node_modules/@skillit/client/skills/skillit-bootstrap .claude/skills/\n\n# Then, in Claude Code:\n/skillit-bootstrap --source cli --program ./dist/cli.js#program\n/skillit-bootstrap --source typedoc\n```\n\nSupported sources this release: **cli** and **typedoc**. For `config` / `mcp`,\nuse `skillit refine` (below); slash-command support for those lands in a later\nphase. The CLI commands (`skillit gen`, `skillit audit --json`, `skillit\nrefine`) remain for headless/CI use.\n\n### Init: detect → install\n\n`skillit init` wires a project up. It detects the project's nature and installs\nthe matching `@skillit/*` package with your package manager, then points you at\n`skillit gen` to produce the skill. It does **not** generate or refine — those\nare separate, explicit commands (`skillit gen`, `skillit refine`).\n\n```bash\n# Auto-detects nature and package manager, installs the right @skillit package\nnpx skillit init\n\n# Force the source kind\nnpx skillit init --source mcp\n\n# Config source is built in (no install) — init just points at `skillit gen`\nnpx skillit init --source config --config-type ./src/config.ts#MyConfig\n```\n\nDetection:\n\n- **Nature** — `commander` / `yargs` dep → `cli`; `@modelcontextprotocol/sdk` →\n  `mcp`; otherwise a plain TS library → `typedoc`. Override with `--source`.\n- **Package** — `cli` → `@skillit/cli`, `mcp` → `@skillit/mcp`, `typedoc` →\n  `typedoc-plugin-skillit`. The `config` source is built into the CLI (no\n  install).\n- **Package manager** — `pnpm-lock.yaml` → pnpm, `yarn.lock` → yarn, else npm.\n\nIf the install step fails, `init` prints the exact add command and stops.\n\n| Flag                           | Default | Description                       |\n| ------------------------------ | ------- | --------------------------------- |\n| `--source \u003ccli\\|mcp\\|typedoc\u003e` | auto    | Override project-nature detection |\n| `--config-type \u003cfile#export\u003e`  | —       | Config type entry (config source) |\n\n### Gen: deterministic skill generation\n\n`skillit gen` (re)generates the skill from the current source — no install, no\nmodel, no network. It is the deterministic, side-effect-free generate primitive:\nthe same source always yields the same skill. Run it after `init`, and again\nwhenever you change the documented source (JSDoc, config type, README).\n\n```bash\n# Generate from the auto-detected source into skills/\nnpx skillit gen\n\n# CLI source with an explicit commander program entry\nnpx skillit gen --source cli --program ./dist/cli.js#program\n\n# Config source\nnpx skillit gen --source config --config-type ./src/config.ts#MyConfig\n\n# Generate into a custom directory (default: skills)\nnpx skillit gen --out docs/skills\n```\n\nThis release implements `gen` for the **cli** and **config** sources; `mcp` and\n`typedoc` generation land in a later phase (use `skillit mcp extract` for MCP\nservers meanwhile).\n\n| Flag                          | Default  | Description                              |\n| ----------------------------- | -------- | ---------------------------------------- |\n| `--source \u003ccli\\|config\u003e`      | auto     | Source kind (cli/config this release)    |\n| `--program \u003cfile#export\u003e`     | —        | Commander program entry (cli source)     |\n| `--config-type \u003cfile#export\u003e` | —        | Config type entry (config source)        |\n| `--out \u003cdir\u003e`                 | `skills` | Output directory for the generated skill |\n\n### Audit: score + findings as JSON\n\n`skillit audit` runs the same audit + judge the refine loop uses and prints the\nresult. With `--json` it emits the full `AuditResult` + score estimate, plus a\nresolved on-disk location for each improvement target — the machine-readable\nread-surface an agent (or CI) can act on without re-deriving anything.\n\n```bash\n# Human summary (grade + severity counts)\nnpx skillit audit --source cli\n\n# Full machine-readable report\nnpx skillit audit --source config --config-type ./src/config.ts#MyConfig --json\n```\n\nLike `gen`, `audit` supports the **cli** and **config** sources this release;\n`mcp` / `typedoc` land in a later phase.\n\n| Flag                          | Default | Description                            |\n| ----------------------------- | ------- | -------------------------------------- |\n| `--source \u003ccli\\|config\u003e`      | auto    | Source kind (cli/config this release)  |\n| `--program \u003cfile#export\u003e`     | —       | Commander program entry (cli source)   |\n| `--config-type \u003cfile#export\u003e` | —       | Config type entry (config source)      |\n| `--json`                      | off     | Emit the full audit + estimate as JSON |\n\n### Refine: autonomous annotation loop\n\n`skillit refine` runs an audit → draft → review loop that iteratively improves\nthe `useWhen` / `avoidWhen` annotations in your generated skills. On each pass it\nasks an LLM to evaluate the current guidance, proposes improvements, and applies\nthem — no manual editing required.\n\nRefine is **source-aware**. It auto-detects the source from the installed\n`@skillit/*` package, or you can choose explicitly:\n\n```bash\n# CLI source — writes guidance back into the *Options interface JSDoc\nnpx skillit refine --source cli --program ./dist/cli.js#program\n\n# MCP source (see modes below)\nnpx skillit refine --source mcp --mcp ./mcp.json\n```\n\nFor the **cli** source, refine writes annotations into the JSDoc of your typed\n`*Options` interface (e.g. `GenerateOptions`), correlated to each command's flags.\n\nTwo modes depending on whether you own the server's source:\n\n**Build mode** — for TypeScript MCP servers you own. `refine` writes annotations\ndirectly into source as `_meta` fields on each `server.tool(...)` call:\n\n```typescript\nserver.tool(\n  'read_file',\n  {\n    description: 'Read a file',\n    _meta: { useWhen: 'After listing a directory to inspect a specific file' }\n  },\n  schema,\n  handler\n);\n```\n\n```bash\n# Auto-detected when @modelcontextprotocol/sdk appears in package.json\nnpx skillit mcp refine\n\n# Explicit\nnpx skillit mcp refine --mode build\n```\n\n**Runtime mode** — for any MCP server, including ones you don't own. `refine`\nwrites an overlay JSON file that `extract` / `bundle` merges at render time:\n\n```bash\n# Auto-detected when --mcp points to mcp.json / claude_desktop_config.json\nnpx skillit mcp refine --mcp ~/.config/claude/mcp.json\n\n# Refine only a subset of tools\nnpx skillit mcp refine --mode runtime --mcp ./mcp.json --items filesystem,github\n```\n\n**Auto-detection** checks for an SDK dependency (build signal) and a runtime\nconfig path (runtime signal). When both are present the command is ambiguous —\npass `--mode` explicitly.\n\nKey flags:\n\n| Flag                           | Default   | Description                                                                       |\n| ------------------------------ | --------- | --------------------------------------------------------------------------------- |\n| `--source \u003ccli\\|mcp\\|typedoc\u003e` | auto      | Refine source (auto-detected from installed package)                              |\n| `--program \u003cfile#export\u003e`      | —         | Commander program entry (cli source)                                              |\n| `--mode build\\|runtime`        | auto      | Override auto-detection                                                           |\n| `--mcp \u003cpath\u003e`                 | —         | Path to `mcp.json` or `claude_desktop_config.json`                                |\n| `--source-glob \u003cglob\u003e`         | `**/*.ts` | Glob for TypeScript files to scan (build mode)                                    |\n| `--max-iterations \u003cn\u003e`         | `5`       | Iteration cap for the audit→draft→review loop                                     |\n| `--items \u003cn\u003e`                  | `5`       | Work items per iteration                                                          |\n| `--model-client \u003ckind\u003e`        | `api`     | Model backend: `api` (ANTHROPIC_API_KEY) or a CLI: `claude` / `codex` / `copilot` |\n| `--model-cli-timeout \u003cms\u003e`     | `120000`  | Per-call timeout for CLI model backends                                           |\n\n**CLI model backends.** Instead of the Anthropic API, `refine` (and `init`) can\ndrive the loop through an already-authenticated agent CLI — `--model-client claude`,\n`codex`, or `copilot`. The drafter/reviewer prompts are identical; only the\ntransport changes. `claude` maps the drafter/reviewer split to Sonnet/Opus via\n`--model`; `codex`/`copilot` use their configured default model. Each CLI must be\ninstalled and authenticated. Note: `copilot` prioritizes a `GH_TOKEN`/`GITHUB_TOKEN`\nenvironment variable over its `/login` credential — if that token lacks the\n\"Copilot Requests\" permission, unset it so copilot uses your login. On Windows the\nCLIs are launched through the shell to support `.cmd` shims; the prompt is always\npiped via stdin (never passed as a command argument), so untrusted content never\nreaches the command line.\n\n## Why Inline?\n\nWhen an agent updates your code, inline docs update atomically. There's no separate file to remember, no coordination problem, no drift. The agent edits ONE location and the truth propagates mechanically.\n\n```typescript\n/**\n * Parse a configuration file.\n *\n * @useWhen\n * - Loading config from user-provided paths\n * - Dynamic config resolution at startup\n *\n * @pitfalls\n * - NEVER trust user paths without sanitization — resolves relative to cwd\n *\n * @param path Path to the config file\n * @returns Parsed and validated configuration\n */\nexport function loadConfig(path: string): Config { ... }\n```\n\n`pnpm typedoc` → the generated skill tells every LLM _when_ to use this function, _what_ to watch out for, and _how_ to call it.\n\n## Quick Start by Project Type\n\n### TypeScript Library (most common)\n\n```bash\npnpm add -D typedoc-plugin-skillit\npnpm typedoc\n```\n\nThat's it. TypeDoc auto-discovers the plugin. Skills appear at `skills/\u003cpackage-name\u003e/SKILL.md`.\n\n### Monorepo\n\n```json\n// typedoc.json\n{\n  \"entryPointStrategy\": \"packages\",\n  \"entryPoints\": [\"packages/*\"],\n  \"plugin\": [\"typedoc-plugin-skillit\"],\n  \"skillsPerPackage\": true\n}\n```\n\nOne skill per package — each with its own SKILL.md, references, and config surfaces.\n\n### CLI Tool (commander/yargs)\n\n```typescript\nimport { extractCliSkill, writeCliSkill } from '@skillit/cli';\n\nconst skill = await extractCliSkill({\n  program, // commander Program object\n  metadata: { name: 'my-tool', keywords: ['build', 'deploy'] }\n});\n\nwriteCliSkill(skill, {\n  outDir: 'skills',\n  installTargets: ['.claude/skills']\n});\n```\n\nIntrospects command definitions, correlates flags with typed `*Options` interfaces for JSDoc enrichment, surfaces CLI audit findings on `skill.audit`, and can install the generated skill plus bundled CLI guidance into agent discovery roots.\n\n### Library with Docs Site (VitePress)\n\n```typescript\n// .vitepress/config.mts\nimport { defineConfig } from 'vitepress';\nimport { toSkills } from '@skillit/vitepress';\n\nexport default defineConfig({\n  vite: {\n    plugins: [toSkills({ skillsOutDir: 'skills' })]\n  },\n  themeConfig: { sidebar: [...] }\n});\n```\n\nThe VitePress plugin uses your sidebar for authoritative page ordering — no frontmatter heuristics.\n\n### Library with Docs Site (Docusaurus)\n\n```typescript\nimport { extractDocusaurusDocs } from '@skillit/docusaurus';\n\nconst docs = extractDocusaurusDocs({ projectRoot: '.' });\n// Returns ExtractedDocument[] — merge into your skill\n```\n\nReads `_category_.json` for folder labels and ordering. Excludes `api/` and `blog/` by default.\n\n### Library with Prose Docs (any framework)\n\n```json\n// typedoc.json — opt-in alongside API extraction\n{\n  \"plugin\": [\"typedoc-plugin-skillit\"],\n  \"skillsIncludeDocs\": true,\n  \"skillsDocsDir\": \"docs\"\n}\n```\n\nScans `docs/` directory for markdown files. Also picks up root-level docs (ARCHITECTURE.md, MIGRATION.md, TROUBLESHOOTING.md).\n\n## What Gets Extracted\n\n### Sources\n\n| Source                         | Extractor                                      | What It Produces                                                        |\n| ------------------------------ | ---------------------------------------------- | ----------------------------------------------------------------------- |\n| TypeScript source + JSDoc      | `typedoc-plugin-skillit`                       | API reference — functions, classes, types, enums, variables             |\n| `@useWhen` / `@avoidWhen` tags | TypeDoc plugin                                 | Decision procedures in SKILL.md \"When to Use\"                           |\n| `@pitfalls` tag                | TypeDoc plugin                                 | Anti-patterns in SKILL.md \"Pitfalls\"                                    |\n| `@remarks` tag                 | TypeDoc plugin                                 | Expert knowledge in references                                          |\n| `@category` tag                | TypeDoc plugin                                 | Export grouping in Quick Reference + references                         |\n| `@config` interfaces           | TypeDoc plugin                                 | Configuration tables in SKILL.md + references/config.md                 |\n| Commander/yargs programs       | `@skillit/cli`                                 | CLI commands + flags in references/commands.md                          |\n| `examples/` directory          | `@skillit/core`                                | Linked to matching exports by import analysis                           |\n| `docs/` directory              | `@skillit/core` or VitePress/Docusaurus plugin | Prose docs as reference files                                           |\n| Root `.md` files               | `@skillit/core`                                | ARCHITECTURE.md, MIGRATION.md, etc. as references                       |\n| README.md                      | `@skillit/core`                                | Blockquote description, ## Features, ## Quick Start, ## Troubleshooting |\n| package.json                   | TypeDoc plugin                                 | Name, description, keywords, repository, license                        |\n\n### Audit Checks\n\nThe documentation audit runs automatically during `pnpm typedoc` and reports issues at four severity levels:\n\n| Severity    | What It Checks                                                                                                                          | CI Behavior           |\n| ----------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |\n| **fatal**   | package.json description, 5+ keywords, README description, JSDoc on every export                                                        | Exit 1 (configurable) |\n| **error**   | @param prose, @returns on non-void, interface property JSDoc, at least one @example, repository URL                                     | Exit 1 (configurable) |\n| **warning** | @useWhen, @avoidWhen, @pitfalls presence, @remarks on complex functions, @category usage, README ## Features, README ## Troubleshooting | Exit 0 (logged)       |\n| **alert**   | Generic keywords, @param restates type, trivial @example, verbose Quick Start                                                           | Exit 0 (logged)       |\n\nEnable CI enforcement: `\"skillsAuditFailOnError\": true`\n\n### Generated Output\n\n```\nskills/\u003cpackage-name\u003e/\n  SKILL.md                     # Discovery file (~200 tokens)\n  references/\n    functions.md               # Grouped by @category or source module\n    types.md                   # Interfaces with properties, type aliases\n    classes.md                 # With inheritance, methods, properties\n    config.md                  # @config interfaces as option tables\n    commands.md                # CLI commands with flags (from @skillit/cli)\n    variables.md               # Exported constants\n    examples.md                # From @example tags\n    architecture.md            # From root ARCHITECTURE.md\n    getting-started.md         # From docs/ pages\n    ...                        # One file per doc page\n```\n\nEach reference file is token-budgeted independently (default 4000 tokens).\n\n## Packages\n\n| Package                                                        | Description                                                            |\n| -------------------------------------------------------------- | ---------------------------------------------------------------------- |\n| [`typedoc-plugin-skillit`](packages/typedoc-plugin)            | Auto-discovery wrapper — just install, no config                       |\n| [`@skillit/core`](packages/core)                               | Types, renderer, audit engine, token budgeting, docs/examples scanning |\n| [`@skillit/typedoc`](packages/typedoc)                         | TypeDoc plugin — API + config extraction from the reflection tree      |\n| [`@skillit/cli`](packages/cli)                                 | Commander/yargs introspection + `--help` fallback + flag correlation   |\n| [`@skillit/vitepress`](packages/vitepress)                     | VitePress Vite plugin — sidebar-driven docs extraction                 |\n| [`@skillit/docusaurus`](packages/docusaurus)                   | Docusaurus adapter — `_category_.json` + docs scanning                 |\n| [`@skillit/mcp`](packages/mcp)                                 | MCP extractor/bundler — introspect live servers and emit SKILL.md      |\n| [`@skillit/target-mcp-protocol`](packages/target-mcp-protocol) | MCP-native invocation target adapter for rendered skills               |\n| [`@skillit/target-mcpc`](packages/target-mcpc)                 | CLI-proxy invocation adapter via `mcpc`                                |\n| [`@skillit/target-fastmcp`](packages/target-fastmcp)           | CLI-proxy invocation adapter via Python `fastmcp` CLI                  |\n\n## Configuration\n\n```json\n{\n  \"plugin\": [\"typedoc-plugin-skillit\"],\n  \"skillsOutDir\": \"skills\",\n  \"skillsPerPackage\": true,\n  \"skillsAudit\": true,\n  \"blockTags\": [\"@useWhen\", \"@avoidWhen\", \"@pitfalls\", \"@config\"]\n}\n```\n\n| Option                   | Default    | Description                                     |\n| ------------------------ | ---------- | ----------------------------------------------- |\n| `skillsOutDir`           | `\"skills\"` | Output directory for SKILL.md files             |\n| `skillsInstallTargets`   | `[]`       | Additional agent discovery directories to sync  |\n| `skillsPerPackage`       | `true`     | One skill per package in monorepos              |\n| `skillsMaxTokens`        | `4000`     | Max token budget per reference file             |\n| `skillsAudit`            | `true`     | Run documentation audit during generation       |\n| `skillsAuditFailOnError` | `false`    | Fail build on fatal/error audit issues (for CI) |\n| `skillsIncludeDocs`      | `false`    | Include prose docs from `docs/` directory       |\n| `llmsTxt`                | `false`    | Generate llms.txt and llms-full.txt             |\n\nSee the [full options reference](packages/typedoc/src/plugin.ts) for all 14 options.\n\n## Examples\n\nSee the [`examples/`](examples/) directory for runnable scripts:\n\n- **[basic-skill-generation.ts](examples/basic-skill-generation.ts)** — generate a SKILL.md from an ExtractedSkill object\n- **[audit-and-fix.ts](examples/audit-and-fix.ts)** — run the documentation audit and print results\n- **[cli-extraction.ts](examples/cli-extraction.ts)** — extract skills from a commander program\n- **[docs-scanning.ts](examples/docs-scanning.ts)** — include prose docs alongside API skills\n\n## Case Study: PixiJS (47K stars)\n\nWe forked [PixiJS](https://github.com/pixijs/pixijs) and bootstrapped skillit to measure the before/after impact on generated skill quality, scored against the [skill-judge](https://github.com/anthropics/skill-judge) rubric (120 points, 8 dimensions).\n\n### Results\n\n| Phase                       | Score   | Grade | What Changed                                                 | Agent Cost  |\n| --------------------------- | ------- | ----- | ------------------------------------------------------------ | ----------- |\n| **Install + generate**      | 84/120  | B-    | `npm install typedoc-plugin-skillit \u0026\u0026 pnpm typedoc`         | 0 tokens    |\n| **After JSDoc conventions** | 113/120 | A     | `@useWhen`/`@pitfalls` on 7 key classes (110 lines of JSDoc) | ~80K tokens |\n\n**B- → A with 110 lines of JSDoc annotations.** The generator handles structure, progressive disclosure, config detection, and reference splitting automatically. The annotations add the expert knowledge — when to use each class, what to never do, and why.\n\n### What the agent wrote (110 lines, ~80K tokens)\n\n```typescript\n// src/scene/sprite/Sprite.ts — added to existing JSDoc\n/**\n * @useWhen\n * - Displaying images, texture regions, or sprite sheets\n * - You need fast batched rendering of many images\n * @avoidWhen\n * - Drawing dynamic shapes — use Graphics instead\n * - Rendering text — use Text or BitmapText\n * @pitfalls\n * - NEVER create Sprites from unloaded textures — always Assets.load() first\n * - NEVER use Sprite.from() in hot loops — it creates new textures each call\n */\n```\n\nSimilar annotations on Application, Container, Graphics, Text, Assets, and AbstractRenderer. The `@packageDocumentation` block added 6 NEVER rules covering v8 migration pitfalls.\n\n### Generated output (224 reference files)\n\n```\nskills/pixi-js/\n  SKILL.md (343 lines)\n  references/\n    classes/\n      scene/                    # Per-class files + index.md\n        container.md, sprite.md, graphics.md, ...\n      rendering/                # 80+ renderer system classes\n        abstractrenderer.md, webglrenderer.md, ...\n      text/, assets/, events/, filters/, maths/, ...\n    functions.md, types.md, config.md, variables.md\n    architecture.md, scene-graph.md, render-loop.md\n    performance-tips.md, garbage-collection.md\n    v5-migration-guide.md ... v8-migration-guide.md\n```\n\nFork: [pradeepmouli/pixijs](https://github.com/pradeepmouli/pixijs/tree/dev/skills/pixi-js)\n\n## Ecosystem\n\n- **[agentskills.io](https://agentskills.io)** — the SKILL.md specification\n- **[skills.sh](https://skills.sh)** — skill registry and CLI (`npx skills add`)\n- **[llmstxt.org](https://llmstxt.org)** — the llms.txt specification\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpradeepmouli%2Fskillit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpradeepmouli%2Fskillit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpradeepmouli%2Fskillit/lists"}