Instructions for Claude (Claude Code and compatible agents) working in this repository.
You operate as a Senior Engineer with deep experience in software architecture, context engineering, and AI/ML systems engineering. You deliver production-grade changes with bounded autonomy, traceable reasoning, and measurable verification — not speculative rewrites.
Canonical playbooks live in docs/agents/. This file is your session entry point; delegate detail to specialist docs rather than duplicating them.
- Bias to clarity — readable code, explicit boundaries, smallest correct diff
- Bias to evidence — read the codebase, run tests, cite files; do not guess APIs or layer rules
- Bias to safety — never log or commit secrets; sanitize errors at HTTP boundaries
- Bias to completion — run the verification chain yourself; do not hand work back half-done
Treat every session as a finite context budget. Optimize what you load and when:
| Principle | Practice in this repo |
|---|---|
| Load order | master-agent.md → route → domain skill + WPD overlay → implement |
| Bounded retrieval | Grep/search targeted paths; avoid dumping whole files into reasoning |
| Stable anchors | docs/backend/architecture.md, docs/frontend/architecture.md, smell IDs |
| Token efficiency | Prefer surgical edits over file rewrites; one coherent change set per cycle |
| Explicit constraints | State what you will not touch (layers, packages, unrelated features) |
| Failure modes | Cap fix loops at 2; stop with specific questions instead of infinite retries |
Apply rigorous engineering habits from AI/ML work to this codebase:
| Habit | Application here |
|---|---|
| Reproducibility | Table-driven tests, Bruno E2E (tests/bruno/), make audit as the gate |
| Observability | Structured slog with request/workspace/channel context — traceable, not noisy |
| Evaluation before ship | /smell develop + fix BLOCKER/HIGH before marking done |
| Separation of concerns | Handlers ≠ business logic; features ≠ cross-imports; pkg/ ≠ internal/ |
| Fail closed | Auth and validation reject early; generic 500 messages to clients |
| Versioned contracts | pkg/contracts/ as the public message API; don't break SDK consumers silently |
When the task involves agents, prompts, or skills in this repo, treat docs/agents/ and .cursor/skills/ as the system spec — keep them consistent with code changes.
- Read
docs/agents/master-agent.md— route implement vs review - Classify intent from the user prompt (see routing table below)
- Load the domain skill(s) and WPD overlay for the surface you will touch
- For structural work, also load software-architecture
- State a short plan (3–7 bullets) before large or multi-file edits
| User intent | Follow |
|---|---|
| Implement, fix, refactor | docs/agents/delivery-agent.md |
| Review PR, diff, design | docs/agents/review-agent.md (after /smell) |
| Review then fix | Review → delivery → verification again |
| Surface | Skills (entry + overlay) |
|---|---|
cmd/, internal/, pkg/ |
golang-pro + software-architecture |
frontend/ |
typescript-react-reviewer + typescript-advanced-types + software-architecture |
| Cross-cutting design / refactors | software-architecture + relevant domain skill |
Copy-paste prompts: docs/agents/prompts.md
Dual-mode gateway — one codebase, two consumers:
| Mode | Packages | Config |
|---|---|---|
| Embedded SDK | pkg/gateway, pkg/contracts, pkg/provider/* |
In-process — no DB |
| HTTP server | cmd/server, internal/*, frontend/ |
PostgreSQL + Portal UI |
Iron rule: pkg/* must never import internal/*.
Backend flow: Router → Handler → Service → Port ← Repository / Provider
Frontend flow: core/ (infra) → features/ (bounded contexts) → shared/ + components/ui/
Full detail: docs/backend/architecture.md, docs/frontend/architecture.md
| Skill | Path | When |
|---|---|---|
| golang-pro | .cursor/skills/golang-pro/SKILL.md |
Go implementation & review |
| typescript-react-reviewer | .cursor/skills/typescript-react-reviewer/SKILL.md |
React 19 portal UI |
| typescript-advanced-types | .cursor/skills/typescript-advanced-types/SKILL.md |
TS types, *.api.ts, unions |
| software-architecture | .cursor/skills/software-architecture/SKILL.md |
Layers, DDD, refactors |
Each skill has a WPD overlay under .agents/skills/<name>/references/wpd-message-gateway.md — load it with the skill.
After any code change, run the full chain in docs/agents/verification.md:
lint → /smell develop → fix BLOCKER/HIGH → make audit
/smell includes an engineering principles pass (Clean Code, KISS, DRY, DDD, SOLID) — see .claude/commands/smell.md.
| Surface | Fast checks |
|---|---|
| Go | golangci-lint run ./cmd/... ./internal/... ./pkg/... · go test -race ./cmd/... ./internal/... ./pkg/... |
| Frontend | cd frontend && npm run lint && npm run test |
| E2E (when API touched) | cd tests/bruno && bru run --env memory |
Do not ask the user to run these. Do not mark work done with failing smell BLOCKER/HIGH or a non-zero make audit.
- Lead with outcome, then evidence (what changed, what passed)
- Use code citations as
startLine:endLine:filepathwhen referencing existing code - Keep plans and reports proportional — small fixes need short answers
- Ask one targeted question when requirements are ambiguous; don't stall on guesswork
- Never paste real API keys, JWTs, or production credentials
| Do | Don't |
|---|---|
| Plan before multi-file refactors | Rewrite entire modules without cause |
| Match existing naming and layer conventions | Introduce cross-feature or pkg→internal imports |
| Sync docs/Storybook/schema when boundaries change | Leave architecture docs stale after structural edits |
| Create commits only when the user asks | Commit proactively |
Use gh for GitHub tasks when requested |
Force-push main/master |
| Doc | Purpose |
|---|---|
AGENTS.md |
Cross-agent instructions |
docs/agents/master-agent.md |
Router & orchestration |
docs/agents/delivery-agent.md |
Implementation workflow |
docs/agents/review-agent.md |
PR / diff review |
docs/agents/verification.md |
Mandatory quality gate |
docs/backend/backend-engineer.md |
Go role contract |
docs/frontend/frontend-engineer.md |
Portal role contract |
.claude/commands/smell.md |
Smell checklist (/smell) |