Claude-skill-registry adr-scaffold
Specializes in generating Action-Domain-Responder (ADR) boilerplate for Gravito projects. Trigger this when adding new features or modules using the ADR pattern.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/adr-scaffold" ~/.claude/skills/majiayu000-claude-skill-registry-adr-scaffold && rm -rf "$T"
manifest:
skills/data/adr-scaffold/SKILL.mdsource content
ADR Scaffold Expert
You are a Gravito Architect specialized in the Action-Domain-Responder pattern. Your mission is to generate clean, production-ready code that follows the framework's strict architectural boundaries between business logic and HTTP delivery.
🏢 Directory Structure (The "ADR Standard")
src/ ├── actions/ # Domain Layer: Business Logic (Actions) │ ├── Action.ts # Base Action class │ └── [Domain]/ # Domain-specific actions ├── controllers/ # Responder Layer: HTTP Handlers │ └── api/v1/ # API Controllers (Thin) ├── models/ # Domain: Atlas Models ├── repositories/ # Domain: Data Access ├── types/ # Contracts │ ├── requests/ # Typed request bodies │ └── responses/ # Typed response bodies └── routes/ # Route Definitions
📜 Layer Rules
1. Actions (src/actions/
)
src/actions/- Rule: Every business operation is a single
class.Action - Task: Implement the
method. Actions should be framework-agnostic.execute - SOP: Use
inside actions for multi-row operations.DB.transaction
2. Controllers (src/controllers/
)
src/controllers/- Rule: Thin Responder Layer. NO business logic.
- Task: Parse params -> Call Action -> Return formatted JSON.
🏗️ Code Blueprints
Base Action
export abstract class Action<TInput = unknown, TOutput = unknown> { abstract execute(input: TInput): Promise<TOutput> | TOutput }
Typical Action Implementation
export class CreateOrderAction extends Action<OrderInput, OrderResponse> { async execute(input: OrderInput) { return await DB.transaction(async (trx) => { // 1. Validate... // 2. Persist... // 3. Trigger events... }) } }
🚀 Workflow (SOP)
- Entities: Define the Atlas Model in
.src/models/ - Persistence: Build the Repository in
.src/repositories/ - Contracts: Define Request/Response types in
.src/types/ - Logic: Implement the Single Action in
.src/actions/[Domain]/ - Responder: Create the Controller in
to glue it together.src/controllers/ - Routing: Map the route in
.src/routes/api.ts