agentleFS
c-ibarrac-ibarra/ObsidianKnowledgeCurator/.agents/skills/okc-study-multichoice/SKILL.md

okc-study-multichoice

Skill0 starsChanged 43 days agoMITView on GitHub

Reusable, parameterized multiple-choice flashcard deck engine and quality linter (/okc-study-multichoice, /okc-validate-cards). Validates 4-alternative syntax, isolated ? delimiters, distractor breakdowns, LaTeX hygiene, and synchronizes directly with Anki.

The file

Show its rules and text

We split this skill into the rules it gives an agent

13 rules. About 0 are common, 5 are distinctive, and 8 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 8

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use this skill when the user wants to validate, inspect, generate, or synchronize high-density multiple-choice active recall flashcard …

    line 8
  2. Distinctive:

    Every multiple-choice card must strictly conform to the following schema to ensure compatibility with both the Obsidian Spaced Repetition …

    line 63
  3. Very specific:

    Never prefix it with bullet dashes (e.g., - ?

    line 90
  4. Very specific:

    Never duplicate delimiters (??

    line 91
  5. Very specific:

    Always provide options A), B), C), D).

    line 93
  6. Distinctive:

    Never provide 2 or 3 options.

    line 94
  7. Distinctive:

    All 3 incorrect alternatives must have a dedicated entry explaining why they fail.

    line 96
  8. Very specific:

    No Disposable Batch Scripts: Never generate one-off scripts like append_batch_1.py, script_chapter_2.py, etc.

    line 117
  9. Very specific:

    Single Reusable Engine: All operations run through scripts/study_multi_choice.py or scripts/validate_flashcards.py.

    line 118
  10. Distinctive:

    Idempotency: All synchronization operations can be safely re-run without creating duplicate cards in Anki or corrupting existing notes.

    line 119
  11. Very specific:

    Zero Terminal Spam for Inspections: NEVER run exploratory python3 -c "..." or curl commands via run_command to inspect cards, files, or …

    line 126
  12. Very specific:

    Preferred Synchronization (Zero Popups): Call FastMCP okc tool sync_multi_choice_deck(file_path="...", append_to_master=True, …

    line 127
  13. Very specific:

    CLI Fallback (Strict 1-Command Execution): If running via CLI, execute in exactly one atomic terminal command (uv run python …

    line 128

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

OKC Multiple-Choice Flashcard Engine & Quality Linter

Use this skill when the user wants to validate, inspect, generate, or synchronize high-density multiple-choice active recall flashcard decks across Obsidian and Anki.

Triggers

  • /okc-study-multichoice <action> [flags]
  • /okc-validate-cards [flags]
  • "validate flashcards"
  • "audit multiple choice cards"
  • "sync multiple choice deck"
  • "sincronizar mazo multiple choice"
  • "validar tarjetas de opcion multiple"

🛠 Command Reference

1. Audit & Lint Deck Quality

Audits flashcard formatting, syntax, isolated ? delimiters, and distractor breakdowns across any markdown deck file:

uv run python scripts/study_multi_choice.py validate --file "<path_to_deck.md>" [--fix] [--strict]

Or using the standalone linter:

uv run python scripts/validate_flashcards.py --file "<path_to_deck.md>" [--fix] [--strict] [--json]

Flags:

  • --fix: Automatically fixes trivial whitespace, trailing spaces, and delimiter issues.
  • --strict: Returns non-zero exit code if any error or observation is detected.
  • --json: Outputs audit findings as structured JSON.

2. Check Deck & Anki Status

Inspects card counts in the markdown file and queries the local Anki instance to verify synchronized counts:

uv run python scripts/study_multi_choice.py status --file "<path_to_deck.md>"

3. Synchronize Deck to Anki

Parses the markdown deck, renders clean HTML with MathJax formulas and color-coded answer badges, and syncs directly to Anki via AnkiConnect:

uv run python scripts/study_multi_choice.py sync-anki --file "<path_to_deck.md>" [--deck-prefix "<AnkiDeckPrefix>"] [--replace-deck]

Flags & Defaults:

  • --deck-prefix: "AI Engineer_Multi_ES" (Sub-decks will automatically be created according to each card's category: [Category]).
  • --replace-deck: Deletes existing deck and all subdecks prior to importing to ensure a clean reload without duplicates.

📐 The 6-Dimension Multiple-Choice Quality Rubric

Every multiple-choice card must strictly conform to the following schema to ensure compatibility with both the Obsidian Spaced Repetition plugin and Anki:

### [Category]: Descriptive Card Title

**Pregunta:**
Detailed scenario or technical question providing sufficient context without ambiguous wording.

- A) First option description
- B) Second option description
- C) Third option description
- D) Fourth option description
?
**Respuesta correcta: B**

**Justificación:**
Comprehensive explanation of why option B is correct from first principles, production trade-offs, or theoretical guarantees.

**Desglose de distractores:**
- **A:** Why option A is incorrect or suboptimal.
- **C:** Why option C is incorrect, an anti-pattern, or a misconception.
- **D:** Why option D does not apply to this scenario.

Critical Rules

  1. Isolated ? Delimiter:
    • The question/answer separator ? MUST be on its own line surrounded by newlines (\n?\n).
    • Never prefix it with bullet dashes (e.g., - ? is invalid).
    • Never duplicate delimiters (?? is reserved for reversed cards in basic decks, not multiple-choice).
  2. Exactly 4 Alternatives:
    • Always provide options A), B), C), D).
    • Never provide 2 or 3 options; ensure distractors are plausible and educationally valuable.
  3. Exhaustive Distractor Breakdown:
    • All 3 incorrect alternatives must have a dedicated entry explaining why they fail.
  4. LaTeX vs. Currency Formatting:
    • Math formulas must use balanced delimiters ($...$ for inline, $$...$$ for block display).
    • Literal currency amounts must use escaped dollar signs (\$50, \$1.50 USD) to prevent breaking LaTeX math renderers.
  5. Deck-Specific Contrast Rules:
    • Data Science_Multi_ES: The question prompt container is strictly styled with a high-contrast royal blue background (background: #1e40af), crisp white typography (color: #ffffff), rounded corners (border-radius: 8px), left light-blue accent border (border-left: 4px solid #60a5fa), and white translucent inline code (rgba(255, 255, 255, 0.22)), ensuring maximum readability in both Light and Dark modes.

4. Convert & Append TSV to Master Deck (export-markdown)

Converts any TSV multiple-choice file into canonical 6-dimension blocks and appends it to Mazos_AI_Engineer_y_Data_Science_Multi_ES_V2.md:

uv run python scripts/study_multi_choice.py export-markdown --tsv "<path_to_tsv>" --module-title "Módulo X: <Título>" [--subdeck "<Subdeck>"]

📜 Architectural Standards

This skill strictly enforces the project's Reusable Scripts Policy (.agents/rules/reusable-scripts.md):

  • No Disposable Batch Scripts: Never generate one-off scripts like append_batch_1.py, script_chapter_2.py, etc.
  • Single Reusable Engine: All operations run through scripts/study_multi_choice.py or scripts/validate_flashcards.py.
  • Idempotency: All synchronization operations can be safely re-run without creating duplicate cards in Anki or corrupting existing notes.

🛡️ STRICT ZERO-PERMISSION PROTOCOL FOR AGENTS

To prevent disruptive user confirmation popups during study operations:

  1. Zero Terminal Spam for Inspections: NEVER run exploratory python3 -c "..." or curl commands via run_command to inspect cards, files, or Anki status. Use native silent tools (view_file, grep_search) or FastMCP okc tools (inspect_flashcards_deck, status_flashcards_deck).
  2. Preferred Synchronization (Zero Popups): Call FastMCP okc tool sync_multi_choice_deck(file_path="...", append_to_master=True, master_module_title="...") directly.
  3. CLI Fallback (Strict 1-Command Execution): If running via CLI, execute in exactly one atomic terminal command (uv run python scripts/study_multi_choice.py sync-anki --file "...").

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.