design-doc
Skill8 starsChanged 3 months agoMITView on GitHub
Write a design doc for a proposed change, following the team's established format. Covers scoping, drafting, iteration, and publishing to Notion.
25 other projects use a version of this.
Adopted by
Most recently taken up by
- mustafarslan/skillstheir own version, first seen Nov 8, 2026
- mahdy-gribkov/arcanatheir own version, first seen Nov 8, 2026
- medy-gribkov/arcanatheir own version, first seen Nov 1, 2026
- thatjuan/agent-skillstheir own version, first seen Oct 20, 2026
- alabenkhlifa/dayjobtheir own version, first seen Oct 20, 2026
- gigio1023/agent-skillstheir own version, first seen Oct 13, 2026
Used with
Projects with it also use testing, release-notes 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.
NVIDIASkilltesting
Run Python and Rust tests for physicsnemo-curator using uv + pytest with coverage reporting via pytest-cov, and cargo-nextest for Rust tests. Includes benchmark workflows with pytest-benchmark and criterion.
Also in 3 projects that use this
Microsoft AzureSkillrelease-notes
Author and update release notes for Azure App Configuration libraries and providers. USE FOR: write release notes, add release note entry, update release notes, draft release notes, new version release notes, format release notes. DO NOT USE FOR: generating changelogs from git history, writing internal engineering notes.
Also in 3 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 4 projects that use this
GoogleSkillgrill-me
A relentless interview to sharpen a plan or design.
Also in 3 projects that use this
Other versions25 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 25
- maragudk/skills★ 49same name
- na0fu3y/ochakai★ 21same 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
- mustafarslan/skills★ 2same name
15 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.
In this repository23 other files it gives its agents.
- AGENTS.mdAGENTS.md
- cold-dmSkill
- content-sellingSkill
- discovery-callsSkill
- follow-up-sequencesSkill
- keyword-searchSkill
- profile-optimizationSkill
- prospecting-listsSkill
- context-engineeringSkill
- discussSkill
- grillingSkill
- llm-wikiSkill
- opencode-sessionsSkill
- playwright-cliSkill
- pr-descriptionSkill
- demand-first-validationSkill
- founder-market-fitSkill
- idea-scoringSkill
- market-entry-strategiesSkill
- ship-v1Skill
- trend-researchSkill
- tiger-style-codingSkill
- voicenotesSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
25 rules. 0 are common, 16 are distinctive, and 9 are very specific to this project.
0
Common
Most of the 21 edited versions we read keep these.
16
Distinctive
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Write a design doc at docs/proposals/<slug>.md for a proposed change to the codebase.
- Distinctive: line 13
Scope first: Before writing the doc, understand what's changing and why.
- Very specific: line 19
Draft the doc locally: Write to docs/proposals/<slug>.md.
- Very specific: line 22
Publish to Notion: Create a page under the target engineering teamspace, under the appropriate category page.
- Distinctive: line 28
Create tickets: If the user asks, break the doc into tickets in the project sprint tracker.
- Distinctive: line 34
Follow this section order exactly.
- Distinctive: line 40
If something was considered and deliberately excluded, say so here with the reasoning (e.g.
- Distinctive: line 43
Keep it concise. A reader should understand the scope in under 30 seconds.
- Distinctive: line 47
Only describe the parts of the current system that the proposed changes will touch.
- Distinctive: line 51
Use subsection headings (###) named after what the subsection establishes, not after the component (e.g.
- Distinctive: line 69
After the individual changes, include:
- Distinctive: line 100
No em-dashes. Use commas, full stops, colons, or parentheses.
- Distinctive: line 104
Don't leak implementation details into the Requirement section.
- Distinctive: line 105
Don't pad Success Criteria with items that aren't testable.
- Distinctive: line 108
When you call something documented, standard, recommended, or a known pattern ("the documented pattern", "vendor documentation states", …
- Distinctive: line 114
If the audience includes non-engineers (a PM, a designer, a founder), skip code paths entirely.
- Distinctive: line 121
Don't wrap each Proposed Change in "why we chose X over Y" paragraphs.
- Distinctive: line 128
NEVER describe what an earlier version said or how the scope shifted.
- Distinctive: line 138
Never name internal teammates in the doc.
- Very specific: line 157
Don't reference other proposal files by filename (other-doc.md, auth-api.md, etc.).
- Very specific: line 165
Read notion://docs/enhanced-markdown-spec via ReadMcpResourceTool before every publish.
- Very specific: line 167
Use <table> elements for tables, not markdown pipe tables.
- Very specific: line 168
Use ``
mermaid ``` for sequence diagrams. - Very specific: line 169
Do not escape underscores inside inline code.
- Very specific: line 172
Never use replace_content when updating existing Notion pages.
“Common” is measured: kept by at least 6 in 10 of the 21 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 Skill
Write a design doc at docs/proposals/<slug>.md for a proposed change to the
codebase.
Process
- Scope first. Before writing the doc, understand what's changing and why.
Explore the relevant code paths. If the change was motivated by a comparison
(e.g. against an external API), capture the gap analysis in a separate
scoping file (e.g.
<topic>-tasks.mdin the repo root) so the design doc itself stays focused. - Draft the doc locally. Write to
docs/proposals/<slug>.md. Iterate with the user until they're happy with the content. - Publish to Notion. Create a page under the target engineering teamspace,
under the appropriate category page. Use
notion-create-pageswith the teamspace or category page as parent. Readnotion://docs/enhanced-markdown-specbefore converting content. Use Notion<table>syntax for tables, not markdown pipes. - Create tickets. If the user asks, break the doc into tickets in the project sprint tracker. Use the schema from the tracker: Task name, Status, Priority, Effort level, Task type, Description.
Doc structure
Follow this section order exactly. Every section is required unless marked optional.
Requirement
What problem does this solve, and for whom? State the gaps or needs clearly. If something was considered and deliberately excluded, say so here with the reasoning (e.g. "We're deliberately not implementing X because Y").
Keep it concise. A reader should understand the scope in under 30 seconds.
How Things Work Right Now
Only describe the parts of the current system that the proposed changes will touch. Do not rehash the full architecture. Each subsection should explain one thing that matters for understanding a proposed change.
Use subsection headings (###) named after what the subsection establishes, not after the component (e.g. "### Session tokens are cached in Redis" not "### Session state storage").
Reference specific code: file paths, function names, line numbers where helpful. But don't turn it into a code walkthrough.
Proposed Changes
Number each change (### 1. Short title, ### 2. Short title, etc.).
For each change:
- Explain what it does and how it works mechanically.
- Reference the existing code it builds on or modifies.
- Include a mermaid sequence diagram when the change involves multiple services or a request flow that isn't obvious.
- State where the logic lives (which service, which layer) and why.
After the individual changes, include:
Changes by endpoint (table): every endpoint affected, its method, and what changes (New, Modified, or No change with annotation note).
Database changes (table, optional): migration number and DDL statement for each migration.
Success Criteria
Bullet list of observable outcomes. Each criterion should be testable: "X returns Y" or "Z is persisted in W", not vague goals.
Include a Downstream changes subsection listing other files or docs that need updating as a consequence (client libraries, quickstart docs, etc.).
Open Questions (optional)
Things the team should discuss before or during implementation. Frame each as a concrete question, not a vague area. Include enough context that a reader can form an opinion without re-reading the whole doc.
Rollback Strategy
How to undo each change. Call out whether migrations are reversible, whether env var gates are needed, and whether the changes are independent of each other.
Writing style
- British English spelling (colour, organisation, prioritise).
- No em-dashes. Use commas, full stops, colons, or parentheses.
- No "Bold heading: explanation" bullet format. Write natural sentences.
- Say "external users" not "non-staff callers" or "non-staff principals".
- Say "calling the underlying service" not "proxying".
- Don't leak implementation details into the Requirement section.
- Don't pad Success Criteria with items that aren't testable.
- Reference code paths with
file.go:lineNumberorfile.py:functionName, not full file paths (the reader is in the repo). - When you call something documented, standard, recommended, or a known pattern ("the documented pattern", "vendor documentation states", "the recommended approach"), link to the real source doc. Never use "documented" or "standard" as a rhetorical intensifier without a citation. If you cannot find a source, state it as your own reasoning or flag it for verification, do not present an inference as documented fact.
- If the audience includes non-engineers (a PM, a designer, a founder), skip
code paths entirely. Refer to a surface by its URL (linked, e.g.
[/info](https://example.com/info)) or its user-facing name ("the Instructions modal"), not its template path (external_info.html) or its JS symbol (showIntroModal). Bites hardest in Requirement, How Things Work Right Now, and Success Criteria. The engineering rules above still apply to Open Questions and internal notes; those aren't the sections the PM reads. - Don't wrap each Proposed Change in "why we chose X over Y" paragraphs. The Requirement section already owns "what we're deliberately not doing"; the Proposed Changes section owns what we ARE doing. If you find yourself writing "Why in this order:", "Why a range instead of a per-puzzle number:", or "Why not [obvious alternative]:" mid-change, cut them. State the change. Move on.
- The doc has no history. It is the only draft that exists to the reader. NEVER describe what an earlier version said or how the scope shifted. Every one of these is banned: "the earlier draft said...", "this now covers...", "the change grows from X into Y", "corrected section", "this is no longer copy-only", "previously we...", "so the doc now covers...". Describe the current proposal in the present tense as if it were always this way. A "corrected" or "new" section is just "a section"; a scope that grew is just the scope. If a sentence only makes sense to someone who saw a prior version, delete it. This applies to iterative edits too: when you revise the doc, rewrite the affected sentences to stand alone, don't layer "now/no longer" language on top of the old text.
- Never name internal teammates in the doc. Requirements, approvals, and conditions are stated impersonally ("a requirement", "still being confirmed", "as required"), not attributed ("the tech lead wants...", "the PM passed on..."). External user or tester names that are the literal source of feedback can stay if they add signal; internal people never do.
- Trim redundant middle clauses in bullets. If a three-sentence bullet's middle sentence restates the first, cut it. "There is no time limit. Nothing is counting down in the background. Take as long as you need." → "There is no time limit. Take as long as you need." The middle clause earns nothing.
- Trim FAQ / question lists to items that add distinct information. If two entries would be answered by pointing at the same sentence, one of them is redundant. Short list of load-bearing questions beats a padded one that repeats itself.
- Speculation about future features belongs in Open Questions, not Proposed Changes. If you find yourself writing "if we later want X, that'd live in Y" or "we deliberately do not add Z at this stage" in Proposed Changes, either delete it or rephrase as a concrete question in Open Questions. Proposed Changes only describes what this doc proposes building now.
- Don't reference other proposal files by filename (
other-doc.md,auth-api.md, etc.). These docs publish to Notion, where a local filename is meaningless. Refer to other work by its concept or topic ("the integrity plan", "the access-control proposal"), not its file path. Code paths are fine; proposal-doc filenames are not.
Notion publishing
- Read
notion://docs/enhanced-markdown-specvia ReadMcpResourceTool before every publish. The spec changes; don't rely on memory. - Use
<table>elements for tables, not markdown pipe tables. - Use
```mermaidfor sequence diagrams. - Do not escape underscores inside inline code. Notion italicises with
*, not_, so underscores inside backticks render fine. Escaping them (e.g.api\_endpoint) leaves a literal backslash in the rendered output. - Never use
replace_contentwhen updating existing Notion pages. It deletes inline comments and discussions. Useupdate_contentwith targeted find-and-replace operations instead. - Specify category or parent page IDs when publishing to teamspaces.
Reference docs
Good design doc proposals typically include:
docs/proposals/api-access-control.md(mermaid diagrams, per-endpoint table, gateway enrichment approach, code references)docs/proposals/operational-controls.md(concise, focused "How Things Work Right Now", clear success criteria)docs/proposals/session-management.md(tight scoping, deliberate exclusions stated upfront, database migration table)
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.

