$npx -y skills add jamditis/claude-skills-journalism --skill project-memoryGenerate CLAUDE.md project memory files that transfer institutional knowledge, not obvious information. Use when setting up new journalism projects, onboarding collaborators, or documenting project-specific quirks. Includes templates for editorial tools, event websites, publicati
| 1 | # Project memory generator |
| 2 | |
| 3 | Create CLAUDE.md files that transfer institutional knowledge, not obvious information. Think like a senior journalist onboarding a competent colleague — you don't explain how journalism works, you explain YOUR project's quirks. |
| 4 | |
| 5 | ## CLAUDE.md is advisory, not enforced |
| 6 | |
| 7 | Anthropic is explicit on this point: CLAUDE.md content is delivered as a user message after the system prompt. Claude reads it and tries to follow it, but there's no guarantee of strict compliance — especially with vague or conflicting instructions. Source: https://code.claude.com/docs/en/memory |
| 8 | |
| 9 | This affects how you write a CLAUDE.md and what you put elsewhere: |
| 10 | |
| 11 | | Mechanism | Use for | Source-of-truth | |
| 12 | |---|---|---| |
| 13 | | **CLAUDE.md** | Standing facts, conventions, "always do X" rules | Advisory | |
| 14 | | **Skills** | Multi-step procedures, on-demand workflows | Loaded when invoked | |
| 15 | | **Hooks** | Actions that must happen every time, no exceptions | Deterministic — runs as a shell command (e.g., `hooks/one-way-door-check.md`) or as a prompt the harness enforces (e.g., `hooks/enforce-test-first.md`) | |
| 16 | |
| 17 | If an instruction is "block writes to `published/`" or "run accessibility check before commit," that belongs in a hook, not CLAUDE.md. If it's "fact-check workflow" or "FOIA-letter drafting," that's a skill. CLAUDE.md is the place for things Claude must hold in every session. |
| 18 | |
| 19 | ## What belongs in CLAUDE.md |
| 20 | |
| 21 | Anthropic publishes an explicit include/exclude table for what makes an effective CLAUDE.md. Source: https://code.claude.com/docs/en/best-practices |
| 22 | |
| 23 | | ✅ Include | ❌ Exclude | |
| 24 | |---|---| |
| 25 | | Bash commands Claude can't guess | Anything Claude can figure out by reading code | |
| 26 | | Code style rules that differ from defaults | Standard language conventions Claude already knows | |
| 27 | | Testing instructions and preferred test runners | Detailed API documentation (link to docs instead) | |
| 28 | | Repository etiquette (branch naming, PR conventions) | Information that changes frequently | |
| 29 | | Architectural decisions specific to your project | Long explanations or tutorials | |
| 30 | | Developer environment quirks (required env vars) | File-by-file descriptions of the codebase | |
| 31 | | Common gotchas or non-obvious behaviors | Self-evident practices like "write clean code" | |
| 32 | |
| 33 | For journalism projects, translate to: |
| 34 | |
| 35 | - **Include:** AP-style preferences that override defaults, "always cite source URLs," byline policy, embargo handling, source-protection invariants, CMS quirks (e.g., "story slugs must be unique across ALL desks, not just metro"). |
| 36 | - **Exclude:** "We verify facts before publishing" (every journalist knows this), "use AP Style" without specifics (every journalism stack does this), framework documentation, generic git commands. |
| 37 | |
| 38 | ## The deletion test |
| 39 | |
| 40 | For every line you write, ask: "Would removing this cause Claude to make mistakes?" If not, cut it. |
| 41 | |
| 42 | ## Size guidance: target under 200 lines |
| 43 | |
| 44 | Anthropic's explicit guidance as of 2026: target under 200 lines per CLAUDE.md file. Longer files consume more context and reduce adherence. Bloated CLAUDE.md files cause Claude to ignore the actual rules. Source: https://code.claude.com/docs/en/best-practices |
| 45 | |
| 46 | Going over 200 lines is a signal to use one of these instead: |
| 47 | |
| 48 | - **`.claude/rules/` with `paths:` frontmatter** — file-pattern-scoped rules that load only when Claude works with matching files. Replaces `@import` chains as the size-management mechanism. (Note: `@imports` no longer help with context size — Anthropic explicitly notes that imports load fully at launch.) |
| 49 | - **Skills** — for multi-step procedures that don't need to be in every session. |
| 50 | - **Hooks** — for deterministic enforcement. |
| 51 | |
| 52 | ## Where to put CLAUDE.md files |
| 53 | |
| 54 | CLAUDE.md location precedence (more specific wins). Source: https://code.claude.com/docs/en/memory |
| 55 | |
| 56 | | Scope | Location | Use case | |
| 57 | |---|---|---| |
| 58 | | **Managed policy** | Linux/WSL: `/etc/claude-code/CLAUDE.md`<br/>macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`<br/>Windows: `C:\Program Files\ClaudeCode\CLAUDE.md` | Org-wide standards (IT/DevOps managed; cannot be excluded by individual settings) | |
| 59 | | **Project** | `./CLAUDE.md` OR `./.claude/CLAUDE.md` | Team-shared instructions (check into git) | |
| 60 | | **User** | `~/.claude/CLAUDE.md` | Personal preferences across all projects | |
| 61 | | **Local** | `./CLAUDE.local.md` | Personal project-specific notes (add to `.gitignore`) | |
| 62 | |
| 63 | The `./.claude/CLAUDE.md` location and managed-policy tier are 2026 additions to Anthropic's documented locations. Templates that say "put this at project root" should mention `./.claude/CLAUDE.md` as an equally valid location. |
| 64 | |
| 65 | ## AGENTS.md |