Memory card studio
Agent Skill for generating memory cards from files and web links with a zero-install local review frontend.
npx -y skills add wuA-zs/memory-card-studio --skill memory-card-studioAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when the user asks to create or update persistent local memory-card projects, generate flashcards or spaced-repetition card libraries from files, URLs, web pages, or other readable sources, create a zero-install card-review frontend, start today's due-card review, or study an existing local card library in conversation.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
7.7 KB, as published. Nobody here has run it
Memory Card Studio
Create local zero-install memory-card projects, generate grounded card libraries from files, and run lightweight review sessions in chat. The frontend is copied from assets/static-card-project/; Codex parses source files and updates JSON data.
Required References And Tools
- Read
references/card-schema.mdbefore creating or updating card JSON. - Read
references/frontend-behavior.mdbefore editing frontend assets or explaining browser review behavior. - Use
scripts/refresh_app_data.py <target-folder>after every card library or review-state change. - Use
scripts/update_review_state.py <target-folder> <card-id> <feedback>for every interactive review feedback before moving to the next card. - Use
scripts/validate_project.py <target-folder>before reporting initialization, generation, repair, or review-state updates as complete. - Store all generated files as UTF-8.
Core Rules
- Keep the frontend zero-install: only static HTML, CSS, JavaScript, JSON files, and
data/app-data.js. - Do not introduce Node, npm, React, Vite, databases, local servers, or cloud services into generated card projects.
- Do not overwrite existing card libraries or
data/review-state.jsonunless the user explicitly asks to rebuild them. - If target project files already exist, copy only missing frontend files and append or update the requested card library.
- Preserve all files under
data/libraries/anddata/review-state.jsonwhen repairing old projects. - Browser feedback stored in
localStorageis only a temporary in-page interaction record; it does not write back to JSON. Persistent review state must be updated by Codex indata/review-state.json, then refreshed intodata/app-data.js. - Do not edit
data/app-data.jsas source data. Regenerate it from JSON withscripts/refresh_app_data.py <target-folder>. - Do not rely on memory or end-of-session summaries to persist review feedback. After each
忘记,模糊, or记得answer, immediately runscripts/update_review_state.pyfor that card. - Do not treat ordinary learning questions as card-project work unless the user asks for persistent cards, a local card library, spaced repetition, or a review session.
- End every initialization, generation, repair, or review response with a clickable absolute link to the target
index.html.
Workflow Decision
Choose one workflow:
- Initialize or repair project: user asks to create a memory-card frontend, local review app, card project, or gives a folder where cards should live.
- Generate cards from sources: user asks to generate memory cards, flashcards, Q&A cards, cloze cards, choice cards, or review cards from files, URLs, web pages, pasted text, or other readable sources.
- Start today's review: user asks to begin memory, review due cards, study cards, or start card memory for an existing local card project.
If generating cards for a folder that is not initialized, initialize first.
Target Folder
- Use the folder explicitly named by the user.
- If the user gives only a source file, prefer that file's parent folder unless another card project folder is already established in the conversation.
- If no safe target folder can be inferred, ask one concise question for the folder path before writing files.
- Treat a folder as initialized when
index.html,app.js,styles.css, anddata/libraries/exist.
Initialize Or Repair Project
- Confirm or infer the target folder.
- Create the target folder if needed.
- Copy missing files from
assets/static-card-project/. - If
index.htmlorapp.jsis an older generated template that does not loaddata/app-data.js, replace those frontend runtime files with the current template. - Preserve existing user libraries and review state unless replacement was explicitly requested.
- Run
scripts/refresh_app_data.py <target-folder>. - Run
scripts/validate_project.py <target-folder>. - Report created files, repaired frontend files, preserved data files, and the absolute
index.htmllink.
Generate Cards From Sources
- Read
references/card-schema.md. - Resolve and initialize the target project folder if needed.
- Extract meaningful source content using local tools. Any file type, URL, web page, pasted text, or other source is acceptable when Codex can extract grounded text or structured data.
- Generate atomic cards that test one idea each:
qafor concepts, reasons, steps, tradeoffs, principles, examples, and constraints.clozefor key terms, short facts, numbers, formulas, named conclusions, and compact definitions.choicefor confusable concepts, classifications, best practices, and decision points.
- Enforce quality and deduplication:
- Do not create duplicate cards for the same test point.
- Use the same source excerpt for at most 1-2 cards unless the excerpt contains clearly separate ideas.
- Keep cloze blanks short; do not hide long clauses or entire sentences.
- Choice distractors must be plausible neighboring concepts grounded in the source, not invented trivia.
- Do not create trick questions.
- Include a short source note or source excerpt for each card.
- Write or append to
data/libraries/<library-name>.json. - Add default review state entries for every new card in
data/review-state.json. - Run
scripts/refresh_app_data.py <target-folder>. - Run
scripts/validate_project.py <target-folder>. - Report library name, card count, card type counts, validation result, and the absolute
index.htmllink.
Start Today's Review
- Read
references/card-schema.md. - Locate the target project folder from the user's path or conversation context. If it cannot be inferred, ask for the folder path.
- Load all
data/libraries/*.jsonfiles anddata/review-state.json. - Select at most 10 cards in this priority order unless the user asks for more:
- Cards with
nextReviewAtat or before today. - New cards without review state.
- Recently created cards if too few due cards exist.
- Cards with
- Review interactively:
- For
qa, show the question first, wait for the user's answer, then reveal or grade. - For
cloze, show the sentence with blanks first, then reveal the answers. - For
choice, show options and ask the user to choose before revealing the explanation.
- For
- After each card, ask the user to mark
忘记,模糊, or记得. - Immediately persist that feedback before showing the next card:
- Run
scripts/update_review_state.py <target-folder> <card-id> rememberedfor记得. - Run
scripts/update_review_state.py <target-folder> <card-id> fuzzyfor模糊. - Run
scripts/update_review_state.py <target-folder> <card-id> forgottenfor忘记.
- Run
- Confirm the command succeeded. If it fails, stop the review and report the persistence error instead of continuing.
- Run
scripts/validate_project.py <target-folder>at the end of the review session. - End with progress, validation result, and the absolute frontend link.
Frontend Assets
- The browser frontend loads
data/app-data.jsfirst because local JSON fetch commonly fails underfile://. - JSON files are the source of truth.
data/app-data.jsis a generated browser snapshot. - The browser does not parse user documents and does not persist review feedback back to JSON.
- Preserve the frontend behavior invariants documented in
references/frontend-behavior.mdwhen editingindex.html,styles.css, orapp.js.