docs(claude): standardize CLAUDE.md — drop Karpathy block (now global), keep Steev-specific invariants
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
a403c733fd
commit
fdd434c559
96
CLAUDE.md
96
CLAUDE.md
@ -1,87 +1,37 @@
|
|||||||
# Working Principles
|
# steev
|
||||||
|
|
||||||
## 1. Think Before Coding
|
|
||||||
|
|
||||||
Don't assume. Don't hide confusion. Surface tradeoffs.
|
|
||||||
|
|
||||||
Before implementing:
|
|
||||||
|
|
||||||
- State your assumptions explicitly. If uncertain, ask.
|
|
||||||
- If multiple interpretations exist, present them — don't pick silently.
|
|
||||||
- If a simpler approach exists, say so. Push back when warranted.
|
|
||||||
- If something is unclear, stop. Name what's confusing. Ask.
|
|
||||||
|
|
||||||
## 2. Simplicity First
|
|
||||||
|
|
||||||
Minimum code that solves the problem. Nothing speculative.
|
|
||||||
|
|
||||||
- No features beyond what was asked.
|
|
||||||
- No abstractions for single-use code.
|
|
||||||
- No "flexibility" or "configurability" that wasn't requested.
|
|
||||||
- No error handling for impossible scenarios.
|
|
||||||
- If you write 200 lines and it could be 50, rewrite it.
|
|
||||||
|
|
||||||
Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes, simplify.
|
|
||||||
|
|
||||||
## 3. Surgical Changes
|
|
||||||
|
|
||||||
Touch only what you must. Clean up only your own mess.
|
|
||||||
|
|
||||||
When editing existing code:
|
|
||||||
|
|
||||||
- Don't "improve" adjacent code, comments, or formatting.
|
|
||||||
- Don't refactor things that aren't broken.
|
|
||||||
- Match existing style, even if you'd do it differently.
|
|
||||||
- If you notice unrelated dead code, mention it — don't delete it.
|
|
||||||
|
|
||||||
When your changes create orphans:
|
|
||||||
|
|
||||||
- Remove imports/variables/functions that your changes made unused.
|
|
||||||
- Don't remove pre-existing dead code unless asked.
|
|
||||||
|
|
||||||
The test: Every changed line should trace directly to the user's request.
|
|
||||||
|
|
||||||
## 4. Goal-Driven Execution
|
|
||||||
|
|
||||||
Define success criteria. Loop until verified.
|
|
||||||
|
|
||||||
Transform tasks into verifiable goals:
|
|
||||||
|
|
||||||
- "Add validation" → "Write tests for invalid inputs, then make them pass"
|
|
||||||
- "Fix the bug" → "Write a test that reproduces it, then make it pass"
|
|
||||||
- "Refactor X" → "Ensure tests pass before and after"
|
|
||||||
|
|
||||||
For multi-step tasks, state a brief plan.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# Steev Profile Distribution
|
|
||||||
|
|
||||||
**Hermes classification:** profile distribution
|
**Hermes classification:** profile distribution
|
||||||
|
*Inherits Karpathy 4 rules from `~/.claude/CLAUDE.md` — read them before coding.*
|
||||||
|
|
||||||
## What this repo is
|
## What this is
|
||||||
|
|
||||||
Steev — JP's personal assistant / chief of staff. Daily briefing, inbox triage, comms drafting in JP's voice, delegate business work to CEO. French/English bilingual.
|
Steev — JP's personal assistant / chief of staff. Daily briefing, inbox triage, comms drafting in JP's voice, delegate business work to CEO. French/English bilingual. Sole chat touchpoint for JP.
|
||||||
|
|
||||||
## Key invariants
|
## Hard rules
|
||||||
|
|
||||||
- Steev drafts communications in JP's voice — NOT in Plan B brand voice (that's CMO)
|
- Steev drafts in JP's voice — NEVER in Plan B brand voice (that's CMO's domain)
|
||||||
- Business tasks → delegate to CEO, never execute directly
|
- Business tasks → delegate to CEO via kanban, never execute directly
|
||||||
- No access to Plan B marketing platform credentials
|
- No access to Plan B marketing platform credentials (CMO-only)
|
||||||
- JP voice card lives at `skills/steev-agent/jp-voice.md` (create when JP provides samples)
|
- JP voice card lives at `skills/steev-agent/jp-voice.md` (create when JP provides samples)
|
||||||
- `steev.db` is never committed — created by `install.sh`, managed at runtime
|
- `steev.db` is never committed — created by `install.sh`, managed at runtime
|
||||||
|
- Obsidian vault = visual PKM at `~/vaults/steev` (Steev-only; CMO/CEO never touch it)
|
||||||
|
|
||||||
## Structure
|
## Structure
|
||||||
|
|
||||||
```
|
```
|
||||||
steev/
|
steev/
|
||||||
├── manifest.yaml
|
├── manifest.yaml # profile: steev, kind: profile-distribution
|
||||||
├── AGENT.md
|
├── AGENT.md # Steev identity
|
||||||
├── CLAUDE.md
|
├── install.sh # idempotent installer → ~/.hermes/steev symlink
|
||||||
├── install.sh
|
├── skills/
|
||||||
├── skills/steev-agent/
|
│ ├── steev-agent/ # orchestrator skill (SKILL.md = source of truth)
|
||||||
│ └── SKILL.md
|
│ └── obsidian-pkm/ # vault map + capture/triage conventions
|
||||||
├── schema.sql
|
├── schema.sql # steev.db schema
|
||||||
└── docs/
|
└── docs/ # STEEV-MASTER.md
|
||||||
└── STEEV-MASTER.md
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Gotchas
|
||||||
|
|
||||||
|
- JP voice ≠ Plan B brand voice. Confusing the two = "voice leak" (founder voice in customer-facing copy or vice versa)
|
||||||
|
- Vault synced steev↔macbook via Syncthing (folder `steev-vault`); `.stignore` blocks `.obsidian/workspace*.json` + `.git`
|
||||||
|
- Reuse existing core skills (google-workspace, apple-notes, apple-reminders, obsidian) — only BUILD what doesn't exist (daily-briefing, inbox-triage, comms-drafting)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user