design-doc
Skill1 starsChanged 8 months agoApache-2.0View on GitHub
Writes the design note a non-trivial change needs before code (problem, evidence, options weighed, decision and why, invariants, failure modes, observability, rollback) and, when the change spans apps, packages or services, builds a high-level design diagram or a step-by-step HLD with a defect-checked Excalidraw builder. Use when asked for a design note, design doc, technical spec, HLD, high-level design, architecture diagram, component diagram, flow diagram or "how should we build this", or before adding a new table, route, package, seam, third-party service, or a payment, auth or data-boundary change.
We split this skill into the rules it gives an agent
3 rules. 0 are common, 0 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 19 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 25
If an answer is "not sure", resolve it first by asking one sharp question or reading more code.
- Very specific: line 53
Keep the .excalidraw source and the PNG beside the README that holds the note, and link both in the Diagram section.
- Very specific: line 57
When one design has several entrypoints (a webhook, a poll, a user action) and concrete API calls, trace each step on the same base diagram …
“Common” is measured: kept by at least 6 in 10 of the 19 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Design doc
A design note makes the decision reviewable before code exists. A decision reached mid-build is a planning miss, so the note is finished, and checked, first.
When a note is required
Write one only for a new table, route, package, seam or gate, a new third-party service, or a payment, auth or data-boundary change. Work that merely touches more than one app or package needs no note. A copy fix, a styling tweak, a local bug fix and a change inside an existing module need none.
1. Pin the scope
State these five lines to the requester before researching:
- SCOPE: what is built, in one sentence, at full depth (not a reduced version).
- BUSINESS INTENT: the user journey or business step it serves, and for whom.
- SYSTEMIC IMPACT: other apps, entities, shared primitives, quotas and the security posture it touches.
- EVIDENCE: what you will read and cite.
- VERIFICATION: the gate, test or manual check that will prove it works.
If an answer is "not sure", resolve it first by asking one sharp question or reading more code. For a fuzzy idea, write the requirements first (references/specs-and-lighter-docs.md).
2. Evidence first
Read references/evidence.md. In short: read the real code and primary sources before asserting, cite file:line plus the commit sha you read, and label every behavior current, proposed or untested. A change that stores, sends, signs or exposes user data starts with the applicable law and the terms and free-tier limits of each third party, because they can change the question itself. Flag wording that needs a lawyer; never invent a compliance claim.
3. Write the note
Copy assets/design-note.md into the plan file or the README that sits next to the code, as a Design note: section. Fill every section with substance:
- Options considered: at least two real options, always including "delete or reuse" (what existing code, table or package already solves this, or what can be removed instead), plus "do nothing".
- Decision: the choice and the reason it beats the others; what is deliberately not done.
- Invariants: each names the test, gate or constraint that holds it.
- Failure modes, Observability, Rollback: concrete, with who sees what. No secrets or personal data in logs.
Set Spans components: yes when the change crosses apps, packages or services. That requires a Diagram section.
4. Diagram (only when it spans components)
Read references/diagram-guide.md first and pin altitude and scope before drawing: a component sketch, a subsystem view or a full HLD. Build the diagram with a short generator script that imports scripts/excalidraw_lib.py. check() raises on overlapping boxes, arrows through nodes, labels on the wrong box and text that would overflow, so a diagram that passes is legible before anyone opens it. The palette is a neutral light default (dark ink, light gray fills, one accent) defined as constants at the top of the library; edit them to match your brand. There is no dark variant. For one small flow or a data model, a Mermaid block is enough (references/specs-and-lighter-docs.md).
Make a PNG for the README with scripts/smooth_scene.py then scripts/export_scene.py (needs Pillow and an Arial-style font):
python ${CLAUDE_SKILL_DIR}/scripts/smooth_scene.py overview.excalidraw
python ${CLAUDE_SKILL_DIR}/scripts/export_scene.py overview.excalidraw overview.pngKeep the .excalidraw source and the PNG beside the README that holds the note, and link both in the Diagram section. Keep the scene inside the 1300 by 1040 canvas.
5. Step-by-step HLD (integration flows only)
When one design has several entrypoints (a webhook, a poll, a user action) and concrete API calls, trace each step on the same base diagram with a focus image. Write a manifest per references/hld-manifest.md (start from assets/manifest.example.json), then:
python ${CLAUDE_SKILL_DIR}/scripts/build_hld.py hld.json --validate-source
python ${CLAUDE_SKILL_DIR}/scripts/build_hld.py hld.json --annotate
python ${CLAUDE_SKILL_DIR}/scripts/build_hld.py hld.json --output <output dir>hld.md is the note body to paste into the plan or README; hld.html is a standalone preview to review. Validation fails on stale focus images, unknown targets or routes, unused routes and missing evidence. Fix the manifest and rerun; never edit generated files.
6. Check and report
node ${CLAUDE_SKILL_DIR}/scripts/check-design-note.mjs <plan or README>Fix every ERROR and read every WARN. Then report: where the note lives, the decision in one line, the check result, and what is still untested or open. Do not start the build in the same step unless asked; the note is the deliverable.
Neighbouring jobs
Requirements and acceptance criteria, task breakdown after the decision, OpenAPI docs and Mermaid diagrams are in references/specs-and-lighter-docs.md. A bug report or issue is not a design note.
Other versions23 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 23
- maragudk/skills★ 49same name
- na0fu3y/ochakai★ 21same name
- akash-joshi/agent-skills★ 8same name
- e2bgateway/e2bgateway★ 8same name
- taniwhaai/arai★ 7same name
- kelesmert/turnlens★ 4same name
- arsudsandesh97/Revoact★ 3same name
- dfrysinger/skills★ 3same name
- gigio1023/agent-skills★ 2same name
- gigio1023/gigio-skills★ 2same name
13 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use adr, adversarial-review and 2 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
asterkinSkilladr
Create Architecture Decision Records (ADRs) following project standards. Guides template usage, process, and best practices for documenting architecturally significant decisions.
Also in 3 projects that use this
MicrosoftSkilladversarial-review
Adversarial review of a system design from 6 critical perspectives -- SRE, security, staff engineer, finance, operator, and developer advocate. Produces a unified risk assessment. Use for INTERACTIVE on-demand reviews during a design conversation (/adversarial-review). For RECIPE-DRIVEN reviews (where prior step context is needed), use the systems-design-critic agent instead.
Also in 3 projects that use this
GoogleSkillgrill-me
A relentless interview to sharpen a plan or design.
Also in 4 projects that use this
SentrySkillcommit
Create commit messages following Sentry conventions. Use when committing code changes, writing commit messages, or formatting git history. Follows conventional commits with Sentry-specific issue references.
Also in 3 projects that use this
In this repository21 other files it gives its agents.
- accessibility-wcagSkill
- api-designSkill
- bugbounty-reportSkill
- ci-cd-pipelinesSkill
- codebase-analysisSkill
- database-designSkill
- docker-kubernetesSkill
- git-workflowSkill
- go-devSkill
- i18n-localizationSkill
- llm-integrationSkill
- nextjs-16Skill
- oauth-authSkill
- performance-optimizationSkill
- python-best-practicesSkill
- scraping-automationSkill
- security-reviewSkill
- seo-metaSkill
- tailwind-cssSkill
- testingSkill
- ts-devSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

