{"owner":"yangshun","repo":"tech-interview-handbook","hasSkills":true,"totalSkillsCount":6,"totalTokensCount":1620,"categories":["anthropic-skill","root-instruction"],"hasMcp":false,"mcpConfig":null,"found":["packages/tsconfig/nextjs.json","packages/tsconfig/package.json","packages/tsconfig/base.json","packages/tsconfig/react-library.json","packages/tailwind-config/package.json","AGENTS.md"],"skills":{"packages/tsconfig/nextjs.json":"{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Next.js\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"declaration\": false,\n    \"declarationMap\": false,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"incremental\": true,\n    \"jsx\": \"preserve\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"module\": \"esnext\",\n    \"noEmit\": true,\n    \"resolveJsonModule\": true,\n    \"target\": \"es5\",\n    \"strict\": true\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \"**/*.cjs\", \"**/*.mjs\"]\n}\n","packages/tsconfig/package.json":"{\n  \"name\": \"@tih/tsconfig\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n","packages/tsconfig/base.json":"{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Default\",\n  \"compilerOptions\": {\n    \"composite\": false,\n    \"declaration\": true,\n    \"declarationMap\": true,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"inlineSources\": false,\n    \"isolatedModules\": true,\n    \"moduleResolution\": \"node\",\n    \"noUnusedLocals\": false,\n    \"noUnusedParameters\": false,\n    \"preserveWatchOutput\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true\n  },\n  \"exclude\": [\"node_modules\"]\n}\n","packages/tsconfig/react-library.json":"{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"React Library\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"jsx\": \"react-jsx\",\n    \"lib\": [\"ES2015\"],\n    \"module\": \"ESNext\",\n    \"target\": \"es6\",\n    \"noEmit\": true\n  }\n}\n","packages/tailwind-config/package.json":"{\n  \"name\": \"@tih/tailwind-config\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"main\": \"index.js\",\n  \"devDependencies\": {\n    \"@tailwindcss/aspect-ratio\": \"^0.4.2\",\n    \"@tailwindcss/forms\": \"^0.5.3\",\n    \"@tailwindcss/line-clamp\": \"^0.4.2\",\n    \"@tailwindcss/typography\": \"^0.5.7\",\n    \"tailwind-scrollbar-hide\": \"^1.1.7\",\n    \"tailwindcss\": \"^3.1.8\"\n  }\n}\n","AGENTS.md":"<!--VITE PLUS START-->\n\n# Using Vite+, the Unified Toolchain for the Web\n\nThis project is using Vite+, a unified toolchain built on top of Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task. Vite+ wraps runtime management, package management, and frontend tooling in a single global CLI called `vp`. Vite+ is distinct from Vite, but it invokes Vite through `vp dev` and `vp build`.\n\n## Vite+ Workflow\n\n`vp` is a global binary that handles the full development lifecycle. Run `vp help` to print a list of commands and `vp <command> --help` for information about a specific command.\n\n### Start\n\n- create - Create a new project from a template\n- migrate - Migrate an existing project to Vite+\n- config - Configure hooks and agent integration\n- staged - Run linters on staged files\n- install (`i`) - Install dependencies\n- env - Manage Node.js versions\n\n### Develop\n\n- dev - Run the development server\n- check - Run format, lint, and TypeScript type checks\n- lint - Lint code\n- fmt - Format code\n- test - Run tests\n\n### Execute\n\n- run - Run monorepo tasks\n- exec - Execute a command from local `node_modules/.bin`\n- dlx - Execute a package binary without installing it as a dependency\n- cache - Manage the task cache\n\n### Build\n\n- build - Build for production\n- pack - Build libraries\n- preview - Preview production build\n\n### Manage Dependencies\n\nVite+ automatically detects and wraps the underlying package manager such as pnpm, npm, or Yarn through the `packageManager` field in `package.json` or package manager-specific lockfiles.\n\n- add - Add packages to dependencies\n- remove (`rm`, `un`, `uninstall`) - Remove packages from dependencies\n- update (`up`) - Update packages to latest versions\n- dedupe - Deduplicate dependencies\n- outdated - Check for outdated packages\n- list (`ls`) - List installed packages\n- why (`explain`) - Show why a package is installed\n- info (`view`, `show`) - View package information from the registry\n- link (`ln`) / unlink - Manage local package links\n- pm - Forward a command to the package manager\n\n### Maintain\n\n- upgrade - Update `vp` itself to the latest version\n\nThese commands map to their corresponding tools. For example, `vp dev --port 3000` runs Vite's dev server and works the same as Vite. `vp test` runs JavaScript tests through the bundled Vitest. The version of all tools can be checked using `vp --version`. This is useful when researching documentation, features, and bugs.\n\n## Common Pitfalls\n\n- **Using the package manager directly:** Do not use pnpm, npm, or Yarn directly. Vite+ can handle all package manager operations.\n- **Always use Vite commands to run tools:** Don't attempt to run `vp vitest` or `vp oxlint`. They do not exist. Use `vp test` and `vp lint` instead.\n- **Running scripts:** Vite+ built-in commands (`vp dev`, `vp build`, `vp test`, etc.) always run the Vite+ built-in tool, not any `package.json` script of the same name. To run a custom script that shares a name with a built-in command, use `vp run <script>`. For example, if you have a custom `dev` script that runs multiple services concurrently, run it with `vp run dev`, not `vp dev` (which always starts Vite's dev server).\n- **Do not install Vitest, Oxlint, Oxfmt, or tsdown directly:** Vite+ wraps these tools. They must not be installed directly. You cannot upgrade these tools by installing their latest versions. Always use Vite+ commands.\n- **Use Vite+ wrappers for one-off binaries:** Use `vp dlx` instead of package-manager-specific `dlx`/`npx` commands.\n- **Import JavaScript modules from `vite-plus`:** Instead of importing from `vite` or `vitest`, all modules should be imported from the project's `vite-plus` dependency. For example, `import { defineConfig } from 'vite-plus';` or `import { expect, test, vi } from 'vite-plus/test';`. You must not install `vitest` to import test utilities.\n- **Type-Aware Linting:** There is no need to install `oxlint-tsgolint`, `vp lint --type-aware` works out of the box.\n\n## Review Checklist for Agents\n\n- [ ] Run `vp install` after pulling remote changes and before getting started.\n- [ ] Run `vp check` and `vp test` to validate changes.\n<!--VITE PLUS END-->\n"},"files":{"packages/tsconfig/nextjs.json":"{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Next.js\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"declaration\": false,\n    \"declarationMap\": false,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"incremental\": true,\n    \"jsx\": \"preserve\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"module\": \"esnext\",\n    \"noEmit\": true,\n    \"resolveJsonModule\": true,\n    \"target\": \"es5\",\n    \"strict\": true\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \"**/*.cjs\", \"**/*.mjs\"]\n}\n","packages/tsconfig/package.json":"{\n  \"name\": \"@tih/tsconfig\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n","packages/tsconfig/base.json":"{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Default\",\n  \"compilerOptions\": {\n    \"composite\": false,\n    \"declaration\": true,\n    \"declarationMap\": true,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"inlineSources\": false,\n    \"isolatedModules\": true,\n    \"moduleResolution\": \"node\",\n    \"noUnusedLocals\": false,\n    \"noUnusedParameters\": false,\n    \"preserveWatchOutput\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true\n  },\n  \"exclude\": [\"node_modules\"]\n}\n","packages/tsconfig/react-library.json":"{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"React Library\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"jsx\": \"react-jsx\",\n    \"lib\": [\"ES2015\"],\n    \"module\": \"ESNext\",\n    \"target\": \"es6\",\n    \"noEmit\": true\n  }\n}\n","packages/tailwind-config/package.json":"{\n  \"name\": \"@tih/tailwind-config\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"main\": \"index.js\",\n  \"devDependencies\": {\n    \"@tailwindcss/aspect-ratio\": \"^0.4.2\",\n    \"@tailwindcss/forms\": \"^0.5.3\",\n    \"@tailwindcss/line-clamp\": \"^0.4.2\",\n    \"@tailwindcss/typography\": \"^0.5.7\",\n    \"tailwind-scrollbar-hide\": \"^1.1.7\",\n    \"tailwindcss\": \"^3.1.8\"\n  }\n}\n","AGENTS.md":"<!--VITE PLUS START-->\n\n# Using Vite+, the Unified Toolchain for the Web\n\nThis project is using Vite+, a unified toolchain built on top of Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task. Vite+ wraps runtime management, package management, and frontend tooling in a single global CLI called `vp`. Vite+ is distinct from Vite, but it invokes Vite through `vp dev` and `vp build`.\n\n## Vite+ Workflow\n\n`vp` is a global binary that handles the full development lifecycle. Run `vp help` to print a list of commands and `vp <command> --help` for information about a specific command.\n\n### Start\n\n- create - Create a new project from a template\n- migrate - Migrate an existing project to Vite+\n- config - Configure hooks and agent integration\n- staged - Run linters on staged files\n- install (`i`) - Install dependencies\n- env - Manage Node.js versions\n\n### Develop\n\n- dev - Run the development server\n- check - Run format, lint, and TypeScript type checks\n- lint - Lint code\n- fmt - Format code\n- test - Run tests\n\n### Execute\n\n- run - Run monorepo tasks\n- exec - Execute a command from local `node_modules/.bin`\n- dlx - Execute a package binary without installing it as a dependency\n- cache - Manage the task cache\n\n### Build\n\n- build - Build for production\n- pack - Build libraries\n- preview - Preview production build\n\n### Manage Dependencies\n\nVite+ automatically detects and wraps the underlying package manager such as pnpm, npm, or Yarn through the `packageManager` field in `package.json` or package manager-specific lockfiles.\n\n- add - Add packages to dependencies\n- remove (`rm`, `un`, `uninstall`) - Remove packages from dependencies\n- update (`up`) - Update packages to latest versions\n- dedupe - Deduplicate dependencies\n- outdated - Check for outdated packages\n- list (`ls`) - List installed packages\n- why (`explain`) - Show why a package is installed\n- info (`view`, `show`) - View package information from the registry\n- link (`ln`) / unlink - Manage local package links\n- pm - Forward a command to the package manager\n\n### Maintain\n\n- upgrade - Update `vp` itself to the latest version\n\nThese commands map to their corresponding tools. For example, `vp dev --port 3000` runs Vite's dev server and works the same as Vite. `vp test` runs JavaScript tests through the bundled Vitest. The version of all tools can be checked using `vp --version`. This is useful when researching documentation, features, and bugs.\n\n## Common Pitfalls\n\n- **Using the package manager directly:** Do not use pnpm, npm, or Yarn directly. Vite+ can handle all package manager operations.\n- **Always use Vite commands to run tools:** Don't attempt to run `vp vitest` or `vp oxlint`. They do not exist. Use `vp test` and `vp lint` instead.\n- **Running scripts:** Vite+ built-in commands (`vp dev`, `vp build`, `vp test`, etc.) always run the Vite+ built-in tool, not any `package.json` script of the same name. To run a custom script that shares a name with a built-in command, use `vp run <script>`. For example, if you have a custom `dev` script that runs multiple services concurrently, run it with `vp run dev`, not `vp dev` (which always starts Vite's dev server).\n- **Do not install Vitest, Oxlint, Oxfmt, or tsdown directly:** Vite+ wraps these tools. They must not be installed directly. You cannot upgrade these tools by installing their latest versions. Always use Vite+ commands.\n- **Use Vite+ wrappers for one-off binaries:** Use `vp dlx` instead of package-manager-specific `dlx`/`npx` commands.\n- **Import JavaScript modules from `vite-plus`:** Instead of importing from `vite` or `vitest`, all modules should be imported from the project's `vite-plus` dependency. For example, `import { defineConfig } from 'vite-plus';` or `import { expect, test, vi } from 'vite-plus/test';`. You must not install `vitest` to import test utilities.\n- **Type-Aware Linting:** There is no need to install `oxlint-tsgolint`, `vp lint --type-aware` works out of the box.\n\n## Review Checklist for Agents\n\n- [ ] Run `vp install` after pulling remote changes and before getting started.\n- [ ] Run `vp check` and `vp test` to validate changes.\n<!--VITE PLUS END-->\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/yangshun/tech-interview-handbook/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"<!--VITE PLUS START-->\n\n# Using Vite+, the Unified Toolchain for the Web\n\nThis project is using Vite+, a unified toolchain built on top of Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task. Vite+ wraps runtime management, package management, and frontend tooling in a single global CLI called `vp`. Vite+ is distinct from Vite, but it invokes Vite through `vp dev` and `vp build`.\n\n## Vite+ Workflow\n\n`vp` is a global binary that handles the full development lifecycle. Run `vp help` to print a list of commands and `vp <command> --help` for information about a specific command.\n\n### Start\n\n- create - Create a new project from a template\n- migrate - Migrate an existing project to Vite+\n- config - Configure hooks and agent integration\n- staged - Run linters on staged files\n- install (`i`) - Install dependencies\n- env - Manage Node.js versions\n\n### Develop\n\n- dev - Run the development server\n- check - Run format, lint, and TypeScript type checks\n- lint - Lint code\n- fmt - Format code\n- test - Run tests\n\n### Execute\n\n- run - Run monorepo tasks\n- exec - Execute a command from local `node_modules/.bin`\n- dlx - Execute a package binary without installing it as a dependency\n- cache - Manage the task cache\n\n### Build\n\n- build - Build for production\n- pack - Build libraries\n- preview - Preview production build\n\n### Manage Dependencies\n\nVite+ automatically detects and wraps the underlying package manager such as pnpm, npm, or Yarn through the `packageManager` field in `package.json` or package manager-specific lockfiles.\n\n- add - Add packages to dependencies\n- remove (`rm`, `un`, `uninstall`) - Remove packages from dependencies\n- update (`up`) - Update packages to latest versions\n- dedupe - Deduplicate dependencies\n- outdated - Check for outdated packages\n- list (`ls`) - List installed packages\n- why (`explain`) - Show why a package is installed\n- info (`view`, `show`) - View package information from the registry\n- link (`ln`) / unlink - Manage local package links\n- pm - Forward a command to the package manager\n\n### Maintain\n\n- upgrade - Update `vp` itself to the latest version\n\nThese commands map to their corresponding tools. For example, `vp dev --port 3000` runs Vite's dev server and works the same as Vite. `vp test` runs JavaScript tests through the bundled Vitest. The version of all tools can be checked using `vp --version`. This is useful when researching documentation, features, and bugs.\n\n## Common Pitfalls\n\n- **Using the package manager directly:** Do not use pnpm, npm, or Yarn directly. Vite+ can handle all package manager operations.\n- **Always use Vite commands to run tools:** Don't attempt to run `vp vitest` or `vp oxlint`. They do not exist. Use `vp test` and `vp lint` instead.\n- **Running scripts:** Vite+ built-in commands (`vp dev`, `vp build`, `vp test`, etc.) always run the Vite+ built-in tool, not any `package.json` script of the same name. To run a custom script that shares a name with a built-in command, use `vp run <script>`. For example, if you have a custom `dev` script that runs multiple services concurrently, run it with `vp run dev`, not `vp dev` (which always starts Vite's dev server).\n- **Do not install Vitest, Oxlint, Oxfmt, or tsdown directly:** Vite+ wraps these tools. They must not be installed directly. You cannot upgrade these tools by installing their latest versions. Always use Vite+ commands.\n- **Use Vite+ wrappers for one-off binaries:** Use `vp dlx` instead of package-manager-specific `dlx`/`npx` commands.\n- **Import JavaScript modules from `vite-plus`:** Instead of importing from `vite` or `vitest`, all modules should be imported from the project's `vite-plus` dependency. For example, `import { defineConfig } from 'vite-plus';` or `import { expect, test, vi } from 'vite-plus/test';`. You must not install `vitest` to import test utilities.\n- **Type-Aware Linting:** There is no need to install `oxlint-tsgolint`, `vp lint --type-aware` works out of the box.\n\n## Review Checklist for Agents\n\n- [ ] Run `vp install` after pulling remote changes and before getting started.\n- [ ] Run `vp check` and `vp test` to validate changes.\n<!--VITE PLUS END-->\n","isInternal":false,"tokens":1027,"sizeBytes":4153},{"name":"package.json","path":"packages/tailwind-config/package.json","rawUrl":"https://raw.githubusercontent.com/yangshun/tech-interview-handbook/HEAD/packages/tailwind-config/package.json","title":"@tih/tailwind-config","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"@tih/tailwind-config\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"main\": \"index.js\",\n  \"devDependencies\": {\n    \"@tailwindcss/aspect-ratio\": \"^0.4.2\",\n    \"@tailwindcss/forms\": \"^0.5.3\",\n    \"@tailwindcss/line-clamp\": \"^0.4.2\",\n    \"@tailwindcss/typography\": \"^0.5.7\",\n    \"tailwind-scrollbar-hide\": \"^1.1.7\",\n    \"tailwindcss\": \"^3.1.8\"\n  }\n}\n","frontmatter":{"name":"@tih/tailwind-config","version":"0.0.0","private":true,"main":"index.js","devDependencies":{"@tailwindcss/aspect-ratio":"^0.4.2","@tailwindcss/forms":"^0.5.3","@tailwindcss/line-clamp":"^0.4.2","@tailwindcss/typography":"^0.5.7","tailwind-scrollbar-hide":"^1.1.7","tailwindcss":"^3.1.8"}},"isInternal":false,"tokens":138,"sizeBytes":358},{"name":"base.json","path":"packages/tsconfig/base.json","rawUrl":"https://raw.githubusercontent.com/yangshun/tech-interview-handbook/HEAD/packages/tsconfig/base.json","title":"Tsconfig Skill","category":"anthropic-skill","format":"json","content":"{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Default\",\n  \"compilerOptions\": {\n    \"composite\": false,\n    \"declaration\": true,\n    \"declarationMap\": true,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"inlineSources\": false,\n    \"isolatedModules\": true,\n    \"moduleResolution\": \"node\",\n    \"noUnusedLocals\": false,\n    \"noUnusedParameters\": false,\n    \"preserveWatchOutput\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true\n  },\n  \"exclude\": [\"node_modules\"]\n}\n","frontmatter":{"$schema":"https://json.schemastore.org/tsconfig","display":"Default","compilerOptions":{"composite":false,"declaration":true,"declarationMap":true,"esModuleInterop":true,"forceConsistentCasingInFileNames":true,"inlineSources":false,"isolatedModules":true,"moduleResolution":"node","noUnusedLocals":false,"noUnusedParameters":false,"preserveWatchOutput":true,"skipLibCheck":true,"strict":true},"exclude":["node_modules"]},"isInternal":false,"tokens":142,"sizeBytes":521},{"name":"nextjs.json","path":"packages/tsconfig/nextjs.json","rawUrl":"https://raw.githubusercontent.com/yangshun/tech-interview-handbook/HEAD/packages/tsconfig/nextjs.json","title":"Tsconfig Skill","category":"anthropic-skill","format":"json","content":"{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Next.js\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"declaration\": false,\n    \"declarationMap\": false,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"incremental\": true,\n    \"jsx\": \"preserve\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"module\": \"esnext\",\n    \"noEmit\": true,\n    \"resolveJsonModule\": true,\n    \"target\": \"es5\",\n    \"strict\": true\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \"**/*.cjs\", \"**/*.mjs\"]\n}\n","frontmatter":{"$schema":"https://json.schemastore.org/tsconfig","display":"Next.js","extends":"./base.json","compilerOptions":{"allowJs":true,"declaration":false,"declarationMap":false,"esModuleInterop":true,"forceConsistentCasingInFileNames":true,"incremental":true,"jsx":"preserve","lib":["dom","dom.iterable","esnext"],"module":"esnext","noEmit":true,"resolveJsonModule":true,"target":"es5","strict":true},"include":["next-env.d.ts","**/*.ts","**/*.tsx","**/*.cjs","**/*.mjs"]},"isInternal":false,"tokens":178,"sizeBytes":576},{"name":"package.json","path":"packages/tsconfig/package.json","rawUrl":"https://raw.githubusercontent.com/yangshun/tech-interview-handbook/HEAD/packages/tsconfig/package.json","title":"@tih/tsconfig","category":"anthropic-skill","format":"json","content":"{\n  \"name\": \"@tih/tsconfig\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n","frontmatter":{"name":"@tih/tsconfig","version":"0.0.0","private":true,"license":"MIT","publishConfig":{"access":"public"}},"isInternal":false,"tokens":51,"sizeBytes":140},{"name":"react-library.json","path":"packages/tsconfig/react-library.json","rawUrl":"https://raw.githubusercontent.com/yangshun/tech-interview-handbook/HEAD/packages/tsconfig/react-library.json","title":"Tsconfig Skill","category":"anthropic-skill","format":"json","content":"{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"React Library\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"jsx\": \"react-jsx\",\n    \"lib\": [\"ES2015\"],\n    \"module\": \"ESNext\",\n    \"target\": \"es6\",\n    \"noEmit\": true\n  }\n}\n","frontmatter":{"$schema":"https://json.schemastore.org/tsconfig","display":"React Library","extends":"./base.json","compilerOptions":{"jsx":"react-jsx","lib":["ES2015"],"module":"ESNext","target":"es6","noEmit":true}},"isInternal":false,"tokens":84,"sizeBytes":254}],"systemPromptSnippet":"<yakaai_skills repo=\"yangshun/tech-interview-handbook\">\n<!-- File: AGENTS.md (Tokens: ~1027 | Category: root-instruction) -->\n<!--VITE PLUS START-->\n\n# Using Vite+, the Unified Toolchain for the Web\n\nThis project is using Vite+, a unified toolchain built on top of Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task. Vite+ wraps runtime management, package management, and frontend tooling in a single global CLI called `vp`. Vite+ is distinct from Vite, but it invokes Vite through `vp dev` and `vp build`.\n\n## Vite+ Workflow\n\n`vp` is a global binary that handles the full development lifecycle. Run `vp help` to print a list of commands and `vp <command> --help` for information about a specific command.\n\n### Start\n\n- create - Create a new project from a template\n- migrate - Migrate an existing project to Vite+\n- config - Configure hooks and agent integration\n- staged - Run linters on staged files\n- install (`i`) - Install dependencies\n- env - Manage Node.js versions\n\n### Develop\n\n- dev - Run the development server\n- check - Run format, lint, and TypeScript type checks\n- lint - Lint code\n- fmt - Format code\n- test - Run tests\n\n### Execute\n\n- run - Run monorepo tasks\n- exec - Execute a command from local `node_modules/.bin`\n- dlx - Execute a package binary without installing it as a dependency\n- cache - Manage the task cache\n\n### Build\n\n- build - Build for production\n- pack - Build libraries\n- preview - Preview production build\n\n### Manage Dependencies\n\nVite+ automatically detects and wraps the underlying package manager such as pnpm, npm, or Yarn through the `packageManager` field in `package.json` or package manager-specific lockfiles.\n\n- add - Add packages to dependencies\n- remove (`rm`, `un`, `uninstall`) - Remove packages from dependencies\n- update (`up`) - Update packages to latest versions\n- dedupe - Deduplicate dependencies\n- outdated - Check for outdated packages\n- list (`ls`) - List installed packages\n- why (`explain`) - Show why a package is installed\n- info (`view`, `show`) - View package information from the registry\n- link (`ln`) / unlink - Manage local package links\n- pm - Forward a command to the package manager\n\n### Maintain\n\n- upgrade - Update `vp` itself to the latest version\n\nThese commands map to their corresponding tools. For example, `vp dev --port 3000` runs Vite's dev server and works the same as Vite. `vp test` runs JavaScript tests through the bundled Vitest. The version of all tools can be checked using `vp --version`. This is useful when researching documentation, features, and bugs.\n\n## Common Pitfalls\n\n- **Using the package manager directly:** Do not use pnpm, npm, or Yarn directly. Vite+ can handle all package manager operations.\n- **Always use Vite commands to run tools:** Don't attempt to run `vp vitest` or `vp oxlint`. They do not exist. Use `vp test` and `vp lint` instead.\n- **Running scripts:** Vite+ built-in commands (`vp dev`, `vp build`, `vp test`, etc.) always run the Vite+ built-in tool, not any `package.json` script of the same name. To run a custom script that shares a name with a built-in command, use `vp run <script>`. For example, if you have a custom `dev` script that runs multiple services concurrently, run it with `vp run dev`, not `vp dev` (which always starts Vite's dev server).\n- **Do not install Vitest, Oxlint, Oxfmt, or tsdown directly:** Vite+ wraps these tools. They must not be installed directly. You cannot upgrade these tools by installing their latest versions. Always use Vite+ commands.\n- **Use Vite+ wrappers for one-off binaries:** Use `vp dlx` instead of package-manager-specific `dlx`/`npx` commands.\n- **Import JavaScript modules from `vite-plus`:** Instead of importing from `vite` or `vitest`, all modules should be imported from the project's `vite-plus` dependency. For example, `import { defineConfig } from 'vite-plus';` or `import { expect, test, vi } from 'vite-plus/test';`. You must not install `vitest` to import test utilities.\n- **Type-Aware Linting:** There is no need to install `oxlint-tsgolint`, `vp lint --type-aware` works out of the box.\n\n## Review Checklist for Agents\n\n- [ ] Run `vp install` after pulling remote changes and before getting started.\n- [ ] Run `vp check` and `vp test` to validate changes.\n<!--VITE PLUS END-->\n\n<!-- File: packages/tailwind-config/package.json (Tokens: ~138 | Category: anthropic-skill) -->\n{\n  \"name\": \"@tih/tailwind-config\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"main\": \"index.js\",\n  \"devDependencies\": {\n    \"@tailwindcss/aspect-ratio\": \"^0.4.2\",\n    \"@tailwindcss/forms\": \"^0.5.3\",\n    \"@tailwindcss/line-clamp\": \"^0.4.2\",\n    \"@tailwindcss/typography\": \"^0.5.7\",\n    \"tailwind-scrollbar-hide\": \"^1.1.7\",\n    \"tailwindcss\": \"^3.1.8\"\n  }\n}\n\n<!-- File: packages/tsconfig/base.json (Tokens: ~142 | Category: anthropic-skill) -->\n{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Default\",\n  \"compilerOptions\": {\n    \"composite\": false,\n    \"declaration\": true,\n    \"declarationMap\": true,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"inlineSources\": false,\n    \"isolatedModules\": true,\n    \"moduleResolution\": \"node\",\n    \"noUnusedLocals\": false,\n    \"noUnusedParameters\": false,\n    \"preserveWatchOutput\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true\n  },\n  \"exclude\": [\"node_modules\"]\n}\n\n<!-- File: packages/tsconfig/nextjs.json (Tokens: ~178 | Category: anthropic-skill) -->\n{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Next.js\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"declaration\": false,\n    \"declarationMap\": false,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"incremental\": true,\n    \"jsx\": \"preserve\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"module\": \"esnext\",\n    \"noEmit\": true,\n    \"resolveJsonModule\": true,\n    \"target\": \"es5\",\n    \"strict\": true\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \"**/*.cjs\", \"**/*.mjs\"]\n}\n\n<!-- File: packages/tsconfig/package.json (Tokens: ~51 | Category: anthropic-skill) -->\n{\n  \"name\": \"@tih/tsconfig\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  }\n}\n\n<!-- File: packages/tsconfig/react-library.json (Tokens: ~84 | Category: anthropic-skill) -->\n{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"React Library\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"jsx\": \"react-jsx\",\n    \"lib\": [\"ES2015\"],\n    \"module\": \"ESNext\",\n    \"target\": \"es6\",\n    \"noEmit\": true\n  }\n}\n</yakaai_skills>"}