Testing & CI/CD Initialization
Automatically sets up comprehensive test infrastructure for TypeScript projects including Vitest, coverage thresholds, and GitHub Actions CI/CD.
When to Use
This skill should be used when:
Adding tests to a project without test coverage Setting up GitHub Actions CI/CD for the first time Configuring Vitest with coverage thresholds Initializing testing infrastructure for a new project Migrating from Jest to Vitest What It Does Detects project type (Next.js, NestJS, React, Node.js) Adds Vitest configuration with appropriate settings Creates test setup files for the environment Adds GitHub Actions workflow for CI/CD Configures 80% coverage thresholds Adds test scripts to package.json Installs required dependencies Project Type Detection
The skill detects project type by scanning:
package.json dependencies (next, @nestjs/core, react, etc.) Config files (next.config.*, nest-cli.json, etc.) Directory structure (app/, src/, pages/, etc.) Quick Start
Ask Claude to:
Add testing and CI/CD to this project
Or be specific:
Set up Vitest with 80% coverage and GitHub Actions for this Next.js project
Configuration by Project Type Next.js Projects
Dependencies installed:
bun add -D vitest @vitest/coverage-v8 @vitejs/plugin-react @testing-library/react @testing-library/jest-dom jsdom
Files created:
vitest.config.ts - Vitest with jsdom environment src/test/setup.ts - Test setup with RTL matchers .github/workflows/ci.yml - CI pipeline
Test pattern: */.{test,spec}.{ts,tsx}
NestJS Projects
Dependencies installed:
bun add -D vitest @vitest/coverage-v8 supertest @types/supertest
Files created:
vitest.config.ts - Vitest with node environment test/setup.ts - Test setup for NestJS .github/workflows/ci.yml - CI with MongoDB service
Test pattern: src/*/.spec.ts
React/Node.js Projects
Follows similar patterns based on detected framework.
Coverage Configuration
Default thresholds (configurable):
Lines: 80% Functions: 80% Branches: 75% Statements: 80%
Coverage is enforced:
In pre-commit hooks (via Husky) In CI/CD pipeline (GitHub Actions) GitHub Actions Features
The generated CI workflow includes:
Bun setup with caching Dependency installation Lint/format checking (Biome) TypeScript type checking Test execution with coverage Build verification MongoDB service (for NestJS projects) Templates
Templates are located in the templates/ directory:
Template Purpose vitest.config.nextjs.ts Vitest config for Next.js vitest.config.nestjs.ts Vitest config for NestJS ci-nextjs.yml GitHub Actions for Next.js ci-nestjs.yml GitHub Actions for NestJS test-setup-react.ts Test setup with RTL test-setup-node.ts Test setup for Node.js Monorepo Support
For monorepos (detected by workspaces in package.json):
Creates vitest.workspace.ts at root Creates individual vitest.config.ts per package Creates root-level GitHub Actions workflow Uses bun --filter '*' test for orchestration Integration with Other Skills Skill Integration husky-test-coverage Adds pre-commit coverage enforcement linter-formatter-init Works alongside for code quality playwright-e2e-init Adds E2E testing after unit tests testing-expert Provides testing patterns guidance Example Usage Adding tests to a Next.js project User: Add testing to this project
Claude: 1. Detects Next.js from package.json 2. Installs vitest, @vitest/coverage-v8, @testing-library/react 3. Creates vitest.config.ts with jsdom environment 4. Creates src/test/setup.ts 5. Creates .github/workflows/ci.yml 6. Adds test scripts to package.json
Adding tests to a NestJS API User: Set up tests for this NestJS API
Claude: 1. Detects NestJS from @nestjs/core dependency 2. Installs vitest, @vitest/coverage-v8, supertest 3. Creates vitest.config.ts with node environment 4. Creates test/setup.ts 5. Creates .github/workflows/ci.yml with MongoDB service 6. Adds test scripts to package.json
Troubleshooting Tests not finding modules
Ensure path aliases in vitest.config.ts match tsconfig.json:
resolve: { alias: { "@": path.resolve(__dirname, "./src"), }, },
Coverage below threshold Check coverage report: bun test --coverage Identify uncovered lines Add tests or adjust thresholds temporarily CI failing on type errors
Ensure bunx tsc --noEmit passes locally before pushing.
Best Practices Start with unit tests for utilities and services Add integration tests for API endpoints Use E2E tests sparingly for critical flows Run tests before commits via Husky Monitor coverage trends in CI
When this skill is active, Claude will:
Detect the project type automatically Install appropriate testing dependencies Create properly configured test files Set up GitHub Actions CI/CD Configure coverage thresholds Add test scripts to package.json