husky-test-coverage
Set up or verify Husky git hooks to ensure all tests run and coverage stays above 80% (configurable) for Node.js/TypeScript projects. This skill should be used when users want to enforce test coverage through pre-commit hooks, verify existing Husky/test setup, or configure coverage thresholds for Jest, Vitest, or Mocha test runners.
What this skill does
# Husky Test Coverage
Set up or verify Husky git hooks to ensure tests run and coverage thresholds are enforced on every commit.
## Purpose
This skill automates the setup of:
- Husky git hooks for pre-commit testing
- Test runner detection (Jest, Vitest, Mocha)
- Coverage configuration with thresholds (default: 80%)
- Pre-commit hook that runs tests with coverage
- Configurable coverage enforcement (block or warn)
## When to Use
This skill should be used when:
- Setting up test coverage enforcement for the first time
- Verifying existing Husky/test setup is correctly configured
- Ensuring coverage thresholds are met before commits
- Configuring pre-commit hooks for test coverage
- Adapting coverage setup to different test runners
## Project Context Discovery
**Before setting up test coverage, discover the project's context:**
1. **Check package.json:**
- Review existing test scripts
- Detect test runner from dependencies (jest, vitest, mocha)
- Check for existing Husky installation
- Review existing coverage configuration
2. **Identify Test Runner:**
- Jest: Check for `jest` in dependencies, look for `jest.config.js` or `jest.config.json`
- Vitest: Check for `vitest` in dependencies, look for `vitest.config.ts` or `vitest.config.js`
- Mocha: Check for `mocha` in dependencies, check for coverage tool (nyc, c8)
3. **Check Coverage Configuration:**
- Jest: Look for `coverageThreshold` in jest.config.*
- Vitest: Look for `coverage.thresholds` in vitest.config.*
- Mocha: Look for `.nycrc.json` or coverage config in package.json
4. **Verify Existing Husky Setup:**
- Check if `.husky/` directory exists
- Review existing pre-commit hook
- Check if Husky is in package.json dependencies
5. **Detect Test Files:**
- Scan for `*.test.*` or `*.spec.*` files
- Verify tests exist before enforcing coverage
## Quick Start
```bash
# Basic setup (80% coverage threshold, blocks commits below threshold)
python3 scripts/setup-husky-coverage.py \
--root /path/to/project
# Custom threshold (85%)
python3 scripts/setup-husky-coverage.py \
--root /path/to/project \
--threshold 85
# Warn only (don't block commits)
python3 scripts/setup-husky-coverage.py \
--root /path/to/project \
--no-fail-on-below
# Skip if no tests found
python3 scripts/setup-husky-coverage.py \
--root /path/to/project \
--skip-if-no-tests
# Dry run to preview changes
python3 scripts/setup-husky-coverage.py \
--root /path/to/project \
--dry-run
```
## What Gets Configured
### Husky Setup
- Installs Husky if not already present
- Initializes Husky (`npx husky install`)
- Creates `.husky/pre-commit` hook that runs tests with coverage
- Adds `prepare` script to package.json (if missing)
### Test Runner Detection
The skill automatically detects:
- **Jest**: Uses `jest --coverage --watchAll=false` in pre-commit hook
- **Vitest**: Uses `vitest --coverage --run` in pre-commit hook
- **Mocha**: Uses `nyc` or `c8` with mocha test command
### Coverage Configuration
**Jest:**
- Creates or updates `jest.config.json` with `coverageThreshold`
- Default thresholds: 80% lines, 75% branches, 80% functions, 80% statements
**Vitest:**
- Creates or updates `vitest.config.ts/js` with coverage thresholds
- Configures v8 coverage provider
- Sets same default thresholds as Jest
**Mocha + nyc:**
- Creates or updates `.nycrc.json` with coverage thresholds
- Configures text, html, and lcov reporters
### Pre-commit Hook
The created hook:
- Runs tests with coverage before every commit
- Fails the commit if coverage is below threshold (configurable)
- Can skip if no test files are found (optional)
## Configuration Options
### Command Line Arguments
- `--root <path>`: Project root directory (required)
- `--threshold <number>`: Coverage threshold percentage (default: 80)
- `--fail-on-below`: Fail commit if coverage below threshold (default: true)
- `--no-fail-on-below`: Allow commit even if coverage below threshold
- `--skip-if-no-tests`: Skip hook if no test files found
- `--dry-run`: Show what would be done without making changes
### Configuration File
Create `.husky-test-coverage.json` in project root:
```json
{
"coverageThreshold": {
"lines": 80,
"branches": 75,
"functions": 80,
"statements": 80
},
"failOnCoverageBelowThreshold": true,
"skipIfNoTests": false
}
```
### Package.json Configuration
Alternatively, add to `package.json`:
```json
{
"huskyTestCoverage": {
"threshold": 80,
"failOnBelow": true
}
}
```
## Tech Stack Adaptation
### Jest Projects
**Detection:**
- Checks for `jest` in dependencies
- Looks for `jest.config.js` or `jest.config.json`
**Configuration:**
- Updates or creates `jest.config.json` with coverage thresholds
- Pre-commit hook: `npm test -- --coverage --watchAll=false`
**Example jest.config.json:**
```json
{
"coverageThreshold": {
"global": {
"lines": 80,
"branches": 75,
"functions": 80,
"statements": 80
}
}
}
```
### Vitest Projects
**Detection:**
- Checks for `vitest` in dependencies
- Looks for `vitest.config.ts` or `vitest.config.js`
**Configuration:**
- Updates or creates Vitest config with coverage thresholds
- Pre-commit hook: `npm test -- --coverage --run`
**Example vitest.config.ts:**
```typescript
import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
coverage: {
provider: 'v8',
reporter: ['text', 'json', 'html'],
thresholds: {
lines: 80,
branches: 75,
functions: 80,
statements: 80
}
}
}
})
```
### Mocha Projects
**Detection:**
- Checks for `mocha` in dependencies
- Checks for coverage tool (`nyc` or `c8`)
**Configuration:**
- Creates or updates `.nycrc.json` for nyc
- Pre-commit hook: `nyc --reporter=text --reporter=html npm test`
**Example .nycrc.json:**
```json
{
"check-coverage": true,
"lines": 80,
"branches": 75,
"functions": 80,
"statements": 80,
"reporter": ["text", "text-summary", "html", "lcov"]
}
```
## Package Manager Support
The skill automatically detects and uses:
- **npm**: `npm run test`
- **yarn**: `yarn test`
- **pnpm**: `pnpm run test`
- **bun**: `bun run test`
## Workflow
When using this skill:
1. **Discover Project Context:**
- Scan package.json for test runner and dependencies
- Check existing Husky configuration
- Review existing coverage config files
- Verify test files exist
2. **Detect Test Runner:**
- Identify Jest, Vitest, or Mocha
- Detect coverage tool (built-in or nyc/c8)
- Determine package manager
3. **Setup or Verify Husky:**
- Install Husky if missing
- Initialize Husky hooks
- Add prepare script if needed
4. **Configure Coverage:**
- Create or update coverage configuration
- Set coverage thresholds (default 80%)
- Configure appropriate reporters
5. **Create Pre-commit Hook:**
- Generate hook script with test command
- Configure to run tests with coverage
- Set enforcement behavior (block or warn)
6. **Verify Setup:**
- Review generated configuration
- Test hook with a commit
- Adjust thresholds if needed
## Integration with Other Skills
This skill works alongside:
| Skill | How It Works Together |
|-------|----------------------|
| **fullstack-workspace-init** | Automatically invoked after scaffolding to set up 80% coverage threshold |
| **linter-formatter-init** | Both configure Husky; this skill focuses on test coverage, linter-formatter-init focuses on linting/formatting |
| **testing-expert** | Uses testing patterns and coverage targets from testing-expert skill |
### Automatic Setup with fullstack-workspace-init
When using `fullstack-workspace-init` to scaffold a new project, this skill is automatically applied with:
- Vitest as the test runner
- 80% coverage threshold
- Pre-commit hooks enabled
- GitHub Actions CI/CD integration
You don't need to run this skill separately if you uRelated in Backend & APIs
jfrog
IncludedInteract with the JFrog Platform via the JFrog CLI and REST/GraphQL APIs. Use this skill when the user wants to manage Artifactory repositories, upload or download artifacts, manage builds, configure permissions, manage users and groups, work with access tokens, configure JFrog CLI servers, search artifacts, manage properties, set up replication, manage JFrog Projects, run security audits or scans, look up CVE details, query exposures scan results from JFrog Advanced Security, manage release bundles and lifecycle operations, aggregate or export platform data, or perform any JFrog Platform administration task. Also use when the user mentions jf, jfrog, artifactory, xray, distribution, evidence, apptrust, onemodel, graphql, workers, mission control, curation, advanced security, exposures, or any JFrog product name.
cupynumeric-migration-readiness
IncludedPre-migration readiness assessor for porting NumPy to cuPyNumeric. Use BEFORE substantial porting work begins when the user asks whether code will scale on GPU, whether they should migrate to cuPyNumeric, which NumPy patterns transfer cleanly, what must be refactored before porting, or mentions pre-port assessment, scaling analysis, or refactor planning. Inspect the user's source code, look up NumPy usage, cross-reference the cuPyNumeric API support manifest, and distinguish distributed-scaling-friendly patterns from blockers such as unsupported APIs, scalar synchronization, host round-trips, Python/object-heavy control flow, shape/data-dependent branching, and in-place mutation hazards. Produce a verdict of READY, LIGHT REFACTOR, SIGNIFICANT REFACTOR, or NOT RECOMMENDED, with concrete refactor pointers.
alibabacloud-data-agent-skill
IncludedInvoke Alibaba Cloud Apsara Data Agent for Analytics via CLI to perform natural language-driven data analysis on enterprise databases. Data Agent for Analytics is an intelligent data analysis agent developed by Alibaba Cloud Database team for enterprise users. It automatically completes requirement analysis, data understanding, analysis insights, and report generation based on natural language descriptions. This tool supports: discovering data resources (instances/databases/tables) managed in DMS, initiating query or deep analysis sessions, real-time progress tracking, and retrieving analysis conclusions and generated reports. Use this Skill when users need to query databases, analyze data trends, generate data reports, ask questions in natural language, or mention "Data Agent", "data analysis", "database query", "SQL analysis", "data insights".
token-optimizer
IncludedReduce OpenClaw token usage and API costs through smart model routing, heartbeat optimization, budget tracking, and native 2026.2.15 features (session pruning, bootstrap size limits, cache TTL alignment). Use when token costs are high, API rate limits are being hit, or hosting multiple agents at scale. The 4 executable scripts (context_optimizer, model_router, heartbeat_optimizer, token_tracker) are local-only — no network requests, no subprocess calls, no system modifications. Reference files (PROVIDERS.md, config-patches.json) document optional multi-provider strategies that require external API keys and network access if you choose to use them. See SECURITY.md for full breakdown.
resend-cli
IncludedUse this skill when the task is specifically about operating Resend from an AI agent, terminal session, or CI job via the official resend CLI: installing/authenticating the CLI, sending/listing/updating/cancelling emails, batch sends, domains and DNS, webhooks and local listeners, inbound receiving, contacts, topics, segments, broadcasts, templates, API keys, profiles, or debugging Resend CLI/API failures. Trigger on mentions of Resend CLI, `resend`, `resend doctor`, `resend emails send`, `resend domains`, `resend webhooks listen`, `resend emails receiving`, or agent-friendly terminal automation.
alibabacloud-odps-maxframe-coding
IncludedUse this skill for MaxFrame SDK development and documentation navigation on Alibaba Cloud MaxCompute (ODPS). Helps answer MaxFrame API, concept, official example, and supported pandas API questions; create data processing programs; read/write MaxCompute tables; debug jobs (remote or local); and build custom DPE runtime images. Trigger when users mention MaxFrame, MaxCompute with MaxFrame, ODPS table processing, DPE runtime, MaxFrame docs/examples, DataFrame/Tensor operations, or GPU runtime setup. Works for both English and Chinese queries about Alibaba Cloud data processing with MaxFrame.