RAG Code Review
lyonzin/knowledge-rag
When performing code review on a PR, diff, snippet, or "look at this change" request, first consult the corpus for related ADRs, coding standards, prior patterns, and similar files.
Create, extract, or convert an ADR (architectural decision record) using the ADR template.
$ npx skills add testdouble/han --skill architectural-decision-record -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install testdouble/han architectural-decision-record --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/testdouble/han.git skills-src && mkdir -p .claude/skills && cp -r skills-src/han-documentation/skills/architectural-decision-record .claude/skills/architectural-decision-record && 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 "architectural-decision-record" agent skill from https://github.com/testdouble/han/tree/main/han-documentation/skills/architectural-decision-record into .claude/skills/architectural-decision-record/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "architectural-decision-record", 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/testdouble/han/tree/main/han-documentation/skills/architectural-decision-recordType 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 testdouble/han --skill architectural-decision-record -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install testdouble/han architectural-decision-record --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .agents/skills && cp -r skills-src/han-documentation/skills/architectural-decision-record .agents/skills/architectural-decision-record && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "architectural-decision-record" agent skill from https://github.com/testdouble/han/tree/main/han-documentation/skills/architectural-decision-record into .agents/skills/architectural-decision-record/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "architectural-decision-record", 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 testdouble/han --skill architectural-decision-record -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install testdouble/han architectural-decision-record --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/han-documentation/skills/architectural-decision-record .cursor/skills/architectural-decision-record && 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 "architectural-decision-record" agent skill from https://github.com/testdouble/han/tree/main/han-documentation/skills/architectural-decision-record into .cursor/skills/architectural-decision-record/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "architectural-decision-record", 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/testdouble/han.git --path han-documentation/skills/architectural-decision-record--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 testdouble/han --skill architectural-decision-record -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install testdouble/han architectural-decision-record --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/han-documentation/skills/architectural-decision-record .gemini/skills/architectural-decision-record && 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 "architectural-decision-record" agent skill from https://github.com/testdouble/han/tree/main/han-documentation/skills/architectural-decision-record into .gemini/skills/architectural-decision-record/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "architectural-decision-record", 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 testdouble/han architectural-decision-recordInstalls 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 testdouble/han --skill architectural-decision-record -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .github/skills && cp -r skills-src/han-documentation/skills/architectural-decision-record .github/skills/architectural-decision-record && 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 "architectural-decision-record" agent skill from https://github.com/testdouble/han/tree/main/han-documentation/skills/architectural-decision-record into .github/skills/architectural-decision-record/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "architectural-decision-record", 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 testdouble/han --skill architectural-decision-record -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install testdouble/han architectural-decision-record --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/testdouble/han.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/han-documentation/skills/architectural-decision-record .opencode/skills/architectural-decision-record && 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 "architectural-decision-record" agent skill from https://github.com/testdouble/han/tree/main/han-documentation/skills/architectural-decision-record into .opencode/skills/architectural-decision-record/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "architectural-decision-record", 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.
architectural-decision-recordCreate, extract, or convert an ADR (architectural decision record) using the ADR template.
Architectural Decision Record is an agent skill from testdouble/han. Create, extract, or convert an ADR (architectural decision record) using the ADR template. Use when creating new ADRs, extracting an ADR from existing documentation, converting a document into an ADR, recording an architecture or design decision, or updating the status of an existing ADR. Does not create or update enforceable coding standards or conventions — use coding-standard for that. Does not write feature or system documentation — use project-documentation instead.
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/conversion-mapping.md` and `references/template.md`).
It sits in Development, covering Architecture decision records and Code quality. The repository describes itself as: Han: AI skills and agents for "Solo" product engineers and small teams. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit abba73a. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditGlobGrepAgentBash(mkdir *)Bash(find *)Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh")From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bashFrom 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.
Architectural Decision Record loads about 4.1k tokens when it runs, and up to ~4.5k if it reads all its reference files. Until then it costs about 126 tokens; SKILL.md has 2,060 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 testdouble/han at commit abba73a, republished under its MIT licence (© testdouble). 2,060 words, ~4,066 tokens.
.claude/skills/architectural-decision-record/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.han-communication:readability-guidance and apply it as you write the ADR. Hold its default audience frame: a capable
reader who did not make this decision and lacks your context. The frame governs how each section reads, never whether
a required technical fact appears.find . -maxdepth 1 -name "CLAUDE.md" -type ffind . -maxdepth 3 -name "project-discovery.md" -type fbash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh" 2>/dev/null || echo "$HOME/.claude"cat .han/config.md 2>/dev/null || echo ""As your first action, use the Read tool on .han/config.md inside the personal config directory path above. A read
that returns no file is no personal configuration: continue silently. When that file or the project .han/config.md
probe supplies content, apply it per config-rule.md, which governs precedence
between the two files, relative-path resolution, and what to do with a file that reads but cannot be used.
Determine which mode to operate in based on the user's request:
| Mode | When | Initial Status | Then |
|---|---|---|---|
| Creating new | Building an ADR from scratch for a new or recent decision | proposed | → Step 2 |
| Converting existing | User provides an existing document to convert into an ADR | accepted | → Step 2 |
| Updating existing | Modifying an existing ADR (status change, superseding, adding notes) | — | Read the existing ADR, → Step 3 |
Retrieve project config: Resolve project config: read CLAUDE.md's ## Project Discovery section for docs and ADR
directories; fall back to project-discovery.md; fall back to Glob defaults (docs/, docs/adr/). Continue without
any keys that remain unfound.
Determine the ADR directory: Use the ADR directory if found; otherwise use {docs-dir}/adr/ if a docs directory
was found; otherwise use docs/adr/. Run mkdir -p on the resolved directory to ensure it exists.
Enumerate existing ADRs: Use Glob to find existing .md files in the ADR directory.
Check existing ADR format: If existing ADRs were found, read one to understand the project's format. If it differs from template.md, ask the user whether to match the existing format or use this skill's template.
Discover the filename hierarchy taxonomy: ADRs are organized by a one- or two-level hierarchy encoded in the filename so related decisions sort together in a directory listing. Discover the taxonomy that applies to this project — never hardcode it.
auth-session-storage.md → top-level auth; auth-tokens-rotation.md →
top-level auth, second-level tokens). Build a list of top-level prefixes and known second-level prefixes per
top-level.auth, billing, api, worker, postgres, terraform).AskUserQuestion to clarify before writing. If the forcing function is
the unclear one, surface that explicitly — "I don't see a current trigger forcing this decision; recommend deferring
the ADR until {trigger}. Override?"Skip agent exploration if the user has already provided full context (converting or updating). When creating a new ADR
with sparse context, launch 1-2 han-core:codebase-explorer agents to discover evidence. Use 1 agent for narrow
decisions, 2 when the decision crosses multiple system areas. Explorer 1 focuses on code affected by the decision topic
(current patterns, entry points, core logic). Explorer 2 focuses on existing ADRs, coding standards, and project docs
(starting from the docs directory found in Step 2).
After agents complete (or if skipped), merge findings with user-provided context. Agent discovery items map to Context (current state of the codebase), Decision (why the chosen option fits), and Notes (key files table, cross-references). Merge duplicates and resolve conflicts between agents.
Skip this sub-step in update mode when only status is changing. Otherwise, launch review agents in parallel against the compiled evidence, the proposed decision, and the considered alternatives. Pass each agent the topic, the proposed decision, the alternatives, and the evidence compiled above.
Launch architect agent — use han-core:software-architect when the decision is scoped to a single codebase or
bounded context (module boundaries, class and interface design, abstraction points, refactoring paths). Use
han-core:system-architect when the decision crosses service or bounded-context seams (integration patterns, data
ownership across services, failure-domain topology, context-map relationships). If uncertain, prefer
han-core:system-architect. Prompt: "Review the proposed decision against the compiled evidence. For the chosen
option, identify structural or topological risks that the ADR's Consequences section should name. For each rejected
alternative, identify the strongest case for it that the ADR's Decision section needs to rebut or concede. Return
findings keyed to the ADR's Decision, Decision Drivers, and Consequences sections."
Launch han-core:risk-analyst agent — prompt: "Assess the risk of adopting the chosen option versus staying with the current approach or adopting each rejected alternative. Score each on likelihood, severity, blast radius, and reversibility. Return findings keyed to the ADR's Consequences section, and flag any dimension where a rejected alternative scores better than the chosen option — the ADR needs to explain why."
Launch han-core:junior-developer agent in artifact-review mode — prompt: "Read the proposed Context, Decision, Decision Drivers, and Considered Options as a generalist encountering this decision for the first time. Surface: unexplained jargon, assumptions baked into the Decision Drivers without evidence, alternatives dismissed without a reason a generalist would accept, and places where the ADR relies on context a future reader will not have. Return a short list of clarifying questions and must-answer gaps."
Merge the three agents' findings into the Decision, Decision Drivers, and Consequences sections before writing. Where an agent raises a must-answer gap that requires user judgment, surface it with a recommended resolution rather than resolving silently.
Convert source document (if converting): Read the source document and map sections to ADR sections using the mapping at conversion-mapping.md.
Copy the template from template.md
File name and location: {top-level}[-{second-level}]-{kebab-case-title}.md — a one- or two-level hierarchy
prefix followed by the decision's specific title. The hierarchy must come from the taxonomy discovered in Step 2.6,
never invented or hardcoded.
auth, billing, api,
postgres). Reuse an existing top-level prefix from Step 2.6 when one fits; only introduce a new top-level when no
existing prefix applies, and prefer one that matches a subsystem, bounded context, or technology already named in
CLAUDE.md or project-discovery.md.auth-tokens-…, auth-sessions-…). Reuse an existing second-level prefix from Step 2.6
when one fits. Skip the second level when the ADR is the only one (or one of a few) under its top-level.Fill in metadata: Status per Step 1 mode (proposed for new, accepted for converted; use deprecated or
superseded when updating). Date Created / Last Updated: current date and time.
Fill each required section following the template's HTML comments for guidance. Readability: invoke
han-communication:readability-guidance to surface the shared readability standard into your context, then write the
prose in each section against it — lead with the main point, give each paragraph one idea carried by its first
sentence, number sequential steps and bullet non-sequential items, and disclose detail in layers. Keep the template's
prescribed section structure (Context, Decision Drivers, Considered Options, Decision, Consequences, Notes); the rule
governs the prose within them, and its descriptive-heading rule applies to any sub-headings you add, not the
prescribed section names.
Notes section must include:
| File | Purpose |
|---|---|
path/to/file | Description |
See also [Soft Deletes](./data-soft-deletes.md))If updating an existing ADR: Update Status, Last Updated, and add notes about what changed. If superseding,
cross-reference the new ADR and set the old ADR's status to superseded.
Handle source document (conversions only): If the source document is fully subsumed, delete it and update references in CLAUDE.md, AGENTS.md, and other markdown files. If it retains useful content, add a link to the new ADR and remove migrated sections.
See reference in the relevant section of any existing CLAUDE.md or AGENTS.md, following the pattern of
existing ADR references. Place it near the feature or component the ADR describes.Read back the ADR file and confirm:
{placeholder} values remain) and template structure from
template.md was followedRun the standardized readability self-check (the shared standard is in your context from
han-communication:readability-guidance) over the ADR's prose regions only — never inside code fences, diagram bodies,
or citation identifiers. This skill runs no rewrite pass, so this self-check is the fidelity guard on the output; the
fidelity criterion is not optional. Confirm each criterion and fix any failure before presenting:
Run the readability rule's standardized self-check, which is already in your context from the readability-guidance
invocation above. Correct every failure before presenting. Its fidelity criterion is not optional: the standard governs
how the content is said, and drops a required fact only when the reader asked for less and losing it would not change
what they do next.
The descriptive-heading criterion applies to sub-headings you added, not to the section names the ADR template prescribes.
© testdouble, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in han-documentation/skills/architectural-decision-record of testdouble/han.
Open the folder on GitHubat commit abba73a
Architectural Decision Record 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 |
|---|---|---|---|---|---|---|
| Architectural Decision Record this skilltestdouble/han | 279 | — | ~4.1k | Automated safety check: Pass | MIT | |
| RAG Code Reviewlyonzin/knowledge-rag | 290 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Common Architecture Decisionsmacalbert/envilder | 138 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Install Anti-Slop Oxlint Rulesdmmulroy/anti-slop | 5.3k | 1 repos | ~2.2k | Automated safety check: Pass | MIT | |
| PR Design DocOpenHands/OpenHands | 90k | — | ~2.4k | Automated safety check: Pass | MIT | |
| WooCommerce Code Reviewwoocommerce/woocommerce | 11k | 3 repos | ~1.1k | Automated safety check: Pass | Custom licence |
lyonzin/knowledge-rag
When performing code review on a PR, diff, snippet, or "look at this change" request, first consult the corpus for related ADRs, coding standards, prior patterns, and similar files.
macalbert/envilder
Index of Architecture Decision Records (ADRs) for cross-cutting technical decisions.
dmmulroy/anti-slop
Installs, updates or migrates the vendored anti-slop Oxlint plugin in a repository, keeping local rule changes and the plugin's license and provenance files.
OpenHands/OpenHands
For a non-trivial pull request, write a self-contained HTML design doc under the temporary .pr/ directory and link a visibility-appropriate preview in the PR description, so maintainers grasp the…
woocommerce/woocommerce
Reviews WooCommerce code changes against the project's standards, flagging backend PHP architecture, naming, documentation, data integrity and testing violations.
luongnv89/claude-howto
Guides refactoring in phases based on Martin Fowler's method: research, test coverage check, planning and small tested steps, with your approval at each phase.
testdouble/han
Convert a stakeholder summary markdown file into a single self-contained HTML executive report — bottom line and decision asks up front, supporting detail later — styled with a Test Double-derived…
testdouble/han
Update Han plugin documentation so every skill, agent, guidance doc, index, and cross-reference is current and accurate.
testdouble/han
Authoritative guidance for building Claude Code skills, agents, and plugins, plus init and update steps that install and refresh the plugin-building skills in the current repository.
testdouble/han
Cut a Han release: update CHANGELOG.md with the changes since the last release, bump and tag every plugin that changed as {plugin-name}--v{version} so a version-constrained dependency can resolve…
testdouble/han
Generate a PR description from the current branch's changes against a GitHub PR, using the gh CLI.
testdouble/han
Builds a feature implementation plan from an existing feature specification (or equivalent context) through a facilitated team conversation.
Categories
Create, extract, or convert an ADR (architectural decision record) using the ADR template. Architectural Decision Record is an agent skill from testdouble/han. Create, extract, or convert an ADR (architectural decision record) using the ADR template.
Architectural Decision Record fits situations like: creating new ADRs; extracting an ADR from existing documentation; converting a document into an ADR; recording an architecture.
Run `npx skills add testdouble/han --skill architectural-decision-record -a claude-code`. Or copy the skill folder (han-documentation/skills/architectural-decision-record in testdouble/han) into .claude/skills/architectural-decision-record in your project. Claude Code loads it when a task matches its description.
Run `npx skills add testdouble/han --skill architectural-decision-record -a codex`. Or copy the skill folder (han-documentation/skills/architectural-decision-record in testdouble/han) into .agents/skills/architectural-decision-record 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 testdouble/han --skill architectural-decision-record -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/architectural-decision-record, .gemini/skills/architectural-decision-record, .github/skills/architectural-decision-record and .opencode/skills/architectural-decision-record in your project.
Going by SKILL.md and its folder, Architectural Decision Record needs the command-line tools its instructions call (bash). Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Agent, Bash(mkdir *), Bash(find *), Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh").
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.
Architectural Decision Record is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.1k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 467 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Architectural Decision Record: RAG Code Review (lyonzin/knowledge-rag, 290 stars), Common Architecture Decisions (macalbert/envilder, 138 stars), Install Anti-Slop Oxlint Rules (dmmulroy/anti-slop, 5.3k stars) and PR Design Doc (OpenHands/OpenHands, 90k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
testdouble (a GitHub organization) maintains it in testdouble/han, which has 279 GitHub stars. The repository holds 54 skills in this directory. The repository was last updated on October 1, 2026.
Source: testdouble/han on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.