
writing-flashcards
by borisnaidis
OpenCode/Claude Code Skills
SKILL.md
name: writing-flashcards description: Use when user requests spaced-repetition flashcards from a documentation/article URL or wants to merge/update an existing flashcard vault file - enforces strict card-only output formatting, deep-link footnote citations with stable slugs, and zero-duplicate minimal-churn updates based only on provided sources.
Writing Flashcards
Overview
Convert one or more documentation URLs into Q/A flashcards that are atomic, source-checkable, and deduplicated against an existing vault. Prefer skipping or minimally updating existing cards; create new cards only for missing, citation-backed facts.
When to Use
- User asks: “make flashcards from this doc/article”, “exam refresh”, “merge docs into my existing vault”.
- You have (or can be given) an existing vault file/folder to deduplicate and update.
When NOT to Use / Refuse
Refuse or stop if any of the following is true:
- No stable source URL/permalink is provided ("I read it yesterday" / screenshots-only / memory-only).
- User wants pure note-taking/summarization, not Q/A recall.
- You cannot cite using the provided URL(s) only and user did not explicitly allow additional sources.
Refusal output rules:
- Do not generate any cards.
- Ask for a stable link/permalink OR a pasted excerpt.
- If the user asked for dedupe/merge, ask for the vault path/file to check.
Hard Output Contract (Non-Negotiable)
Applies whenever you produce cards (stdout or writing into a file).
Exception: if you are refusing/stopping because required inputs are missing, do not output cards. Output a short request for the missing stable URL/permalink and (if deduping/merging is required) the vault path.
When producing cards, your response/output file must contain only flashcards + footnote definitions at the very bottom.
Per card:
- Line 1:
**<question>** #card <optional tags>#cardis mandatory on every card.
- Line 2+:
<answer>(Markdown allowed) - Final line of the card: footnote markers only, on their own line:
[^slug1][^slug2]- Nothing may appear after this line (no IDs, separators, extra whitespace blocks).
Global rules:
- No headings, numbering, TOCs, metadata blocks, prose, or file-system commentary in the output.
- Never preface with “available skills / skill match / I will…”; the output must be cards-only.
- Never include tool/harness artifacts like
<task_metadata>...</task_metadata>. - Separate cards with a single blank line.
- Never put URLs in answer text (citations are footnotes only).
- Exactly one footnote-marker line per card (no markers sprinkled in the answer).
- Footnote definitions are collected at the bottom only:
[^<slug>]: [<Title>](<URL>)
Tag + Linking Rules
#cardis mandatory on every card.- Add other tags only if the user requested them (difficulty, exam code, topic tags).
- Difficulty calibration (only if requested):
#beginner: definitions, defaults, primary purpose.#advanced: trade-offs, decision rules, key operational limits.#expert: edge cases, internals, precise failure modes/scenarios.
- Never use wiki links in questions.
- Answers may include wiki links for likely-in-vault concepts (e.g.,
[[Amazon S3]]); otherwise leave unlinked.
Question/Answer Quality
- Atomic and specific: one recall target per card.
- Source-checkable: every answer must be supported by the cited section.
- No marketing language; paraphrase in plain English.
- Forbidden question openings:
Is,Does,Can,Are.- Reframe as: “What is…”, “How does…”, “What is the behavior of…”, “What is the difference between…”.
- Avoid “Tell me about …”.
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?" |
Citations, Deep Links, and Slugs
Source rules
- Use only user-provided URL(s). Do not add “helpful” extra sources.
Deep-linking rules
- If the page supports anchors, cite a deep link to the most relevant section.
- Never guess an anchor. Verify it exists in fetched content (the HTML contains
id="anchor",name="anchor", or a linkhref="#anchor"). If you can’t fetch/verify, do not use an anchor. - Fallback if no verifiable anchors: cite the closest stable section URL available (often the page URL without an anchor).
Slug rules (derived from source section, not card content)
- Slug identifies the cited source section:
(<url filename> + <anchor>). - All cards citing the same section must reuse the exact same slug.
- Slug format:
- lowercase
-separator- strip query strings
- examples:
.../storage-class-intro.html#sc-compare→storage-class-intro-sc-compare.../optimizing-storage-costs.html→optimizing-storage-costs
Zero-Duplicate + Minimal-Churn Update Policy
Treat the vault as the source of truth for whether a card should exist.
For each candidate fact:
- skip: an equivalent card already exists and is accurate.
- update: only if the card is demonstrably wrong/outdated per the cited section.
- Make the smallest edit that restores correctness.
- Preserve unrelated wording and tags as long as the Hard Output Contract still holds.
- Do not add vault-specific trailing markers (e.g., Obsidian block IDs like
^...) unless the user explicitly asked for them.
- create: only if missing.
If a new source adds authoritative confirmation/context to an existing accurate card:
- Add additional footnote markers to that card’s marker line (still one marker line).
If multiple provided sources overlap:
- Extract the fact once.
- Cite the most authoritative section; add multiple footnotes only if they add distinct value.
Placement Policy (When Writing Into Existing Files)
- If the target file has bottom-of-file footnote definitions (
[^slug]: ...), insert new/updated cards above the first footnote definition. - If the file has topic headers, insert under the most relevant header but still above bottom-of-file footnotes.
Workflow (Use This Every Time)
- Validate inputs: stable URL(s) present; user allows only those sources.
- Fetch sources: extract candidate facts (definitions, contrasts, limits, if/then behaviors, enumerations); collect verifiable anchors.
- Right-size: produce only as many cards as the source warrants; never pad.
- Vault dedupe: search the vault for each candidate (by topic + synonyms, not just exact wording).
- For each candidate: decide
skip/update/create. - Assemble output: cards first, then footnote definitions; enforce the Hard Output Contract.
- Final validation checklist (must pass before emitting):
- No non-card text; no headings; no numbering.
- No URLs in answers.
- Every card ends with exactly one footnote-marker line.
- Every footnote marker has exactly one definition at bottom.
- Slugs are section-derived and reused consistently.
- No duplicate cards.
Common Failure Modes (Red Flags → STOP)
- Adding “helpful” explanation outside cards (violates card-only output).
- Using placeholder markers like
[^1](violates slug policy). - Adding anything after the footnote-marker line (violates per-card structure).
- Guessing anchors because “it’s probably right” (violates deep-link verification).
- Creating a new card for an already-covered fact (violates zero-duplicate).
- Multi-fact dumping (one card trying to cover an entire comparison table).
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon