From write-that-shit-down
Capture project decisions as immutable ADRs and maintain a cross-session knowledge vault. TRIGGER when the user makes an architectural decision, picks a vendor, designs a schema, debates a trade-off, says "let's go with X", asks "why did we", wants to track decisions, or is wrapping up a session that changed architecture. Initializes a `vault/` with services, infra, db, decisions, sessions, and patterns notes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/write-that-shit-down:trackThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A no-bullshit project memory system. You forget why decisions were made. Future-you (and Claude) need that context. Write it down.
A no-bullshit project memory system. You forget why decisions were made. Future-you (and Claude) need that context. Write it down.
Activate proactively when the user does any of these:
Activate explicitly when the user says: /write-that-shit-down:track, "write that down", "log this decision", or asks you to set up a vault.
If vault/ does not exist at project root, create the structure:
vault/
├── INDEX.md # link directory, "read this first"
├── _adr-template.md # decision record skeleton
├── _session-template.md # session note skeleton
├── services/ # one note per runnable service
├── infra/ # one note per cloud resource
├── db/ # schema, migrations, RLS / access control
├── decisions/ # YYYY-MM-DD-<slug>.md ADRs (immutable)
├── sessions/ # YYYY-MM-DD.md session notes
└── patterns/ # conventions, gotchas, "how we do X"
Use templates/_adr-template.md, templates/_session-template.md, and templates/INDEX-template.md from this skill as starting content. Customize the INDEX to the project's actual services, infra, and DB.
Add vault/.obsidian/ to .gitignore so personal Obsidian config stays local.
On any non-trivial decision, write vault/decisions/YYYY-MM-DD-<slug>.md using _adr-template.md. Required fields:
Context — what problem, what constraints, what was triedDecision — the actual choice in one paragraphConsequences — what becomes easier/harder, what this locks inAlternatives considered — at least 2, with the reason each was rejectedRequired frontmatter for queryability:
area — single bucket: backend | frontend | infra | db | auth | build | ops | productcomponents — concrete names that appear in code/infra (e.g. [users-table, billing-service])tags — decision flavor (e.g. [vendor-choice, schema, cost, security, migration])keywords — extra search terms not in the title (vendor names, libs, error codes)related — wikilinks to prior ADRs touching the same area/componentsAppend the ADR link to INDEX.md under ## Decisions.
ADRs are immutable. To change a decision, write a new ADR that supersedes the old one, link both ways via supersedes / superseded_by.
Two queries work on any vault, legacy or new:
Grep -i "<term>" vault/decisions/ -lGrep "related:.*<name>" vault/decisions/ -l, then traverse related, supersedes, superseded_by one hop.Filter sugar on ADRs written with the current template: ^area: <x>, components:.*<x>, tags:.*<x>. These return zero on legacy vaults. Use them as refinements after free-text, not as entry points.
Don't bulk-read. If a query returns more than 3 hits, list filenames and titles only and ask which to open. Skip status: superseded unless tracing history.
Cite any related ADRs in the new ADR's related: field and reference them from Context ("supersedes [[...]]" or "extends [[...]]"). When the user asks "why did we..." or "what did we pick for Y", answer with links to the ADRs found, not from memory.
When a decision changes a service / infra / DB fact, diff-edit the matching note in vault/services/, vault/infra/, or vault/db/. Don't let the vault drift from reality.
Before ending a session that touched architecture / files / deps / hosting:
vault/sessions/YYYY-MM-DD.md summarizing architectural changes and links to new ADRs.vault/decisions/ for non-trivial decisions made.INDEX.md to link new notes.If nothing architectural changed, still write a one-line session note saying so. Cadence matters.
type, status, last_verified, related.[[my-service]], not paths. Obsidian resolves them.YYYY-MM-DD-<slug>.md. Lowercase, hyphenated.ARCHITECTURE.md or README.md. Those describe current state. The vault preserves why.See templates/ in this skill:
templates/_adr-template.mdtemplates/_session-template.mdtemplates/INDEX-template.mdCopy these into vault/ when initializing, then customize.
Because three weeks from now you will not remember why you picked Lightsail over ECS, or why a column is text NULL instead of varchar(50) NOT NULL. The vault makes that recoverable in one search. Future-you will thank you. Future-Claude will thank you.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub roshan-3/write-that-shit-down --plugin write-that-shit-down