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>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
8addb676d0
commit
3fbf9892f9
@@ -0,0 +1,32 @@
|
|||||||
|
# Claude.ai Projects — Setup Guide
|
||||||
|
|
||||||
|
These files are the custom instructions for claude.ai Projects. Each Project gives the web/browser surface the same context that Claude Code gets from CLAUDE.md and memory files.
|
||||||
|
|
||||||
|
## Projects to create
|
||||||
|
|
||||||
|
| File | Project name | Use for |
|
||||||
|
|------|-------------|---------|
|
||||||
|
| `general.md` | General Engineering | Catch-all: scripting, tooling, anything that doesn't fit another project |
|
||||||
|
| `foundry-dev.md` | FoundryVTT Dev | zero-engine, modules, Foundry system/module work |
|
||||||
|
| `infrastructure.md` | Infrastructure | VPS, Docker, Gitea, CI/CD, server work |
|
||||||
|
| `rpg-creative.md` | RPG & Creative | SLA Industries writing, Stormbringer, convention prep |
|
||||||
|
|
||||||
|
## How to set up a Project
|
||||||
|
|
||||||
|
1. Go to claude.ai → **Projects** → **New Project**
|
||||||
|
2. Name it (use the names in the table above for consistency)
|
||||||
|
3. Open **Project Instructions** and paste the contents of the relevant `.md` file
|
||||||
|
4. Save
|
||||||
|
|
||||||
|
## Keeping Projects in sync
|
||||||
|
|
||||||
|
When `CLAUDE.md` or domain knowledge changes:
|
||||||
|
1. Update the relevant file in `projects/`
|
||||||
|
2. Run `./sync.sh` to commit and push
|
||||||
|
3. Manually paste the updated file into the Project's instructions on claude.ai
|
||||||
|
|
||||||
|
There's no API to push instructions automatically — this step stays manual.
|
||||||
|
|
||||||
|
## Why Graphiti matters here
|
||||||
|
|
||||||
|
Each instruction file starts with a Graphiti session-start call. Graphiti MCP is already connected to claude.ai, so every Project conversation has access to live memory — facts, decisions, project state — that Graphiti learned from Claude Code sessions. This is what makes the web surface dynamic rather than just static context.
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
# Claude — FoundryVTT Development
|
||||||
|
|
||||||
|
## Who I am
|
||||||
|
Tim Evans. I build FoundryVTT game systems and modules for SLA Industries and other games. GitHub: slaguru666. Gitea: `gitea.oneoffgames.net`.
|
||||||
|
|
||||||
|
## At the start of every conversation
|
||||||
|
Search Graphiti for context relevant to the task — call `search_memory_facts` with a query about the current system or feature. If Graphiti is unreachable, say so.
|
||||||
|
|
||||||
|
## Communication
|
||||||
|
- Concise, direct — lead with answer not reasoning
|
||||||
|
- No emojis unless asked
|
||||||
|
- Reference file:line when pointing to code
|
||||||
|
|
||||||
|
## Working Style
|
||||||
|
- Smallest correct change; no bundled refactors
|
||||||
|
- Read existing code first; match existing patterns
|
||||||
|
- No invented APIs or FoundryVTT APIs not verified in the codebase or docs
|
||||||
|
- Verify before asserting
|
||||||
|
|
||||||
|
## Primary System: zero-engine (SLA Industries)
|
||||||
|
- Foundry compatibility: v13+ (verified v14.361)
|
||||||
|
- Single source file: `zero-engine.mjs` (~6500 lines)
|
||||||
|
- System ID: `zero-engine`
|
||||||
|
- Version: 1.6.x (active development)
|
||||||
|
- Actor types: `character` (PC), `npc` — `vehicle` sheet exists but not registered
|
||||||
|
- Item types: weapon, armor, equipment, ammo, specialty, ebb
|
||||||
|
- Roll mechanic: Year Zero Engine — Attribute + Skill d6s, success on 6s
|
||||||
|
- Stress dice: adds banes (1s) to rolls; push costs +1 Stress
|
||||||
|
- 8 races: human, ebon, brainwaster, stormer, shaktar, wraithraider, frother, vevaphon
|
||||||
|
- 8 training packages applied at character creation
|
||||||
|
- Ebb (magic) system: flux resource, discipline-based formulae, catastrophe risk for Brain Wasters
|
||||||
|
- Vevaphon morph forms with instability table
|
||||||
|
- 14 status conditions with per-roll dice penalties
|
||||||
|
- Key modules embedded in system: sla-bpn-dispatch, sla-briefing-desk, sla-gear-cache, sla-npc-director, sla-ops-clock, sla-shift-ledger
|
||||||
|
- Repo: `https://github.com/slaguru666/zero-engine`
|
||||||
|
|
||||||
|
## Other Active Systems/Modules (GitHub: slaguru666)
|
||||||
|
- `sla-bpn-dispatch`, `sla-briefing-desk`, `sla-gear-cache`, `sla-npc-director`, `sla-ops-clock`, `sla-mothership-compendium`
|
||||||
|
- `npc-portrait-pack`, `npc-quick-cards`, `scifi-deckplan-generator`, `quick-battlemap-builder`
|
||||||
|
- `codex-ops-kit` — portable Claude ops kit
|
||||||
|
|
||||||
|
## Key Paths (Mac Mini)
|
||||||
|
- Systems: `~/FoundryVTT/Data/systems/<system-id>/`
|
||||||
|
- Modules: `~/FoundryVTT/Data/modules/<module-id>/`
|
||||||
|
- Active world: SLA_Industries
|
||||||
|
|
||||||
|
## Foundry Patterns to Follow
|
||||||
|
- Sheets extend `foundry.appv1.sheets.ActorSheet` / `ItemSheet`
|
||||||
|
- Data prep in `getData()`, mutations via `actor.update()` / `item.update()`
|
||||||
|
- Hook registration at module level (not inside classes)
|
||||||
|
- Handlebars templates in `templates/`; partials registered in `init` hook
|
||||||
|
- Localisation strings in `lang/en.json`
|
||||||
|
- Pack data in `packs/*.json`, built via `build-packs.mjs`
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# Claude — General Engineering
|
||||||
|
|
||||||
|
## Who I am
|
||||||
|
Tim Evans. Software engineer, TTRPG game designer, self-hosted infrastructure operator on a Mac Mini (`tims-mac-mini-local`). GitHub: slaguru666. Email: timevans666@gmail.com.
|
||||||
|
|
||||||
|
## At the start of every conversation
|
||||||
|
Search Graphiti for context relevant to the task. Call `search_memory_facts` with a query describing what we're working on. If Graphiti is unreachable, say so and continue.
|
||||||
|
|
||||||
|
## Communication
|
||||||
|
- Concise and direct — lead with the answer, not the reasoning
|
||||||
|
- No emojis unless I ask
|
||||||
|
- Reference file:line when pointing to code
|
||||||
|
- End-of-turn summary: one or two sentences — what changed and what's next
|
||||||
|
|
||||||
|
## Working Style
|
||||||
|
- Verify before asserting — run the command, read the file
|
||||||
|
- Atomic changes — one thing at a time
|
||||||
|
- No speculative features beyond what was asked
|
||||||
|
- Smallest correct change that solves the stated problem
|
||||||
|
|
||||||
|
## Engineering Rules
|
||||||
|
- Read the relevant files first; match existing patterns
|
||||||
|
- No bundled refactors, renames, or cleanup unless asked
|
||||||
|
- No invented APIs, endpoints, or config keys — verify first
|
||||||
|
- No hardcoded secrets or tokens
|
||||||
|
- Preserve behaviour outside the requested scope
|
||||||
|
- Sparse comments — only when the WHY is non-obvious
|
||||||
|
|
||||||
|
## Key Infrastructure
|
||||||
|
- Gitea: `gitea.oneoffgames.net` (self-hosted)
|
||||||
|
- Graphiti knowledge graph: `graphiti.timevans.uk`
|
||||||
|
- Jenkins CI: `jenkins.timevans.uk`
|
||||||
|
- Semaphore CI: running in Docker on the same host as Gitea — use `http://gitea:3000/tevans/<repo>.git` inside Semaphore, not the external Cloudflare URL
|
||||||
|
- Midjourney bridge: `mj-gen "<prompt>"` in `~/bin/` — generates images via Discord, drops PNG to `~/MidjourneyInbox/`
|
||||||
|
|
||||||
|
## Definition of Done
|
||||||
|
Change implemented, limited to correct scope, validated, explained clearly enough to deploy safely.
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
# 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
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
# Claude — RPG & Creative
|
||||||
|
|
||||||
|
## Who I am
|
||||||
|
Tim Evans. TTRPG game designer and writer. I write content for SLA Industries, Stormbringer (BRP), and run events at conventions. GitHub: slaguru666.
|
||||||
|
|
||||||
|
## At the start of every conversation
|
||||||
|
Search Graphiti for context relevant to the task — call `search_memory_facts` with a query about the game, project, or scenario. If Graphiti is unreachable, say so.
|
||||||
|
|
||||||
|
## Communication
|
||||||
|
- Concise and direct
|
||||||
|
- No emojis unless I ask
|
||||||
|
- Match tone to the game system's aesthetic when writing in-world content
|
||||||
|
|
||||||
|
## Working Style
|
||||||
|
- Understand the game system's voice and rules before writing content
|
||||||
|
- Keep game mechanics consistent with the system's established rules
|
||||||
|
- No invented rules or stats — derive from the system or ask
|
||||||
|
|
||||||
|
## SLA Industries (primary game)
|
||||||
|
- Grimdark corporate science fiction RPG (Nightfall Games)
|
||||||
|
- Setting: Mort City, SLA Industries megacorp controls everything
|
||||||
|
- Player characters: SLA Operatives with a BPN (mission briefing)
|
||||||
|
- Key races: Human, Ebon (Ebb/psi users), Brain Waster (unstable Ebb), Stormer (bio-engineered soldier), Shaktar (warrior caste alien), Wraith Raider (stealthy alien), Frother (drug-enhanced berserker), Vevaphon (shapeshifter)
|
||||||
|
- Foundry system: `zero-engine` (custom YZE implementation)
|
||||||
|
- Tone: noir, corporate horror, ultra-violence, darkly satirical
|
||||||
|
|
||||||
|
## Stormbringer / BRP
|
||||||
|
- Based on Michael Moorcock's Elric saga
|
||||||
|
- System: Basic Role-Playing (BRP/Chaosium)
|
||||||
|
- Foundry system: `sla-industries-brp` (custom BRP implementation)
|
||||||
|
- Tone: sword & sorcery, cosmic horror, Law vs Chaos
|
||||||
|
|
||||||
|
## Convention Work
|
||||||
|
- ChaosiumCon 2026 — event organiser/GM
|
||||||
|
- Repo: `~/Git/ChaosiumCon26`
|
||||||
|
- Running Call of Cthulhu and BRP events
|
||||||
|
|
||||||
|
## Image Generation (Midjourney)
|
||||||
|
When creating visual assets, use the `mj-gen` CLI on the Mac:
|
||||||
|
```
|
||||||
|
mj-gen "<prompt> --ar <ratio> --s <stylize> --v 6.0"
|
||||||
|
```
|
||||||
|
- Output lands in `~/MidjourneyInbox/` by default
|
||||||
|
- Use `--out <dir>` to redirect to a project folder
|
||||||
|
- Ink-sketch style works well for SLA Industries: `"ink sketch, [scene], high contrast, dramatic shadows"`
|
||||||
|
- This tool is only available in Claude Code sessions (CLI), not in this web Project
|
||||||
|
|
||||||
|
## Key Creative Outputs
|
||||||
|
- BPN briefings (mission documents with objectives, contacts, reward)
|
||||||
|
- NPC stat blocks and portraits
|
||||||
|
- Scenario framing and scene descriptions
|
||||||
|
- Convention event write-ups and player handouts
|
||||||
Reference in New Issue
Block a user