Backend
This is an OMH backend workflow skill, projected for Agent Skills hosts (Claude Code, Codex, Cursor, opencode, OpenClaw, pi).
Why This Exists
backend gives OMH a first-class server-side workflow so Hermes can prepare auth boundaries, error paths, response shapes, and migration order without becoming the hidden runtime that executes them.
Do Not Use When
- The request is about web UI, layout, or a design system; use
frontend.
- The request is a security posture or threat review rather than a service design; use
security-safety-review.
- The request is to run or judge the verification of an already-built service; use
verification-gate.
- The request is a Rust-language change whose risk is compiler, ownership, or
unsafe discipline; use rust.
Examples
Good example:
- Prompt: Design a REST API with a Postgres schema and migrations for the billing service.
- Expected behavior: Prepare backend_service_contract/v1, auth_boundary_map/v1, error_path_table/v1, response_shape_contract/v1, and schema_migration_plan/v1, then hand off with the per-stack reference named.
- Why: The request is server-side design across an endpoint surface and its storage, before any code exists.
Bad example:
- Prompt: The migration is written, so mark the schema as migrated and the API as live.
- Expected behavior: Mark migration application, integration runs, and deployment as not_observed and name the smallest observed proof for each.
- Why: A prepared migration plan is not an applied migration, and a contract is not a running service.
Completion Checklist
- The surface, its callers, and each caller's trust level are named.
- The auth_boundary_map/v1 states where trust changes and which check enforces it on every path.
- The error_path_table/v1 covers each failure mode with status, body shape, retryability, and redaction rule.
- The response_shape_contract/v1 is consistent across endpoints rather than per-endpoint improvisation.
- Storage changes carry an expand/backfill/switch/contract order with a rollback point per step.
- The handoff names the executor, the stack, and the per-stack reference to load first.
- Implementation, migrations, integration runs, and deployment stay observed-only.
Recovery Notes
- If the stack or datastore is unknown, prepare the contract stack-neutral and name the stack as the one blocking input.
- If the auth model cannot be established, stop at the auth boundary gap instead of designing endpoints that assume a trust level.
Use When
Use when Hermes should shape a server, API, or data-layer change before implementation: authentication boundary, contract error paths, response consistency, schema and migration discipline, and the per-stack reference the executor loads first.
Strong routing signals: `backend`, `back-end`, `back end`, `backend skill`, `server side`, `server-side`, `api design`, `api contract`, `rest api`, `graphql api`, `grpc service`, `endpoint design`, `auth boundary`, `authentication flow`, `authorization rules`, `idempotency key`, `pagination contract`, `database schema`, `postgres schema`, `schema migration`, `db migration`, `orm mapping`, `connection pool`, `message queue`, `webhook handler`, `バックエンド`, `エンドポイント設計`, `認証フロー`, `スキーマ移行`, `백엔드`, `서버 개발`, `서버 api`, `api 설계`, `인증 흐름`, `권한 체크`, `디비 스키마`, `db 스키마`, `스키마 마이그레이션`, `엔드포인트 설계`, `后端`, `後端`, `接口设计`, `认证流程`, `数据库迁移`
Catalog Metadata
Category: planning
Phase: backend-design
Quality tier: backend-contract-gated
Reasoning demand: standard
Quality bar:
- Name the surface, its callers, and their trust level before any endpoint or table is designed.
- Load
references/service-contract.md and fill the auth boundary, error-path table, and response-shape rules from it rather than improvising a per-endpoint shape.
- When the change touches storage, load
references/schema-migration.md and order the migration as expand, backfill, switch, contract, with the rollback point named per step.
- Hold the
api product-family expectations — authentication boundary, contract error paths, response consistency — as the standing bar for every prepared endpoint.
- Name the per-stack reference the executor must read first; the stack is a routing input, not a detail discovered mid-implementation.
- Keep implementation, migration application, integration runs, load testing, and deployment as observed-only evidence.
Required inputs:
- the service, endpoint, or data surface being changed
- callers and their trust level (public, partner, internal, machine)
- language, framework, and datastore when known
- authentication and authorization model in force
- existing schema and migration tooling
- backward-compatibility and rollout constraints
- observed integration or load evidence for completion claims
Expected outputs:
- backend_service_contract/v1
- auth_boundary_map/v1
- error_path_table/v1
- response_shape_contract/v1
- schema_migration_plan/v1 when the change touches storage
- backend_implementation_handoff/v1
- observed_integration_evidence/v1 when observed
Artifact expectations:
- backend_service_contract/v1 names each endpoint or job, its caller class, request and response shapes, and its idempotency and pagination rules
- auth_boundary_map/v1 states where an untrusted caller becomes a trusted one, and which check runs on each path
- error_path_table/v1 pairs every failure mode with its status/code, body shape, retryability, and log/redaction rule
- response_shape_contract/v1 keeps success and error envelopes consistent across the surface instead of per-endpoint improvisation
- schema_migration_plan/v1 orders expand, backfill, switch, and contract steps with the rollback point for each
- integration runs, applied migrations, load numbers, and deployment only when observed
Safety rules:
- Do not claim implementation, a running service, an applied migration, a passing integration suite, or a deployment from a prepared backend contract.
- Require the auth boundary before endpoint work: an endpoint whose caller trust level is unnamed is not ready for handoff.
- Require the error-path table before the happy path is called complete; an unlisted failure mode is a gap, not a default.
- Treat a destructive or non-reversible migration step as a blocker until an explicit rollback point and backfill order exist.
- Never place secrets, tokens, or connection strings in the contract, examples, or handoff text.
- Do not call databases, HTTP services, LLM, or network endpoints from OMH core.
Runtime Evidence
Use the current host's own tools and subagent/task mechanism when available;
otherwise run the same lanes sequentially or name the unavailable capability.
A prepared plan, handoff, checklist, or skill installation is not execution,
review, CI, merge-readiness, or merge evidence. Report actual tool results or
not_observed / not_available; never invent dispatch or host accounting.
Treat supplied context as advisory, not proof of hidden memory reads or writes.
State scope, constraints, verification, and the stop condition before work.
Supporting paths are relative to this skill directory; sibling skill paths are
relative to its parent. Resolve them from the host-provided skill base directory
({baseDir} on hosts that provide it), never a hardcoded install location.
A named workflow not installed here is unavailable, not permission to emulate
its host-specific capabilities. Verify through the real surface before done.
1---2name: omh-backend-23description: [omh] Hermes backend workflow: prepare server, API, and data-layer contracts — auth boundary, error paths, response shape, and schema/migration discipline — before implementation. Use when the user says: backend, back-end, back end, backend skill, server side, server-side, api design, api contract.4---56# Backend78This is an OMH `backend` workflow skill, projected for Agent Skills hosts (Claude Code, Codex, Cursor, opencode, OpenClaw, pi).910## Why This Exists1112`backend` gives OMH a first-class server-side workflow so Hermes can prepare auth boundaries, error paths, response shapes, and migration order without becoming the hidden runtime that executes them.1314## Do Not Use When1516- The request is about web UI, layout, or a design system; use `frontend`.17- The request is a security posture or threat review rather than a service design; use `security-safety-review`.18- The request is to run or judge the verification of an already-built service; use `verification-gate`.19- The request is a Rust-language change whose risk is compiler, ownership, or `unsafe` discipline; use `rust`.2021## Examples2223Good example:2425- Prompt: Design a REST API with a Postgres schema and migrations for the billing service.26- Expected behavior: Prepare backend_service_contract/v1, auth_boundary_map/v1, error_path_table/v1, response_shape_contract/v1, and schema_migration_plan/v1, then hand off with the per-stack reference named.27- Why: The request is server-side design across an endpoint surface and its storage, before any code exists.2829Bad example:3031- Prompt: The migration is written, so mark the schema as migrated and the API as live.32- Expected behavior: Mark migration application, integration runs, and deployment as not_observed and name the smallest observed proof for each.33- Why: A prepared migration plan is not an applied migration, and a contract is not a running service.3435## Completion Checklist3637- The surface, its callers, and each caller's trust level are named.38- The auth_boundary_map/v1 states where trust changes and which check enforces it on every path.39- The error_path_table/v1 covers each failure mode with status, body shape, retryability, and redaction rule.40- The response_shape_contract/v1 is consistent across endpoints rather than per-endpoint improvisation.41- Storage changes carry an expand/backfill/switch/contract order with a rollback point per step.42- The handoff names the executor, the stack, and the per-stack reference to load first.43- Implementation, migrations, integration runs, and deployment stay observed-only.4445## Recovery Notes4647- If the stack or datastore is unknown, prepare the contract stack-neutral and name the stack as the one blocking input.48- If the auth model cannot be established, stop at the auth boundary gap instead of designing endpoints that assume a trust level.49505152## Use When5354Use when Hermes should shape a server, API, or data-layer change before implementation: authentication boundary, contract error paths, response consistency, schema and migration discipline, and the per-stack reference the executor loads first.5556 Strong routing signals: `backend`, `back-end`, `back end`, `backend skill`, `server side`, `server-side`, `api design`, `api contract`, `rest api`, `graphql api`, `grpc service`, `endpoint design`, `auth boundary`, `authentication flow`, `authorization rules`, `idempotency key`, `pagination contract`, `database schema`, `postgres schema`, `schema migration`, `db migration`, `orm mapping`, `connection pool`, `message queue`, `webhook handler`, `バックエンド`, `エンドポイント設計`, `認証フロー`, `スキーマ移行`, `백엔드`, `서버 개발`, `서버 api`, `api 설계`, `인증 흐름`, `권한 체크`, `디비 스키마`, `db 스키마`, `스키마 마이그레이션`, `엔드포인트 설계`, `后端`, `後端`, `接口设计`, `认证流程`, `数据库迁移`5758## Catalog Metadata5960Category: `planning`61Phase: `backend-design`62Quality tier: `backend-contract-gated`63Reasoning demand: `standard`6465Quality bar:6667- Name the surface, its callers, and their trust level before any endpoint or table is designed.68- Load `references/service-contract.md` and fill the auth boundary, error-path table, and response-shape rules from it rather than improvising a per-endpoint shape.69- When the change touches storage, load `references/schema-migration.md` and order the migration as expand, backfill, switch, contract, with the rollback point named per step.70- Hold the `api` product-family expectations — authentication boundary, contract error paths, response consistency — as the standing bar for every prepared endpoint.71- Name the per-stack reference the executor must read first; the stack is a routing input, not a detail discovered mid-implementation.72- Keep implementation, migration application, integration runs, load testing, and deployment as observed-only evidence.7374Required inputs:7576- the service, endpoint, or data surface being changed77- callers and their trust level (public, partner, internal, machine)78- language, framework, and datastore when known79- authentication and authorization model in force80- existing schema and migration tooling81- backward-compatibility and rollout constraints82- observed integration or load evidence for completion claims8384Expected outputs:8586- backend_service_contract/v187- auth_boundary_map/v188- error_path_table/v189- response_shape_contract/v190- schema_migration_plan/v1 when the change touches storage91- backend_implementation_handoff/v192- observed_integration_evidence/v1 when observed9394Artifact expectations:9596- backend_service_contract/v1 names each endpoint or job, its caller class, request and response shapes, and its idempotency and pagination rules97- auth_boundary_map/v1 states where an untrusted caller becomes a trusted one, and which check runs on each path98- error_path_table/v1 pairs every failure mode with its status/code, body shape, retryability, and log/redaction rule99- response_shape_contract/v1 keeps success and error envelopes consistent across the surface instead of per-endpoint improvisation100- schema_migration_plan/v1 orders expand, backfill, switch, and contract steps with the rollback point for each101- integration runs, applied migrations, load numbers, and deployment only when observed102103Safety rules:104105- Do not claim implementation, a running service, an applied migration, a passing integration suite, or a deployment from a prepared backend contract.106- Require the auth boundary before endpoint work: an endpoint whose caller trust level is unnamed is not ready for handoff.107- Require the error-path table before the happy path is called complete; an unlisted failure mode is a gap, not a default.108- Treat a destructive or non-reversible migration step as a blocker until an explicit rollback point and backfill order exist.109- Never place secrets, tokens, or connection strings in the contract, examples, or handoff text.110- Do not call databases, HTTP services, LLM, or network endpoints from OMH core.111112## Runtime Evidence113114Use the current host's own tools and subagent/task mechanism when available;115otherwise run the same lanes sequentially or name the unavailable capability.116A prepared plan, handoff, checklist, or skill installation is not execution,117review, CI, merge-readiness, or merge evidence. Report actual tool results or118`not_observed` / `not_available`; never invent dispatch or host accounting.119Treat supplied context as advisory, not proof of hidden memory reads or writes.120State scope, constraints, verification, and the stop condition before work.121Supporting paths are relative to this skill directory; sibling skill paths are122relative to its parent. Resolve them from the host-provided skill base directory123(`{baseDir}` on hosts that provide it), never a hardcoded install location.124A named workflow not installed here is unavailable, not permission to emulate125its host-specific capabilities. Verify through the real surface before done.