
Eli5
- 103 installs
- 5k repo stars
- Updated August 5, 2026
- cloudflare/cloudflare-docs
eli5 is an agent skill that Transform technical jargon into clear explanations using before/after comparisons, metaphors, and practical context.
About
Transform technical jargon into clear explanations using before after comparisons metaphors and practical context name eli5 description Transform technical jargon into clear explanations using before after comparisons metaphors and practical context license MIT compatibility opencode metadata audience mixed developers IT admins marketers students hobbyists workflow technical-simplification output_format before-after-comparison supported_formats md mdx What I Do I transform dense jargon-heavy technical documentation into accessible explanations Dense esoteric technical concepts should be accessible to everyone developers IT admins marketers students and hobbyists Key capabilities Analyze content for clarity issues Identify jargon assumptions unclear logic and missing context Generate before after comparisons Show original alongside simplified version with issue analysis Create tech-adjacent metaphors Use relatable technology analogies that clarify without oversimplifying Explain the why Focus on value use cases and context before diving into details Identify common pitfalls Address misunderstandings readers frequently encounter Layer for mixed audiences Serve beginners and experts.
- **Analyze content for clarity issues** - Identify jargon, assumptions, unclear logic, and missing context
- **Generate before/after comparisons** - Show original alongside simplified version with issue analysis
- **Create tech-adjacent metaphors** - Use relatable technology analogies that clarify without oversimplifying
- **Explain the "why"** - Focus on value, use cases, and context before diving into details
- **Identify common pitfalls** - Address misunderstandings readers frequently encounter
Eli5 by the numbers
- 103 all-time installs (skills.sh)
- Ranked #989 of 2,153 Testing & QA skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
eli5 capabilities & compatibility
- Capabilities
- **analyze content for clarity issues** — identif · **generate before/after comparisons** — show ori · **create tech adjacent metaphors** — use relatab · **explain the "why"** — focus on value, use case · **identify common pitfalls** — address misunders
- Use cases
- documentation
What eli5 says it does
Dense, esoteric technical concepts should be accessible to everyone — developers, IT admins, marketers, students, and hobbyists.
**Context before details** — Start with "why" and "when" before "what" and "how" 2.
**Tech-adjacent metaphors** — Analogies rooted in familiar technology, not overly simplistic everyday objects.
**Layered explanations** — Multiple entry points: plain language → detailed explanation → technical depth 4.
npx skills add https://github.com/cloudflare/cloudflare-docs --skill eli5Add your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 103 |
|---|---|
| repo stars | ★ 5k |
| Last updated | August 5, 2026 |
| Repository | cloudflare/cloudflare-docs ↗ |
What problem does eli5 solve for developers using this skill?
Transform technical jargon into clear explanations using before/after comparisons, metaphors, and practical context
Who is it for?
Developers who need eli5 patterns described in the cached skill documentation.
Skip if: Skip when docs are empty or the task is outside the skill's documented scope.
When should I use this skill?
Transform technical jargon into clear explanations using before/after comparisons, metaphors, and practical context
What you get
Actionable workflows and conventions from SKILL.md for eli5.
Files
What I Do
I transform dense, jargon-heavy technical documentation into accessible explanations. Dense, esoteric technical concepts should be accessible to everyone — developers, IT admins, marketers, students, and hobbyists.
Key capabilities:
- Analyze content for clarity issues — Identify jargon, assumptions, unclear logic, and missing context
- Generate before/after comparisons — Show original alongside simplified version with issue analysis
- Create tech-adjacent metaphors — Use relatable technology analogies that clarify without oversimplifying
- Explain the "why" — Focus on value, use cases, and context before diving into details
- Identify common pitfalls — Address misunderstandings readers frequently encounter
- Layer for mixed audiences — Serve beginners and experts simultaneously
- Maintain technical accuracy — Simplify language, never facts
Philosophy
Technical writing often prioritizes precision over clarity: jargon without context, missing "why", unstated assumptions, and condescending simplification ("simply," "just," "obviously"). ELI5 fixes this through:
1. Context before details — Start with "why" and "when" before "what" and "how" 2. Tech-adjacent metaphors — Analogies rooted in familiar technology, not overly simplistic everyday objects. Acknowledge where metaphors break down. 3. Layered explanations — Multiple entry points: plain language → detailed explanation → technical depth 4. Value-first framing — Lead with benefits and problems solved, not features and configuration 5. Explicit pitfalls — Address common misunderstandings directly 6. Familiar connections — Bridge new ideas to concepts readers already know
Audience: Readers are intelligent but lack specific context. Never write for the "lowest common denominator." Assume smart people who are unfamiliar with this particular domain.
Accuracy is non-negotiable: Simplification means clearer language, not reduced precision. If a simplified explanation would be technically wrong, add nuance rather than omit it.
Preserve what already works: If the original text is technically accurate and clear to its target audience, do not rewrite it for tone or friendliness. Only edit when there is a factual error, genuine ambiguity, or a real clarity problem. Rewriting correct prose risks introducing inaccuracy — a plausible-sounding explanation that describes the wrong mechanism is worse than jargon.
Fact-check all net new information: Any explanation, analogy, or context you add that was not in the original document must be verified for correctness before inclusion. This applies to technical definitions, behavioral descriptions, protocol details, and any claim about how something works.
This is especially critical for Cloudflare-specific implementations. Cloudflare can diverge from industry-standard behavior (for example, how Workers handle the request lifecycle differs from traditional serverless platforms, or how Cloudflare's CDN cache logic differs from other CDNs). Do not assume that general industry knowledge applies to Cloudflare products. When adding commentary about Cloudflare-specific behavior:
1. Verify against the source documentation — Cross-reference the existing docs in this repository before stating how a Cloudflare product or feature works. 2. Cite your sources — When introducing net new information (explanations, comparisons, implementation details), include a reference to the specific documentation page, API reference, or authoritative source that supports the claim. Use inline links or footnotes. 3. Flag uncertainty — If you cannot verify a claim from existing documentation, explicitly mark it for the writer to confirm rather than presenting it as fact. 4. Verify product terminology in context — Cloudflare product terms carry specific meaning. "Full setup" refers to using Cloudflare's authoritative nameservers, not to having Cloudflare as your only DNS provider. "Global network" in link text conventionally points to the network marketing page, not to generic infrastructure descriptions. When using established Cloudflare terminology (setup types, product names, marketing phrases), verify not just that the term exists, but that it is used in the same context and with the same meaning as the existing documentation. A real term applied in the wrong context is as misleading as a fabricated one.
Tone: Clear, direct, professional. Not condescending, not overly casual, not hyperbolic. Never use "simply," "just," "obviously," "clearly," "as everyone knows," or "it's easy to."
When to Use Me
Use this skill for content that targets a broad or mixed audience — not every review needs it.
Good candidates:
- Security and networking docs (e.g. DDoS protection, WAF, Magic Transit, Tunnel) — readers often include IT admins, marketers, or decision-makers who lack deep networking background
- Getting started and overview pages — first-touch content where readers have not yet built domain context
- Concept pages aimed at non-developers — pages explaining "what" and "why" to audiences beyond software engineers
- Cross-product docs (Zero Trust, SASE) — these span multiple domains and attract diverse readers
Skip or deprioritize for:
- Developer-focused API and SDK references (e.g. Workers, D1, R2, Durable Objects, KV) — the audience is developers who are expected to know programming concepts, database terminology, and API conventions
- Code-heavy tutorials targeting developers — readers self-select into these and already have the prerequisite knowledge
- Configuration references with purely technical audiences — parameter tables, CLI references, and schema docs where jargon is the content
Use your judgment for everything else. Ask: "Would a reasonable reader of this page already know these terms?" If yes, this skill adds little value. On the other hand, if the following are true, this skill could provide significant value.
- Content assumes too much prior knowledge
- Jargon and acronyms are not explained
- Documentation jumps to "how" without explaining "why"
- Readers struggle to understand when/where to use something
- You want feedback on what makes content confusing
How I Work
Workflow
1. Accept File Path
/eli5 path/to/documentation.mdSupported: .md, .mdx
2. Read and Parse Content
I read the file, detect sections, analyze organization, and identify the content type.
Content types: Overview, Concept, How To, Reference, Tutorial
Detection signals:
- Overview: Product name in title, feature lists, benefit statements, "Perfect for..." sections
- Concept: "What is...", "How it works", conceptual explanations, "Why it matters"
- How To: Numbered steps, "Prerequisites", action verbs in headings, verification sections
- Reference: Tables, parameter lists, technical specifications, data types
- Tutorial: "What you'll build", progressive code examples, "Time required"
After detection, I ask you to confirm the content type. Different types require different strategies:
| Type | Strategy |
|---|---|
| Overview | Problem → Solution → Benefit |
| Concept | Analogy → Plain explanation → Technical details |
| How To | Context → Multi-path steps (Dashboard + API) |
| Reference | Use-case organization with two-tier descriptions |
| Tutorial | Progressive complexity with code explanations |
3. Apply Enhancement Constraints
Before enhancing, enforce these limits. Target 1.5-2x expansion (not 5-10x). Enhance existing content with context, not replace it.
Maximum additions per document:
- Problem/value statement: 2-4 sentences inline (not a separate section)
- Use case examples: 1-2 per major concept, 5-15 lines each
- Inline "why": 1-2 sentences when introducing features
- Jargon definitions: Brief inline on first use
- Troubleshooting: 1-2 critical issues only
- Testing: 3-5 verification commands max
Preserve: All existing content, structure, diagrams, code examples, component usage, and flow.
Do not add: Separate conceptual pre-sections, diagram annotations, multiple examples per concept, comprehensive testing/troubleshooting sections, best practices sections, or new Dashboard/API paths.
Dashboard vs API path detection: If only one path exists, note it in suggestions and prompt the writer to verify — do not create the missing path.
4. Ask Which Sections to Simplify
Present these options and wait for a response:
- All sections — Process the entire document
- Specific sections — Choose from detected sections with line numbers
- Auto-detect most complex — Prioritize by jargon density and assumption frequency
- Custom range — Specify line numbers or section names
5. Analyze Selected Sections
For each section, I identify:
- Jargon — Unexplained terms, undefined acronyms, terms with dual meanings
- Assumptions — Unstated prerequisites, referenced concepts without explanation, skipped foundational steps
- Unclear logic — Flow problems, missing transitions, dense paragraphs, unclear hierarchy
- Context gaps — Missing "why", absent use cases, no "when to use this"
6. Extract Terminology
I compile a deduplicated list of all terms that may need glossary definitions or cross-links:
- Undefined technical terms — Domain-specific words used without explanation
- Acronyms — Initialisms not expanded on first use
- Product/feature names — References to specific products, services, or features that lack links to their documentation
- Concepts worth linking — Terms that have dedicated documentation pages elsewhere but are not linked
For each term I report: the term, where it appears (line number), whether it is defined in-context, and a suggested action (add glossary tooltip, add cross-link, or add inline definition).
GlossaryTooltip quality gate: Before suggesting a GlossaryTooltip for any term, read the actual glossary definition (in src/content/glossary/). Evaluate it against these criteria:
- Is the definition accurate? If the glossary entry is vague, outdated, or technically imprecise, flag it for improvement rather than linking to it. A bad tooltip is worse than no tooltip.
- Is the definition redundant with the surrounding sentence? If the tooltip would repeat nearly the same words as the prose it is attached to, skip it — the tooltip adds visual clutter without new understanding.
- Does the definition stand alone? The reader sees the tooltip in isolation. If the glossary entry only makes sense in a different context or uses jargon of its own, flag it rather than linking.
When a glossary entry fails any of these checks, report it in the Terminology Index with the action "Flag glossary entry for review — [reason]" instead of "Add glossary tooltip."
Always include the Terminology Index in the output. If no terms need action, state that explicitly.
7. Generate Comparison
I produce a comparison with:
- Original content preserved exactly
- Issues identified with specific examples
- Simplified version including: plain-language summary, clear explanation building from basics, why it matters, when you would use this, tech-adjacent metaphor, common pitfalls, related concepts
8. Report
I report: summary of improvements made, what made the original confusing, and the full terminology index.
Then proceed immediately to Step 9 (Adversarial Review). Do not prompt the user for next steps until the review is complete.
9. Adversarial Review
After presenting the report in Step 8, always launch a fresh subagent (Task tool, subagent_type: "general") to perform an adversarial review before prompting the user for next steps. Do not continue the review in the current session — the point is to eliminate confirmation bias by having a separate agent, with no access to your reasoning or the ELI5 skill instructions, evaluate the output cold. Do not skip this step.
Pass the subagent the following prompt (fill in the bracketed values):
---
Begin adversarial review prompt
You are a skeptical reviewer. Your single priority is verifying that every factual claim in the proposed changes is accurate and supported by a citable source. You assume claims are unsupported until proven otherwise.
You are NOT a style checker or formatter. You catch unsourced assertions, misleading implications, and wrong mechanisms — not typos or tone issues.
Original file: [original file path] Proposed changes: [full ELI5 output — the simplified/enhanced content]
Read both files carefully. Your job is to review the proposed changes only — the original file is your baseline for what was already stated versus what is newly introduced.
What counts as a claim
Any statement in the proposed changes that a reader could reasonably question:
- Technical behavior ("Workers supports up to 128 MB of memory")
- Comparisons ("faster than alternative X")
- Numbers, limits, defaults, or quotas
- Statements about how a product, protocol, or standard works
- Simplified mechanism descriptions ("how it works" explanations added during simplification)
- Analogies and metaphors — the 1:1 mapping claims ("X works like Y" requires that the mapped behavior actually matches how X works)
- Net-new context — any "why," "when you'd use this," or "what problem it solves" framing not present in the original
- Any claim about Cloudflare product behavior
Opinions, definitions created by the doc itself, and procedural steps ("Select Save") are not claims.
ELI5-specific focus areas
These are the highest-risk categories when documentation has been simplified. Prioritize them:
1. Simplified mechanism descriptions — Any "how it works" explanation added during simplification that was not in the original. These carry the highest risk: a plausible-sounding explanation that describes the wrong mechanism is worse than the original jargon. Verify the actual mechanism against the source docs in this repository.
2. Misleading nuance — Statements that are not outright wrong but flatten important nuance, creating a wrong mental model. Example: "Cloudflare generates a robots.txt file that instructs AI crawlers to stay away from your content" is misleading — robots.txt is a per-path allow/disallow mechanism, not a blanket block. The sentence omits that it specifies where crawlers may and may not go. Flag any statement where the simplification loses a meaningful distinction.
3. Net-new claims — Any explanation, context, or framing added during simplification that was not present in the original document. Every piece of new information requires a citation. If the original said "zones pair with resolver policies" and the simplification adds "based on source IP, user identity, or domain," verify that all three of those selectors are actually supported.
4. Cloudflare-specific behavior — Do not assume industry-standard behavior applies to Cloudflare products. Cloudflare implementations frequently diverge from how things are typically done (e.g., Workers request lifecycle vs. traditional serverless, Cloudflare CDN cache logic vs. other CDNs, how Cloudflare Tunnel health checks work vs. generic health check patterns). Verify every Cloudflare-specific claim against the actual documentation in src/content/docs/ in this repository.
5. Over-generalization across categories — When a simplification says "all records," "the IP address" (singular), or "every request," verify whether the claim actually applies universally. DNS record types (A, AAAA, CNAME, MX, TXT, NS) have different proxying rules. Cloudflare returns multiple anycast IPs, not one. Protocol behaviors, plan-level features, and configuration defaults frequently vary by record type, plan, or product tier. Check that quantifiers ("all," "every," "any") and articles ("the" implying singular) are accurate. A statement that is true for A records may be false for MX records; a feature available on Enterprise may not exist on Free.
Review process
1. Extract — List every claim in the proposed changes. Include claims that were carried over from the original unchanged — if the original was wrong, the simplification inherits the error. 2. Source — For each claim, search the documentation in this repository (src/content/docs/) to find the strongest available citation:
- Existing documentation page in this repository (preferred — use the file path)
- Public Cloudflare blog post, changelog, or announcement
- RFC or protocol specification (for non-Cloudflare claims)
- If a claim was present in the original file verbatim, cite it as "present in original —
[file path]:[line number]"
3. Evaluate nuance — For each sourced claim, check whether the wording in the proposed changes accurately represents what the source says. A claim can be sourced but still misleading if it omits qualifiers, flattens conditions, or implies broader applicability than the source supports. 4. Flag — Mark any problem with a severity:
- critical — Claim is central to the page's purpose and could mislead readers if wrong or imprecise.
- high — Claim is prominent but not the main point; inaccuracy would erode trust.
- medium — Claim is peripheral but still verifiable.
- low — Claim is minor or widely accepted common knowledge.
5. Report — Present findings in this format:
| # | Claim (exact text) | Source | Status |
|---|---|---|---|
| 1 | "Workers KV supports keys up to 512 bytes" | src/content/docs/kv/api/write-key-value-pairs.mdx | ✅ sourced |
| 2 | "Latency is under 50 ms globally" | — | ❌ unsourced (high) |
| 3 | "instructs crawlers to stay away from your content" | src/content/docs/bots/robots-txt.mdx — source says per-path allow/disallow, not blanket block | ⚠️ misleading (critical) |
| 4 | "zones pair with resolver policies" | present in original — path/to/file.mdx:34 | ✅ sourced (original) |
Rules
- Never fix or rewrite content. Report only.
- Every issue must include the exact text of the claim, not a vague summary.
- When a source exists but the claim misrepresents it or loses nuance, flag as
⚠️ misleadingand quote the relevant part of the source. - Acknowledge well-sourced claims — the table should show what passed, not only what failed.
- If you cannot find a source in this repository or any authoritative reference, flag as
❌ unsourcedand state what you searched.
End adversarial review prompt
---
When the subagent returns its findings, present the full claim table to the user. If there are ❌ unsourced or ⚠️ misleading findings, list them separately with recommended actions (remove the claim, add a source, adjust the wording).
Then ask: What would you like to do next?
1. Fix flagged issues — Address unsourced or misleading claims identified by the review 2. Suggest additional improvements 3. Create a PR with changes 4. Refine specific sections 5. Apply changes to original file 6. Keep as reference
Decision Framework
Should I simplify a term?
- Replace or explain if: domain-specific jargon, most readers will not know it, a simpler term is equally accurate
- Keep but define if: industry standard readers should learn, no simpler term is accurate, term appears frequently
Should I add content?
- Yes if: "why" is missing, use cases are absent, common misunderstandings are not addressed
- No if: original is already clear, addition would pad without value, reader can infer from context
Should I spell out a consequence or implication?
- No if the target audience can infer the consequence from the stated cause. For example, "blocking health checks" does not need "which means Cloudflare may consider your tunnels unhealthy" for a networking audience. Trust domain expertise.
- Yes only if the consequence is non-obvious, counterintuitive, or the audience genuinely lacks the domain knowledge to connect the dots.
Should I add a GlossaryTooltip?
- Yes if: the glossary definition is accurate, adds information beyond what the sentence already says, and stands alone without additional context
- No if: the glossary definition is vague, technically imprecise, or nearly identical to the surrounding sentence. Flag the glossary entry for review instead.
- No if: the term is already clearly defined inline in the same paragraph
Should I add synonyms or aliases for a term?
- No. One inline definition is enough. Do not pile on "also called X" aliases when the definition already explains the concept through its behavior. Define terms by what they do, not by listing alternative names.
Should I remove content?
- Rarely. Only if genuinely redundant or tangential. Never remove caveats, accuracy qualifiers, or security warnings.
Quality Checklist
Before finalizing, verify:
- [ ] Technical accuracy maintained
- [ ] Jargon identified and explained
- [ ] Assumptions stated explicitly
- [ ] "Why" comes before "what" and "how"
- [ ] Use cases are realistic
- [ ] Metaphors have clear 1:1 mapping with stated limitations
- [ ] No condescending language
- [ ] Enhanced version is 1.5-2x original (not 5-10x)
- [ ] Original structure preserved (not reorganized)
- [ ] 1-2 examples max per concept
- [ ] Diagrams left untouched
- [ ] Already-correct prose left untouched (not rewritten for tone)
- [ ] No consequence chains the audience can infer
- [ ] No synonym glosses when behavior-based definitions exist
- [ ] No rhetorical questions (examples stated as examples)
- [ ] Bold formatting follows Cloudflare style guide (bold for clickable UI elements only — not used for sporadic emphasis in explanatory prose)
- [ ] Every simplification describes the correct mechanism
- [ ] Register matches the existing documentation voice
- [ ] Adversarial review completed
Anti-patterns to avoid
These are patterns that feel like improvements but consistently make documentation worse. They were identified from human review of AI-generated edits.
1. Rewriting correct prose for "friendliness"
If the original sentence is factually accurate and structurally sound, do not rewrite it to sound warmer or simpler. Rewrites introduce risk of mechanical inaccuracy. Only touch sentences that have a concrete problem (wrong fact, ambiguous referent, undefined term, broken logic).
2. Adding consequence chains the reader can infer
Do not spell out "If X happens, then Y, which causes Z" when the audience already understands the causal chain. Example: telling a network engineer that blocked health checks cause tunnels to go unhealthy is stating the obvious. Ask: "Would a reasonable reader of this page already know this consequence?" If yes, omit it.
3. Adding synonym glosses ("also called X")
Do not append "also called 'default deny'" or similar aliases when the concept is already defined by its behavior in the same sentence. One definition is enough. Synonym stacking clutters without adding understanding.
4. Using rhetorical questions in documentation
Do not convert example lists into questions ("do you run VPN, NTP, or database services?"). State examples as examples. Documentation is not a conversation.
5. Implying mutual exclusivity between complementary features
Do not add phrases like "rather than writing rules from scratch" that imply one feature replaces another when both are used together. When two features complement each other, cross-reference them instead of contrasting them.
6. Describing the wrong mechanism with a plausible simplification
When simplifying how a system works, verify the simplification describes the actual mechanism. For example, saying "a Custom rule can change a Managed rule's action" is wrong if Custom rules actually take precedence due to evaluation order. A plausible-sounding but mechanically incorrect explanation is worse than the original jargon.
7. Over-specifying precision the audience already has
Do not explain that == means "equals" to an audience writing Wireshark-syntax filter expressions. Calibrate the level of inline definition to the actual audience of the page, not to a hypothetical beginner.
8. Using casual register in formal docs
"Let you" is too casual for Cloudflare docs. Use "allow you to" or state the action directly. Match the existing voice of the documentation, not a conversational ideal.
9. Conflating related but distinct concepts in a single statement
When simplifying, do not merge two separate concepts into one sentence in a way that implies they are the same thing or that one requires the other. Example: "CNAME flattening resolves the chain and returns a Cloudflare anycast IP" conflates CNAME flattening (a DNS resolution behavior) with proxying (a traffic-routing decision) — you can have CNAME flattening with proxy off, in which case no Cloudflare IP is returned. Similarly, "Full setup means Cloudflare is your only DNS provider" conflates the setup type (using Cloudflare authoritative nameservers) with exclusivity (having no other provider). Each concept should be introduced on its own terms, even if they often appear together. If two features interact, describe them separately and then explain the relationship.
Edge Cases
- Very long documents (>1000 lines): Ask which sections to prioritize, offer to process in chunks
- Already-clear content: Acknowledge clarity, suggest minor improvements only
- Highly technical content: Maintain accuracy above all, use progressive disclosure
- Code-heavy docs: Add plain-language explanations of what code accomplishes and why it is structured that way
- Multiple audience types: Use labeled sections ("For developers:" / "For non-technical readers:")
Output Format
Produce output following this template exactly. All sections are required.
# ELI5 Simplified: [Original Doc Name]
**Original:** `[file path]`
**Sections simplified:** [count/list]
---
## Simplification Overview
**What was confusing:**
- [Issue pattern 1]
- [Issue pattern 2]
**Approach taken:**
- [Strategy 1]
- [Strategy 2]
---
## Section: [Original Heading]
### Original Content
[Exact text from source, preserved]
### Issues Identified
**Jargon:** [terms and why problematic]
**Assumptions:** [unstated prerequisites]
**Unclear Logic:** [structural issues]
### Simplified Version
**In Plain Language:** [One-sentence distillation]
**What It Is:** [2-3 paragraphs building from basics]
**Why It Matters:** [Benefits and value]
**When You'd Use This:** [Use cases with context]
**Think of It Like:** [Tech-adjacent metaphor]
**Where this metaphor breaks down:** [Limitations]
**Common Pitfalls:** [Misunderstanding → Correction]
**Related Concepts:** [Connections to familiar ideas]
---
[Repeat for each section]
---
## Terminology Index
| Term | Line | Defined? | Suggested Action |
| ---- | ---- | -------- | ---------------- |
| [term] | [line number] | Yes/No | Add glossary tooltip / Add cross-link to [page] / Add inline definition |
---
## Summary & Recommendations
**Key improvements made:** [list]
**Patterns noticed:** [meta-analysis]
## Suggestions for Enhancement
Line-numbered recommendations for further improvements:
| Line(s) | Current Approach | Suggested Enhancement | Why | Priority |
| ------- | ---------------- | --------------------- | --- | -------- |
| [lines] | [what exists] | [what to change] | [why it improves accessibility] | High/Medium/Low |References
- Content type detection criteria:
references/content-type-guide.md - Before/after pattern templates:
references/pattern-library.md - Full examples:
EXAMPLES_REFERENCE.md
ELI5 Skill
An agent skill that simplifies dense, jargon-heavy technical documentation into accessible explanations. It analyzes content for clarity issues, adds inline definitions, and produces before/after comparisons — all while maintaining technical accuracy.
When to use this skill
Use ELI5 on documentation that serves a broad or mixed audience — pages where readers may not share the same domain expertise.
Good candidates:
- Security and networking docs (DDoS, WAF, Zero Trust, Browser Isolation, Tunnel)
- Getting started and overview pages
- Concept pages aimed at non-developers
- Cross-product docs that span multiple domains
Skip for:
- Developer API and SDK references (Workers, D1, R2, KV)
- Code-heavy tutorials where readers self-select
- Configuration references where jargon is the content
How it works
The skill runs a 9-step workflow defined in SKILL.md:
1. Accept file path — Takes one or more .md or .mdx files 2. Read and parse — Detects content type (overview, concept, how-to, reference, tutorial) and asks the user to confirm 3. Apply enhancement constraints — Targets 1.5-2x expansion, not a full rewrite. Preserves all existing content, structure, diagrams, and components 4. Ask which sections to simplify — Offers all sections, specific sections, auto-detect most complex, or custom range 5. Analyze selected sections — Flags undefined jargon, unstated assumptions, missing "why," unclear logic, and context gaps 6. Extract terminology — Compiles a deduplicated list of terms that need glossary definitions or cross-links, with line numbers and suggested actions 7. Generate comparison — Produces a before/after report with original content preserved, issues identified, and simplified versions including plain-language summaries, metaphors, use cases, and pitfalls 8. Report — Presents a summary of improvements, what made the original confusing, and the full terminology index 9. Adversarial review — Launches a fresh subagent to verify every net-new claim against the source docs in this repository. The subagent has no access to the ELI5 skill instructions to eliminate confirmation bias
The adversarial review is a required step that cannot be skipped. It catches simplified explanations that describe the wrong mechanism — which is worse than the original jargon.
All output is presented inline in the conversation. The skill does not write output files.
How to invoke
The skill is loaded automatically when a task matches its description. You can also invoke it explicitly:
Run ELI5 on /path/to/docs/folder/The skill will ask which pages and sections to process before starting.
Project structure
eli5/
├── README.md # This file
├── SKILL.md # Skill definition — full 9-step workflow, constraints, adversarial
│ # review protocol, output format, quality checklist, anti-patterns
├── references/
│ ├── content-type-guide.md # Detection signals and strategies per content type (687 lines)
│ ├── EXAMPLES_REFERENCE.md # Detailed before/after examples and output templates (1,834 lines)
│ └── pattern-library.md # Reusable transformation patterns for common clarity issues (634 lines)
└── recommendations/
└── internal-dns/
└── index.eli5.mdx # Example: proposed page replacement for Internal DNS overviewSKILL.md
The executable specification (439 lines). Contains:
- The full 9-step workflow from file input through adversarial review
- Content type detection signals and per-type simplification strategies
- Enhancement constraints (what to add, what not to add, maximum additions per document)
- The adversarial review prompt template passed to the subagent
- Decision framework (when to simplify, add content, spell out consequences, or leave alone)
- Quality checklist (18 items)
- 8 anti-patterns identified from human review of AI-generated edits
- Output format template
references/
Supporting material referenced by SKILL.md when detailed examples are needed:
- content-type-guide.md — Operational guide for detecting and simplifying different documentation types (overview, concept, how-to, reference, tutorial). Includes detection criteria, simplification strategies, and content-type-specific patterns.
- EXAMPLES_REFERENCE.md — Extended before/after examples, detailed writing patterns, and output format templates. Contains the verbose examples that would make SKILL.md too large.
- pattern-library.md — Reusable before/after patterns for common simplification scenarios (jargon replacement, context addition, metaphor construction).
recommendations/
Contains example ELI5 outputs from prior runs. The internal-dns/index.eli5.mdx file is a proposed page replacement for the Internal DNS overview page, showing what a full ELI5 application looks like when edits are applied directly to a page.
Key principles
1. Context before details — Explain why something matters before how it works 2. Accuracy is non-negotiable — Simplify language, not facts. Every net-new claim must be sourced 3. Preserve what works — Do not rewrite correct prose for tone. Only edit when there is a real clarity problem 4. Respect reader intelligence — Readers lack context, not intelligence. Define terms by what they do, not by stacking synonyms 5. Content-type awareness — Overviews need problem/solution framing, concepts need analogies, references need use-case organization 6. Cloudflare-specific verification — Do not assume industry-standard behavior applies to Cloudflare products. Verify against the docs in this repository
---
pcx_content_type: overview
title: Internal DNS (beta)
wid: internal-dns
sidebar:
order: 14
label: Overview
group:
badge:
text: Beta
label: Internal DNS
head:
- tag: title
content: Internal DNS
---
import {
Render,
Description,
Plan,
RelatedProduct,
DirectoryListing,
GlossaryTooltip,
Example,
} from "~/components";
<Description>
Simplify private network management with Cloudflare DNS for your internal
resources.
</Description>
<Plan type="enterprise" />
Manage DNS records that should only be accessible within your private network—useful when you need internal systems (like `database.internal` or `api.corp`) to resolve differently for employees versus the public internet. Internal DNS [zones](/dns/internal-dns/internal-zones/) and [views](/dns/internal-dns/dns-views/) pair up with [Gateway resolver policies](/cloudflare-one/traffic-policies/resolver-policies/) so that you can control how a DNS query should be responded to according to query context, such as query source IP.
**When you'd use this:** Organizations with multiple offices or regions often need the same hostname to resolve to different IP addresses depending on where the query originates—for example, `intranet.company.com` pointing to London servers for London users and San Francisco servers for SF users.
<Render file="internal-dns-beta-note" product="dns" />
## Architecture overview
You can use different [connectivity options](/dns/internal-dns/connectivity/) to on-ramp your traffic to Cloudflare—such as WARP client on employee devices, Magic WAN for office networks, or Cloudflare Tunnel for servers. Then, Cloudflare Gateway resolver acts as an interface between the DNS client and internal DNS zones, determining which zones a query should access based on resolver policies you define.
Internal DNS zones do not get assigned Cloudflare nameservers and can only be queried via Cloudflare Gateway resolver. This means they're completely private—no one outside your organization can query them, unlike public DNS zones which are visible to the entire internet.
**How this differs from public DNS:** Public DNS zones (like `example.com`) are assigned Cloudflare nameservers and can be queried by anyone on the internet. Internal DNS zones exist only within your Cloudflare account and are only accessible through Gateway resolver. Even if someone knows your internal hostname (like `database.corp.local`), they cannot resolve it without going through your Gateway resolver with proper authentication.
```mermaid
flowchart LR
accTitle: Internal DNS query overview
accDescr: Diagram comparing internal DNS query with public DNS
A[Client]
subgraph Cloudflare account
subgraph Gateway
B[Default 1.1.1.1 resolver]
X[Resolver policy selecting an internal DNS view]
end
subgraph Authoritative DNS
Y[(Public DNS)]
Z[(Internal DNS)]
end
end
C[Public resolver]
B --Query--> Y
X --Query + View ID--> Z
A --Query--> B
A --Query--> X
C --Query--> Y
```
Internal DNS zones are grouped into DNS views, which are selected by the resolver policy you define. Views are usually logical groupings relevant to your organization, such as different geographical locations, departments (HR, Engineering), or network environments (production, staging). A single zone can exist in multiple views with different records—for example, `api.company.local` in the "London" view points to `10.0.1.5`, while the same zone name in the "San Francisco" view points to `10.0.2.5`.
**Why views matter:** Without views, everyone in your organization would get the same DNS responses. Views let you customize responses based on who's asking—London employees can get London servers, developers can access staging environments, and contractors might have restricted access to only certain internal systems. This contextual resolution is what makes Internal DNS powerful for multi-region deployments and Zero Trust security models.
```mermaid
flowchart LR
accTitle: Internal DNS views and zones
accDescr: Diagram exemplifying Internal DNS views and zones relationship
subgraph Internal DNS
subgraph View 111 - London
Y[Zone 600 <br /> example.local]
Z[Zone 601 <br /> local]
end
subgraph View 110 - San Francisco
X[Zone 101 <br /> example.com]
B[Zone 100 <br /> example.local]
S[Zone 102 <br /> com]
end
W[Zone 701 <br /> net]
end
```
Internal DNS zones contain the <GlossaryTooltip term="DNS record" link="/dns/internal-dns/internal-zones/internal-dns-records/">DNS records</GlossaryTooltip> that should be used to resolve an internal DNS query. Also, if no internal record is found within a matching internal zone, Cloudflare will check if the matching internal zone is [referencing another internal zone](/dns/internal-dns/internal-zones/reference-zones/)—this lets you share common records across multiple zones without duplicating them.
<Example>
```mermaid
flowchart LR
accTitle: Internal DNS zones and internal records
accDescr: Diagram exemplifying Internal DNS zones and records relationship
subgraph View 111 - London
subgraph Zone 601 - local
S["@ A 192.0.2.10"]
T["ghi.example A 192.0.2.15"]
end
subgraph Zone 600 - example.local
X["@ A 192.0.2.1"]
Y["abc A 192.0.2.6"]
Z["def A 192.0.2.9"]
end
end
```
In this example, a query for `ghi.example.local` routed to view ID 111 would go to zone 600, which presents the longest matching zone name (`example.local`). Zone 600 does not contain a record for `ghi` but, if it is referencing zone 601, Cloudflare will then look for the queried record within the reference zone. This reference chain lets you organize records hierarchically—for instance, storing all `.local` records in one zone while having specific subdomain zones that reference it.
</Example>
## How it works: Query flow example
When an employee queries an internal hostname, here's what happens:
1. **Client makes DNS query:** User on WARP client queries `database.company.local`
2. **Gateway evaluates policy:** Gateway checks resolver policies—is this user in London office? VPN? Specific device group?
3. **Policy selects view:** Based on query context (source IP, device posture, user identity), resolver policy selects the appropriate view (e.g., "View 111 - London")
4. **Zone lookup:** Gateway queries Internal DNS zones within that view for `database.company.local`
5. **Response returned:** If found, returns the IP address (e.g., `10.0.1.100` for London database server)
**Key difference from public DNS:** Public DNS always returns the same answer regardless of who asks. Internal DNS with views returns different answers based on who's asking and where they're asking from.
## Common use cases
**Multi-region infrastructure:** Route users to the nearest data center by returning different IPs based on their location—`api.company.com` resolves to `10.0.1.5` for London users and `10.0.2.5` for SF users.
Example scenario: You have application servers in three regions (US, EU, APAC). Instead of hard-coding server addresses or managing complex routing, you create three views—one per region—each with the same zone name (`company.local`) but different IP addresses. Gateway resolver policies route queries to the appropriate view based on source location.
**Zero Trust access control:** Create resolver policies that only allow specific device groups to resolve sensitive internal hostnames like `admin.internal` or `payroll.corp`, while other employees get NXDOMAIN (domain does not exist) responses.
Example scenario: Only devices in the "Finance" group should be able to access `payroll.company.local`. Create a view containing the payroll zone, then set up a resolver policy that selects this view only for Finance group devices. When someone outside Finance tries to query `payroll.company.local`, their query uses the default view which doesn't contain that zone, resulting in NXDOMAIN—effectively making the hostname "invisible" to unauthorized users.
**Development and staging environments:** Developers can access both production and staging systems using the same hostnames, while non-developers only see production.
Example scenario: Create a "Developers" view that contains zones for both `prod.company.local` (pointing to production IPs) and `staging.company.local` (pointing to staging IPs). Non-developer employees use a "Standard" view that only contains the production zone. Developers can seamlessly switch between environments, while ensuring production systems remain accessible to everyone who needs them.
## Prerequisites
Before implementing Internal DNS, you'll need:
- **Cloudflare Gateway:** Internal DNS requires Gateway resolver to route queries (included with Zero Trust plans)
- **Connectivity method:** At least one way to route traffic through Cloudflare (WARP client, Magic WAN, or Cloudflare Tunnel)
- **Internal IP ranges:** The private IP addresses you want your internal hostnames to resolve to (e.g., `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`)
## Getting started
To implement Internal DNS:
1. **Set up connectivity:** Choose how traffic reaches Cloudflare (WARP client for employee devices, Magic WAN for office networks, or Cloudflare Tunnel for servers)
2. **Create zones:** Define your internal DNS zones with the records you need (for example, create a `company.local` zone with records like `database.company.local → 10.0.1.100`)
3. **Create views:** Group zones into logical views based on location, department, or environment—views determine which users see which zone responses
4. **Configure policies:** Set up Gateway resolver policies that select the appropriate view based on query context (source IP, device posture, user identity)
5. **Test:** Verify queries from different locations/users resolve to the expected IPs—check that London users get London IPs and SF users get SF IPs
For detailed step-by-step setup instructions, see the [Get started guide](/dns/internal-dns/get-started/).
## Resources
<DirectoryListing />
## Related products
<RelatedProduct
header="Cloudflare Gateway"
href="/cloudflare-one/traffic-policies/"
product="privacy-gateway"
>
Set up policies to inspect DNS, Network, HTTP, and Egress traffic.
</RelatedProduct>
<RelatedProduct
header="Cloudflare Magic WAN"
href="/magic-wan/"
product="magic-wan"
>
Improve security and performance for your entire corporate networking,
reducing cost and operation complexity.
</RelatedProduct>
---
**Enhancement summary:**
This overview was enhanced with inline context explaining when you'd use Internal DNS, step-by-step query flow showing how views work, and three detailed use case examples with real-world scenarios. Added explanations of key concepts (views, zone referencing, privacy model) and a "Getting started" checklist.
**What was added:**
- Opening context: When to use Internal DNS with concrete example (lines 34-36)
- Architecture explanations: On-ramp options, why zones are private (lines 42-44, 48-50)
- Views explanation: Why views matter and how they enable customization (lines 73-75)
- Query flow section: Step-by-step walkthrough of how Internal DNS processes queries (lines 114-126)
- Zone referencing context: How reference chains work and why they're useful (lines 105-107)
- Common use cases: Three detailed scenarios (multi-region, Zero Trust, dev/staging) with implementation examples (lines 128-151)
- Getting started: 5-step setup checklist (lines 153-162)
- Preserved: All MDX components (`<Description>`, `<Plan>`, `<Example>`, etc.), all three mermaid diagrams, and all original structure unchanged
**Target expansion:** 1.89x (135 → 255 lines)
Content Type Guide
Operational guide for detecting and simplifying different documentation types.
---
Purpose
This guide provides:
- Detection criteria for identifying content types
- Required elements checklist for each type
- Simplification patterns specific to each type
- Quick reference for operational use
---
CRITICAL: Conservative Enhancement Guidelines
Target expansion: 1.5-2x original content length
For each content type below, the enhancement patterns are designed to ADD MINIMAL CONTEXT AND EXAMPLES, not restructure or massively expand.
Universal constraints:
- Maximum 1-2 examples per major concept
- Each example: 5-15 lines
- Inline "why" explanations: 1-2 sentences
- No diagram annotations
- Preserve all original structure
- No separate conceptual sections before content
- Brief troubleshooting only (1-2 issues for tutorials)
- Minimal testing guidance (3-5 commands for tutorials)
When patterns below suggest "Add [section]":
- Interpret as "enhance inline" not "create separate major section"
- Keep additions brief and integrated
- Target 1.5-2x expansion, not 5-10x
---
Content Type Overview
| Type | Purpose | Key Pattern | Example |
|---|---|---|---|
| Overview | Help users decide if they need this | Problem → Solution → Benefit | Product landing pages |
| Concept | Build understanding of "why" | Analogy → Plain → Technical | "What is rate limiting?" |
| How To | Enable task completion | Context → Multi-path steps | "Enable HTTPS" |
| Reference | Provide comprehensive specs | Use-case organization | API parameters, headers |
| Tutorial | Teach through application | Build → Enhance → Polish | "Build a URL shortener" |
---
1. Overview Pages
Detection Criteria
Look for:
- Product/feature name in title or H1
- Feature lists or capability descriptions
- "What is [Product]" sections
- Benefit statements or value propositions
- "Get started" or call-to-action links
- Lack of step-by-step instructions
Confidence signals:
- Multiple features described briefly
- High-level product description
- Links to detailed documentation
- "Perfect for" or use case sections
- Pricing or plan information
Example titles:
- "Cloudflare Workers"
- "Introduction to Gateway"
- "What is Workers KV?"
Required Elements Checklist
- [ ] Opening benefit statement (what problem solved)
- [ ] Problem/Solution/Benefit structure
- [ ] "Perfect for" self-identification section
- [ ] Clear call-to-action ("Get started" link)
- [ ] Feature descriptions with benefits (not just specs)
- [ ] Technical architecture separated/collapsed
Simplification Pattern (Conservative)
Target: 1.5-2x original length
Minimal additions: 1. Add 2-4 sentence problem statement (if completely missing) at document start 2. Add 1-2 use case examples inline (5-10 lines each) showing who benefits 3. Add inline "why" (1 sentence) when introducing features 4. Define jargon on first use (brief inline definition)
Structure to preserve:
- Keep original opening and headings
- Don't reorganize sections
- Don't move architecture (just add brief intro if it leads)
Example enhancement:
Original (8 lines):
# Internal DNS
Manage DNS records for your private network.
Internal DNS zones pair with Gateway resolver policies to control
DNS query responses.
## Features
- Create internal zones
- Configure views
- Link to GatewayEnhanced (15 lines - 1.9x):
# Internal DNS
Manage DNS records for your private network without running your own DNS
servers. This simplifies operations and integrates with Cloudflare Gateway.
Internal DNS zones pair with Gateway resolver policies to control DNS query
responses based on context (source IP, user identity, domain).
**Example use case:** A multi-region company creates separate views for London
and SF offices. Users query the same hostname (api.company.internal) but get
different IP addresses based on location.
## Features
- Create internal zones - Private namespaces accessible only via Gateway
- Configure views - Logical groupings that route different users to different resources
- Link to Gateway - Resolver policies determine which view to useWhat was added:
- 1 sentence "why" (without running own servers)
- Brief context for zones (source IP, user identity)
- 1 example (3 lines)
- Inline definitions for features (1 sentence each)
- Total: 7 lines added to 8 original = 15 lines (1.9x) ✅
Common Issues to Fix (Conservative Approach)
- Leading with technical architecture → Add 1-2 sentence benefit intro before it (don't move it)
- Feature lists without context → Add brief inline explanations (1 sentence per feature)
- Missing use case → Add 1 concrete example inline (5-10 lines)
- Jargon in opening → Define on first use (parenthetical or brief clause)
- No "why" → Add 1 sentence explaining problem solved
---
2. Concept Pages
Detection Criteria
Look for:
- "What is..." or "Understanding..." titles
- Explanatory content (not procedural)
- "How it works" sections
- Conceptual diagrams or explanations
- "Why" explanations
- Analogies or metaphors (sometimes)
Confidence signals:
- Explains mechanisms, not steps
- Educational tone
- Links to related concepts
- Theory before practice
- Multiple explanation approaches
Example titles:
- "Understanding Rate Limiting"
- "How Caching Works"
- "What is Edge Computing?"
Required Elements Checklist
- [ ] Opening analogy/visual (accessible to all)
- [ ] Plain language definition
- [ ] "Why it matters" business value
- [ ] How it works (simplified explanation)
- [ ] Real-world use cases (3-5 scenarios)
- [ ] Technical details for advanced users (separated)
- [ ] Related concepts links
Simplification Pattern
Structure:
# [Concept Name]
**Think of it like:** [Tech-adjacent analogy]
**What it is:** [Plain English definition without jargon]
**Why you need it:**
- [Benefit 1]
- [Benefit 2]
- [Benefit 3]
**How it works:** [Simplified technical explanation]
**Real scenarios:**
- [Use case 1 with context]
- [Use case 2 with context]
- [Use case 3 with context]
---
**For technical users:**
[Technical implementation, architecture, algorithms]Common Issues to Fix
- Technical jargon first → Start with analogy
- Missing "why" → Add business value/benefits section
- Abstract examples → Use concrete, realistic scenarios
- No layering → Add progressive disclosure (simple → technical)
- Buried technical details → Separate clearly
---
3. How To Pages
Detection Criteria
Look for:
- Action verbs in titles (Configure, Enable, Create, Set up)
- Numbered steps or procedures
- "Prerequisites" sections
- Screenshots or UI guidance
- "Verify" or "Test" sections
- Command examples or code blocks
Confidence signals:
- Clear sequential structure
- Specific actionable steps
- Tool/UI references
- Expected outcomes stated
- Troubleshooting sections
Example titles:
- "Enable Always Use HTTPS"
- "Configure DNS Settings"
- "Create a Worker"
Required Elements Checklist
- [ ] Context (what this accomplishes, why)
- [ ] Prerequisites listed upfront
- [ ] Expected outcome stated
- [ ] Time estimate (if > 5 minutes)
- [ ] Dashboard path (UI steps with bold elements)
- [ ] API/CLI path (code examples in collapsible)
- [ ] Verification steps ("How to tell it worked")
- [ ] Troubleshooting common issues
Simplification Pattern (Conservative)
Target: 1.5-2x original length
For how-to guides, preserve existing steps and add minimal context:
Minimal additions: 1. Add 1-2 sentence "what this accomplishes" at top (if missing) 2. Add inline "why" (1 sentence) for non-obvious steps 3. Add 1 example showing when you'd use this (3-5 lines) 4. Add brief verification (2-3 commands) if completely missing 5. Add 1-2 troubleshooting notes for critical failures only
Preserve:
- Original step numbering and flow
- Existing Dashboard/API paths (don't create new ones)
- All screenshots and UI elements
- Existing structure
Example enhancement:
Original (12 lines):
# Create a DNS View
## Dashboard
1. Go to Internal DNS
2. Click Create View
3. Enter view name
4. Select zones to include
5. Click Save
## API
Use the create view endpoint with zone IDs.Enhanced (20 lines - 1.67x):
# Create a DNS View
Create a logical grouping of zones that determines which DNS records users see.
Useful for multi-region setups or environment separation.
**Example:** Create "London View" and "SF View" to route users to nearest datacenter.
## Dashboard
1. Go to Internal DNS → Views
2. Click **Create View**
3. Enter descriptive view name (e.g., "London Production View")
4. Select zones to include - Choose which internal zones belong in this view
5. Click **Save** - View receives unique ID for use in Gateway policies
**Verify:** View appears in Views list with selected zones shown.
## API
Use the create view endpoint with zone IDs.
\`\`\`bash
curl -X POST /api/views -d '{"name": "London View", "zone_ids": ["id1", "id2"]}'
\`\`\`
**If view creation fails:** Check zone IDs are valid and not already in another view.What was added:
- 2-sentence purpose statement (2 lines)
- 1 example (1 line)
- Inline context for 2 steps (2 lines)
- Brief verification (1 line)
- API code example (2 lines)
- 1 troubleshooting note (1 line)
- Total: 8 lines added to 12 original = 20 lines (1.67x) ✅
What was NOT added:
- Comprehensive troubleshooting section
- Multiple examples
- Separate "Understanding Views" section
- Extensive testing procedures
### Common Issues to Fix
- **No context before steps** → Add "What this does" introduction
- **Missing prerequisites** → State upfront what's needed
- **Dashboard-only** → Add API/CLI path in collapsible
- **No verification** → Add "How to tell it worked" section
- **Missing notes** → Annotate confusing steps
---
## 4. Reference Pages
### Detection Criteria
**Look for:**
- Tables of parameters/settings/options
- Alphabetical organization (often)
- Technical specifications
- Data types, valid values, constraints
- API endpoint documentation
- Configuration option lists
**Confidence signals:**
- Dense technical details
- Systematic coverage (all options listed)
- Minimal narrative prose
- Code/parameter examples
- "Reference" or "API" in title
**Example titles:**
- "Cache Control Headers Reference"
- "API Endpoints"
- "Configuration Options"
### Required Elements Checklist
- [ ] Opening context ("When you'd use this reference")
- [ ] Common scenarios upfront (not at end)
- [ ] Use-case organization (not alphabetical)
- [ ] Two-tier descriptions (plain + technical)
- [ ] Practical examples for each item
- [ ] "When to use" decision guidance
- [ ] Real usage scenarios with expected results
### Simplification Pattern
**Structure:**[Reference Title]
When to use: [Context for entire reference]
Common Scenarios
- [Scenario 1]: Use [option X]
- [Scenario 2]: Use [option Y]
---
[Category 1: Grouped by Purpose]
[Option Name]
What it does: [Plain English description]
When to use: [Specific use case]
Technical spec: [Data type, range, constraints]
Example: ```[language] [Realistic usage example]
**Result:** [What happens when this is used]
---
### [Next Option]
[Same structure...]Common Issues to Fix
- Alphabetical organization → Reorganize by use case/purpose
- Specs without context → Add "When to use" guidance
- Missing examples → Add realistic usage for each item
- No decision help → Add scenario-based recommendations
- Plain or technical only → Provide both descriptions
---
5. Tutorial Pages
Detection Criteria
Look for:
- "Build" or "Create" in title
- Progressive code examples
- "What you'll build" sections
- "Prerequisites" with skill requirements
- Time estimates
- Step-by-step code progression
- "Deploy" or "Test" final sections
Confidence signals:
- Code builds from simple to complex
- Each step adds functionality
- Testing at milestones
- Troubleshooting sections
- Learning objectives stated
- Complete working example
Example titles:
- "Build a URL Shortener"
- "Create a Blog with Pages"
- "Tutorial: Image Resizing API"
Required Elements Checklist
- [ ] "What you'll build" with specific example
- [ ] "Who this is for" with prerequisites
- [ ] Time estimate
- [ ] "What you'll learn" (key concepts)
- [ ] Step 1: Minimal working version
- [ ] Progressive enhancement (add features incrementally)
- [ ] Code block explanations ("What this does")
- [ ] Testing at each major step
- [ ] Troubleshooting section
- [ ] Optional enhancements (clearly marked)
Simplification Pattern (Conservative)
Target: 1.5-2x original length
For tutorials, focus on enhancing existing steps, not restructuring:
Minimal additions to existing tutorial: 1. Add 2-3 sentence goal at top (if missing) - what they'll build 2. Add inline code explanations - Brief comments within code blocks 3. Add 1 example showing typical usage scenario (5-10 lines) 4. Add brief testing - 3-5 commands with expected output 5. Add minimal troubleshooting - 1-2 critical issues only
DO NOT add if already present:
- "What you'll build" section (enhance existing instead)
- Progressive steps (keep original structure)
- Code examples (enhance with comments, don't replace)
Example enhancement:
Original tutorial step (20 lines):
## Step 1: Create the zone
Use the API to create an internal zone.
\`\`\`bash
curl -X POST https://api.cloudflare.com/zones \\
-d '{"name": "company.internal", "type": "internal"}'
\`\`\`
## Step 2: Add DNS records
Add records to the zone.
\`\`\`bash
curl -X POST https://api.cloudflare.com/zones/ID/dns_records \\
-d '{"type": "A", "name": "app", "content": "192.168.1.100"}'
\`\`\`Enhanced (35 lines - 1.75x):
## Step 1: Create the zone
Create an internal zone that will contain your DNS records. This zone is only
accessible via Gateway (not public DNS).
\`\`\`bash
curl -X POST https://api.cloudflare.com/zones \\
-d '{
"name": "company.internal", # Your internal domain
"type": "internal" # Marks as internal-only
}'
\`\`\`
**Example use:** A company creates company.internal for all internal apps
(app.company.internal, api.company.internal, db.company.internal).
## Step 2: Add DNS records
Add records mapping hostnames to private IPs.
\`\`\`bash
curl -X POST https://api.cloudflare.com/zones/ZONE_ID/dns_records \\
-d '{
"type": "A", # Address record
"name": "app.company.internal", # Full hostname
"content": "192.168.1.100" # Private IP
}'
\`\`\`
**Test:**
\`\`\`bash
nslookup app.company.internal
# Expected: Returns 192.168.1.100
\`\`\`
**If it doesn't resolve:** Device must use Gateway as DNS resolver. Check WARP
connection or DNS settings.What was added:
- Brief "why" for each step (1 sentence)
- Inline code comments (3-4 comments)
- 1 example showing usage (2 lines)
- Brief testing (3 lines)
- 1 troubleshooting note (2 lines)
- Total: 15 lines added to 20 original = 35 lines (1.75x) ✅
What was NOT added:
- Separate "What you'll build" section
- Multiple examples
- Comprehensive troubleshooting section
- Extensive testing procedures
Common Issues to Fix (Conservative Approach)
- Code without explanation → Add inline comments (2-4 per block)
- No goal stated → Add 2-3 sentence goal at top
- Missing testing → Add 3-5 line verification (not separate section)
- Zero troubleshooting → Add 1-2 critical issues inline with steps
- No examples → Add 1 realistic example inline (5-10 lines total)
---
Detection Decision Tree
1. Does it have numbered procedural steps?
YES → Likely HOW TO
NO → Continue
2. Does it explain "what" and "why" conceptually?
YES → Likely CONCEPT
NO → Continue
3. Does it have tables/specs/parameters?
YES → Likely REFERENCE
NO → Continue
4. Does it build something progressively with code?
YES → Likely TUTORIAL
NO → Likely OVERVIEW
5. Validation questions:
- Multiple features described? → OVERVIEW
- Explains mechanisms? → CONCEPT
- Action-oriented title? → HOW TO
- Technical specifications? → REFERENCE
- Complete project? → TUTORIAL---
Mixed Content Types
Sometimes documentation combines types:
Overview + How To
Pattern: Product intro followed by quick start steps Approach: Treat first section as Overview, steps as How To Example: "Workers Overview" with "Deploy Your First Worker" steps
Concept + Reference
Pattern: Conceptual explanation followed by parameter reference Approach: Layer explanation first, reference at bottom Example: "Understanding Caching" + "Cache Headers Reference"
Tutorial + Reference
Pattern: Build project + API reference at end Approach: Keep tutorial progressive, move reference to appendix Example: "Build URL Shortener" + "Workers API Reference"
Detection strategy: Identify the primary purpose (first 50% of content), treat remainder as supporting material with appropriate pattern.
---
Quick Reference Cards
Overview Page Card
✓ Opens with benefit statement
✓ Problem/Solution structure
✓ "Perfect for" section
✓ CTA link prominent
✓ Technical details at bottomConcept Page Card
✓ Analogy in first paragraph
✓ Plain definition
✓ "Why it matters"
✓ Real use cases (3-5)
✓ Technical section separatedHow To Page Card
✓ Context before steps
✓ Prerequisites listed
✓ Dashboard path
✓ API path (collapsible)
✓ Verification sectionReference Page Card
✓ Opening context
✓ Use-case organized
✓ Plain + technical descriptions
✓ Examples for each item
✓ Decision guidanceTutorial Page Card
✓ "What you'll build"
✓ Prerequisites + time
✓ Minimal first step
✓ Progressive complexity
✓ Every code block explained
✓ Troubleshooting included---
Document Version: 1.0 Last Updated: February 2026 License: MIT
ELI5 Skill: Extended Examples Reference
Detailed patterns, examples, and templates referenced by SKILL.md.
Purpose: This file contains verbose examples and detailed patterns that would make SKILL.md too large. Reference sections below when you need detailed guidance or examples.
---
Table of Contents
1. Content Type-Specific Patterns - Full before/after examples for each content type 2. Simplification Principles - Detailed writing guidelines 3. Output Format Templates - Structure and formatting examples 4. Suggestions for Enhancement Examples - Line-specific recommendation examples
---
1. Content Type-Specific Patterns
Content Type-Specific Patterns
Once content type is detected and validated, I apply type-specific simplification patterns for optimal results.
Overview Page Simplification
Purpose: Help users quickly understand what a product/feature is and decide if they need it.
Required Elements:
- Opening benefit statement (what problem this solves)
- Problem/Solution/Benefit structure
- "Perfect for" self-identification section
- Quick start link
- Technical architecture separated to bottom
Analysis Focus:
- Does opening paragraph answer "what" and "why"?
- Are features explained with benefits, not just descriptions?
- Is there a clear call-to-action?
- Are technical terms defined or separated?
Simplification Approach:
1. Lead with benefits - Convert technical descriptions to value propositions 2. Problem framing - Start with the challenge users face 3. Feature → Benefit conversion - Transform feature lists to outcome statements 4. Self-identification - Add "Perfect for" with user scenarios 5. Separate technical details - Move architecture to collapsible sections
Pattern Example:
❌ Before (Technical-first):
## Product X
Product X is a distributed edge computing platform utilizing V8
isolates for serverless code execution with sub-millisecond cold
start performance.
Features:
- Global anycast network deployment
- Automatic scaling and load distribution
- Pay-per-request pricing model✅ After (Benefit-first):
## Product X
Run code worldwide without managing servers. Deploy in seconds,
scale automatically, pay only for what you use.
**What problem it solves:**
Maintaining global infrastructure is expensive and complex. Product X
runs your code in 300+ cities automatically, handling all the
infrastructure for you.
**Perfect for:**
- Applications needing fast global performance
- Teams wanting to skip server management
- Projects with variable traffic (scale from zero to millions)
[Get started in 5 minutes →]
---
**For technical users:** Built on V8 isolates with global anycast
deployment. [Architecture details →]---
Concept Page Simplification
Purpose: Build understanding of WHY something works the way it does.
Required Elements:
- Opening analogy or visual (accessible to all)
- Plain language definition
- "Why it matters" business value
- How it works (simplified explanation)
- Real-world use cases (3-5 specific scenarios)
- Technical details for advanced users (separated)
Analysis Focus:
- Is there an analogy early in the content?
- Does it explain WHY before HOW?
- Are use cases concrete and realistic?
- Are technical details clearly separated?
Simplification Approach:
1. Start with analogy - Tech-adjacent comparison for mental model 2. Plain English definition - What it is without jargon 3. Value first - Why it matters before how it works 4. Layered explanation - Simple → detailed → technical 5. Concrete examples - Real scenarios, not abstract concepts
Pattern Example:
❌ Before (Technical-only):
## Rate Limiting
Rate limiting implements token bucket algorithms to control request
throughput based on configurable parameters including burst size and
refill rate. Requests exceeding limits receive 429 status codes.✅ After (Layered explanation):
## Rate Limiting
**Think of it like:** A nightclub with maximum capacity. Even if
1,000 people want to enter at once, you only let a controlled number
in at a time to keep things manageable.
**What it is:**
Rate limiting controls how many requests can hit your website in a
given time period. Without it, a sudden spike—whether from real
users or attackers—could overwhelm your server.
**Why you need it:**
- Prevents DDoS attacks from taking your site down
- Stops bots from scraping your content
- Ensures fair usage across all users
- Keeps infrastructure costs predictable
**How it works:**
You set a rule like "100 requests per minute per IP address." When
someone exceeds this limit, we block additional requests until the
time window resets.
**Real scenarios:**
- E-commerce site during Black Friday preventing bot purchases
- API preventing scraping of product catalog
- Forum preventing spam post flooding
---
**For technical users:** Implements token bucket algorithm with
configurable burst size and refill rates. Returns 429 status with
Retry-After header. [Implementation details →]---
How To Page Simplification
Purpose: Help users successfully accomplish specific tasks.
Required Elements:
- Context (what this accomplishes, why you'd do it)
- Prerequisites listed upfront
- Expected outcome stated
- Time estimate (if non-trivial)
- Dashboard path (UI-focused, detailed steps)
- API/CLI path (code-focused, in collapsible section)
- Verification steps
- Common issues and troubleshooting
Analysis Focus:
- Is context provided before steps?
- Are prerequisites clearly stated?
- Is there both a Dashboard and API path?
- Are verification steps included?
- Are common pitfalls addressed?
Simplification Approach:
1. Add context - What's accomplished and why 2. State prerequisites - What must be true before starting 3. Multi-path instructions - Dashboard AND API/CLI options 4. Annotate steps - Add notes for confusing points 5. Include verification - How to confirm it worked 6. Address pitfalls - Common issues encountered
Pattern Example:
❌ Before (Steps-only):
## Enable Feature
1. Navigate to Settings
2. Click Security
3. Toggle feature on
4. Save changes✅ After (Contextual multi-path):
## Enable Feature
**What this does:** Protects your site from [specific threat] by
[specific mechanism].
**Time required:** ~2 minutes
**Prerequisites:** Admin access to your account
**What happens:** After enabling, all incoming requests will be
[specific behavior]. You'll see results in Analytics within 5 minutes.
### Via Dashboard
1. Log into your dashboard at dash.example.com
2. Select your site from the list
3. In the left sidebar, click **Security**
4. Find **Feature Name** and toggle it **On**
5. Click **Save Changes**
💡 **Note:** Changes take effect immediately, but analytics may take
5 minutes to update.
### Via API
<details>
<summary>Show API example</summary>
curl -X PATCH "https://api.example.com/v1/settings" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{"feature_enabled": true}'
**Response:**{ "success": true, "result": { "feature_enabled": true, "updated_at": "2026-02-09T10:30:00Z" } }
[Full API documentation →]
</details>
## Verify It's Working
1. Visit your site in a new browser tab
2. Open browser Developer Tools (F12)
3. Check the Network tab for [specific header/behavior]
4. You should see [expected result]
## Troubleshooting
**Problem:** Feature doesn't seem to be active
**Solution:** Clear your browser cache and wait 5 minutes for
propagation. Still not working? Check that [prerequisite].---
Reference Page Simplification
Purpose: Provide comprehensive technical details accessibly.
Required Elements:
- Opening context ("When you'd use this")
- Common scenarios upfront
- Use-case organization (not alphabetical)
- Two-tier descriptions (plain English + technical spec)
- Practical examples for each item
- Real usage scenarios
Analysis Focus:
- Is content organized by use case or alphabetically?
- Are descriptions both plain and technical?
- Are practical examples included?
- Is there context about when to use options?
Simplification Approach:
1. Add opening context - When you'd reference this section 2. Reorganize by use case - Group by purpose, not A-Z 3. Two-tier descriptions - Plain explanation + technical spec 4. Add examples - Real usage with expected results 5. Include "when to use" - Decision guidance
Pattern Example:
❌ Before (Alphabetical specs-only):
## Cache Headers
**Cache-Control:** Controls caching. Values: public, private,
no-cache, max-age=seconds
**Expires:** HTTP date for expiration
**Pragma:** Legacy directive. Value: no-cache✅ After (Use-case organized with examples):
## Cache Headers Reference
**When to use:** Control how long content stays cached and who can
cache it.
### Common Scenarios
**Scenario 1:** Static assets (images, CSS, JS) → Cache for 1 year
**Scenario 2:** Blog posts → Cache for 1 hour
**Scenario 3:** User dashboards → Never cache
---
## Headers by Purpose
### Long-Term Caching (Static Assets)
#### `max-age=31536000` (1 year)
**What it does:** Caches content for 1 year before checking for updates
**When to use:** Files that never change, like `logo-v2.png` or
`style.abc123.css` with version hash in filename
**Technical spec:** Integer, seconds. Range: 0-31536000 (1 year max)
**Example:**Cache-Control: public, max-age=31536000, immutable
**Result:** First visitor downloads the file. For the next year, all
visitors get the cached version with zero origin requests.
---
#### `immutable`
**What it does:** Tells browsers this file will literally never change
**When to use:** Combine with `max-age` for versioned assets
(filename includes hash/version number)
**Technical spec:** No value. Presence activates directive.
**Example:**Cache-Control: public, max-age=31536000, immutable
**Result:** Browsers won't revalidate even on refresh. Perfect for
`style.abc123.css` where hash changes when content changes.
---
### Frequently Updated Content
#### `max-age=3600` (1 hour)
**What it does:** Caches content for 1 hour
**When to use:** Content that updates occasionally but doesn't need
to be real-time, like blog posts or product pages
**Technical spec:** Integer, seconds
**Example:**Cache-Control: public, max-age=3600
**Result:** Content stays cached for 1 hour. After expiration, next
request checks origin for updates.
---
#### `no-cache`
**What it does:** Always check with origin before using cached version
**When to use:** Content that changes frequently but can still be
cached briefly (shopping cart, personalized pages)
**Technical spec:** No value. Presence activates.
**Example:**Cache-Control: no-cache
**Result:** Every request checks origin via If-Modified-Since or
ETag. If nothing changed, serves cached version (304 response).
---
### Never Cache
#### `private, no-store`
**What it does:** Prevents any caching
**When to use:** Sensitive data (account info, payment details) or
highly dynamic content (real-time scores, live chat)
**Technical spec:** Combine both directives
**Example:**Cache-Control: private, no-store
**Result:** Every request fetches fresh from origin. Nothing cached
anywhere.---
Tutorial Page Simplification
Purpose: Teach through real-world application, building confidence progressively.
Required Elements:
- "What you'll build" with specific example
- "Who this is for" with prerequisites
- Time estimate
- "What you'll learn" key concepts
- Progressive complexity (minimal → full → polished)
- Code block explanations ("What this does")
- Troubleshooting section
- Optional enhancements clearly marked
Analysis Focus:
- Does it start with "What you'll build"?
- Are prerequisites clearly stated?
- Is every code block explained?
- Does complexity build progressively?
- Are common issues addressed?
Simplification Approach:
1. Set expectations - What, who, time, learning outcomes 2. Start minimal - Prove concept with simplest version 3. Progressive enhancement - Add features one at a time 4. Explain every code block - What it does and why 5. Troubleshoot - Common issues students encounter 6. Mark optional - Clearly separate enhancements from core
Pattern Example:
❌ Before (Code-dump):
## Build X
const handler = async (req) => { const url = new URL(req.url) return new Response('Hello') } addEventListener('fetch', e => e.respondWith(handler(e.request)))
✅ After (Explained progression):
## Build a URL Shortener
### What You'll Build
A working URL shortener that redirects short links to long URLs,
stores mappings, and tracks click analytics.
**Live example:** `short.example.com/github` → `github.com/cloudflare`
### Who This Is For
Developers comfortable with JavaScript. No prior experience with
Workers needed, but you should understand:
- HTTP requests and responses
- JSON data format
- Basic async/await
### Time Required
30-45 minutes
### What You'll Learn
- How to handle requests at the edge
- Storing data in key-value storage
- Building a simple API
- Deploying code globally in seconds
---
## Step 1: Create Your First Worker
Let's start with the absolute minimum—a Worker that responds to
requests:
// Entry point: runs for every HTTP request addEventListener('fetch', event => { // Pass request to our handler function event.respondWith(handleRequest(event.request)) })
// Handler: processes the request and returns a response async function handleRequest(request) { return new Response('Your URL shortener will live here!', { headers: { 'content-type': 'text/plain' } }) }
**What this code does:**
- **Line 2:** Listens for incoming HTTP requests
- **Line 4:** Calls `handleRequest` to process each request
- **Line 8-12:** Returns a simple text response
**Test it:**
1. Deploy this code to Workers
2. Visit your Worker's URL
3. You should see: "Your URL shortener will live here!"
This proves your Worker is running. Now let's add actual functionality...
---
## Step 2: Add URL Parsing
Now let's make it recognize short codes in the URL:
async function handleRequest(request) { // Extract the pathname from the URL // Example: https://short.example.com/github → "/github" const url = new URL(request.url) const shortCode = url.pathname.slice(1) // Remove leading "/"
// For now, just echo back the short code return new Response(You requested: ${shortCode}, { headers: { 'content-type': 'text/plain' } }) }
**What changed:**
- **Line 3-4:** Parse the full URL to extract the path
- **Line 5:** Get the short code (everything after the `/`)
- **Line 8:** Echo it back so we can test
**Test it:**
1. Visit `your-worker.dev/test`
2. You should see: "You requested: test"
3. Try `your-worker.dev/abc123` → "You requested: abc123"
Now we can detect what short code someone's requesting...
---
## Step 3: Store URL Mappings
[Continue building progressively...]
---
## Common Issues
**Problem:** "Error: Exceeded CPU limit"
**Cause:** Your Worker is doing too much computation in a single request
**Solution:** Workers have a 50ms CPU time limit. Move heavy processing
to background tasks or use Durable Objects for longer operations.
**Problem:** "KV data not updating"
**Cause:** KV is eventually consistent and may take 60 seconds to
propagate globally
**Solution:** For testing, add a cache-busting parameter (`?v=2`) or
wait 60 seconds between writes and reads.
---
## Optional Enhancements
Want to take this further? Here are some ideas:
**Add Click Analytics** (Medium difficulty)
- Store click count in KV
- Increment on each redirect
- Create stats endpoint
**Custom Short Codes** (Easy)
- Let users choose their short code
- Check if code is already taken
- Return error if unavailable
**Expiring Links** (Medium)
- Store expiration timestamp
- Check before redirecting
- Return 404 if expired---
Simplification Principles
---
2. Simplification Principles
Simplification Principles
Plain Language Guidelines
Sentence Structure:
✅ One idea per sentence when possible
- "Webhooks send notifications. This happens when events occur."
- Not: "Webhooks, which are HTTP callbacks, send notifications containing event data to your specified endpoint when certain events occur on the platform."
✅ Active voice over passive
- "The system sends a notification"
- Not: "A notification is sent by the system"
✅ Concrete nouns over abstract
- "Your endpoint receives a POST request"
- Not: "The interface abstraction layer facilitates data transmission"
✅ Common words when equally accurate
- "Use" not "utilize"
- "Help" not "facilitate"
- "Start" not "initiate"
✅ Short paragraphs (3-4 sentences maximum)
- Easier to scan and digest
- Provides visual breathing room
- Maintains focus on single topic
Terminology Handling:
Always define on first use:
An API (Application Programming Interface) defines how programs
can request and exchange data...Expand acronyms:
CDN (Content Delivery Network)
CI/CD (Continuous Integration/Continuous Deployment)
HMAC (Hash-based Message Authentication Code)Provide context for technical terms:
Not: "Configure the webhook endpoint."
But: "A webhook endpoint is the URL where we'll send notifications.
Configure it to point to your server."Metaphor Creation (Tech-Adjacent)
What makes a good metaphor:
1. Rooted in familiar technology - Build on concepts readers likely know 2. 1:1 concept mapping - Key aspects align accurately 3. Clarifies, doesn't confuse - Simpler than original concept 4. Acknowledges limitations - States where metaphor breaks down
Metaphor Library (Core Examples):
1. API → Restaurant Menu
**Think of It Like:**
An API is like a restaurant menu. The menu shows you what dishes
are available (endpoints), what customizations you can request
(parameters like "no onions" or "extra spicy"), and what you'll
receive (the response - your meal). You don't need to know how the
kitchen operates or what cooking techniques they use. You just order
from the menu, and the kitchen handles the rest.
**Where this breaks down:**
Unlike a restaurant where you wait for your food, API responses are
usually near-instantaneous. Also, APIs can fail (kitchen is out of
ingredients), requiring error handling.2. Caching → Library Reserve Desk
**Think of It Like:**
Caching is like a library's reserve desk. Popular books are kept at
the front desk for quick access instead of requiring a trip to the
stacks. The first person requesting a book triggers the librarian to
fetch it from the stacks, but then it stays at the reserve desk so
subsequent readers can grab it immediately.
**Where this breaks down:**
Caches expire (books eventually return to the stacks), and cache
invalidation (deciding when to return books) is more complex than
the metaphor suggests.3. Load Balancing → Grocery Checkout Lanes
**Think of It Like:**
Load balancing is like grocery store checkout lanes. Instead of
everyone lining up at a single register (which would create a huge
wait), customers are distributed across multiple lanes. If one lane
gets too long or a register breaks down, the store can redirect
people to other lanes.
**Where this breaks down:**
Load balancers are more intelligent than checkout lane selection—they
know which servers are healthy, how busy they are, and can route
based on sophisticated algorithms.4. Webhooks → Doorbell Notifications
**Think of It Like:**
A webhook is like a doorbell notification. Instead of constantly
checking your front door to see if someone arrived (polling), the
doorbell alerts you the moment someone presses it (push notification).
You only respond when there's actually something to respond to.
**Where this breaks down:**
Doorbells are instantaneous, while webhooks have some latency due to
network transmission. Also, webhooks can fail if your server is down
(like a broken doorbell).5. Authentication → Building Security Badge
**Think of It Like:**
Authentication is like a building security badge system. You present
your badge (credentials) when entering. The system verifies you are
who you claim to be (authentication), then checks what floors you're
allowed to access (authorization). Different badges have different
access levels.
**Where this breaks down:**
Digital authentication often uses time-limited tokens (like a badge
that expires), and can verify identity through multiple methods
(password + fingerprint), which isn't common with physical badges.6. Rate Limiting → Freeway Metering Lights
**Think of It Like:**
Rate limiting is like freeway on-ramp metering lights. Instead of
letting everyone merge at once (causing congestion), the lights
control how many cars enter per minute. This keeps traffic flowing
smoothly on the main freeway. If you arrive too fast, you wait at
the red light.
**Where this breaks down:**
Rate limits are often user-specific (you get your own limit), not
shared like a metering light. Also, rate limits reset on schedules
(every hour, every day), unlike continuous traffic flow.7. Database Indexing → Book Index
**Think of It Like:**
A database index is like the index at the back of a textbook. Instead
of reading every page to find mentions of "webhooks," you check the
index, which tells you exactly which pages to look at. The index
takes up extra space, but makes searching dramatically faster.
**Where this breaks down:**
Database indexes need updating when data changes (like keeping a
book index current as you add pages), and choosing which fields to
index involves tradeoffs between search speed and write speed.8. CDN → Local Warehouses
**Think of It Like:**
A CDN (Content Delivery Network) is like having local warehouses
instead of shipping everything from one central warehouse. When
someone in California orders a product, it ships from the California
warehouse (faster delivery). When someone in New York orders, it
ships from New York. Same product, closer source.
**Where this breaks down:**
Unlike physical warehouses with unique inventory, CDNs store copies
of the same content in many locations. Updates need to propagate to
all locations (cache invalidation), which has no physical warehouse
equivalent.9. Containers → Shipping Containers
**Think of It Like:**
Software containers are like shipping containers. Before shipping
containers existed, moving goods required different methods for
different types of cargo. Shipping containers standardized this—put
anything inside a standard container, and it can go on any ship,
truck, or train. Software containers work the same way: package your
application and its dependencies, and it runs anywhere.
**Where this breaks down:**
Shipping containers physically isolate cargo, while software
containers share the same operating system kernel. Also, you can run
thousands of software containers on one machine, unlike physical
containers.10. Environment Variables → Settings Panel
**Think of It Like:**
Environment variables are like your application's settings panel—
configuration values that change behavior without modifying code.
Just like you might set your phone to dark mode or adjust notification
preferences, environment variables let you configure database URLs,
API keys, or feature flags without rewriting your application.
**Where this breaks down:**
Environment variables are usually set before the application starts
(not changed while running), and they're text-based rather than UI
toggles. They're also specific to each deployment environment (dev,
staging, production).Creating New Metaphors:
When you encounter a concept not in this library, create a new metaphor by:
1. Identifying the core mechanism or purpose 2. Finding a tech-adjacent analog readers likely understand 3. Mapping key concepts 1:1 4. Testing: Does this clarify or create new confusion? 5. Stating where the metaphor breaks down
Why-Focused Explanations
Always structure content in this order:
1. The Problem (Why)
When building applications, you often need to know when something
happens on another platform—like when a payment completes, a file
finishes uploading, or a deployment succeeds. Constantly checking
for updates (polling) wastes resources and creates delays.2. The Solution (What)
Webhooks solve this by pushing notifications to you. When an event
happens, we immediately send a message to your server with the details.3. The Value (Why It Matters)
This means:
- Your application responds in real-time instead of polling
- You save resources (no constant checking)
- Users get faster updates
- You only process events that actually happened4. The Use Cases (When)
Common scenarios:
- Triggering workflows when deployments complete
- Updating your database when content changes
- Sending notifications when payments are processed
- Syncing data between systems automatically5. The Implementation (How)
To set up a webhook:
1. Create an endpoint URL where we'll send notifications
2. Configure which events you want to receive
3. Verify requests are from us (using signatures)
4. Process the event data and take appropriate actionThis order respects how humans learn: purpose before mechanism.
Multi-Audience Layering
Serve different knowledge levels simultaneously:
Structure for Mixed Audiences:
**In Plain Language:**
[One sentence anyone can grasp]
**What It Is:**
[2-3 paragraphs building from basics, no jargon assumed]
**Why It Matters:**
[Benefits applicable to all readers]
**When You'd Use This:**
[Scenarios showing practical value]
**Think of It Like:**
[Metaphor for conceptual understanding]
---
**For developers:**
Technical implementation details, API references, code examples
**For non-technical readers:**
Focus on outcomes, when to involve technical help, business impactExample in Practice:
## Webhook Signature Verification
---
## 3. Output Format Templates
## Output Format & Structure
### Generated File Template
When I simplify documentation, I create a `.eli5.md` file with this structure:
ELI5 Simplified: [Original Doc Name]
Original: [file path] Simplified on: [timestamp] Sections simplified: [list of sections]
---
📋 Simplification Overview
What was confusing:
- [Pattern 1 - e.g., Heavy acronym use without expansion]
- [Pattern 2 - e.g., Assumed understanding of HTTP protocols]
- [Pattern 3 - e.g., Jumped to implementation without explaining purpose]
Approach taken:
- [Strategy 1 - e.g., Added one-sentence summaries for each concept]
- [Strategy 2 - e.g., Expanded all acronyms on first use]
- [Strategy 3 - e.g., Added "Why this matters" to each section]
- [Strategy 4 - e.g., Created tech-adjacent metaphors for abstract ideas]
---
Section: [Original Heading]
📄 Original Content
[Exact text from source, formatting preserved]⚠️ Issues Identified
Jargon:
[term]- [Why problematic, what's assumed][term]- [Why problematic, what's assumed]
Assumptions:
- [What's assumed - e.g., "Assumes reader understands REST principles"]
- [What's assumed - e.g., "References 'the config file' without showing where"]
Unclear Logic:
- [Issue - e.g., "Jumps from concept to code without transition"]
- [Issue - e.g., "No explanation of why this approach was chosen"]
✨ Simplified Version
In Plain Language: [One crisp sentence capturing the essence without jargon]
What It Is: [2-3 paragraphs building understanding from basics. Define terms. Explain concepts. Build progressively. No jargon assumed.]
Why It Matters: [Value proposition and concrete benefits]
- Benefit 1: [Specific, concrete impact]
- Benefit 2: [Specific, concrete impact]
- Benefit 3: [Specific, concrete impact]
When You'd Use This:
- Scenario 1: [Realistic use case with context]
- Example: "When building a chat application that needs real-time message delivery..."
- Scenario 2: [Realistic use case with context]
- Example: "When synchronizing inventory between your store and warehouse..."
- Scenario 3: [Realistic use case with context]
- Example: "When triggering post-deployment tasks like cache clearing..."
Think of It Like: [Tech-adjacent metaphor with detailed explanation]
[Full metaphor explanation, making connections explicit]
Where this metaphor breaks down: [Acknowledge limitations honestly]
Common Pitfalls:
- Pitfall: [What people commonly misunderstand]
Reality: [Correction with explanation]
- Pitfall: [Common mistake]
Reality: [How it actually works]
Related Concepts: [Connections to things readers might already know]
- "If you've used [familiar concept], this works similarly..."
- "This is the technical equivalent of [known idea]..."
- "Related to [concept], but differs in that..."
---
[Repeat structure for each section]
---
📊 Summary & Recommendations
Key Improvements Made:
1. [Improvement category]
- [Specific change made]
- [Impact on clarity]
2. [Improvement category]
- [Specific change made]
- [Impact on clarity]
3. [Improvement category]
- [Specific change made]
- [Impact on clarity]
Patterns Noticed:
[Meta-analysis of what made this documentation difficult]
- Jargon overload: [Details]
- Assumption patterns: [Details]
- Structure issues: [Details]
- Missing context: [Details]
Recommendations for Future Writing:
- [Suggestion 1 - e.g., "Define acronyms on first use"]
- [Suggestion 2 - e.g., "Start each section with 'why' before 'how'"]
- [Suggestion 3 - e.g., "Include at least one real-world use case per concept"]
- [Suggestion 4 - e.g., "Add metaphors for abstract concepts"]
---
✅ Next Steps
Review complete! What would you like to do next?
1. Suggest additional improvements - Identify other sections or refinements 2. Create a PR - Integrate these changes into the original documentation 3. Refine specific sections - Focus on particular areas that need more work 4. Apply changes to original - Update the source file with simplified content 5. Keep as reference - Use this comparison for review/learning only
Let me know how you'd like to proceed!
### File Naming Convention
**Input:** `path/to/documentation.md`
**Output:** `path/to/documentation.eli5.md`
**Input:** `api-reference.mdx`
**Output:** `api-reference.eli5.mdx`
The `.eli5` suffix clearly indicates this is a simplified version while preserving the original format extension.
### Suggestions for Enhancement Section
After the main simplification and summary, I include a **"Suggestions for Enhancement"** section that identifies specific opportunities to improve accessibility further.
**Format:**
Each suggestion includes:
- **Line reference:** Specific location in the original document
- **Section name:** What part of the doc this applies to
- **Current approach:** What's there now
- **Suggested enhancement:** What could be added
- **Why this helps:** Accessibility benefit explained
- **Implementation:** Concrete code/example showing the enhancement
**Example:**
---
📝 Suggestions for Enhancement
---
4. Suggestions for Enhancement
📝 Suggestions for Enhancement
These suggestions show where additional patterns could improve accessibility:
Line 45-52: Add Multi-Path Instructions
Location: Section "Enable Always Use HTTPS" Current approach: Dashboard-only instructions provided
Suggested enhancement: Add API path for technical users who prefer code
Why this helps:
- Serves both UI users and developers with their preferred method
- Technical users can automate the process via API
- Provides complete coverage for mixed audiences
Implementation:
### Via API
<details>
<summary>Show API example</summary>
\`\`\`bash
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/{zone_id}/settings/always_use_https" \\
-H "Authorization: Bearer {token}" \\
-d '{"value":"on"}'
\`\`\`
**Response:**
\`\`\`json
{
"success": true,
"result": {
"id": "always_use_https",
"value": "on"
}
}
\`\`\`
</details>
\`\`\`
---
### Line 78-85: Move Technical Details to Collapsible
**Location:** Section "How TLS Encryption Works"
**Current approach:** Technical cipher suite details inline with main explanation
**Suggested enhancement:** Move advanced technical details to collapsible section
**Why this helps:**
- Beginners get the simple explanation without being overwhelmed
- Experts can expand for full technical depth
- Maintains clear progressive disclosure
- Reduces cognitive load for those learning basics
**Implementation:**
\`\`\`markdown
## How TLS Encryption Works
Your connection is encrypted using industry-standard TLS 1.3 protocol,
ensuring no one can intercept your data in transit.
<details>
<summary>For technical users: Cipher suite details</summary>
We support TLS 1.3 with modern AEAD cipher suites including:
- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
Perfect forward secrecy via X25519 key exchange. [Full TLS configuration →]
</details>
\`\`\`
---
### Line 120-122: Add Recommended Default
**Location:** Encryption mode options comparison
**Current approach:** Lists all options (Off, Flexible, Full, Full Strict) equally
**Suggested enhancement:** Call out recommended default for most users
**Why this helps:**
- Reduces decision paralysis for uncertain users
- Provides a safe starting point
- Guides users toward best security practices
- Acknowledges that not all users can evaluate tradeoffs
**Implementation:**
\`\`\`markdown
### Encryption Modes
**Recommended for most sites:** Full (Strict)
Provides maximum security by validating your origin server's
certificate. This is the best option if your server has a valid SSL
certificate installed.
#### Other Options
- **Off:** No encryption (Not recommended - only use for testing)
- **Flexible:** Encrypts visitor-to-Cloudflare only (Use if your
server doesn't have SSL)
- **Full:** Encrypts entire path but doesn't validate certificate
- **Full (Strict):** Maximum security with certificate validation ✅
\`\`\`
---
### Line 195-200: Add Concrete Use Case
**Location:** Feature description section
**Current approach:** Abstract benefit statement without example
**Suggested enhancement:** Add realistic use case showing feature in action
**Why this helps:**
- Makes abstract benefits concrete and relatable
- Helps users visualize how they'd use this
- Provides "aha moment" of recognition
- Increases confidence in feature relevance
**Implementation:**
\`\`\`markdown
**Why you need it:**
Prevents attackers from overwhelming your site with fake traffic.
**Real scenario:**
An e-commerce site during Black Friday gets hit by bots trying to
buy limited inventory. DDoS protection automatically filters out
the bot traffic, letting real customers complete their purchases
while the attack is absorbed across Cloudflare's network.
Without protection, the site would crash within minutes, losing
thousands in sales.
\`\`\`When to include suggestions:
Include this section when:
- Multi-path opportunities exist (Dashboard + API)
- Technical details could be collapsed
- Missing recommended defaults
- Abstract concepts need concrete examples
- Progressive disclosure could be improved
- Common decision points lack guidance
Placement:
The Suggestions section appears:
- After the "Summary & Recommendations" section
- Before the "Next Steps" section
- Clearly separated with heading and explanation
This makes suggestions actionable without cluttering the main before/after comparison.
---
Important Guidelines
Quality Checklist
Before finalizing any simplified content, verify:
- [ ] Technical accuracy maintained - No facts changed or oversimplified
- [ ] One-sentence summary captures essence without jargon
- [ ] Jargon identified and either explained or replaced
- [ ] Assumptions stated explicitly in Issues section
- [ ] "Why" comes before "what" in explanations
- [ ] Use cases are realistic and practical
- [ ] Metaphor has 1:1 mapping of key concepts
- [ ] Metaphor limitations acknowledged
- [ ] Common pitfalls are genuinely common (not invented)
- [ ] Tone is professional and respectful
- [ ] No condescending language ("simply," "just," "obviously")
- [ ] Reader intelligence respected throughout
Tone Rules
Never use these condescending phrases:
❌ "Simply configure the endpoint..." ❌ "Just add the webhook URL..." ❌ "Obviously, you'll need to..." ❌ "Clearly, this requires..." ❌ "As everyone knows..." ❌ "It's easy to..." ❌ "All you have to do is..."
Use these respectful alternatives:
✅ "To configure the endpoint, you'll need to..." ✅ "Add the webhook URL by..." ✅ "This requires..." ✅ "Here's how this works..." ✅ "This involves..." ✅ "The process is..."
Accuracy Is Non-Negotiable
Good simplification:
Webhooks send HTTP POST requests to your endpoint URL whenever
specified events occur. Think of it as a notification system where
we call your server instead of you constantly checking ours.Accurate, clear, uses metaphor effectively
Bad simplification:
Webhooks let programs talk to each other.Too vague, loses important details, not actually helpful
When complex accuracy is needed:
Use progressive disclosure:
**Simplified:** Rate limiting controls how many requests you can
make in a time period, like 100 requests per minute.
**More precisely:** Rate limits apply per API key and reset on a
sliding window. If you hit the limit, you'll receive a 429 status
code with a Retry-After header indicating when you can try again.Handling Different Content Types
API Documentation
Focus on:
- What the endpoint does (purpose)
- When you'd use it (scenarios)
- What you send (parameters explained)
- What you get back (response explained)
- Common use cases
- Error handling (what can go wrong)
Add value through:
- Explaining parameter purposes, not just types
- Showing realistic request/response examples
- Clarifying common misunderstandings
- Connecting to real-world workflows
Architecture Documentation
Focus on:
- Problem being solved
- Why this approach was chosen
- Tradeoffs made (what was gained/lost)
- When this architecture makes sense
- Alternatives considered
Add value through:
- Explaining decision rationale
- Making tradeoffs explicit
- Providing context for choices
- Connecting to business requirements
Code Documentation
Focus on:
- What the code accomplishes
- Why it's structured this way
- Key concepts or patterns used
- What to watch out for
Add value through:
- Plain-language "reading guides"
- Explaining non-obvious choices
- Clarifying complex logic
- Showing how pieces fit together
Edge Cases & Handling
Very Long Documents (>1000 lines)
Strategy:
1. Offer processing options:
- "This document has 1,500 lines across 25 sections. How would you like to proceed?"
- Option A: Process all sections
- Option B: Focus on specific sections (show list)
- Option C: Auto-detect most complex sections
- Option D: Process in chunks (1-10, 11-20, etc.)
2. Auto-detection logic:
- Calculate jargon density (technical terms per 100 words)
- Count assumption indicators ("as you know," references without explanation)
- Identify sections with no use cases or "why" statements
- Prioritize sections with highest complexity scores
3. Chunk processing:
- Process 5-10 sections at a time
- Generate partial
.eli5.mdfiles - Offer to continue with next chunk
Already-Clear Content
When content is already well-written:
## 📋 Simplification Overview
**What was done well:**
- Clear section headings with logical flow
- Terms defined on first use
- Good use of examples
- "Why" explained before "how"
**Minor improvements suggested:**
- Could add a tech-adjacent metaphor for [concept]
- Section 3 could benefit from a concrete use case
- Consider adding "common pitfalls" to section 5
**Overall assessment:**
This documentation is already quite accessible. The suggestions above
are minor enhancements rather than necessary corrections.Avoid:
- Adding unnecessary verbosity
- Creating problems that don't exist
- Over-explaining clear content
- Padding just to have something to say
Highly Technical Content
Strategy:
1. Maintain accuracy first
- Never oversimplify to the point of incorrectness
- Keep technical terms when they're important
- Preserve necessary complexity
2. Layer explanations
**High-level:** [What it accomplishes]
**How it works:** [Simplified mechanism]
**Technical details:** [Precise specifications]3. Add explanatory prose
- Don't change technical specs
- Add plain-language explanations alongside
- Provide "reading guides" for complex sections
4. Use progressive disclosure
- Start with simplest useful explanation
- Build to full technical detail
- Make it clear which sections are for whom
Code-Heavy Documentation
Strategy:
1. Don't oversimplify code itself
- Code should remain accurate
- Don't rewrite functional code for simplicity
- Preserve technical correctness
2. Add explanatory context
**What this code does:**
[Plain-language explanation]
**Why it's structured this way:**
[Architectural rationale]
**Key points to understand:**
- [Important concept 1]
- [Important concept 2]
[Original code, unchanged]
3. Create "reading guides"
- Walk through complex code step-by-step
- Explain what each section accomplishes
- Highlight non-obvious choices
MDX Files with Components
Strategy:
1. Focus on prose content
- Simplify documentation text
- Leave component code unchanged
2. Explain component purpose
**What this component does:**
The <CodeBlock> component displays syntax-highlighted code with
copy functionality, making it easier for readers to use the examples.3. Don't explain React/framework details
- Unless that's specifically what the doc is about
- Focus on what the component accomplishes for users
- Avoid diving into implementation unless relevant
Future Enhancements
Documented for future implementation
Planned Features
1. Inline Code Comment Reading
Support for code files with inline documentation:
# Input: analyze.py
def process_webhook(payload, signature):
"""
Processes incoming webhook notifications.
Verifies signature, parses payload, triggers handlers.
"""
# Implementation...Planned behavior:
- Extract docstrings and comments
- Simplify technical language in comments
- Add explanatory prose for complex logic
- Generate "code walkthrough" guides
Supported formats:
.js,.ts,.tsx(JavaScript/TypeScript).py(Python).go(Go).rb(Ruby).java(Java)
2. Multi-Format Support
Beyond Markdown:
- HTML documentation - Parse and simplify web-based docs
- PDF technical papers - Extract and clarify academic/research content
- Confluence/Wiki pages - Simplify internal documentation
- OpenAPI specs - Make API specifications more accessible
3. Automated Complexity Scoring
Quantitative analysis:
- Jargon density - Technical terms per 100 words
- Readability scores - Flesch-Kincaid, SMOG index
- Assumption detection - Flag phrases indicating assumed knowledge
- Context gap analysis - Identify missing "why" and "when" statements
Auto-prioritization:
- Sort sections by complexity
- Focus on highest-value simplifications
- Generate complexity reports
4. Interactive Mode
Iterative refinement:
- Process section-by-section with user feedback
- Real-time refinement based on input
- Iterative improvement cycles
- A/B testing of different metaphors
Examples
Example 1: API Documentation
Before (Original):
## POST /webhooks
Creates a webhook subscription for edge events.
### Parameters
- `endpoint` (string, required): HTTPS URL
- `events` (array, required): Event types
- `secret` (string, optional): HMAC signing key
### Response
Returns a `webhook` object.After (Simplified):
### ✨ Simplified Version
**In Plain Language:**
Set up automatic notifications that we'll send to your server whenever
specific events occur.
**What It Is:**
A webhook subscription tells our system to notify your application
when certain events happen (like a deployment completing or content
being published). Instead of your application constantly checking for
updates (polling), we push notifications to you the moment events occur.
**Why It Matters:**
- **Real-time updates** - Your application responds immediately
- **Resource efficiency** - No wasted API calls checking for changes
- **Reliability** - You never miss an event
- **Automation** - Trigger workflows automatically
**When You'd Use This:**
- **Deployment notifications:** Trigger post-deployment tasks when builds complete
- **Content synchronization:** Update your CMS when content changes
- **Monitoring:** Alert your team when errors occur
- **Integration:** Connect multiple systems to respond to events
**Think of It Like:**
A webhook is like setting up a doorbell notification on your phone.
Instead of constantly checking your front door camera to see if someone
arrived (polling), the doorbell alerts you the moment someone presses
it (push notification). You only respond when there's actually something
to respond to.
**Where this breaks down:**
Doorbells are instantaneous, while webhooks have small delays due to
network transmission. Also, webhooks can fail if your server is down
(like a broken doorbell), so you need retry logic.
**Parameters Explained:**
- **`endpoint`** - The URL where we'll send notifications (your server's
address that listens for webhook events). Must use HTTPS for security.
- **`events`** - Which events you want to receive (like `deployment.succeeded`
or `content.published`). You choose only the events you care about.
- **`secret`** - Optional security key for verifying notifications actually
come from us. We use this to create a signature you can verify.
**Common Pitfalls:**
- **Pitfall:** Thinking webhooks are 100% reliable
**Reality:** Network issues or server downtime can cause missed notifications.
Implement retry logic and consider periodic polling as a backup.
- **Pitfall:** Not verifying signatures
**Reality:** Without signature verification, attackers could send fake
webhooks to trigger unauthorized actions.
**Related Concepts:**
If you've used RSS feeds, webhooks work similarly—both push updates to
you. The difference is webhooks are programmable and work with any type
of event, not just content updates.Example 2: Architecture Decision
Before (Original):
## Edge Deployment Architecture
We've implemented a globally distributed edge architecture utilizing
V8 isolates for multi-tenant execution with microsecond cold starts
and automatic geographic distribution.After (Simplified):
### ✨ Simplified Version
**In Plain Language:**
We run your code on servers located around the world, close to your
users, making responses nearly instant regardless of where users are.
**What It Is:**
Traditional servers run in specific data centers—if your server is in
Virginia and your user is in Singapore, every request travels across
the world and back (adding hundreds of milliseconds). Our edge
architecture runs your code on servers in hundreds of cities worldwide,
so requests are handled by the nearest server.
**Why It Matters:**
- **Speed:** Users get responses in 10-50ms instead of 200-500ms
- **Reliability:** If one location fails, others continue serving traffic
- **Scale:** Handles traffic spikes automatically across all locations
- **Simplicity:** You deploy once; we handle global distribution
**When You'd Use This:**
- **Global applications:** Users are distributed worldwide
- **API endpoints:** Need fast response times everywhere
- **Dynamic content:** Content that can't be cached must still be fast
- **High availability:** Can't afford regional outages
**Think of It Like:**
Instead of one central warehouse shipping products nationwide (slow
delivery to distant customers), you have local warehouses in every major
city. When someone orders, it ships from their nearest warehouse. Same
product, faster delivery, handled automatically.
**The Technical Approach:**
We use "V8 isolates"—lightweight execution environments that start in
microseconds (thousandths of a millisecond). Traditional "serverless"
functions use containers that take 50-500ms to start. Isolates are
fast enough that we don't need to keep them warm; they start on-demand
for each request.
**Why this architecture:**
We evaluated three approaches:
1. **Traditional servers:** Fast but requires manual geographic setup
2. **Container-based serverless:** Globally distributed but slow cold starts
3. **Isolate-based edge:** Global + fast (our choice)
**Tradeoff made:**
Isolates have some limitations compared to full containers (no arbitrary
system libraries, limited execution time). We accepted these constraints
for the massive speed improvement.
**Common Pitfalls:**
- **Pitfall:** Assuming it works like traditional servers
**Reality:** Stateless execution—no persistent local storage, no background jobs
- **Pitfall:** Expecting Node.js compatibility
**Reality:** Implements web standards, not full Node.js APIs
**Related Concepts:**
If you've used CDNs (Content Delivery Networks), this is similar but
for code execution, not just static files. Like a CDN distributes
content globally, we distribute code execution globally.Remember
Your mission:
- Make technical concepts accessible
- Maintain technical accuracy
- Respect reader intelligence
- Focus on understanding
Always include:
- One-sentence plain language summary
- Clear "why" and "when" explanations
- Tech-adjacent metaphor with limitations
- Common pitfalls with corrections
- Use cases grounding abstract concepts
Quality standards:
- Technical accuracy is non-negotiable
- Metaphors must clarify, not confuse
- Tone must be professional and respectful
- No condescending language ever
Process: 1. Ask which sections to focus on 2. Identify specific issues (jargon, assumptions, logic, context) 3. Generate complete before/after comparison 4. Prompt for next steps
Output:
- Create
.eli5.mdfile in same directory - Include all required elements per section
- Provide actionable recommendations
- Offer clear next-step options
Philosophy: Technical expertise should never be a barrier to understanding. Every person deserves clear, accurate, respectful documentation.
---
For full philosophy and detailed agent guidelines, see: agent.md
For working examples, see: examples/
License: MIT Version: 1.0 Last Updated: February 2026
Related skills
FAQ
What does eli5 do?
Transform technical jargon into clear explanations using before/after comparisons, metaphors, and practical context
When should I use eli5?
Transform technical jargon into clear explanations using before/after comparisons, metaphors, and practical context
Is eli5 safe to install?
Review the Security Audits panel on this page before installing in production.