Write evergreen comments focused on what and why, not historical context.
This is a prompt-only/documentation-style skill with no declared secrets, remote endpoints, code execution, or local data access, so the overall risk is low. The main caveat is supply-chain confidence: although the GitHub source is auditable, the repository has no declared license, no community adoption, and unknown maintenance status.
The materials explicitly state there are no required keys or environment variables. The skill is only a commenting guideline/prompt artifact, with no indication of requesting, storing, or transmitting credentials, so credential exposure or abuse risk is low.
The materials explicitly declare no remote endpoints. The README only contains local commenting rules and a grep example, with no mechanism or description suggesting user data is sent to external services.
This item is classified as prompt-only, and the content is documentation with example snippets rather than an executable tool. There is no indication that it starts local processes, runs scripts, or invokes system capabilities. The bash example in the README is illustrative text, not a permission request.
There is no declared ability to read or write files, databases, clipboard contents, or other local/cloud resources. As a commenting-style guidance artifact, it does not inherently require user data access, and no overbroad access is indicated.
The GitHub/open-source source is a positive factor because it is auditable. However, the repository has 0 stars, unknown maintenance status, and no declared license, which weakens community validation and maintenance confidence. There are no explicit malicious red flags, so caution is more appropriate than high risk.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "Writing Evergreen Comments" skill from askskill: 1. Download https://raw.githubusercontent.com/obra/clank/main/skills/coding/writing-evergreen-comments/SKILL.md 2. Save it as ~/.claude/skills/writing-evergreen-comments/SKILL.md 3. Reload skills and tell me it's ready
Please write evergreen comments for the following function. Explain only what it does and why it is implemented this way. Do not include temporary context, dates, change history, or phrases like “currently” or “for now”. [Paste code]
Concise, maintainable code comments describing the function’s purpose, key logic, and design rationale.
Review the existing comments in the code below. Identify comments with temporal, historical, or task-status wording, and rewrite them as evergreen comments. Keep the technical intent, but remove phrases like “temporary fix” or “change this next release”. [Paste code]
Problematic comments identified and rewritten into stable, clear comments suitable for long-term maintenance.
Based on the rule “comments should explain WHAT and WHY, never temporal context or history,” write a short team commenting guideline. Include recommended practices, forbidden patterns, and 3 pairs of good vs. bad examples.
A concise team commenting guideline that standardizes writing evergreen comments.
Comments documenting change history or implementation improvements become stale and confusing. "// Refactored from legacy system" tells nothing about current purpose.
Core principle: Comments explain WHAT code does or WHY it exists, never how it's better than before.
Violating the letter of this rule is violating the spirit of documentation.
Use for:
Use ESPECIALLY when:
Comments describe present state, not past or transitions.
<Bad> ```typescript // Refactored from the old validation system // Now uses Zod instead of manual checking class Validator { validate(data: unknown) { } }// Improved error handling - used to just throw function processRequest() { }
// Recently moved from utils/ to core/ export function helper() { }
</Bad>
<Good>
```typescript
// Validates configuration against schema
class Validator {
validate(data: unknown) { }
}
// Returns error details to caller for proper handling
function processRequest() { }
// Shared utility for data transformation
export function helper() { }
</Good>
Comments document code, not instruct developers.
<Bad> ```typescript // Use this pattern instead of the old approach // Copy this when implementing similar features class NewPattern { }// TODO: migrate all code to use this function improvedAPI() { }
</Bad>
<Good>
```typescript
// Handles async operations with automatic retry
class RetryableOperation { }
// Validates input before processing
function processInput() { }
</Good>
Code quality shows in behavior, not comments claiming superiority.
<Bad> ```typescript // Better than the previous implementation // More efficient validation // Enhanced error messages class Validator { } ``` </Bad> <Good> ```typescript // Validates schema in single pass, returns all errors class Validator { } ``` </Good>Every file starts with 2-line header explaining purpose.
<Good> ```typescript // ABOUTME: Validates user input against defined schemas // ABOUTME: Provides detailed error messages for debuggingexport class Validator { // ... }
</Good>
**Why ABOUTME:** Greppable pattern for finding file purposes.
```bash
grep -r "ABOUTME:" . --include="*.ts"
| Bad Comment | Why Bad | Good Comment |
|---|---|---|
// Refactored from legacy | Temporal context | // Handles user authentication |
// New error handling | References change | // Returns errors to caller |
// Improved performance | Claims improvement | // Caches results for 5min |
// Use this instead of X | Instructional | // Validates async |
// Wrapper around API | Implementation | // Fetches user data |
// Recently moved here | Temporal context | // Shared validation logic |
Rule: Remove old comments describing old behavior. Don't add new comments about the change.
<Bad> ```typescript // OLD: Used to validate with regex // NEW: Now uses schema validation for better accuracy function validate(input: string) { // Enhanced validation logic } ``` </Bad> <Good> ```typescript // Validates input against schema, returns structured errors function validate(input: string) { // Business logic here } ``` </Good>Critical: Never remove comments unless proven false.
// DO remove if provably wrong
// OLD COMMENT: Returns null on error
function process() {
…
Compare 2-3 approaches before execution to choose a stronger solution.
Name code by domain meaning to improve clarity and team alignment.
Search past Claude Code chats to recover facts, decisions, and context.
Design systems by hiding implementation details behind domain-level interfaces.
Plan with pseudocode first, refine approaches, then translate into working code.
Helps developers keep class abstractions cohesive and free of unrelated responsibilities.
Helps developers write code comments explaining intent, rationale, and key tradeoffs.
Capture the why behind git changes with standardized contextual commit history.
Turn requirements into a clear step-by-step execution plan before implementation.
Evaluate code review feedback rigorously before deciding whether to implement it.
Guide users to co-author docs, proposals, and specs through iterative refinement.
Create detailed implementation plans for engineers with little or no codebase context.