quality-code-comments
Keep comments limited and avoid obvious ones. Comments should explain "why" not "what" - the code itself should be clear enough to explain what it does.
$ 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.
Keep comments limited and avoid obvious ones. Comments should explain "why" not "what" - the code itself should be clear enough to explain what it does.
Agent definition
quality-code-comments.mdtitle: Code Comment Guidelines
impact: MEDIUM
impactDescription: Excessive comments add noise; missing comments hurt maintainability
tags: comments, documentation, readability
Code Comment Guidelines
General Principle
Keep comments limited and avoid obvious ones. Comments should explain "why" not "what" - the code itself should be clear enough to explain what it does.
When to Comment
- Business decisions or domain logic that isn't obvious from the code
- Workarounds or hacks with explanation of why they're needed
- Non-obvious performance optimizations
- Important security considerations
- Troubleshooting context (e.g., why a particular approach was chosen after hitting issues)
If none of these apply, skip the comment entirely. The function name, parameters, and return type should speak for themselves.
When NOT to Comment
// ❌ Bad - Obvious comment
// Get the user
const user = await getUser(userId);
// ❌ Bad - Restating the code
// Loop through bookings
for (const booking of bookings) {
// Process booking
processBooking(booking);
}Good Examples
// ✅ Good - Explains why, not what
// We need to fetch availability before slots because the timezone
// conversion depends on the user's configured availability rules
const availability = await getAvailability(userId);
const slots = convertToSlots(availability, timezone);
// ✅ Good - Documents a non-obvious constraint
// Google Calendar API has a 2500 event limit per sync request
const BATCH_SIZE = 2500;
Read more
title: Code Comment Guidelines impact: MEDIUM impactDescription: Excessive comments add noise; missing comments hurt maintainability tags: comments, documentation, readability
Code Comment Guidelines
General Principle
Keep comments limited and avoid obvious ones. Comments should explain "why" not "what" - the code itself should be clear enough to explain what it does.
When to Comment
- Business decisions or domain logic that isn't obvious from the code
- Workarounds or hacks with explanation of why they're needed
- Non-obvious performance optimizations
- Important security considerations
- Troubleshooting context (e.g., why a particular approach was chosen after hitting issues)
If none of these apply, skip the comment entirely. The function name, parameters, and return type should speak for themselves.
When NOT to Comment
// ❌ Bad - Obvious comment
// Get the user
const user = await getUser(userId);
// ❌ Bad - Restating the code
// Loop through bookings
for (const booking of bookings) {
// Process booking
processBooking(booking);
}Good Examples
// ✅ Good - Explains why, not what // We need to fetch availability before slots because the timezone // conversion depends on the user's configured availability rules const availability = await getAvailability(userId); const slots = convertToSlots(availability, timezone); // ✅ Good - Documents a non-obvious constraint // Google Calendar API has a 2500 event limit per sync request const BATCH_SIZE = 2500;
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

