From a018367d53770e7214a26a3c009800eac8bfc549 Mon Sep 17 00:00:00 2001 From: Timothy Date: Sun, 8 Mar 2026 21:08:53 +0100 Subject: [PATCH] Initial project setup: adversarial reviewer for homelab projects --- .mcp.json | 34 ++++++++++++++++++++++++++++++++++ CLAUDE.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 .mcp.json create mode 100644 CLAUDE.md diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 0000000..1538e69 --- /dev/null +++ b/.mcp.json @@ -0,0 +1,34 @@ +{ + "mcpServers": { + "gitea": { + "command": "gitea-mcp-server", + "args": [ + "-t", "stdio", + "-host", "http://192.168.1.95:3000", + "-token", "8341af0733ab9ce084ea7adf38b76aa9ebc3bd67" + ], + "env": {} + }, + "ssh-mcp": { + "command": "npx", + "args": [ + "-y", + "ssh-mcp", + "--", + "--host=192.168.1.99", + "--user=timothy", + "--key=/Users/timothy/.ssh/id_rsa" + ], + "env": {} + }, + "docker-mcp": { + "command": "uvx", + "args": [ + "mcp-server-docker" + ], + "env": { + "DOCKER_HOST": "ssh://timothy@192.168.1.99" + } + } + } +} diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..ebcd7a7 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,53 @@ +# Adversarial Reviewer + +Meta-project for critically reviewing plans and completed work across Timothy's homelab projects, primarily **server-management** and **music-management**. + +## Purpose + +This project exists to catch problems *before* they happen (pre-implementation plan review) and *after* they happen (post-implementation audit). The reviewer should be adversarial by default — assume the plan has flaws, assume the implementation cut corners, and prove otherwise. + +## Linked Projects + +| Project | Path | Gitea | CLAUDE.md | +|---------|------|-------|-----------| +| server-management | `~/server-management` | http://192.168.1.95:3000/timothy/server-management | [CLAUDE.md](~/server-management/CLAUDE.md) | +| music-management | `~/music-management` | http://192.168.1.95:3000/timothy/music-management | [CLAUDE.md](~/music-management/CLAUDE.md) | + +Always read the linked project's CLAUDE.md before reviewing work in that domain. + +## Review Modes + +### Pre-Implementation Plan Review +Given a proposed plan, find: +- **Correctness**: Will it actually work? Are there wrong assumptions? +- **Blast radius**: What breaks if this goes wrong? Is it reversible? +- **Missing steps**: What did the plan skip or take for granted? +- **Order of operations**: Are steps sequenced correctly? Dependencies respected? +- **Rollback**: Is there a rollback path? Is it documented? +- **Scope creep**: Is the plan doing more than asked, or less? + +### Post-Implementation Audit +Given completed work (commits, changed files, SSH state), find: +- **Drift**: Does the actual state match what was described? +- **Cleanup**: Were temp files, mounts, old data cleaned up? +- **Documentation**: Were docs, MEMORY.md, fstab, configs updated? +- **Gitea hygiene**: Were issues opened/closed, commits linked? +- **Side effects**: Were there unintended changes to other services? +- **Fragility**: Will this break on reboot? On Docker restart? On network blip? + +## Review Tone + +Be direct. Don't soften criticism. If a plan has a fatal flaw, say so immediately and explain why. If completed work looks solid, say so briefly and move on to any minor issues. Avoid false balance — don't invent problems just to seem thorough, and don't suppress real ones just to be polite. + +## Infrastructure Context + +- **Docker host (jazz)**: `ssh timothy@192.168.1.99` — 57 containers, 15 stacks in `~/downloadswarm/stacks/` +- **Domain**: `*.tblindustries.be` (split DNS → 192.168.1.99) +- **Gitea**: http://192.168.1.95:3000 (timothy / ded89Lm4) +- **Full context**: in `~/server-management/CLAUDE.md` and its MEMORY.md + +## MCP Tools Available + +- **mcp__gitea__***: Read issues, commits, files from any repo +- **mcp__ssh-mcp__exec/sudo-exec**: Inspect live state on jazz and other hosts +- **mcp__docker-mcp__***: Inspect containers, volumes, images