first-fluke/oma-backend
Backend specialist for APIs, databases, authentication with clean architecture (Repository/Service/Router pattern). Use for API, endpoint, REST, database, server, migration, and auth work.
npx skills add https://github.com/first-fluke/oh-my-agent --skill oma-backend
Implement or review backend APIs, authentication, database integration, server-side business logic, and migrations using the project's existing backend stack and clean architecture boundaries.
resources/execution-protocol.md, resources/checklist.md, and resources/orm-reference.md<!-- oma-docs:ignore-start -->
stack/stack.yaml, stack/tech-stack.md, snippets, and API templates<!-- oma-docs:ignore-end -->
resources/orm-reference.md.oma-db./stack-set.| Action | SSL primitive | Evidence |
|--------|---------------|----------|
| Detect stack and conventions | READ | Manifests, stack files, existing code |
| Select implementation boundary | SELECT | Router/service/repository pattern |
| Validate inputs and schemas | VALIDATE | Stack validation library |
| Implement business logic | WRITE | Service layer code |
| Implement persistence | WRITE | Repository/model/migration code |
| Call external/backing services | CALL_TOOL | DB, queue, cache, auth, or API clients |
| Run verification | CALL_TOOL | Tests, typecheck, lint, migrations |
| Report result | NOTIFY | Final summary |
rg --files
rg "route|router|service|repository|model|schema|migration" .
<!-- oma-docs:ignore-start -->
Then run the project's discovered verification commands, usually lint/typecheck/tests and migrations when schema changes are involved. Prefer stack/stack.yaml verify: commands when present.
<!-- oma-docs:ignore-end -->
| Scope | Resource target |
|-------|-----------------|
| CODEBASE | Backend source, tests, schemas, migrations |
| LOCAL_FS | Stack references and generated artifacts |
| PROCESS | Test, lint, typecheck, migration commands |
| CREDENTIALS | Environment-managed DB URLs, API keys, secrets |
| NETWORK | External APIs or backing services when required |
Service, data access logic in RepositoryRouter (HTTP) → Service (Business Logic) → Repository (Data Access) → Models
10. Safe ORM lifecycle: do not share mutable ORM session/entity manager/client objects across concurrent work unless the ORM explicitly supports it
11. Config from environment, with graceful fallback: DB URLs, API keys, secrets, and feature flags come from env vars or secret managers; never hardcode in source. When integrating a third-party API (OpenAI, Anthropic, Stripe, etc.), write BOTH paths: (a) real call when the env key is present, (b) deterministic local fallback when absent, marked with // TODO(oma-deferred): integrate <vendor> when key is provisioned. Fallback-only leaves the spec unmet; real-call-only breaks demos when the key is missing
12. Stateless services: no in-memory session or user state between requests; use external stores (DB, Redis, cache) for shared state
13. Backing services as resources: DB, queue, cache, mail are swappable attached resources connected via config; Repository layer must not assume a specific instance
stack/ exists, use it as supplementary reference for coding conventions and snippet templates/stack-set<!-- oma-docs:ignore-start -->
stack/stack.yaml: structured declaration (language, framework, orm) and verify: contract consumed by oma verify backend. Schema: variants/stack.schema.json.stack/tech-stack.md: human-readable reference only; stack.yaml wins on conflict.stack/snippets.mdstack/api-template.*<!-- oma-docs:ignore-end -->
Follow resources/execution-protocol.md step by step.
Use resources/orm-reference.md when the task involves ORM query performance, relationship loading, transactions, session/client lifecycle, or N+1 analysis.
Before submitting, run resources/checklist.md.
Vendor-specific execution protocols are injected automatically by oma agent:spawn.
Source files live under ../_shared/runtime/execution-protocols/{vendor}.md.
resources/execution-protocol.mdresources/checklist.mdresources/orm-reference.mdresources/error-playbook.md../_shared/core/context-loading.md../_shared/core/clarification-protocol.md../_shared/core/context-budget.md../_shared/core/lessons-learned.md../oma-observability/SKILL.md §Integrations — propagators/baggage, span conventions, log correlation, PII redactionTake first-fluke/oma-backend from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.