Get the FREE Ultimate OpenClaw Setup Guide →

create-adr

npx machina-cli add skill codenamev/ai-software-architect/create-adr --openclaw
Files (1)
SKILL.md
4.4 KB

Create Architectural Decision Record (ADR)

Creates structured ADRs following the framework's template.

Process

1. Gather Context

Ask if needed:

  • What decision is being made?
  • What problem does it solve?
  • What alternatives were considered?
  • What are the trade-offs?

2. Generate ADR Number

# Find highest ADR number
ls .architecture/decisions/adrs/ | grep -E "^ADR-[0-9]+" | sed 's/ADR-//' | sed 's/-.*//' | sort -n | tail -1

New ADR = next sequential number (e.g., if highest is 003, create 004)

3. Validate and Sanitize Input

Security: Sanitize user input to prevent path traversal and injection:

  • Remove or replace: .., /, \, null bytes, control characters
  • Convert to lowercase kebab-case: spaces → hyphens, remove special chars
  • Limit length: max 80 characters for filename portion
  • Validate result: ensure filename contains only [a-z0-9-]

4. Create Filename

Format: ADR-XXX-kebab-case-title.md

Examples:

  • ADR-001-use-react-for-frontend.md
  • ADR-002-choose-postgresql-database.md

Valid input: "Use React for Frontend" → use-react-for-frontend Invalid blocked: "../etc/passwd" → sanitized or rejected

5. Check Configuration

  • Read .architecture/config.yml to check if pragmatic_mode is enabled
  • If enabled and applies to ADR creation, include Pragmatic Enforcer analysis

6. Write ADR

Use the template from .architecture/templates/adr-template.md:

Core sections:

  • Status, Context, Decision Drivers, Decision, Consequences
  • Implementation, Alternatives Considered, Validation, References

If pragmatic_mode is enabled: Add Pragmatic Enforcer Analysis section:

  • Necessity Assessment (0-10): Current need, future need, cost of waiting, evidence
  • Complexity Assessment (0-10): Added complexity, maintenance, learning curve, dependencies
  • Alternative Analysis: Review if simpler alternatives adequately considered
  • Simpler Alternative Proposal: Concrete proposal for simpler approach
  • Recommendation: Approve / Approve with simplifications / Defer / Recommend against
  • Pragmatic Score: Necessity, Complexity, Ratio (target <1.5)
  • Overall Assessment: Appropriate engineering vs over-engineering

If deferrals enabled: Track deferred decisions in .architecture/deferrals.md

7. Save ADR

Write to: .architecture/decisions/adrs/ADR-XXX-title.md

8. Report to User

Created ADR-XXX: [Title]

Location: .architecture/decisions/adrs/ADR-XXX-title.md
Status: [Status]

Key Points:
- Decision: [Summary]
- Main benefit: [Key benefit]
- Main trade-off: [Key trade-off]

Next Steps:
- [Immediate action 1]
- [Immediate action 2]

When to Create ADRs

Do create for:

  • Technology choices (frameworks, databases, languages)
  • Architectural patterns (microservices, event-driven, etc.)
  • Infrastructure decisions (cloud provider, deployment)
  • Security approaches (authentication, encryption)

Don't create for:

  • Implementation details (function names, variable names)
  • Temporary decisions
  • Minor decisions with limited impact

Status Lifecycle

  • Proposed: Documented but not approved
  • Accepted: Approved and should be implemented
  • Deprecated: No longer best practice
  • Superseded: Replaced by newer ADR (reference it)

Related Skills

Before Creating ADR:

  • "What's our architecture status?" - Check existing ADRs to avoid duplication
  • "List architecture members" - See who should review the decision

After Creating ADR:

  • "Ask [specialist] to review [the ADR]" - Get focused expert review
  • "Start architecture review for [version]" - Include in comprehensive review

Workflow Examples:

  1. Create ADR → Ask Security Specialist to review → Revise ADR
  2. Architecture review → Create ADRs for key decisions → Status check

Notes

  • Focus on "why" more than "what"
  • Be honest about trade-offs
  • Keep it concise but complete
  • ADRs can be updated as new information emerges

Source

git clone https://github.com/codenamev/ai-software-architect/blob/main/.claude/skills/create-adr/SKILL.mdView on GitHub

Overview

Generates a new ADR following the standard template, assigns a unique ADR-XXX filename, and writes it to the architecture folder. It sanitizes input, ensures consistency, and can include Pragmatic Enforcer analysis when enabled.

How This Skill Works

The process gathers context, computes the next ADR number, sanitizes the input to kebab-case, and creates a filename like ADR-001-title.md. It checks .architecture/config.yml for pragmatic_mode and writes the ADR using .architecture/templates/adr-template.md; if pragmatic mode is enabled, it appends a Pragmatic Enforcer Analysis section. The final file is saved to .architecture/decisions/adrs/ADR-XXX-title.md and a user report is generated.

When to Use It

  • When a user asks to Create ADR for a topic (e.g., architecture decision).
  • To document a decision about a technology, pattern, or architectural approach.
  • When deciding on a technology component (framework, database, cloud service).
  • To capture an infrastructure or security decision (provider, auth method).
  • To generate ADRs as part of architecture governance (not for reviews or status checks).

Quick Start

  1. Step 1: Gather decision topic, context, and alternatives.
  2. Step 2: Run the ADR creation flow to generate the next ADR-XXX-title.md.
  3. Step 3: Review the generated file at .architecture/decisions/adrs/ADR-XXX-title.md and share Status and Key Points.

Best Practices

  • Check for existing ADRs (architecture-status) to avoid duplication before creating a new one.
  • Sanitize input and convert to lowercase kebab-case; enforce a maximum title length.
  • Follow the ADR template sections: Status, Context, Decision Drivers, Decision, Consequences, plus Optional sections like Alternatives and References.
  • Store ADRs in .architecture/decisions/adrs with filenames ADR-XXX-title.md.
  • Document trade-offs, alternatives considered, and references to sources or evidence.

Example Use Cases

  • ADR-001-use-react-for-frontend.md
  • ADR-002-choose-postgresql-database.md
  • ADR-003-use-aws-infra.md
  • ADR-004-implement-oauth2-sso.md
  • ADR-005-event-driven-architecture.md

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers