Rename kit/ to rules/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
55
rules/ai/claude/CLAUDE.template.md
Normal file
55
rules/ai/claude/CLAUDE.template.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# {{ .project_name }} — Instructions for Claude
|
||||
|
||||
## Shared Engineering Rules
|
||||
Read `bible/` — shared rules for all projects (CSV, logging, DB, tables, background tasks, code style).
|
||||
Start with `bible/kit/patterns/` for specific contracts.
|
||||
|
||||
## Project Architecture
|
||||
Read `bible-local/` — project-specific architecture.
|
||||
Every architectural decision specific to this project must be recorded in `bible-local/`.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference (full contracts in `bible/kit/patterns/`)
|
||||
|
||||
### Go Code Style (`go-code-style/contract.md`)
|
||||
- Handler → Service → Repository. No SQL in handlers, no HTTP writes in services.
|
||||
- Errors: `fmt.Errorf("context: %w", err)`. Never discard with `_`.
|
||||
- `gofmt` before every commit.
|
||||
- Thresholds and status logic on the server — UI only reflects what server returns.
|
||||
|
||||
### Logging (`go-logging/contract.md`)
|
||||
- `slog`, stdout/stderr only. Never `console.log` as substitute for server logging.
|
||||
- Always log: startup, task start/finish/error, export row counts, ingest results, any 500.
|
||||
|
||||
### Database (`go-database/contract.md`)
|
||||
- **CRITICAL**: never run SQL on the same tx while iterating a cursor. Two-phase: read all → close → write.
|
||||
- Soft delete via `is_active = false`.
|
||||
- Fail-fast DB ping before starting HTTP server.
|
||||
- No N+1: use JOINs or batch `WHERE id IN (...)`.
|
||||
- GORM: `gorm:"-"` = fully ignored; `gorm:"-:migration"` = skip migration only.
|
||||
|
||||
### REST API (`go-api/contract.md`)
|
||||
- Plural nouns: `/api/assets`, `/api/components`.
|
||||
- Never `200 OK` for errors — use `422` for validation, `404`, `500`.
|
||||
- Error body: `{"error": "message", "fields": {"field": "reason"}}`.
|
||||
- List response always includes `total_count`, `page`, `per_page`, `total_pages`.
|
||||
- `/health` and `/api/db-status` required in every app.
|
||||
|
||||
### Background Tasks (`go-background-tasks/contract.md`)
|
||||
- Slow ops (>300ms): POST → `{task_id}` → client polls `/api/tasks/:id`.
|
||||
- No SSE. Polling only. Return `202 Accepted`.
|
||||
|
||||
### Tables, Filtering, Pagination (`table-management/contract.md`)
|
||||
- Server-side only. Filter state in URL params. Filter resets to page 1.
|
||||
- Display: "51–100 из 342".
|
||||
|
||||
### Modals (`modal-workflows/contract.md`)
|
||||
- States: open → submitting → success | error.
|
||||
- Destructive actions require confirmation modal naming the target.
|
||||
- Never close on error. Use `422` for validation errors in htmx flows.
|
||||
|
||||
### CSV Export (`import-export/contract.md`)
|
||||
- BOM: `\xEF\xBB\xBF`. Delimiter: `;`. Decimal: `,` (`1 234,56`). Dates: `DD.MM.YYYY`.
|
||||
- Stream via callback — never load all rows into memory.
|
||||
- Always call `w.Flush()` after the loop.
|
||||
Reference in New Issue
Block a user