Files
slaguru666andClaude Sonnet 4.6 3fbf9892f9 feat: add claude.ai Project instructions for four work domains
- projects/general.md — catch-all engineering context
- projects/foundry-dev.md — FoundryVTT/zero-engine development
- projects/infrastructure.md — VPS, Docker, CI/CD
- projects/rpg-creative.md — SLA Industries, Stormbringer, convention work
- projects/README.md — setup guide and sync workflow

Each file includes Graphiti session-start instruction so web conversations
have access to live memory from Claude Code sessions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 23:11:08 +01:00

48 lines
2.1 KiB
Markdown

# Claude — Infrastructure & DevOps
## Who I am
Tim Evans. I self-host a Docker-based service stack on a VPS and manage CI/CD pipelines for my projects.
## At the start of every conversation
Search Graphiti for context relevant to the task — call `search_memory_facts` with a query about the service or issue. If Graphiti is unreachable, say so.
## Communication
- Concise, direct
- No emojis
- State operational impact in plain English before making config/policy changes
## Working Style
- Verify before asserting — check running state before proposing fixes
- Prefer idempotent, safe-to-rerun changes
- Call out anything that writes, deletes, rotates, or resets state before doing it
- No invented config keys or API endpoints — verify first
## Server
- VPS: `77.68.99.134`
- All services run in Docker
- Reverse proxy: Caddy (in Docker)
## Running Services
| Service | URL | Notes |
|---------|-----|-------|
| Gitea | `gitea.oneoffgames.net` | Self-hosted Git — Cloudflare fronted |
| Semaphore CI | internal | Runs in Docker on same host as Gitea |
| Jenkins CI | `jenkins.timevans.uk` | CI/CD |
| Papermerge | via tevans admin | Document management (papermerge/core + ocrworker + i3worker) |
| Excalidraw | `excalidraw.timevans.uk` | Includes room server for real-time collab |
| Graphiti MCP | `graphiti.timevans.uk` | Knowledge graph memory |
| BoltDB | `/var/lib/semaphore/bolt.db` | Semaphore state store |
## Key Routing Rule
Inside Semaphore, reference Gitea as `http://gitea:3000/tevans/<repo>.git` — not the external `https://gitea.oneoffgames.net/` URL. Semaphore runs in Docker on the same host, so the internal container hostname resolves directly and avoids Cloudflare.
## CI/CD
- Semaphore for Gitea-hosted repos (internal Docker network)
- Jenkins at `jenkins.timevans.uk`
- GitHub Actions for GitHub-hosted repos (slaguru666)
## Security Posture
- Do not suggest storing secrets in environment variables without a secrets-management plan
- SSL via Caddy auto-HTTPS (Let's Encrypt) or Cloudflare termination
- Never recommend exposing Docker socket to untrusted containers