doing-a-simple-two-sta…
Use when analyzing a large corpus of text, code, or data that exceeds a single agent's effective context - orchestrates parallel Worker subagents, Critic…
Use when creating or updating CLAUDE.md files for projects or subdirectories - covers top-level vs domain-level organization, capturing architectural intent and contracts, and mandatory freshness dates
$ npx -y skills add ed3dai/ed3d-plugins --skill writing-claude-md-files --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/writing-claude-md-filesContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when creating or updating CLAUDE.md files for projects or subdirectories - covers top-level vs domain-level organization, capturing architectural intent and contracts, and mandatory freshness dates
name: writing-claude-md-files description: Use when creating or updating CLAUDE.md files for projects or subdirectories - covers top-level vs domain-level organization, capturing architectural intent and contracts, and mandatory freshness dates user-invocable: false
**REQUIRED BACKGROUND:** Read ed3d-extending-claude:writing-claude-directives for foundational guidance on token efficiency, compliance techniques, and directive structure.
CLAUDE.md files bridge Claude's statelessness. They preserve context so humans don't re-explain architectural intent every session.
**Key distinction:**
Claude automatically reads CLAUDE.md files from current directory up to root:
project/
├── CLAUDE.md # Project-wide: tech stack, commands, conventions
└── src/
└── domains/
├── auth/
│ ├── CLAUDE.md # Auth domain: purpose, contracts, invariants
│ └── oauth2/
│ └── CLAUDE.md # OAuth2 subdomain (rare, only when needed)
└── billing/
└── CLAUDE.md # Billing domain: purpose, contracts, invariants**Depth guideline:** Typically one level (domain). Occasionally two (subdomain like `auth/oauth2`). Rarely more.
Focuses on project-wide WHAT and HOW.
| Section | Purpose | |---------|---------| | Tech Stack | Framework, language, key dependencies | | Commands | Build, test, run commands | | Project Structure | Directory overview with purposes | | Conventions | Naming, patterns used project-wide | | Boundaries | What Claude can/cannot edit |
# [Project Name] Last verified: [DATE - use `date +%Y-%m-%d`] ## Tech Stack - Language: TypeScript 5.x - Framework: Next.js 14 - Database: PostgreSQL - Testing: Vitest ## Commands - `npm run dev` - Start dev server - `npm run test` - Run tests - `npm run build` - Production build ## Project Structure - `src/domains/` - Domain modules (auth, billing, etc.) - `src/shared/` - Cross-cutting utilities - `src/infrastructure/` - External adapters (DB, APIs) ## Conventions - Functional Core / Imperative Shell pattern - Domain modules are self-contained - See domain CLAUDE.md files for domain-specific guidance ## Boundaries - Safe to edit: `src/` - Never touch: `migrations/` (immutable), `*.lock` files
Focuses on WHY and CONTRACTS. The code shows WHAT; these files explain intent.
| Section | Purpose | |---------|---------| | Purpose | WHY this domain exists (not what it does) | | Contracts | What this domain PROMISES to others | | Dependencies | What it uses, what uses it, boundaries | | Key Decisions | ADR-lite: decisions and rationale | | Invariants | Things that must ALWAYS be true | | Gotchas | Non-obvious traps |
# [Domain Name] Last verified: [DATE - use `date +%Y-%m-%d`] ## Purpose [1-2 sentences: WHY this domain exists, what problem it solves] ## Contracts - **Exposes**: [public interfaces - what callers can use] - **Guarantees**: [promises this domain keeps] - **Expects**: [what callers must provide] ## Dependencies - **Uses**: [domains/services this depends on] - **Used by**: [what depends on this domain] - **Boundary**: [what should NOT be imported here] ## Key Decisions - [Decision]: [Rationale] ## Invariants - [Thing that must always be true] ## Key Files - `index.ts` - Public exports - `types.ts` - Domain types - `service.ts` - Main service implementation ## Gotchas - [Non-obvious thing that will bite you]
# Auth Domain Last verified: 2025-12-17 ## Purpose Ensures user identity is verified exactly once at the system edge. All downstream services trust the auth token without re-validating. ## Contracts - **Exposes**: `validateToken(token) → User | null`, `createSession(credentials) → Token` - **Guarantees**: Tokens expire after 24h. User objects always include roles. - **Expects**: Valid JWT format. Database connection available. ## Dependencies - **Uses**: Database (users table), Redis (session cache) - **Used by**: All API routes, billing domain (user identity only) - **Boundary**: Do NOT import from billing, notifications, or other domains ## Key Decisions - JWT over session cookies: Stateless auth for horizontal scaling - bcrypt cost 12: Legacy decision, migration to argon2 tracked in ADR-007 ## Invariants - Every user has exactly one primary email - Deleted users are soft-deleted (is_deleted), never hard deleted - User IDs are UUIDs, never sequential ## Key Files - `service.ts` - AuthService implementation - `tokens.ts` - JWT creation/validation - `types.ts` - User, Token, Session types ## Gotchas - Token validation returns null on invalid (doesn't throw) - Never return raw password hashes in User objects
Every CLAUDE.md MUST include a "Last verified" date.
**CRITICAL:** Use Bash to get the actual date. Do NOT hallucinate dates.
date +%Y-%m-%d
Include in file:
Last verified: 2025-12-17
**Why mandatory:** Stale CLAUDE.md files are worse than none. The date signals when contracts were last confirmed accurate.
You can reference key files in CLAUDE.md:
## Key Files - `index.ts` - Public exports - `service.ts` - Main implementation
**Do NOT use @ syntax** (e.g., `@./service.ts`). This force-loads files into context, burning tokens. Just name the files; Claude can read them when needed.
Ed's repo of Claude Code plugins, centered around a research-plan-implement workflow. Only a tiny bit cursed. If you're lucky.
Repo: ed3dai/ed3d-plugins
Use when analyzing a large corpus of text, code, or data that exceeds a single agent's effective context - orchestrates parallel Worker subagents, Critic…
Use when creating a new Claude Code plugin or setting up plugin structure - provides complete file organization, manifest format, and component definitions for…
Use when creating specialized subagents for Claude Code plugins or the Task tool - covers description writing for auto-delegation, tool selection, prompt…
Use when creating, releasing, or maintaining a Claude Code Plugin Marketplace - covers marketplace.json schema, version management, release checklists,…
Use when completing development phases or branches to identify and update CLAUDE.md or AGENTS.md files that may have become stale - analyzes what changed,…