Docs: Add CLAUDE.md project context file for AI agent coordination

Project-specific context file for Claude Code containing:
- Critical privacy/business rules (IDAA, Journals)
- Mandatory workflows and tech stack
- API patterns and key documentation references
- Active issues tracking

Complements global ~/.claude/CLAUDE.md with SvelteKit-specific guidance.
This commit is contained in:
Scott Idem
2026-02-26 13:48:01 -05:00
parent e34dd83436
commit 61025ea0d5

120
CLAUDE.md Normal file
View File

@@ -0,0 +1,120 @@
# Claude Code — Project: Aether App SvelteKit
**Part of:** One Sky IT / Aether Platform
**Backend:** `~/OSIT_dev/aether_api_fastapi/` via Docker
---
## CRITICAL: Privacy & Business Rules
### IDAA — International Doctors in Alcoholics Anonymous
- **ALL IDAA content is PRIVATE. Authentication required. Never public.**
- BB (Bulletin Board / Posts) — always private
- Archives — always private
- Recovery Meetings — always private
- A previous AI agent accidentally exposed IDAA BB publicly. This is a severe security failure.
- IDAA users authenticate via Novi API (Novi UUID per member) at `Authenticated` permission level.
- Default permission required: `trusted_access` or higher for IDAA module.
### Journals
- Private personal data. Always authenticated. Passcode/encryption features exist.
### General
- **Never expose private content publicly.** When in doubt — it's private.
- Code comments must explain the WHY for any non-obvious business logic.
Key features have been silently broken by AI agents that didn't understand intent.
---
## Mandatory Workflow
1. **Before starting:** Read `documentation/TODO__Agents.md` for active tasks
2. **Before committing:** Run `npx svelte-check` — no exceptions
3. **Commits:** Atomic — one component or fix per commit
4. **Never delete files with `rm`** — move to `~/tmp/gemini_trash`
5. **Backend coordination:** Use `ae_send_message` or flag changes clearly
---
## Tech Stack
- **Framework:** Svelte 5 (runes mode) + SvelteKit v2
- **Styling:** Tailwind CSS v4, Flowbite; Skeleton UI being phased out
- **State:** `$state`, `$derived` runes + Dexie.js IndexedDB (`liveQuery`)
- **Icons:** Lucide
- **Editors:** CodeMirror 6 (primary), Edra/TipTap (secondary)
- **Markdown:** `marked` library
- **UI primitives:** ShadCN (`src/lib/components/ui/`)
- **Native/Electron bridge:** `src/lib/electron/electron_relay.ts` via `window.aetherNative`
---
## API (V3)
- Base: `/v3/crud/{obj_type}/` for all CRUD
- Lookups: `/v3/lookup/`
- Search: `POST /v3/crud/{obj_type}/search`
- Auth headers: `x-aether-api-key` + `x-account-id` (NOT Bearer tokens)
- Permissive PATCH: add `x-ae-ignore-extra-fields: true`
- Guide: `documentation/GUIDE__AE_API_V3_for_Frontend.md`
---
## Key Patterns
- **Canonical reference:** Journals module (`src/lib/ae_journals/`) — use as the pattern template
- **Object files:** `ae_<module>__<object>.ts` + `<object>.editable_fields.ts`
- **DB:** `db_<module>.ts` per module (Dexie instance)
- **LiveQuery:** `lq__xyz` (read-only), `lqw__xyz` (writable form snapshot)
- **Load pattern:** SWR — return Dexie cache immediately, refresh from API in background
- **Component naming:** `ae_comp__*` (route-level), `ae_<module>_comp__*` (module), `element_*` (reusable)
- **Standard fields:** `id`, `id_random`, `code`, `name`, `enable`, `hide`, `priority`, `sort`, `group`, `notes`, `created_on`, `updated_on`, `cfg_json`, `data_json`
---
## Source Layout
```
src/lib/
ae_api/ — API helpers (prefer V3)
ae_core/ — Account, User, Person, Site, Address, Contact
ae_events/ — Events, sessions, presenters, badges, locations, devices
ae_journals/ — Journals (canonical/frontier model)
ae_archives/ — Archives
ae_posts/ — Posts + Post Comments (IDAA BB)
ae_idaa/ — IDAA custom module
ae_reports/ — Reporting
elements/ — Reusable UI: V3 editor, CRUD, data store, CodeMirror
electron/ — Native app bridge
src/routes/
/core/ — Admin (accounts, people, sites, users, contacts)
/events/[id]/ — Events: pres_mgmt, launcher, badges, leads, settings
/journals/ — Journals
/idaa/ — IDAA: archives, bb, recovery_meetings, video_conferences
/hosted_files/ — File management
/testing/ — Dev testing
```
---
## Active Issues (check TODO__Agents.md for current state)
- Session/Presentation page cold-start bug (Events Pres Mgmt) — unresolved
- Sev-1: `PUBLIC_AE_API_SECRET_KEY` audit
- CRUD v2 retirement → V3 editor
- 403/401 error boundaries ("Session Expired" UI)
---
## Key Docs
| File | Purpose |
|---|---|
| `documentation/TODO__Agents.md` | Active task list — read first |
| `documentation/GUIDE__Development.md` | Dev SOP |
| `documentation/GUIDE__AE_API_V3_for_Frontend.md` | V3 API reference (authoritative) |
| `documentation/GUIDE__SvelteKit2_Svelte5_DexieJS.md` | Dexie + liveQuery patterns |
| `documentation/GEMINI__Svelte_and_Me.md` | Svelte 5 runes patterns |
| `documentation/PROJECT__AE_Events_Launcher_Native_integration.md` | Electron/Launcher |
| `documentation/PROJECT__AE_Pres_Mgmt_Session_view_refactor_2026-02.md` | Session bug plan |