writing-flashcards-from-docs
Use when turning a documentation link or article into spaced-repetition flashcards - fetches and extracts core ideas, compares against existing cards/notes, right-sizes output by source density and existing coverage, updates only incorrect/outdated cards, and creates missing cards with strict citation, slug, and tag rules
When & Why to Use This Skill
This Claude skill automates the transformation of technical documentation and articles into high-quality, spaced-repetition flashcards. It solves the problem of manual note-taking and information overload by intelligently extracting core concepts, performing deduplication against existing knowledge bases, and ensuring strict adherence to active recall principles and citation standards for tools like Obsidian or Anki.
Use Cases
- Professional Certification Prep: Automatically generate high-signal study cards from official cloud provider documentation (e.g., AWS, GCP) to streamline exam preparation.
- Knowledge Base Synchronization: Update personal or team wikis by merging new documentation updates into existing flashcard sets while preventing redundant content through intelligent comparison.
- Technical Onboarding: Convert complex product manuals, SOPs, or internal engineering docs into bite-sized, testable flashcards for faster team training and information retention.
- Academic Research: Transform dense research papers or online articles into structured Q&A pairs with deep-link citations to facilitate long-term memory and easy source verification.
| name | writing-flashcards-from-docs |
|---|---|
| description | Use when turning a documentation link or article into spaced-repetition flashcards - fetches and extracts core ideas, compares against existing cards/notes, right-sizes output by source density and existing coverage, updates only incorrect/outdated cards, and creates missing cards with strict citation, slug, and tag rules |
Writing Flashcards From Docs
Overview
Turn a source link (docs/article) into high-signal flashcards without damaging accurate existing cards.
Core principle: Don’t churn the vault. Only change a card when you can point to a specific, authoritative source section showing it is wrong/outdated.
When to Use
Use this when you are asked to:
- “Make flashcards from this link” / “turn this doc into cards” / “update our cards from docs”
- Refresh cards for an exam (#SAP-C02, etc.)
- Merge new documentation into an existing knowledge base
Do not use this when:
- The input is not a stable source link (no URL / no permalink)
- The task is pure note-taking (not Q/A recall)
Output Format (Non‑Negotiable)
Each flashcard must be exactly:
**<question>** #card <optional tags>
<answer>
[^<slug>]: [<Title>](<source link>)
No extra structure: don’t add ###, Card 1, Q:/A: labels, bracketed headers like [topic], horizontal rules, tables-of-contents, or trailing metadata blocks.
Hard requirement: The final output must contain only flashcards.
No exceptions: If anything like <task_metadata>…</task_metadata>, session_id, tool output summaries, or any other non-card text appears, delete it and output only flashcards.
Format Enforcement (Non-Negotiable)
1. Source Footnotes Only
- The source link MUST be a footnote:
[^slug]: [Title](URL) - NEVER put the URL in the answer text, even if the user asks for "easier reading."
- NEVER output JSON, lists of objects, or any structure other than the Markdown format below.
2. Slug Strategy
- The footnote slug (
[^slug]) must describe the link target (the section of the docs), NOT the card content. - Good Slug:
sqs-message-metadata(describes the page/section). - Bad Slug:
message-attributes-limit(describes the specific fact). - Why: Multiple cards cite the same section. They must share the exact same footnote slug.
3. Duplication Policy (Zero Tolerance)
- NEVER create a duplicate card if the fact exists in the vault, even if the user provided a new source.
- Exceptions: You may append a new source footnote to an existing card if it provides a better citation or additional context, but do NOT create a new card.
- Handling Multi-Source Redundancy: If the user provides multiple links covering the same fact (e.g., limits), extract the fact ONCE, cite the most authoritative source (e.g., Developer Guide > Best Practices), or list both sources in the footnote if they add unique value.
Rules:
#cardis mandatory.Output only cards (no headings like
###, no commentary, no extra metadata).Never use vault links in the question (no
[[...]]in questions).Answer may use Markdown: lists, tables, code blocks.
For internal vault references in the answer, use wiki links:
[[AWS Lambda]][[AWS Lambda|Lambda]](override display text)
When you mention a topic that likely has an existing note (languages, services, core concepts), prefer a wiki link (e.g.,
[[Python]],[[Java]]). If you’re unsure a note exists, leave it unlinked.The footnote must reference the original source document, not other flashcards.
The footnote link MUST be a Markdown link
[Title](URL), NOT a bare URL.
Quick Reference
Before you output anything:
- Fetch the source link.
- Extract candidate facts/contrasts (don’t target a fixed number).
- Search vault for existing coverage.
- For each candidate: Update (wrong), Create (missing), or Skip (already covered).
- For each output card: verify format + deep link + slug policy (slug must describe the LINK, not the card).
Workflow
1) Fetch, Extract, and Right-Size
- Fetch the provided documentation/article URL.
- Identify:
- Definitions (what is X?)
- Contrasts (X vs Y)
- Rules/limits (quotas, thresholds, defaults, constraints)
- “If/then” behaviors (decision rules, exceptions, fallbacks)
- Lists you must memorize (states, phases, enum values)
- Scan for anchors: Look for
#links next to headers. You will need these for deep linking. - If you cannot confidently support a detail from the source, omit it (do not “fill in” from memory).
Right-size how many cards you create. Do not precommit to a number (e.g., “make 30 cards”). The correct card count depends on:
- Information available in the source: short + shallow sources yield few cards; long + dense references yield more.
- Existing coverage quality: if the vault already covers it accurately, you will mostly skip (and may output very few cards).
- Requested difficulty (if provided): difficulty changes what you select and how deep you go.
If the user demands a fixed quota, treat it as a preference, not a requirement. Never pad with redundant or low-signal cards.
2) Compare With Existing Knowledge
Before writing anything new:
- Search for existing cards/notes about the same topic.
- Classify each candidate:
- Accurate → do not touch
- Outdated/wrong → update (minimal edit)
- Missing → create a new card
Update rule: Update old flashcards only if they contain outdated or wrong information.
3) Create / Update Cards
For each extracted idea, pick the right action:
- Update if the existing card contains a factual error, contradicted by the new source.
- Create if the idea is missing in the vault.
- Skip if the info is already covered by an existing card/note.
Card Style & Quality (No Fluff)
- Capture the gist, not the text. Do not copy-paste corporate documentation speak.
- Be concise. Remove fluff, intro clauses, and marketing language ("fully managed", "seamlessly integrated", "helps you to...").
- Plain English. Explain it like you are talking to a smart engineer, not reading a brochure.
- Bad: "Amazon SQS temporary queues help you save development time and deployment costs when using common message patterns such as request-response."
- Good: "They act as lightweight, low-cost reply channels for request-response patterns without needing API calls to create."
Keep cards:
- Atomic (one fact/contrast per card)
- Specific (avoid vague “tell me about X”)
- Testable (answer can be checked against source)
Question Style by Difficulty:
| Level | Goal | Question Style | Example |
|---|---|---|---|
| #beginner | Vocabulary & Models | Simple Recall (Definition, Purpose) | "What is the default S3 storage class?" |
| #advanced | Decisions & Trade-offs | Comparison / Synthesis (Why X over Y?) | "Why choose S3 Standard over S3 Intelligent-Tiering for predictable workloads?" |
| #expert | Internals & Edge Cases | Constraints / Scenarios (What happens if...?) | "What happens to an SQS batch if one message fails and ReportBatchItemFailures is disabled?" |
Global Rules:
- NO Yes/No Questions (CRITICAL): Questions starting with "Is", "Does", "Can", "Are" are FORBIDDEN.
- BAD: "Does SQS limit consumption?"
- GOOD: "How does SQS handle consumption limits?"
- BAD: "Is FIFO compatible with fair queuing?"
- GOOD: "What is the compatibility between FIFO and fair queuing?"
- NO "Tell me about": "Tell me about SQS" -> BAD.
- Rewording Pattern: If a user asks "Does X do Y?", reframe as "How does X handle Y?" or "What is the behavior of X regarding Y?"
Citations, Slugs, and Links
Source Link
- Use the original documentation/article you were given.
- Mandatory: You MUST use deep links (anchor tags) to the specific subsection whenever available (e.g.,
.../sqs-temporary-queues.html#virtual-queues). - Verify anchors exist by checking the source HTML or URL bar behavior.
- Do not cite additional documents unless explicitly allowed; keep cards grounded in the provided source.
- If you absolutely can’t deep link (no ID/name attributes), cite the closest stable section URL.
Slug
- Slug is a short identifier derived from the link target (filename + anchor), NOT the card question.
- Slug Rule: The slug MUST describe the specific section being linked to (e.g.,
virtual-queues,sqs-limits,lambda-runtimes). - Reuse: Multiple cards citing the same section MUST use the exact same slug.
- Put exactly one footnote per card.
- Good:
virtual-queues(for...#virtual-queues),sqs-dead-letter-queues(for...#sqs-dead-letter-queues). - Bad:
sqs-cost(describes card topic, not link),temp-queue-benefits(describes card topic).
Tags
- Always include
#card. - Optionally include:
#<exam-code>(e.g.,#SAP-C02)#<secondary-topic>(e.g.,#iam,#sqs,#ec2,#k8s)#<difficulty-level>(#beginner,#advanced,#expert) when the user asked for a level
Difficulty Calibration
When difficulty is specified, use the Question Style by Difficulty table above to select facts and frame questions.
Beginner (#beginner)
- Focus: Core definitions, primary purposes, and "what is" questions.
- Avoid: Deep internals, obscure limits, complex failure scenarios.
- Mental Model: "Introductory Survey Course" - build the vocabulary first.
Advanced (#advanced)
- Focus: Trade-offs, decision-making rules ("when to use X vs Y"), and key operational limits.
- Avoid: Rare edge cases that don't affect architectural decisions.
- Mental Model: "Senior Engineer" - justify your choices.
Expert (#expert)
- Focus: Edge cases, race conditions, precise internal behaviors, and specific failure modes ("what happens if X fails while Y is retrying?").
- Avoid: Basic definitions or obvious marketing features.
- Mental Model: "Principal Engineer / Troubleshooter" - why is it breaking?
One Good Example
**What is the difference between an IAM managed policy and an inline policy?** #card #beginner #iam
Managed policies are standalone and reusable across identities; inline policies are embedded in exactly one identity (user/group/role) and aren’t reusable.
[^iam-managed-vs-inline]: [Managed policies and inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html)
Common Mistakes
- Editing cards “to refresh wording” even when accurate (churn).
- Citing another flashcard instead of the source doc.
- Using a top-of-page link when a subsection anchor exists.
- Creating duplicates instead of linking to existing notes with wiki links like
[[AWS Lambda]]. - Multi-fact cards that mix definitions + exceptions + limits.
- Using
#easyinstead of#beginner. - Creating slugs based on the question (e.g.,
sqs-cost) instead of the link (e.g.,virtual-queues). - Using bare URLs in footnotes instead of Markdown links.
Rationalization Table (Do Not Believe These)
| Excuse | Reality |
|---|---|
| “The new source is a 'Best Practices' guide” | A fact is a fact. Cite the most authoritative source on the existing card or skip. |
| “I’ll just add a second card to be safe” | Duplicates cause revision conflicts. Zero tolerance. |
| “Boss wants everything refreshed” | Only update when wrong/outdated; accuracy > churn. |
| “Duplicates are fine” | Duplicates rot; link to [[Existing Note]] (or `[[Existing Note |
| “I can’t deep-link, I’ll cite the root” | Try anchors first; cite the closest stable subsection URL. |
| “I’ll add one more AWS/K8s link to be safe” | Use only the provided source unless explicitly allowed. |
| “I know this from memory; the doc probably says it” | If the source didn’t back it, omit it. |
| “The slug describes the card better” | Slugs describe the source. Use the filename/anchor name. |
| “Bare URLs are faster to read” | Markdown links are the standard. Follow the format. |
| “User asked for links in the answer” | Footnotes are mandatory. User convenience < Standard format. |
| “Topic slugs help me identify the card” | Slugs identify the SOURCE. Use source-based slugs. |
| “A Yes/No question is simpler/faster” | It leads to shallow recall. Reword to "What is...?" or "How does...?" |
Red Flags — STOP
- "I'll rewrite all cards for consistency."
- "This seems right from memory; no need to fetch."
- "The doc is long; I’ll cite the top."
- "User asked for formal tone so I'll keep the fluff."
- "User asked for inline links."
- "Duplicates are acceptable."
- "I’ll cite extra docs / API pages to pad accuracy."
- "I’ll infer missing details."
- "I'll use #easy because it's shorter."
- "I'll make up a slug based on the question."
- "It's just a quick yes/no check."
- "It starts with 'Does', but I can't think of another way." -> STOP. Use "How does..." or "What is..."