Files
apes/CLAUDE.md
limiteinductive 1bbe852fd2 add git workflow docs, flatten skills, onboard neeraj
- flatten skill dirs (apes/critic → critic, apes/ax → ax)
- add Git/Gitea section to CLAUDE.md with auth and API patterns
- add Gitea API section to gcloud skill
- fix stale /apes:critic reference
- add "apes don't do tasks" rule

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 18:10:33 +02:00

82 lines
3.0 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## What This Is
`apes` is a post-singularity research platform. No SaaS. Everything vibecoded. Self-hosted on GCP.
**Research goal:** Prove that RL training an LLM on formal games (Game of Life, Chess, Go) transfers to general capabilities/benchmarks.
**Team:** Benji and Neeraj (the apes). Claude Code agents are first-class collaborators.
## Infrastructure
| Service | URL | VM | Zone |
|---------|-----|----|----|
| Gitea | git.unslope.com | gitea-vm | europe-west1-b |
| Chat (planned) | apes.unslope.com | TBD | europe-west1-b |
**GCP project:** `apes-platform`
**Region:** `europe-west1`
**DNS:** Namecheap (Advanced DNS tab for A records)
## Non-Negotiable Rules
- **Apes don't do tasks.** Users of this repo are apes. Never ask them to do something you can do yourself. DNS config, API calls, server setup, debugging — handle it. If it requires a browser or a password the ape hasn't shared, explain what you need and why, but never punt work back to the ape when you have the tools to do it.
- **No SaaS.** If we can't self-host it, we don't use it.
- **Vibecoded.** Humans direct, agents build. Move fast, verify correctness.
- **GCP project is `apes-platform`.** Always pass `--project=apes-platform`.
- **Region is `europe-west1`.** Zone `europe-west1-b` unless there's a reason to change.
## Route By Task
| Need | Load |
|------|------|
| GCP commands | `/gcloud` skill |
| Stress-test a decision | `/critic` skill |
| Audit agent config quality | `/ax` skill |
## Git (Gitea)
**URL:** https://git.unslope.com
**Repo:** `benji/apes`
**API:** `https://git.unslope.com/api/v1/`
| User | Role |
|------|------|
| benji | admin |
| neeraj | collaborator |
```bash
# Clone
git clone https://git.unslope.com/benji/apes.git
# Push (use API token for auth)
# Create token: curl -u user:pass -X POST https://git.unslope.com/api/v1/users/<user>/tokens -H 'Content-Type: application/json' -d '{"name":"cc","scopes":["all"]}'
# Then: git remote set-url origin https://<user>:<token>@git.unslope.com/benji/apes.git
# Create repo via API
curl -u user:pass -X POST https://git.unslope.com/api/v1/user/repos \
-H 'Content-Type: application/json' -d '{"name":"repo-name"}'
```
If DNS hasn't propagated, use `--resolve git.unslope.com:443:34.78.255.104` for curl or push via IP on port 3000 (open firewall temporarily).
## Deployment Pattern
All services run as Docker Compose on GCP Compute Engine VMs behind Caddy (auto HTTPS via Let's Encrypt).
```bash
# SSH into a VM
gcloud compute ssh <vm> --zone=europe-west1-b --project=apes-platform
# Manage services
sudo bash -c 'cd /opt/<service> && docker compose up -d'
sudo docker logs <container> --tail 50
```
## Critic Reflex
When something is surprising, contradictory, or your confidence is low, use the `/critic` skill before proceeding. Good triggers: vibecoded code behaving unexpectedly, multiple valid architectures, research methodology questions.