agentsclimarketplace

Shipkit adr

Skill stefan-stepzero/shipkit/install/skills/shipkit-adr

Land one architecture decision atomically: full entry to architecture-archive.json, hard-capped lean entry to architecture.json. Handles new decisions, supersession, amendment. Triggers: 'record this decision', 'log an ADR', 'we decided', 'supersede ADR', 'that replaces the earlier decision'.From its SKILL.md

Install
npx -y skills add stefan-stepzero/shipkit --skill shipkit-adr

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.5 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

shipkit-adr - Land a Decision Atomically

Purpose: Record one architecture decision the moment it's made — as a single atomic transaction across both decision files, with a hard length cap on what enters the always-loaded lean index.

Why this exists: architecture.json is @-imported into CLAUDE.md, so every byte of it loads into every session. The moment a decision gets recorded is exactly when a long rationale is freshest and most tempting to paste in. This skill enforces the lean/archive split at that moment: full reasoning is preserved (archive), context stays cheap (lean).

Output: One entry appended to .shipkit/architecture-archive.json (full) + the capped projection in .shipkit/architecture.json (lean).


When to Invoke

User triggers:

  • "Record this decision" / "log an ADR"
  • "We decided X" (after a decision is settled in conversation)
  • "ADR-NNN is superseded by this" / "that replaces the earlier decision"
  • "Amend ADR-NNN"

Agent triggers: Any skill or agent that has just made an architecture-level decision mid-work lands it here instead of hand-editing architecture.json.


Prerequisites

None. If either decision file is missing, this skill initializes it (schemas below). The canonical convention both files follow is shipkit-engineering-definition/references/architecture-log-schema.md — read it for edge cases; the operative rules are inlined here.


Hard Caps (non-negotiable)

What enters the lean file is capped. Full text always survives in the archive — leaning relocates information, it never loses it.

Lean fieldCap
decisionone line, ≤ 120 chars
rationaleone line, ≤ 160 chars
superseded entrystub only: { id, status, supersededBy, decision } — nothing else

If the user's phrasing exceeds a cap, compress it for the lean file and put the full text in the archive entry. Never widen the cap; never put alternatives in the lean file.


Process

Step 1: Capture the decision

From the conversation (or $ARGUMENTS), establish:

  • decision — what was decided (one line)
  • rationale — why (full form for archive; one-line form for lean)
  • alternatives — what was considered and rejected (archive only; may be empty)
  • scopecross-cutting or mechanism:M-NNN
  • relationship — is this NEW, does it SUPERSEDE an existing ADR, or AMEND one? Supersession is marked explicitly here, at write time — it is never auto-detected later.

Ask only for what the conversation hasn't already settled (usually nothing or one question).

Step 2: Read both files, allocate the ID

Read .shipkit/architecture.json and .shipkit/architecture-archive.json. New ID = max ADR number seen in either file + 1 (scanning both self-heals any drift from a previously interrupted write). If a file is missing, initialize it with the schema skeleton below before proceeding.

Step 3: Archive first (full entry)

Append to architecture-archive.json decisions[]:

{ "id": "ADR-NNN", "status": "active", "decision": "...", "rationale": "full — as long as needed",
  "alternatives": ["..."], "scope": "...", "date": "YYYY-MM-DD" }
  • Supersession: new entry also gets "supersedes": "ADR-MMM"; set ADR-MMM's "status": "superseded", "supersededBy": "ADR-NNN" — keep its full body.
  • Amendment: new entry appended; ADR-MMM gets "amendedBy": ["ADR-NNN", ...] and stays active.
  • Archive is append-only: never delete an entry, never change an original date.

Step 4: Then lean (capped projection)

Update architecture.json decisions[]:

  • New/amending ADR → append { "id", "decision", "rationale" (one line), "scope", "date" } within the caps above.
  • Supersession → also collapse ADR-MMM to the stub: { "id": "ADR-MMM", "status": "superseded", "supersededBy": "ADR-NNN", "decision": "<one line>" }.
  • Amendment → ADR-MMM keeps its capped active form; it is NOT stubbed.

Recompute lastUpdated on both files.

Ordering is the crash-safety guarantee: archive-first means an interrupted run can only leave the archive ahead of the lean file — nothing is lost, and the next run's Step 2 (max-ID across both) reconciles.

Step 5: Budget check + confirm

If architecture.json now exceeds ~10 KB (the session-start hook's budget), tell the user: it's time to supersede/stub stale decisions or run the one-time migrate-architecture-log.py splitter.

Confirm in one line: ADR-NNN landed: <decision> (supersedes ADR-MMM, lean 4.1 KB).


File skeletons (only when initializing a missing file)

architecture.json: { "$schema": "shipkit-artifact", "type": "architecture-decisions", "version": "1.0", "lastUpdated": "...", "source": "shipkit-adr", "note": "Lean active-decisions index. Full ADR bodies live in .shipkit/architecture-archive.json — read on demand.", "decisions": [], "patterns": [], "constraints": [] }

architecture-archive.json: same shape with "type": "architecture-decisions-archive" and the note pointing the other way.


When This Skill Integrates with Others

Before This Skill

  • Nothing required — this is the moment-of-decision capture path. For deriving a full decision log from an engineering blueprint, that's /shipkit-engineering-definition (the primary writer), not this.
<!-- SECTION:after-completion -->

After This Skill

  • If the decision changes the current-state architecture, refresh /shipkit-architecture-map.
  • If the lean file is over budget, run the migrate-architecture-log.py splitter (opt-in, dry-run by default).
<!-- /SECTION:after-completion -->

Context Files This Skill Reads

  • .shipkit/architecture.json — current lean index (ID allocation, supersession targets)
  • .shipkit/architecture-archive.json — full log (ID allocation, prior bodies)

Context Files This Skill Writes

  • .shipkit/architecture-archive.jsonAPPEND (full entry; status/link updates on related entries only)
  • .shipkit/architecture.jsonEDIT (append capped entry; collapse superseded entries to stubs; lastUpdated)
    • Write strategy: targeted Edit calls per the Structured Artifact Updates rule — never a script.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.