Use when turning a qualified Twenty lead — a call-summary brief plus any client braindump/docs — into a partner brief a partner can scope and quote from. Trigger when pointed at a lead folder (e.g. partners-experience/<LEAD>/) and asked to "draft a design doc", "create a partner brief", "translate this into Twenty terms", "scope this for a partner", or "prep the partner handoff". Default output is zero-inference (only what the client said; empty sections get a placeholder). Pass --full for inference mode. Chains after twenty-lead-intro-call-summary.
76
96%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Turn a qualified lead's materials into a design doc: a translation of the customer's needs into Twenty terms that an implementation partner reads to scope and quote the work.
The doctrine — what to produce, the 12-section structure, the rules, the verification process, and the common mistakes — lives in design-doc-doctrine.md in this folder. Read it and follow it. This file is only the Claude Code wrapper: how to gather inputs, which tools to use for each step, and where to save.
partners-experience/<LEAD>/) containing a twenty-lead-intro-call-summary output plus any braindump / docs / notes..docx with textutil -convert txt "<file>" -output /tmp/out.txt (macOS) or an equivalent extractor.The default output is a zero-inference partner brief: only what the client explicitly said, nothing invented.
🔮 inf. never appears. If you feel the urge to use it, that line should not exist.> ⬜ Not discussed on call — needs input before this section can be filled.— for empty cells.🔮 inf. anywhere = failure (remove the whole inference); Source column = failure; doc >2 pages = warning.YYYY-MM-DD-<lead>-partner-brief.md.design-doc-doctrine.md for the full rules.--full (inference-enabled design doc)Pass --full when discovery is complete and a richer inferred model is useful. Enables 🔮 inf. tags, adds the Source column to the data model, fills gaps with inferences, and allows longer output. Save as YYYY-MM-DD-<lead>-design-doc.md. See "Full mode" in design-doc-doctrine.md.
(inf.)); never invent. Per the doctrine.~; first-person voice outside customer quotes; local file paths; a header that isn't the four-field table; any flag that isn't one of the three canonical emoji-and-text pairs (**❓ open**, **⚠️ heavy**, **🛑 blocker**) — a stray 🟥, 🚩, 🚨, ✅, 🔮, or a naked emoji without its text label is wrong (in default mode 🔮 inf. is a failure, not just a format issue; remove the whole inference); a Data-model table that has a Source column (default mode — remove it; only --full mode uses it); a section that just says "X was not named" / "no automations named" / a "left out on purpose" list — cut it, unknowns go in Open questions; any bare §N reference instead of a functional anchor link [§N](#n-section-slug); renumbering gaps (e.g. cut a section but kept the old numbers around it); a section that is mostly paragraphs where bullets or a table would do — exception: Open questions stays a numbered list; build / runtime / SDK mechanics that don't change the quote (Docker version, OAuth flavour, auto-system relations, env-var names, CI/CD workflow detail); a point repeated across sections instead of a [§N](...) cross-reference; a leftover glossary / domain-language section; any capability claim stated as fact without a References source. Fix, then save to the lead folder as YYYY-MM-DD-<lead>-partner-brief.md (or design-doc.md in --full mode).partner-match-criteria.md in the same lead folder. Structure:
Reference: partners-experience/TSF/2026-05-26-tsf-design-doc.md shows the target coverage, flag discipline, and §11 verification appendix. It predates the current concision / table-header / no-glossary / no-em-dash rules, so where its formatting differs, follow this doctrine over the example.
designDocStatus / designDocUrl).design-doc-doctrine.md is written to be portable. A future defineSkill in this app (a sibling *.skill.ts in src/skills/) would import it as its content, driving an in-product agent — with a verify logic-function tool replacing the WebFetch step, and a Workflow Action triggering it when sales toggles partnerEligible. Keep doctrine changes in that file so both the Claude Code skill and the defineSkill stay in sync.bb4e427
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.