testing-coverage-requirements
**Impact: HIGH**
$ npx -y skills add calcom/cal.com --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
Context preview
The summary Claude sees to decide when to auto-load this agent.
**Impact: HIGH**
Agent definition
testing-coverage-requirements.mdtitle: Maintain 80%+ Test Coverage for New Code
impact: HIGH
impactDescription: Prevents bugs and enables confident refactoring
tags: testing, coverage, quality, ci
Maintain 80%+ Test Coverage for New Code
**Impact: HIGH**
Every PR must have near-80%+ test coverage for the code it introduces or modifies. This is enforced automatically in our CI pipeline. If you add 50 lines of new code, those 50 lines must be covered by tests. If you modify an existing function, your changes must be tested.
**Coverage requirements:**
- Overall test coverage: 80%+ for new code
- Unit test coverage: Near 100%, especially with AI assistance for generating tests
- Global coverage tracking as a key metric that improves over time
**Incorrect (untested code):**
// New function with no tests
export function calculateAvailability(user: User, date: Date): TimeSlot[] {
// Complex logic here...
// No corresponding test file
}**Correct (comprehensive tests):**
// calculateAvailability.ts
export function calculateAvailability(user: User, date: Date): TimeSlot[] {
// Complex logic here...
}
// calculateAvailability.test.ts
describe("calculateAvailability", () => {
it("returns empty array for user with no schedule", () => {
const user = createMockUser({ schedules: [] });
expect(calculateAvailability(user, new Date())).toEqual([]);
});
it("excludes busy times from available slots", () => {
const user = createMockUser({
schedules: [mockSchedule],
busyTimes: [mockBusyTime],
});
const slots = calculateAvailability(user, new Date());
expect(slots).not.toContainEqual(expect.objectContaining({
start: mockBusyTime.start,
}));
});
it("handles timezone conversions correctly", () => {
// Test timezone edge cases
});
});**Addressing the "coverage isn't the full story" argument:** Yes, we know coverage doesn't guarantee perfect tests. We know you can write meaningless tests that hit every line but test nothing meaningful. We know coverage is just one metric among many. But it's surely better to shoot for a high percentage than to have no idea where you are at all.
**Leverage AI for test generation:** AI can quickly and intelligently build comprehensive test suites. Manual testing is more and more a thing of the past.
Reference: [Cal.diy Engineering Blog](https://cal.com/blog/engineering-in-2026-and-beyond)
Read more
title: Maintain 80%+ Test Coverage for New Code impact: HIGH impactDescription: Prevents bugs and enables confident refactoring tags: testing, coverage, quality, ci
Maintain 80%+ Test Coverage for New Code
**Impact: HIGH**
Every PR must have near-80%+ test coverage for the code it introduces or modifies. This is enforced automatically in our CI pipeline. If you add 50 lines of new code, those 50 lines must be covered by tests. If you modify an existing function, your changes must be tested.
**Coverage requirements:**
- Overall test coverage: 80%+ for new code
- Unit test coverage: Near 100%, especially with AI assistance for generating tests
- Global coverage tracking as a key metric that improves over time
**Incorrect (untested code):**
// New function with no tests
export function calculateAvailability(user: User, date: Date): TimeSlot[] {
// Complex logic here...
// No corresponding test file
}**Correct (comprehensive tests):**
// calculateAvailability.ts
export function calculateAvailability(user: User, date: Date): TimeSlot[] {
// Complex logic here...
}
// calculateAvailability.test.ts
describe("calculateAvailability", () => {
it("returns empty array for user with no schedule", () => {
const user = createMockUser({ schedules: [] });
expect(calculateAvailability(user, new Date())).toEqual([]);
});
it("excludes busy times from available slots", () => {
const user = createMockUser({
schedules: [mockSchedule],
busyTimes: [mockBusyTime],
});
const slots = calculateAvailability(user, new Date());
expect(slots).not.toContainEqual(expect.objectContaining({
start: mockBusyTime.start,
}));
});
it("handles timezone conversions correctly", () => {
// Test timezone edge cases
});
});**Addressing the "coverage isn't the full story" argument:** Yes, we know coverage doesn't guarantee perfect tests. We know you can write meaningless tests that hit every line but test nothing meaningful. We know coverage is just one metric among many. But it's surely better to shoot for a high percentage than to have no idea where you are at all.
**Leverage AI for test generation:** AI can quickly and intelligently build comprehensive test suites. Manual testing is more and more a thing of the past.
Reference: [Cal.diy Engineering Blog](https://cal.com/blog/engineering-in-2026-and-beyond)
Repo: calcom/cal.com
Other agents on caldiy.
- knowledge-base
This file contains domain knowledge about the Cal.diy product and codebase. For coding guidelines and rules, see [`rules/`](rules/).
Open agent - api-no-breaking-changes
**Impact: CRITICAL**
Open agent - api-thin-controllers
**Impact: HIGH**
Open agent - architecture-circular-dependencies
**Impact: CRITICAL**
Open agent - architecture-feature-boundaries
**Impact: CRITICAL**
Open agent - architecture-features-modules
The `packages/features` package should contain only framework-agnostic code: - Repositories (data access layer) - Services (business logic) - Core utilities and helpers - Types and interfaces
Open agent

