~/.claude β€” field notes

Seb's Claude Code Setup

A tour of one working configuration: the global CLAUDE.md rules, installed skills and plugins, and the harness plumbing (memory, hooks, MCP). Environment-specific details β€” hostnames, ports, IDs, account info β€” are marked redacted. Everything else is real and copyable.

directory map

Where things live

Claude Code reads configuration from a few well-known places. This setup uses all of them:

~/CLAUDE.md                     # global instructions, loaded every session
~/.claude/
β”œβ”€β”€ settings.json               # permissions, hooks, plugins, model
β”œβ”€β”€ rules/
β”‚   β”œβ”€β”€ projects.md             # taxonomy of every service I run (the fleet)
β”‚   └── reflections.md          # pointers to post-mortem write-ups
β”œβ”€β”€ skills/                     # ~35 skills, custom + third-party
β”œβ”€β”€ hooks/  scripts/            # hook scripts (PowerShell + bash)
β”œβ”€β”€ plugins/                    # marketplace plugins (superpowers, frontend-design)
β”œβ”€β”€ wiki/                       # per-service spec sheets ("LLM wiki")
└── projects/<cwd>/memory/      # persistent memory, one fact per file

The theme of the whole setup: put knowledge in files the model reads, and enforcement in hooks the harness runs. Instructions drift; hooks don't.

~/CLAUDE.md

The rules file, lightly redacted

This is the global CLAUDE.md, minus sections that only describe my private server environment. It's grown over months of corrections β€” nearly every rule exists because Claude once did the opposite.

Think before coding

Surgical changes

Goal-driven execution

Debugging discipline

Fail visibly

Test quality

Discipline (the greatest-hits section)

Communication preferences

Don't

Redacted from this copy: a "Server Environment" section (SSH aliases, tunnel topology, ports for a remote Linux box most work deploys to), service-management specifics (systemd conventions, a shared notification channel ID), and project-specific terminology. The pattern to steal: if you always work against the same environment, describe it once in CLAUDE.md β€” OS quirks, how to reach it, what not to do (e.g. "never attempt interactive sudo; generate a script I can run manually").

~/.claude/skills + ~/.claude/plugins

Skills & plugins

Skills are markdown playbooks Claude loads on demand (or via /slash-command). Mine split into three groups.

Plugins, from the official marketplace

pluginwhat it does
superpowersProcess discipline as skills: brainstorming before building, test-driven development, systematic debugging, verification-before-completion, plan writing/execution, subagent-driven development. The core idea: Claude must invoke the relevant process skill before acting, not after. Highest-leverage install on this list.
frontend-designAnthropic's guidance for distinctive, non-templated UI work β€” direction, typography, avoiding the "AI default look."

Install via /plugin β†’ browse the claude-plugins-official marketplace.

Third-party skill packs (dropped into ~/.claude/skills/)

skill(s)what it does
design-taste-frontend (v1 + v2)Anti-slop frontend skill for landing pages and redesigns β€” audit-first, real design systems, strict pre-flight checks.
high-end-visual-designPins the exact fonts, spacing, shadows, and card structure that make a page feel expensive; bans the cheap defaults.
gpt-tasteUX/motion engineering: GSAP scroll-triggers, editorial typography, bento grids, layout variance.
imagegen-frontend-web / -mobile, image-to-code, brandkitImage-generation direction skills: design references per section, mobile app concepts, brand boards; image-to-code implements from the generated comps.
minimalist-ui, industrial-brutalist-ui, stitch-design-taste, redesign-existing-projectsNamed aesthetic systems to reach for per-project instead of re-prompting taste every time.
full-output-enforcementBans placeholder/truncation patterns ("rest of code unchanged…") in generated output.
link-cli-*Vendor-shipped skills wrapping a payments CLI (auth, payment methods, spend requests) β€” an example of tools shipping their own skills.
deep-researchMulti-source research harness: fan-out searches, adversarial verification, cited synthesis.

Custom skills (the real unlock)

About 15 more are hand-written operational runbooks for my own fleet of services: /deploy (transfer + checksum + restart + log-check sequence), /health (read-only diagnosis of a live service), /remote-edit, /new-service (first-deploy checklist across every registration surface), /sunset (decommissioning sequence), /wiki-refresh, /grill-me (interviews me relentlessly about a plan before I build it), and an idea-queue pair (/idea, /queue).

Pattern: any procedure you've explained to Claude twice becomes a skill. Each one encodes the failure modes already hit once β€” e.g. the deploy skill exists because naive file transfer over SSH once zeroed out files.

~/.claude/projects/<cwd>/memory/

Memory system

Claude Code gives the model a persistent per-project memory directory. The convention: one fact per file, with frontmatter typing it as user (who I am), feedback (corrections β€” "you did X wrong, do Y, here's why"), project (ongoing work state), or reference (pointers). A MEMORY.md index β€” one line per memory β€” is what actually loads into context each session; bodies are read on demand.

---
name: feedback-verify-order-fills
description: Never assume an order filled β€” verify via position check
metadata:
  type: feedback
---
Never assume an order filled just because "open orders is empty".
**Why:** an order can vanish from the open list by being cancelled.
**How to apply:** confirm via a position or balance query after placing.

Currently ~100 memories: ~50 project state files, ~50 feedback files, a handful of reference pointers, plus two long-form "engineering reflection" post-mortems distilled from finished projects.

Recent work: making memory self-maintaining

Hand-maintained memory rots, so three hooks now automate the janitorial work:

Two conventions from CLAUDE.md complete the loop: when I correct Claude's approach, it must save a feedback memory in the same session; and when new facts refute an old memory, the old file gets a SUPERSEDED tombstone edited in immediately β€” "a correction buried below a wrong headline doesn't exist."

~/.claude/settings.json β†’ "hooks"

Hooks

Hooks are shell commands the harness runs at lifecycle events β€” the model can't skip them, which is exactly the point. Guardrails you'd otherwise write as instructions become mechanical:

eventhook
PreToolUse (Bash)age-gate β€” intercepts npm install / pip install and blocks packages published too recently (supply-chain caution: a brand-new version gets a cooling-off period).
PreToolUse (Bash/Edit/Write)shared-libs guard β€” warns before edits to the shared library that a dozen downstream services import.
PreToolUse (email send)confirmation gate β€” a password check before any tool call that actually sends email.
PostToolUse (Edit/Write)pytest reminder β€” nudges to run the suite after Python files change; memory index rebuild (see above).
PostToolUse (Bash)dep audit β€” flags dependency changes after shell commands.
NotificationDesktop toast when Claude needs attention.
SessionStart / SessionEndMemory lint / recall ledger (see above).
Rule of thumb: "from now on, always do X" requests belong in a hook, not in CLAUDE.md. The harness executes hooks deterministically; prose instructions compete with everything else in context.

settings.json / MCP / ~/.claude/wiki

Settings, MCP, and the wiki

settings.json highlights

{
  "permissions": { "allow": ["Read","Edit","Write","WebFetch","WebSearch","Bash(*)"],
                   "defaultMode": "auto" },   // trusted machine; hooks are the guardrails
  "effortLevel": "high",
  "enabledPlugins": { "superpowers": true, "frontend-design": true },
  "hooks": { /* …section above… */ }
}

Permissions are wide-open because the risky paths (package installs, shared-lib edits, email) are individually gated by hooks β€” allowlist coarse, guard fine.

MCP servers & connectors

The service wiki

The biggest custom piece: I run ~20 small always-on services (bots, screeners, monitors) on one server, and Claude operates all of them. ~/.claude/wiki/ holds one spec sheet per service β€” machine-readable frontmatter (unit name, ports, dependencies, data stores) plus a prose "decisions & gotchas" section. CLAUDE.md requires reading a service's page before non-trivial work on it, and a /wiki-refresh skill re-derives the frontmatter from live server state after big changes. A weekly lint job flags drift (new services without pages, stale entries, broken paths).

Alongside it, ~/.claude/rules/projects.md is a one-page taxonomy of every service β€” so "check on all the trading stuff" resolves to a concrete checklist instead of a guess.

closing notes

If you're starting from zero