Coding Standard
testdouble/han
Creates and updates coding standards, conventions, rules, and guidelines for the current project.
Records an architecture decision as a Nygard/MADR-shaped ADR under decisions/ — capturing the context that forced the choice, the options weighed, the decision itself, and its consequences in both…
$ npx skills add inkeep/open-knowledge --skill record-a-decision -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install inkeep/open-knowledge record-a-decision --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/inkeep/open-knowledge.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/server/assets/skills/packs/software-lifecycle/record-a-decision .claude/skills/record-a-decision && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "record-a-decision" agent skill from https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/software-lifecycle/record-a-decision into .claude/skills/record-a-decision/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-a-decision", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/software-lifecycle/record-a-decisionType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add inkeep/open-knowledge --skill record-a-decision -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install inkeep/open-knowledge record-a-decision --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/inkeep/open-knowledge.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/server/assets/skills/packs/software-lifecycle/record-a-decision .agents/skills/record-a-decision && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "record-a-decision" agent skill from https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/software-lifecycle/record-a-decision into .agents/skills/record-a-decision/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-a-decision", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add inkeep/open-knowledge --skill record-a-decision -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install inkeep/open-knowledge record-a-decision --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/inkeep/open-knowledge.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/server/assets/skills/packs/software-lifecycle/record-a-decision .cursor/skills/record-a-decision && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "record-a-decision" agent skill from https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/software-lifecycle/record-a-decision into .cursor/skills/record-a-decision/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-a-decision", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/inkeep/open-knowledge.git --path packages/server/assets/skills/packs/software-lifecycle/record-a-decision--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add inkeep/open-knowledge --skill record-a-decision -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install inkeep/open-knowledge record-a-decision --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/inkeep/open-knowledge.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/server/assets/skills/packs/software-lifecycle/record-a-decision .gemini/skills/record-a-decision && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "record-a-decision" agent skill from https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/software-lifecycle/record-a-decision into .gemini/skills/record-a-decision/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-a-decision", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install inkeep/open-knowledge record-a-decisionInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add inkeep/open-knowledge --skill record-a-decision -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/inkeep/open-knowledge.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/server/assets/skills/packs/software-lifecycle/record-a-decision .github/skills/record-a-decision && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "record-a-decision" agent skill from https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/software-lifecycle/record-a-decision into .github/skills/record-a-decision/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-a-decision", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add inkeep/open-knowledge --skill record-a-decision -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install inkeep/open-knowledge record-a-decision --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/inkeep/open-knowledge.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/server/assets/skills/packs/software-lifecycle/record-a-decision .opencode/skills/record-a-decision && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "record-a-decision" agent skill from https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/software-lifecycle/record-a-decision into .opencode/skills/record-a-decision/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "record-a-decision", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
record-a-decisionRecords an architecture decision as a Nygard/MADR-shaped ADR under decisions/ — capturing the context that forced the choice, the options weighed, the decision itself, and its consequences in both…
Record A Decision is an agent skill from inkeep/open-knowledge. Records an architecture decision as a Nygard/MADR-shaped ADR under decisions/ — capturing the context that forced the choice, the options weighed, the decision itself, and its consequences in both directions, plus the supersedes chain that keeps a decision log honest. Read when asked to record an architecture decision, write an ADR, log the decision we made, document why we chose X over Y, capture this decision for the record, or supersede an old decision with a new one. Do NOT read to frame a proposal or explore…
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Any agent host with the OpenKnowledge MCP server configured. Installed project-local by ok seed --pack software-lifecycle.
It sits in Development, covering Architecture decision records and Runbooks and postmortems. The repository describes itself as: Beautiful, AI-native markdown IDE and LLM wiki. The licence is GPL-3.0.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cf9b84c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are yaml).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Any agent host with the OpenKnowledge MCP server configured. Installed project-local by `ok seed --pack software-lifecycle`.
From compatibility in the SKILL.md frontmatter.
Record A Decision loads about 3.5k tokens when it runs. Until then it costs about 203 tokens; SKILL.md has 1,876 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from inkeep/open-knowledge at commit cf9b84c, republished under its GPL-3.0 licence (© inkeep). 1,876 words, ~3,530 tokens.
.claude/skills/record-a-decision/SKILL.md (or your agent's skills folder).decisions/The platform /open-knowledge skill still governs every markdown operation here (grounding, linking, the rule that OK's MCP tools own in-scope markdown); this skill layers ADR craft on top.
An Architecture Decision Record is a small, dated, frozen document that captures one decision, the forces that made it necessary, and what the team now has to live with. The value compounds over years: a reader who joins in three years should understand not just what was decided but why it was even a question. ADRs are frozen once accepted — you never rewrite one to change your mind, you supersede it with a new record and leave the old one standing as history. That supersedes chain is what separates an honest decision log from a pile of stale opinions.
Filenames are NNNN-title.md (zero-padded 4-digit sequence + kebab title). Status vocabulary: proposed / accepted / deprecated / superseded. Template id decision, body sections exactly ## Context, ## Decision, ## Consequences in that order.
An ADR records a decision; it does not make one. Before anything else, establish that a choice has been settled.
/frame-a-proposal skill. A proposal is where options get explored and argued; an ADR is where the settled outcome gets recorded. Recording a decision the user has not made produces a fake record that misleads every future reader./review-a-design. This skill assumes the decision is sound; it captures it.Do not proceed past this gate until the user has confirmed a specific decision. State it back to them in one sentence and get a nod.
A new ADR that silently contradicts an accepted one is how a decision log rots. Before allocating a number, find what already exists.
search({ query: "<subsystem or topic of the decision>" }) — semantic sweep for related decisions, proposals, and specs.exec("ls -A decisions/") — see the existing sequence and titles.exec("grep -rln <subsystem-keyword> decisions/") — find records touching the same subsystem, interface, or constraint.exec("cat decisions/NNNN-x.md") — read its Decision and Status.Then classify and surface to the user before writing:
supersedes: candidate: "This looks like it supersedes 0007-use-rest-api, which is currently accepted. Confirm and I'll wire the chain in Step 7." Do not silently write a contradicting record.If the decision graduated from an accepted proposal in proposals/, locate that proposal now (exec("grep -rln <topic> proposals/")) — you'll link it as the parent in Step 4.
Never guess the sequence number. List the folder and take the next integer.
exec("ls -A decisions/") — read the highest existing NNNN.0001.0012-adopt-event-sourcing-for-orders, not 0012-orders.write({ document: { path: "decisions/0012-adopt-event-sourcing-for-orders.md", template: "decision" } })The template lays down the frontmatter scaffold and the three H2 sections. Fill the frontmatter now:
type: decision
description: "One line: the decision, active voice."
status: proposed # proposed until the deciders accept; then accepted
date: YYYY-MM-DD # today
deciders: [<user>] # who owns this decision
supersedes: [] # fill in Step 7 if this replaces an earlier record
tags: [decision]Leave status: proposed while drafting. It becomes accepted only when the deciders sign off (Step 8) — an ADR that ships accepted before anyone agreed is backdating.
## Context is the section that ages best. Write it so a reader three years from now understands why this was even a question — no access to the meeting, the thread, or your memory. Cover:
Write it neutrally and factually. Do not argue for the decision here — that's Step 4's job. Context describes the problem so completely that the Decision reads as one reasonable response to it. If a reader finishes Context and still can't see why a choice was needed, the section has failed; rewrite it.
Ground every factual claim about the system in something checkable — link the proposal, a spec, or a prior decision rather than asserting from memory.
## Decision states what will be done, in the active voice, present or future tense: "We will ..." One clear paragraph. A reader must finish it knowing exactly what was chosen with zero ambiguity.
Then, briefly:
Do not fold implementation detail into the Decision — how it gets built belongs in a spec, not the ADR. The Decision says what and why, not the migration steps.
## Consequences records what the team now lives with — good AND bad. A Consequences section with only upside is a marketing document, not an ADR. Cover, in whatever grouping fits:
Force yourself to write at least one genuine negative and one new obligation. If you can't find any, you haven't thought hard enough — every real decision costs something. The negatives are the most valuable part of the record; they're what a future team checks when the decision starts to hurt.
Read the draft as a skeptic who disagrees with the decision. Answer each honestly and fix what fails:
If this pass reveals that the design itself is in question — not the quality of the record but whether the decision is right — stop and hand off to /review-a-design. This skill records sound decisions; it is not the place to relitigate one.
If this record replaces an earlier one, the chain must be wired in both directions or the log lies from one side.
supersedes: frontmatter.edit({ document: { path: "decisions/0012-adopt-event-sourcing-for-orders.md",
frontmatter: { supersedes: ["decisions/0007-use-rest-api.md"] } } })edit({ document: { path: "decisions/0007-use-rest-api.md",
frontmatter: { status: "superseded" } } })Then add a line near the top of the old record's Context (or a short > Superseded by ... note): Superseded by [0012-adopt-event-sourcing-for-orders](./decisions/0012-adopt-event-sourcing-for-orders.md).
Never edit the old record's Context, Decision, or Consequences prose. ADRs are frozen — the old decision was true when it was made and stays on the record as history. You add the status flip and the forward pointer; you do not rewrite what it said. Both edits land, or the chain is broken in one direction and the log becomes untrustworthy.
links({ kind: "backlinks", document: "decisions/0012-adopt-event-sourcing-for-orders" }) to see who points here; add the missing ones so the record is discoverable.audit({ path: "decisions/0012-adopt-event-sourcing-for-orders.md" }) returns clean (every lint violation + broken internal link) — fix every finding; a broken link to a superseded record defeats the whole chain.type, description, status, date, deciders, supersedes, tags all present and correct.status: proposed → accepted. If they haven't, leave it proposed and tell the user it's awaiting sign-off. Do not mark a decision accepted on the user's behalf.## Context, ## Decision, ## Consequences, in order. No extra top-level sections — depth that doesn't fit these three belongs in a linked spec.Close in conversation, three things:
Then note whether status is accepted (deciders signed off) or proposed (awaiting sign-off), so the user knows what, if anything, is still open.
/frame-a-proposal. This skill records; it does not choose./write-a-spec). The ADR captures what and why, not how./review-a-design.© inkeep, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in packages/server/assets/skills/packs/software-lifecycle/record-a-decision of inkeep/open-knowledge.
Open the folder on GitHubat commit cf9b84c
Record A Decision next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Record A Decision this skillinkeep/open-knowledge | 4.4k | — | ~3.5k | Automated safety check: Pass | GPL-3.0 | |
| Coding Standardtestdouble/han | 279 | — | ~8.6k | Automated safety check: Pass | MIT | |
| Project Documentationtestdouble/han | 279 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Technical Writingrsmdt/the-startup | 536 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Technical Documentationkid-sid/claude-spellbook | 189 | — | ~3.4k | Automated safety check: Notes | MIT | |
| Simplified Technical Englishathola/claude-night-market | 342 | — | ~2k | Automated safety check: Pass | MIT |
testdouble/han
Creates and updates coding standards, conventions, rules, and guidelines for the current project.
testdouble/han
Creates and maintains project documentation for features, systems, and components.
rsmdt/the-startup
Create architectural decision records (ADRs), system documentation, API documentation, and operational runbooks.
kid-sid/claude-spellbook
A skill your agent uses when writing a README, documenting an API with OpenAPI, drafting a runbook for on-call engineers, authoring a technical spec or ADR, or setting up docs-as-code with…
athola/claude-night-market
Applies an ASD-STE100-derived register to operator and procedural text.
bgauryy/octocode
Writes, repairs and copyedits project docs against the Google developer documentation style guide, verifying claims in the repository before stating them.
inkeep/open-knowledge
A skill your agent uses when the user wants to create, author, write, or design a new Agent Skill (a SKILL.md) — for OpenKnowledge or for their editors — including requests like 'help me write a…
inkeep/open-knowledge
Read when the user asks what OpenKnowledge is, wants to install it on a repository, wants to open or preview a single markdown file that is not part of an OpenKnowledge project, wants to share an…
inkeep/open-knowledge
Write a blameless incident postmortem under postmortems/ following the Google SRE shape — evidence-based timeline, trigger vs root cause vs symptom, contributing factors, what went well, and…
inkeep/open-knowledge
How to work in a Codebase Wiki project (the codebase-wiki starter pack): an agent-authored, source-grounded wiki of the surrounding codebase.
inkeep/open-knowledge
Authoritative agent-runtime contract for working inside an OpenKnowledge project — a markdown-CRDT knowledge base exposed over MCP.
inkeep/open-knowledge
Promote existing research into a stable-status canonical article under articles/ in a Knowledge Base project (the knowledge-base starter pack).
Categories
Records an architecture decision as a Nygard/MADR-shaped ADR under decisions/ — capturing the context that forced the choice, the options weighed, the decision itself, and its consequences in both…. Record A Decision is an agent skill from inkeep/open-knowledge. Records an architecture decision as a Nygard/MADR-shaped ADR under decisions/ — capturing the context that forced the choice, the options weighed, the decision itself, and its consequences in both directions, plus the supersedes chain that keeps a decision log honest.
Record A Decision fits situations like: tasks that involve Architecture decision records; tasks that involve Runbooks and postmortems.
Run `npx skills add inkeep/open-knowledge --skill record-a-decision -a claude-code`. Or copy the skill folder (packages/server/assets/skills/packs/software-lifecycle/record-a-decision in inkeep/open-knowledge) into .claude/skills/record-a-decision in your project. Claude Code loads it when a task matches its description.
Run `npx skills add inkeep/open-knowledge --skill record-a-decision -a codex`. Or copy the skill folder (packages/server/assets/skills/packs/software-lifecycle/record-a-decision in inkeep/open-knowledge) into .agents/skills/record-a-decision in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add inkeep/open-knowledge --skill record-a-decision -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/record-a-decision, .gemini/skills/record-a-decision, .github/skills/record-a-decision and .opencode/skills/record-a-decision in your project.
SKILL.md names no scripts, command-line tools or credentials: Record A Decision is instructions for the agent only. Compatibility (from SKILL.md): Any agent host with the OpenKnowledge MCP server configured. Installed project-local by `ok seed --pack software-lifecycle`..
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Record A Decision is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Record A Decision: Coding Standard (testdouble/han, 279 stars), Project Documentation (testdouble/han, 279 stars), Technical Writing (rsmdt/the-startup, 536 stars) and Technical Documentation (kid-sid/claude-spellbook, 189 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
inkeep (a GitHub organization) maintains it in inkeep/open-knowledge, which has 4,407 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 7, 2026.
Source: inkeep/open-knowledge on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.