feat: carry CLAUDE.md and AGENTS.md in the public tier
Phase 3 excluded all of dot_claude/, but the plan always intended CLAUDE.md to be the one agent file that ships publicly. Adds it plus the codex and pi AGENTS.md, so a throwaway VM gets sane agent behaviour with no credential. Specialized agents, skills, hooks and the language rule sets are deliberately absent -- they live in a separate repository now. The Active Rule Sets section is rewritten to say so rather than dangle a reference to a rules/ tree this repo does not carry. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# Global Claude Configuration
|
||||
|
||||
## Tool Preferences
|
||||
|
||||
### Search & Navigation
|
||||
- **Always use ripgrep** (`rg`) over grep for code search - it's faster and respects .gitignore
|
||||
- **Use Grep tool** with specific patterns, not broad searches. Prefer `output_mode: "content"` with context lines when you need to understand surrounding code
|
||||
- **Use Glob** for finding files by pattern, not `find` command
|
||||
- **Prefer LSP** when available for: go-to-definition, find-references, rename symbols. The pyright-lsp and gopls-lsp plugins are enabled.
|
||||
|
||||
### Code Manipulation
|
||||
- **Read before editing** - always read the full file (or relevant section) before making changes
|
||||
- **Use code structure** over text patterns when possible:
|
||||
- For function signatures: search for `func Name(` or `def name(`
|
||||
- For type definitions: search for `type X struct` or `class X` or `interface X`
|
||||
- For imports: check the import block at file top
|
||||
- **Atomic edits** - make the smallest edit that accomplishes the goal. Don't rewrite surrounding code.
|
||||
|
||||
## Code Quality
|
||||
- Prefer correct, complete implementations over minimal ones.
|
||||
- Use appropriate data structures and algorithms — don't brute-force what has a known better solution.
|
||||
- When fixing a bug, fix the root cause, not the symptom.
|
||||
- If something I asked for requires error handling or validation to work reliably, include it without asking.
|
||||
|
||||
|
||||
### Verification
|
||||
- **Every change needs verification** - this is non-negotiable
|
||||
- Verification can be:
|
||||
- Running existing tests: `go test`, `pytest`, `npm test`
|
||||
- Running a specific command that exercises the change
|
||||
- Building the project to catch type/compile errors
|
||||
- For frontend: screenshot comparison or playwright test
|
||||
- **State verification method explicitly** in plans before implementing
|
||||
|
||||
### MCP Tools
|
||||
- **Playwright** - use for frontend verification, taking screenshots, testing user flows
|
||||
- Use MCP tools when they provide better precision than shell commands
|
||||
|
||||
|
||||
|
||||
## Workflow Principles
|
||||
|
||||
### Research First
|
||||
Before proposing changes to unfamiliar code:
|
||||
1. Identify the relevant files and their relationships
|
||||
2. Understand existing patterns in that area
|
||||
3. Check for similar implementations elsewhere in the codebase
|
||||
4. Look for tests that document expected behavior
|
||||
|
||||
### Preserve Context
|
||||
- Use subagents for exploratory searches (they don't pollute parent context)
|
||||
- Compress findings into structured summaries
|
||||
|
||||
## Active Rule Sets
|
||||
Language rule sets, specialized agents, skills and hooks are **not** in this
|
||||
repo. They live in a separate repository and are installed independently. This
|
||||
file is deliberately limited to system-level conventions that should hold on
|
||||
any machine, including a throwaway one with nothing else configured.
|
||||
|
||||
## Shell
|
||||
- Use zsh syntax when writing shell scripts or commands
|
||||
- ~/.zshrc for shell configuration
|
||||
|
||||
## Anti-Patterns (Do Not)
|
||||
- Don't search broadly then read dozens of files - be precise
|
||||
- Don't make changes without reading the code first
|
||||
- Don't skip verification
|
||||
- Don't rewrite code that doesn't need to change
|
||||
- Don't add comments, docstrings, or type annotations to unchanged code
|
||||
|
||||
## Obsidian vaults
|
||||
|
||||
Two vaults, both on PATH-accessible tooling, both the user's long-term memory:
|
||||
|
||||
- **`vault`** (CLI) + the **`obsidian-notes`** skill — everything except host changes.
|
||||
`vault search <terms>` is the **recall** path: run it before answering from
|
||||
scratch about a work project or customer, the user's machines and home
|
||||
network, or anything they may have solved before. `vault append` to add to an
|
||||
existing note, `vault new` for a genuinely new subject. See the skill for the
|
||||
full protocol and guardrails.
|
||||
- **`sysjournal`** — host/environment changes only (below).
|
||||
|
||||
`~/Documents/Obsidian25` is the frozen pre-split original. **Never write to it.**
|
||||
|
||||
### System Knowledge Journal (sysjournal)
|
||||
|
||||
Maintain a running journal of **host/environment** changes in the Obsidian vault at `Tech/Infrastructure/`, using the shared `sysjournal` helper (on PATH). This is for *system administration*, NOT ordinary work inside a code repo.
|
||||
|
||||
**Trigger — the task changes the machine/environment, not just repo code:** system config; services/daemons (systemd/launchd/cron); networking/DNS/VPN/firewall; VMs & host-level containers; drivers/kernel/boot; disks/mounts; build toolchains & global/system package installs; or **wiring an app into the host** (a systemd unit, cron job, opened port, service account).
|
||||
|
||||
**Do NOT journal** feature work, bug fixes, refactors, or tests *inside* a project repo. Discriminator: *does it change state outside the repo, on the host?* If no → skip. **Straddle case** (you build an app **and** install it as a service): journal only the **host-wiring** part (the unit/cron/port), not the app code.
|
||||
|
||||
1. **Recall first.** Before diagnosing or acting on such a task, search the journal and read relevant hits:
|
||||
`sysjournal search <keywords>` (e.g. `sysjournal search systemd relay port`)
|
||||
2. **Journal after.** Once the change is made or the problem resolved:
|
||||
`sysjournal new "Short Descriptive Title" --type change --status deployed --tags systemd,relay`
|
||||
Then fill in the created note (its path is printed): **Why**, **What changed**, **Design decisions / gotchas**, **Verify** (command + observed result), **Status / follow-ups**. Link related notes with `[[wikilinks]]`.
|
||||
|
||||
Keep it a real record — what changed, why, the gotcha you hit, how you verified. `sysjournal help` for the frontmatter schema (the `System Log MOC.md` Dataview index depends on it).
|
||||
@@ -0,0 +1,105 @@
|
||||
# Global Codex Configuration
|
||||
|
||||
## Tool Preferences
|
||||
|
||||
### Search And Navigation
|
||||
- Always use `rg` over `grep` for code search.
|
||||
- Prefer narrow searches over broad sweeps.
|
||||
- Use precise file globs and code-aware navigation when available.
|
||||
- Prefer MCP tools when they provide better precision than shell commands.
|
||||
|
||||
### Code Manipulation
|
||||
- Read the relevant code before editing.
|
||||
- Prefer structural understanding over blind text replacement.
|
||||
- Make the smallest change that solves the problem.
|
||||
- Do not rewrite surrounding code without a concrete reason.
|
||||
|
||||
### Verification
|
||||
- Every change needs verification.
|
||||
- Verification can be tests, a build, a targeted command, or frontend validation with Playwright.
|
||||
- For non-trivial work, state the verification method before implementing.
|
||||
|
||||
## Language Patterns
|
||||
|
||||
### Python
|
||||
- Prefer `black` or `ruff format` for formatting.
|
||||
- Prefer `ruff` for linting.
|
||||
- Use type hints on public code.
|
||||
- Prefer `pytest`.
|
||||
- Check for `.venv/` or `venv/` before assuming interpreter paths.
|
||||
|
||||
### Go
|
||||
- Use `gofmt`.
|
||||
- Prefer `go vet` for linting and `go test ./...` for verification.
|
||||
- Check `go.mod` for module structure.
|
||||
- Do not ignore errors with `_` unless there is a defensible reason.
|
||||
|
||||
### TypeScript
|
||||
- Prefer `prettier` and `eslint` when present.
|
||||
- Check `package.json` for the repo's actual test and build commands.
|
||||
- Check `tsconfig.json` before changing compiler-sensitive code.
|
||||
- Prefer strict typing patterns.
|
||||
|
||||
## Workflow Principles
|
||||
|
||||
### Research First
|
||||
Before changing unfamiliar code:
|
||||
1. Identify the relevant files and relationships.
|
||||
2. Understand the local pattern in that area.
|
||||
3. Check for similar implementations elsewhere.
|
||||
4. Look for tests that define expected behavior.
|
||||
|
||||
### Plan Before Implement
|
||||
For non-trivial work:
|
||||
1. State what is changing and why.
|
||||
2. Name the files or components likely to change.
|
||||
3. Define how the change will be verified.
|
||||
4. Note obvious risks or breakpoints.
|
||||
|
||||
### Preserve Context
|
||||
- Keep findings compressed and structured.
|
||||
- Reuse existing project artifacts like `.claude/progress.md`, `PITFALLS.md`, and project `CLAUDE.md` when they exist.
|
||||
- If a repo already uses `.claude/` planning or checkpoint files, continue to respect them rather than inventing a second system.
|
||||
|
||||
## Session Workflow
|
||||
|
||||
### Starting A Session
|
||||
1. Check for `.claude/progress.md` and load it as prior context when present.
|
||||
2. Read `PITFALLS.md` if present.
|
||||
3. Read project instructions from `AGENTS.md`. Codex is also configured to treat project `CLAUDE.md` as a fallback instruction file.
|
||||
|
||||
### During Work
|
||||
- Research unfamiliar areas before editing.
|
||||
- Make plans for non-trivial work.
|
||||
- Review changes before commit when risk is non-trivial.
|
||||
|
||||
### Ending A Session
|
||||
- If the repo uses `.claude/progress.md`, update it when useful.
|
||||
- If there are uncommitted changes, leave the next session enough context to resume cleanly.
|
||||
|
||||
## Shell
|
||||
- Use zsh-compatible syntax when writing shell commands or scripts.
|
||||
- Assume `~/.zshrc` can affect shell behavior.
|
||||
|
||||
## Anti-Patterns
|
||||
- Do not search broadly and read dozens of files without narrowing scope.
|
||||
- Do not change code before understanding the local pattern.
|
||||
- Do not skip verification.
|
||||
- Do not rewrite code that does not need to change.
|
||||
- Do not add comments, docstrings, or annotations to untouched code without a clear reason.
|
||||
|
||||
## System Knowledge Journal (Obsidian)
|
||||
|
||||
Maintain a running journal of **host/environment** changes in the Obsidian vault at `Tech/Infrastructure/`, using the shared `sysjournal` helper (on PATH). This is for *system administration*, NOT ordinary work inside a code repo.
|
||||
|
||||
**Trigger — the task changes the machine/environment, not just repo code:** system config; services/daemons (systemd/launchd/cron); networking/DNS/VPN/firewall; VMs & host-level containers; drivers/kernel/boot; disks/mounts; build toolchains & global/system package installs; or **wiring an app into the host** (a systemd unit, cron job, opened port, service account).
|
||||
|
||||
**Do NOT journal** feature work, bug fixes, refactors, or tests *inside* a project repo. Discriminator: *does it change state outside the repo, on the host?* If no → skip. **Straddle case** (you build an app **and** install it as a service): journal only the **host-wiring** part (the unit/cron/port), not the app code.
|
||||
|
||||
1. **Recall first.** Before diagnosing or acting on such a task, search the journal and read relevant hits:
|
||||
`sysjournal search <keywords>` (e.g. `sysjournal search systemd relay port`)
|
||||
2. **Journal after.** Once the change is made or the problem resolved:
|
||||
`sysjournal new "Short Descriptive Title" --type change --status deployed --tags systemd,relay`
|
||||
Then fill in the created note (its path is printed): **Why**, **What changed**, **Design decisions / gotchas**, **Verify** (command + observed result), **Status / follow-ups**. Link related notes with `[[wikilinks]]`.
|
||||
|
||||
Keep it a real record — what changed, why, the gotcha you hit, how you verified. `sysjournal help` for the frontmatter schema (the `System Log MOC.md` Dataview index depends on it).
|
||||
@@ -0,0 +1,25 @@
|
||||
# Global Pi Configuration
|
||||
|
||||
Global instructions for the Pi coding agent, shared with the Claude Code and
|
||||
Codex setups on this machine. Project-level `AGENTS.md` / `CLAUDE.md` files take
|
||||
precedence for project-specific work.
|
||||
|
||||
## Shell
|
||||
- Use zsh-compatible syntax when writing shell commands or scripts.
|
||||
- Assume `~/.zshrc` can affect shell behavior.
|
||||
|
||||
## System Knowledge Journal (Obsidian)
|
||||
|
||||
Maintain a running journal of **host/environment** changes in the Obsidian vault at `Tech/Infrastructure/`, using the shared `sysjournal` helper (on PATH). This is for *system administration*, NOT ordinary work inside a code repo.
|
||||
|
||||
**Trigger — the task changes the machine/environment, not just repo code:** system config; services/daemons (systemd/launchd/cron); networking/DNS/VPN/firewall; VMs & host-level containers; drivers/kernel/boot; disks/mounts; build toolchains & global/system package installs; or **wiring an app into the host** (a systemd unit, cron job, opened port, service account).
|
||||
|
||||
**Do NOT journal** feature work, bug fixes, refactors, or tests *inside* a project repo. Discriminator: *does it change state outside the repo, on the host?* If no → skip. **Straddle case** (you build an app **and** install it as a service): journal only the **host-wiring** part (the unit/cron/port), not the app code.
|
||||
|
||||
1. **Recall first.** Before diagnosing or acting on such a task, search the journal and read relevant hits:
|
||||
`sysjournal search <keywords>` (e.g. `sysjournal search systemd relay port`)
|
||||
2. **Journal after.** Once the change is made or the problem resolved:
|
||||
`sysjournal new "Short Descriptive Title" --type change --status deployed --tags systemd,relay`
|
||||
Then fill in the created note (its path is printed): **Why**, **What changed**, **Design decisions / gotchas**, **Verify** (command + observed result), **Status / follow-ups**. Link related notes with `[[wikilinks]]`.
|
||||
|
||||
Keep it a real record — what changed, why, the gotcha you hit, how you verified. `sysjournal help` for the frontmatter schema (the `System Log MOC.md` Dataview index depends on it).
|
||||
Reference in New Issue
Block a user