From Claudient — Productivity & Engineering
Write Architecture Decision Records in Nygard format. Triggers on architectural choices, approach comparisons, or undocumented past decisions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claudient-productivity:adr-writerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- Making a decision between two or more technical approaches (e.g., choosing an ORM, picking a caching strategy, selecting a queue system)
A decision warrants an ADR if all three are true:
If unsure, write the ADR. The cost of documenting a non-event is low; the cost of missing documentation for a load-bearing decision is high.
# ADR-[NNNN]: [Short Title in Noun Phrase Form]
**Date:** [YYYY-MM-DD]
**Status:** [Accepted | Superseded by ADR-NNNN | Deprecated]
**Supersedes:** [ADR-NNNN if applicable, else omit]
## Context
[2–4 sentences: what situation or problem forced this decision?
Include relevant constraints: team size, timeline, existing stack, external requirements.]
## Decision
[One sentence, active voice, present tense.
"We will use X for Y because Z." Not "It was decided that..."]
## Rationale
[Why this option over the alternatives?
Focus on the specific factors that made this the right choice for this context.
Avoid generic praise — "it's popular" is not rationale.]
## Alternatives Considered
| Option | Why rejected |
|---|---|
| [Alternative A] | [Specific reason it lost] |
| [Alternative B] | [Specific reason it lost] |
## Consequences
**Positive:**
- [What this makes easier or better]
**Negative:**
- [What this makes harder or introduces as new complexity]
**Neutral:**
- [Changes that are neither good nor bad, just different]
## Review Date
[Date 6–12 months from now, or the event that should trigger review: "Review when team exceeds 10 engineers" or "Review after first production incident involving X"]
docs/decisions/ or docs/adr/ — pick one and never mixADR-0001-kebab-case-title.md, ADR-0002-...Superseded by ADR-NNNN, link the new ADR back to the old oneWhen a decision changes:
# ADR-0007: Switch from REST to GraphQL for Client API
**Status:** Accepted
**Supersedes:** ADR-0003 (REST-first API design)
And update the old ADR:
**Status:** Superseded by ADR-0007
Scenario: The team chose Drizzle ORM over Prisma for a new TypeScript project.
Generated ADR:
# ADR-0004: Drizzle ORM over Prisma for Data Access Layer
**Date:** 2026-05-23
**Status:** Accepted
## Context
Selecting an ORM for a new TypeScript API that will interact with PostgreSQL.
The project has a small team (2 engineers), tight performance requirements on
bulk insert operations, and an existing schema already defined as SQL migrations.
The team has prior experience with both options.
## Decision
We will use Drizzle ORM for all database access because it gives us type-safe
queries without a code generation step and does not abstract away raw SQL when
we need it.
## Rationale
Drizzle treats SQL as the source of truth, which aligns with our existing
hand-written migration files. Prisma's schema-first model would require
duplicating table definitions. On bulk insert benchmarks against our target
dataset size (500k rows/batch), Drizzle ran 2.3× faster in our prototype.
Prisma's generated client adds ~100ms cold start which matters in our
serverless deployment context.
## Alternatives Considered
| Option | Why rejected |
|---|---|
| Prisma 5 | Code generation step adds CI complexity; schema-first conflicts with our existing SQL migrations; slower cold start |
| Raw pg client | Too much boilerplate for query building; no type inference on query results |
| Kysely | Strong contender — rejected only because team has no prior Kysely experience and Drizzle's API is more familiar |
## Consequences
**Positive:**
- Query results are typed without a build step
- Direct SQL escape hatch available without leaving the ORM
- Smaller bundle size than Prisma
**Negative:**
- Drizzle's ecosystem is smaller than Prisma's — fewer community plugins
- Migration tooling (drizzle-kit) is less mature than Prisma Migrate
**Neutral:**
- Team must learn Drizzle's query builder syntax
## Review Date
2027-05-23, or if a Prisma 6 release significantly addresses the cold start issue.
Work with us: Claudient is backed by Uitbreiden — we build AI products and B2B solutions with developer communities. uitbreiden.com · Reddit · YouTube
npx claudepluginhub claudient/claudient --plugin claudient-productivityGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.