About testing-cicd-init
A project setup skill that initializes Vitest testing and GitHub Actions CI/CD for JavaScript and TypeScript projects. It detects the project type and configures test files, scripts, coverage thresholds, and workflows, with explicit approval required before changes.
Key features
- 01Project type detection
- 02Vitest configuration and test setup
- 03GitHub Actions CI workflow
- 04Coverage threshold configuration
- 05Package scripts and dependencies
Use cases
- 01Adding tests to a project without test coverage
- 02Initializing GitHub Actions CI/CD
- 03Setting up Vitest coverage for Next.js or NestJS
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ shipshitdev/ skills --skill testing-cicd-initAfter installing, type/testing-cicd-initin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
plugin.jsontemplates/ci-nestjs.ymlci-nextjs.ymltest-setup-node.tstest-setup-react.tsvitest.config.nestjs.tsvitest.config.nextjs.tsDetails
From the project READMETesting & CI/CD Initialization
Authorized Scope
Act only within the user's request and existing approval; loading this skill grants no new authority. Keep report-only requests report-only, honor the caller's target, host, provider, and cost limits, ask before expanding scope, and forward these limits to delegates.
Contract
Inputs:
- Project root directory (current working directory by default).
- Project type is auto-detected from
package.jsonand config files; can be specified explicitly (nextjs, nestjs, react, node).
Outputs:
vitest.config.tsconfigured for detected environment.- Test setup file (
src/test/setup.tsfor Next.js/React,test/setup.tsfor NestJS). .github/workflows/ci.ymlwith Bun-based pipeline and coverage enforcement.- Updated
package.jsonscripts (test,test:coverage,typecheck).
Creates/Modifies:
vitest.config.ts(created).- Test setup file (created).
.github/workflows/ci.yml(created or updated).package.jsonscripts section (updated).
External Side Effects:
- Runs
bun add -Dto install Vitest and related testing packages.
Confirmation Required:
- Apply setup only when the user explicitly requested this configuration or approved a plan containing it. Invocation alone grants no write authority.
- Confirm before overwriting existing test configuration or adding dependencies outside that authorized setup.
Delegates To:
husky-test-coverageskill for adding pre-commit coverage gate (optional, not auto-invoked).playwright-e2e-initfor E2E layer (optional, not auto-invoked).
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
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.jsondependencies (next, @nestjs/core, react, etc.)- Config files (next.config.*, nest-cli.json, etc.)
- Directory structure (app/, src/, pages/, etc.)
Quick Start
Example prompt:
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 environmentsrc/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 unplugin-swc @swc/core supertest @types/supertest
Files created:
vitest.config.ts- Vitest with node environment andunplugin-swc(decorator metadata)test/setup.ts- Test setup for NestJS.github/workflows/ci.yml- CI with a Postgres service and Prisma migrations
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
- Postgres service and Prisma migrations (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.tsat root - Creates individual
vitest.config.tsper package - Creates root-level GitHub Actions workflow
- Uses
bun --filter '*' testfor 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
Agent:
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
Agent:
1. Detects NestJS from @nestjs/core dependency
2. Installs vitest, @vitest/coverage-v8, unplugin-swc, supertest
3. Creates vitest.config.ts with node environment
4. Creates test/setup.ts
5. Creates .github/workflows/ci.yml with a Postgres 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:
bunx vitest run --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