ADR Writer: Architecture Decision Records

    2

    Turns a decision your team already made into a complete ADR: context, options, rationale, consequences, follow-ups.

    Free

    1 installSecurity scanned

    Works with the AI tools you already use

    Claude CodeClaude CodeCursorCursorCodex CLICodex CLIMuseMuseOpenClawOpenClaw+21 more

    ADR Writer: Architecture Decision Records

    Example session with this skill installed

    Write the ADR for a decision we already made.

    • Decision: tenant file uploads go direct to S3 with presigned URLs instead of through our API servers.
    • Decided by the architecture guild on 2026-09-10 (minutes ARCH-GUILD-2026-37). Status: accepted.
    • Why: uploads up to 2 GB hold an API worker for the whole transfer. In incident INC-2291 (2026-08-21), 40 concurrent uploads exhausted the 64-worker pool and p99 API latency went from 180 ms to 9.4 s.
    • Options considered: (1) direct-to-S3 presigned PUT and multipart upload — chosen; (2) a dedicated upload service behind the gateway — rejected, one more service to run and it still proxies the bytes; (3) raise the worker pool to 256 — rejected, memory cost and the coupling stays.
    • Constraints: files must pass malware scanning before any tenant can download them; presigned URLs expire after 15 minutes.
    • Our ADRs live in docs/adr/ in MADR format; the next number is 0042. Write it there.
    • Read your context and instructions
    • Compiled the adr writer

    Wrote docs/adr/0042-direct-to-s3-uploads.md in MADR format. The decision, status, date and options come from your request. Four items you did not supply are recorded as open follow-ups, not filled in. The file-name slug is assumed from the title; rename it if your repository uses another pattern.

    ---
    status: accepted
    date: 2026-09-10
    deciders: Architecture guild (minutes ARCH-GUILD-2026-37)
    ---
    
    # 0042. Direct-to-S3 uploads with presigned URLs for tenant files
    
    ## Context and Problem Statement
    
    Tenant file uploads of up to 2 GB are streamed through the API servers, so each upload holds an
    API worker for the full transfer. In incident INC-2291 (2026-08-21), 40 concurrent uploads
    exhausted the 64-worker pool and p99 API latency rose from 180 ms to 9.4 s. Upload traffic can
    therefore take down unrelated API traffic.
    
    How should tenant files reach storage without consuming API worker capacity?
    
    ## Decision Drivers
    
    * API latency must not depend on the number or size of concurrent uploads (INC-2291).
    * Files must pass malware scanning before any tenant can download them.
    * Presigned URLs expire after 15 minutes.
    
    ## Considered Options
    
    1. Direct-to-S3 presigned PUT and multipart upload
    2. Dedicated upload service behind the gateway
    3. Raise the API worker pool from 64 to 256
    
    ## Decision Outcome
    
    Chosen option: **1. Direct-to-S3 presigned PUT and multipart upload**, because it is the only
    option that removes upload bytes from the API path. The API issues a short-lived presigned URL;
    the client sends the file straight to S3.
    
    ### Consequences
    
    * Good: upload volume no longer consumes API workers, removing the failure mode of INC-2291.
    * Good: no new long-running service to operate.
    * Bad: the API no longer sees file bytes, so malware scanning must run after the object lands
      in S3 and before it becomes downloadable.
    * Bad: clients must handle URL expiry after 15 minutes and resume or restart large multipart
      uploads.
    * Neutral: upload authorization moves from request handling to URL issuance, which becomes the
      control point for who may upload what.
    
    ### Confirmation
    
    This decision is implemented when an upload in progress does not occupy an API worker and a
    newly uploaded object cannot be downloaded before its malware scan passes. The test that proves
    both is a follow-up (F-1, F-2).
    
    ## Pros and Cons of the Options
    
    ### 1. Direct-to-S3 presigned PUT and multipart upload
    
    * Good: bytes bypass the API servers entirely.
    * Good: uses a managed storage service; no extra runtime.
    * Bad: scanning and download gating must be built around S3 events.
    
    ### 2. Dedicated upload service behind the gateway
    
    * Good: isolates uploads from the main API workers.
    * Bad: one more service to build and run.
    * Bad: still proxies every byte, so the capacity problem moves instead of disappearing.
    
    ### 3. Raise the API worker pool to 256
    
    * Good: smallest code change.
    * Bad: higher memory cost.
    * Bad: the coupling between uploads and API latency remains; a larger burst repeats INC-2291.
    
    ## More Information
    
    * Incident: INC-2291 (2026-08-21).
    * Decision minutes: ARCH-GUILD-2026-37 (2026-09-10).
    * Follow-ups, owners not yet assigned:
      * F-1 Download gating: objects stay non-downloadable until the malware scan passes.
      * F-2 Load test proving uploads do not occupy API workers.
      * F-3 Multipart threshold and client resume behaviour after URL expiry.
      * F-4 Cost impact of S3 requests and storage versus the current path.
    

    Record check

    CheckResult
    Decision authority and date presentyes, from ARCH-GUILD-2026-37
    Every considered option has a stated reasonyes, 3 of 3
    Negative consequences recordedyes, 2
    Constraints traced to driversmalware scanning and 15-minute expiry, both in Drivers and Consequences
    Nothing added beyond the requestfollow-ups F-1 to F-4 are open questions, not decisions

    No validator was supplied, so no command was run.

    Not supplied, so not decided

    • Who owns the malware scanning pipeline (F-1).
    • The multipart size threshold (F-3).
    • Whether existing uploads in flight need a migration path.
    • Cost figures (F-4).

    Next steps

    1. Assign owners for F-1 to F-4 in your tracker and link them from the ADR.
    2. Rename the file if your slug convention differs from 0042-direct-to-s3-uploads.md.
    3. Commit the ADR before the code review, as planned.

    Connects securely to your tools. The creator never sees your data.

    About this skill

    ADR Writer: Architecture Decision Records: Full Description

    What it does

    This skill renders one already-framed, authority-backed architectural decision into a durable record whose then-current context, options, rationale, consequences and lifecycle can be reconstructed. It does not make or approve the decision.

    Use it when

    Use when one consequential architectural decision is ready to be recorded under accepted repository and lifecycle conventions.

    For example: “We decided to replace our IPC message bus with lock-free shared memory ring buffers for the LMAX order book distribution, but we need an ADR committed before code review.”

    What you get

    • ADR Markdown Document

    Written as Markdown to <your output folder>/architecture/tasks/<run-id>/adr-authoring/.

    What it will not do

    Do not use for portfolio-level decision governance, choosing technology, drafting an RFC/proposal/design specification, recording meeting notes/changelogs/runbooks, or documenting an unapproved recommendation.

    How it works

    1. Check an authorized decision already exists.
    2. Bound the record identity and repository scope.
    3. Freeze the decision context and drivers.
    4. Capture screened options and explicit non-selections.
    5. Record decision outcome and authority evidence.
    6. Detail consequences and follow-up obligations.
    7. Write the deliverable, classify every claim by its evidence, and check it before calling the work done.

    What's in the package

    Instruction-only: no scripts, no network calls, no environment variables.

    • LICENSE.txt
    • SKILL.md
    • agents/openai.yaml
    • assets/output-template-task.md
    • references/domain-rules.md
    • references/operating-rules.md
    • references/output-contract.md

    How to install

    Works the same in every agent - Claude, Cursor, Codex, Copilot and 20+ more.

    ~30 seconds
    1. 1

      Download the ZIP

      Free skills download straight away. Paid skills unlock right after purchase.

    2. 2

      Unzip into your skills folder

      Every agent reads skills from one folder on your machine. Drop the unzipped folder in there.

    3. 3

      Ask your agent to use it

      Restart the agent if it was already running. It picks the skill up automatically - no config needed.

    Skills folder by agent

    Click the path to copy it. Create the folder if it does not exist yet.

    Reviews

    No reviews yet

    Be one of the first to try it. Every listed skill passes our trust checks below.

    Security scanned

    Passed our 8-point scan before listing

    1 install

    Downloaded by developers to date

    Free forever

    No account required to browse

    Trust & safety

    Security scanned

    Verified clean 13 days ago

    • Free to download with an account

    Listed13 days ago

    What's inside

    Frequently Asked Questions