[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80261":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},80261,"testai","qelos-io\u002Ftestai","qelos-io","The testing framework for skills, MCPs, commands, subagents, and LLM models!    Docs at https:\u002F\u002Ftestingai.ai",null,"TypeScript",102,15,19,99,0,1,10,3.61,false,"main",[],"2026-06-12 02:04:00","\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fpublic\u002Flogo.png\" alt=\"TestAI\" width=\"280\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fqelos-io\u002Ftestai\u002Factions\u002Fworkflows\u002Fci.yml\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fqelos-io\u002Ftestai\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg\" alt=\"CI\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@testingai\u002Ftestai\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@testingai\u002Ftestai\" alt=\"npm version\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg\" alt=\"License: MIT\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fnodejs.org\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnode\u002Fv\u002F@testingai\u002Ftestai\" alt=\"Node\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Ftestingai.ai\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-testingai.ai-004A7C\" alt=\"Docs\">\u003C\u002Fa>\n\u003C\u002Fp>\n\nTypeScript testing helpers for AI-native codebases: compose **agents**, **workspace fixtures**, and **MCP stubs** in one harness — framework-agnostic (Vitest, Jest, Node test runner, …).\n\n**Documentation:** [https:\u002F\u002Ftestingai.ai](https:\u002F\u002Ftestingai.ai)\n\n## What you get\n\n| Layer | Packages | Role |\n|-------|----------|------|\n| **Core** | [`@testingai\u002Ftestai`](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Finstallation) | `TestAI.createTestingEnv`, `createProject`, agents, `createMcp` \u002F `@testingai\u002Ftestai\u002Fmcp`. |\n| **MCP stubs** | [`@testingai\u002Fmcp-*`](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Fmcp-stubs) | Trackable mock MCP servers (Datadog, Slack, Figma, Linear) — assert which tools were invoked without live services. |\n| **Presets** | [`@testingai\u002Fpkg-*`](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Fpreset-projects) | Stack fixtures (`pkg-react`, `pkg-nuxt`, `pkg-fastapi`, …) that return a fresh `TestProject` handle. |\n\nThe library is evolving: preset factories currently allocate temp directories and return a stable `TestProject` handle; full clone, skill sync, and harness execution are on the roadmap — the [public API](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Ftesting-environment) is already shaped for that future.\n\n## Requirements\n\n- **Node.js** ≥ 20\n\n## Install\n\n```bash\nnpm install @testingai\u002Ftestai\nnpm install @testingai\u002Fmcp-datadog   # optional MCP stub\nnpm install @testingai\u002Fpkg-nuxt      # optional preset fixture\n```\n\nSee [Installation](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Finstallation) for the full package list.\n\n## Quick start\n\n```ts\nimport { TestAI, createProject } from \"@testingai\u002Ftestai\";\nimport { datadog } from \"@testingai\u002Fmcp-datadog\";\nimport { nuxtProject } from \"@testingai\u002Fpkg-nuxt\";\n\n\u002F\u002F Existing checkout on disk + MCP stubs\nconst env = await TestAI.createTestingEnv({\n  project: createProject(\".\u002Fmy-demo-project\"),\n  mcp: [datadog],\n});\n\n\u002F\u002F Or a preset stack fixture\nawait TestAI.createTestingEnv({ project: nuxtProject() });\n\nawait env.dispose();\n```\n\nWalkthrough: [Getting started](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Fgetting-started) · [Testing environment](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Ftesting-environment) · [Vendor MCP stubs](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Fmcp-stubs)\n\n## Documentation\n\n| Topic | Link |\n|-------|------|\n| Getting started | [testingai.ai\u002Fguide\u002Fgetting-started](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Fgetting-started) |\n| Installation | [testingai.ai\u002Fguide\u002Finstallation](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Finstallation) |\n| Testing environment | [testingai.ai\u002Fguide\u002Ftesting-environment](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Ftesting-environment) |\n| Projects & fixtures | [testingai.ai\u002Fguide\u002Fprojects](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Fprojects) |\n| Agents | [testingai.ai\u002Fguide\u002Fagents](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Fagents) |\n| MCP stubs | [testingai.ai\u002Fguide\u002Fmcp-stubs](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Fmcp-stubs) |\n| Preset projects | [testingai.ai\u002Fguide\u002Fpreset-projects](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Fpreset-projects) |\n| Monorepo layout | [testingai.ai\u002Fguide\u002Fmonorepo](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Fmonorepo) |\n| Development | [testingai.ai\u002Fguide\u002Fdevelopment](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Fdevelopment) |\n\n## Monorepo layout\n\n| Path | Packages |\n|------|----------|\n| `core\u002F` | `@testingai\u002Ftestai` |\n| `mcp\u002F` | `@testingai\u002Fmcp-datadog`, `@testingai\u002Fmcp-slack`, `@testingai\u002Fmcp-figma`, `@testingai\u002Fmcp-linear` |\n| `projects\u002F` | `@testingai\u002Fpkg-react`, `@testingai\u002Fpkg-nuxt`, `@testingai\u002Fpkg-fastapi`, … |\n| `docs\u002F` | VitePress site — [testingai.ai](https:\u002F\u002Ftestingai.ai) |\n\n## Development\n\nCommands run from the **repo root**. Full reference: [Development](https:\u002F\u002Ftestingai.ai\u002Fguide\u002Fdevelopment).\n\n| Script | Description |\n|--------|-------------|\n| `npm run build` | Builds `testai` → all `mcp-*` → all `pkg-*`. |\n| `npm test` | Bootstrap build, then `test` in every workspace (including e2e). |\n| `npm run test:packages` | Workspace tests only (no e2e). |\n| `npm run lint` | ESLint over `core\u002F`, `mcp\u002F`, `projects\u002F`, `e2e\u002F`. |\n| `npm run typecheck` | Builds `testai` + `mcp-*`, then `typecheck` everywhere. |\n| `npm run check` | `lint` + `typecheck` + `test` + `build`. |\n| `npm run docs:dev` | Local VitePress dev server for [docs\u002F](docs\u002F). |\n\n## License\n\nMIT\n","TestAI 是一个专为 AI 原生代码库设计的测试框架，支持技能、MCPs、命令、子代理和大语言模型的测试。其核心功能包括创建测试环境、项目和MCP模拟器，这些功能均以TypeScript编写，并且与Vitest、Jest等主流测试框架兼容。该工具特别适合需要在不依赖实际服务的情况下验证多组件交互行为的开发场景，如构建涉及多个云服务或外部API调用的应用程序时。通过提供一系列预设配置和可跟踪的MCP服务器模拟，TestAI简化了复杂AI系统的集成测试过程。",2,"2026-06-11 03:59:51","CREATED_QUERY"]