{"id":"23bfb782-962c-485c-ad78-2238898d005e","entityType":"agent","slug":"clawhub-winlinvip-vocabulary-builder","name":"Vocabulary Builder","canonicalUrl":"https://www.xpersona.co/agent/clawhub-winlinvip-vocabulary-builder","canonicalPath":"/agent/clawhub-winlinvip-vocabulary-builder","generatedAt":"2026-10-10T07:02:23.718Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"description":"Build and review vocabulary from books, podcasts, and daily encounters. Use when the user wants to READ a book, shares a new word, asks about a word while re... Skill: Vocabulary Builder Owner: winlinvip Summary: Build and review vocabulary from books, podcasts, and daily encounters. Use when the user wants to READ a book, shares a new word, asks about a word while re... Tags: latest:1.1.2 Version history: v1.1.2 | 2026-02-28T17:48:06.067Z | user Support setup the cronjob by skill. v1.1.1 | 2026-02-28T16:22:47.006Z | user Update v1.1.0 | 2026-02-28T16:16:29.853Z | user Quiz","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 455 downloads reported by the source. Last updated 4/15/2026.","installCommand":"clawhub skill install kn7ektwb41a8k1zd4pw6qy26hh814bsd:vocabulary-builder","sourceUrl":"https://clawhub.ai/winlinvip/vocabulary-builder","homepage":"https://clawhub.ai/winlinvip/vocabulary-builder","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/winlinvip/vocabulary-builder","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":53,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Build and review vocabulary from books, podcasts, and daily encounters. Use when the user wants to READ a book, shares a new word, asks about a word while re..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"stars":null,"forks":null,"downloads":455,"packageName":null,"latestVersion":"1.1.2","tractionLabel":"455 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-03-01T05:42:00.746Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-03-01T05:42:00.746Z","lastIndexedAt":null,"nextCrawlAt":"2026-03-02T05:42:00.746Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.2","createdAt":"2026-02-28T17:48:06.067Z","changelog":"Support setup the cronjob by skill.","fileCount":2,"zipByteSize":3074},{"version":"1.1.1","createdAt":"2026-02-28T16:22:47.006Z","changelog":"Update","fileCount":2,"zipByteSize":2811},{"version":"1.1.0","createdAt":"2026-02-28T16:16:29.853Z","changelog":"Quiz selection: order by review count ascending, random within same count group using ms timestamp, always show review count","fileCount":null,"zipByteSize":null},{"version":"1.0.3","createdAt":"2026-02-15T03:14:35.200Z","changelog":"Added References section with YouTube link","fileCount":null,"zipByteSize":null},{"version":"1.0.2","createdAt":"2026-02-15T03:13:00.880Z","changelog":"Added YouTube URL to metadata","fileCount":null,"zipByteSize":null},{"version":"1.0.1","createdAt":"2026-02-14T12:51:14.357Z","changelog":"Declare file access in metadata, ask user confirmation before adding words, soften memory_search guidance","fileCount":null,"zipByteSize":null},{"version":"1.0.0","createdAt":"2026-02-14T03:40:50.594Z","changelog":"Vocabulary Builder 1.0.0 - Initial release of Vocabulary Builder for tracking and reviewing new words from books, podcasts, and daily encounters. - Supports reading sessions, per-word tracking, and a detailed vocabulary workflow with 3-step learning and spaced repetition. - Automatically adds new words with pronunciation, meaning, synonyms, and context, including special handling for French words. - Features one-word-at-a-time quizzes, on-demand refresher quizzes, and a robust scheduling system that respects user sleep hours. - Tracks progress and quiz state in a dedicated Markdown file, distinguishing active, review, and mastered words.","fileCount":null,"zipByteSize":null}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install kn7ektwb41a8k1zd4pw6qy26hh814bsd:vocabulary-builder","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-winlinvip-vocabulary-builder/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-winlinvip-vocabulary-builder/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-winlinvip-vocabulary-builder/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-winlinvip-vocabulary-builder/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-winlinvip-vocabulary-builder/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-winlinvip-vocabulary-builder/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T07:02:23.717Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-winlinvip-vocabulary-builder/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-winlinvip-vocabulary-builder/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-winlinvip-vocabulary-builder/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-winlinvip-vocabulary-builder/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"readme":"Skill: Vocabulary Builder\n\nOwner: winlinvip\n\nSummary: Build and review vocabulary from books, podcasts, and daily encounters. Use when the user wants to READ a book, shares a new word, asks about a word while re...\n\nTags: latest:1.1.2\n\nVersion history:\n\nv1.1.2 | 2026-02-28T17:48:06.067Z | user\n\nSupport setup the cronjob by skill.\n\nv1.1.1 | 2026-02-28T16:22:47.006Z | user\n\nUpdate\n\nv1.1.0 | 2026-02-28T16:16:29.853Z | user\n\nQuiz selection: order by review count ascending, random within same count group using ms timestamp, always show review count\n\nv1.0.3 | 2026-02-15T03:14:35.200Z | user\n\nAdded References section with YouTube link\n\nv1.0.2 | 2026-02-15T03:13:00.880Z | user\n\nAdded YouTube URL to metadata\n\nv1.0.1 | 2026-02-14T12:51:14.357Z | user\n\nDeclare file access in metadata, ask user confirmation before adding words, soften memory_search guidance\n\nv1.0.0 | 2026-02-14T03:40:50.594Z | auto\n\nVocabulary Builder 1.0.0\n\n- Initial release of Vocabulary Builder for tracking and reviewing new words from books, podcasts, and daily encounters.\n- Supports reading sessions, per-word tracking, and a detailed vocabulary workflow with 3-step learning and spaced repetition.\n- Automatically adds new words with pronunciation, meaning, synonyms, and context, including special handling for French words.\n- Features one-word-at-a-time quizzes, on-demand refresher quizzes, and a robust scheduling system that respects user sleep hours.\n- Tracks progress and quiz state in a dedicated Markdown file, distinguishing active, review, and mastered words.\n\nArchive index:\n\nArchive v1.1.2: 2 files, 3074 bytes\n\nFiles: SKILL.md (5786b), _meta.json (137b)\n\nFile v1.1.2:SKILL.md\n\n---\nname: vocabulary-builder\ndescription: Build and review vocabulary from books, podcasts, and daily encounters. Use when the user wants to READ a book, shares a new word, asks about a word while reading a book, requests a vocabulary quiz, asks about word progress, or when a cron/heartbeat triggers a scheduled quiz. Handles reading sessions, word collection, 3-step learning, spaced repetition, and progress tracking.\nmetadata: {\"url\": \"https://youtu.be/wjWrVpZZXSg\", \"files\": {\"vocabFile\": \"memory/vocabulary.md\", \"audioDir\": \"docs/tts-fr\"}}\n---\n\n# Vocabulary Builder\n\nThis skill reads and writes the following files (paths relative to workspace):\n- **Vocabulary tracker:** `memory/vocabulary.md` — all word data lives here\n- **Audio clips directory:** `docs/tts-fr/` — read-only; user places pronunciation audio files here\n\nEnsure these paths exist or create them before first use.\n\n## Reading Workflow\n\nWhen the user wants to read/practice reading a book:\n1. Ask what book they're reading\n2. Check the vocabulary tracker for words from that book — read the END of the Active Words section (use `tail` or read the last entries) to find the actual last word. Note: `memory_search` may return partial/ranked results, so also verify by reading the file directly when checking the latest entry.\n3. Tell them the last word added + page number so they know where to continue\n4. Ask if they want to: practice pending words, or keep reading and add new ones\n\n## Adding New Words\n\nWhen the user gives a new word:\n\n1. Give **pronunciation** (IPA, American English)\n2. Give **meaning** — clear, simple\n3. Give **synonyms** — similar words they might know\n4. **Add to tracker** after confirming with the user (e.g., \"Adding [word] to your vocabulary — ok?\")\n5. **Show the word card** after adding\n\nAdd to the `## Active Words` section, at the END (before `---` separator for Long-Term Review).\n\n### Word Entry Format\n\n```markdown\n### [word]\n- **Type:** noun/verb/adj/adv\n- **Learned:** YYYY-MM-DD HH:MM TZ\n- **Book:** [source name]\n- **Page:** [number]\n- **Pronunciation:** /IPA/\n- **Meaning:** [explanation]\n- **Synonyms:** [similar words]\n- **Context:** \"[sentence from source]\"\n- **Practice History:**\n  - YYYY-MM-DD HH:MM TZ: Step N ✓/✗ (notes)\n```\n\n### French Words\n\n- **Context:** French sentence only\n- **English Translation:** Separate field with English translation\n- Do NOT mix French and English in the same field\n- User places audio clips in `docs/tts-fr/` → add **Audio** field with the file path\n\n## 3-Step Learning Process\n\nRun all 3 steps in one conversation flow (not spread across hours):\n\n- **Step 1:** Show the plain word + review count (e.g. \"reviewed 0 times\" or \"reviewed 3 times\") → ask \"Do you know the pronunciation?\" → user types word to confirm\n- **Step 2:** Ask \"What does it mean?\" → check if correct/close enough\n- **Step 3:** Ask user to write a sentence using the word\n\nTrust-based pronunciation — no voice/ASR check. User types word to confirm.\n\n## Spaced Repetition Schedule\n\nAfter completing all 3 steps, review at:\n- Next day → 3 days → 1 week → 2 weeks → 1 month → 3 months\n- After 3-month review: word is **mastered**\n\n### Word Progression\n\nWords move through three sections in the tracker:\n1. **Active Words** — currently learning\n2. **Long-Term Review Words** — completed all steps, in spaced review\n3. **Mastered Words** — passed all reviews through 3 months\n\n## Quiz Rules\n\n- **One word per quiz** — no rapid-fire\n- **No spam:** If no reply to previous quiz today → don't send new one\n- **Reset next day:** New day = can send quiz even if yesterday's unanswered\n- **Sleep hours:** No messages 11 PM – 7 AM (user's timezone)\n- **Priority:** due for review > newer words (incomplete steps) > refresher\n\n### Random Word Selection\n\n1. Count each word's total practice history entries (all steps and reviews combined)\n2. Sort all words by review count ascending (least reviewed first)\n3. Take the group with the minimum review count\n4. Within that group, randomize: count words (N), use `(current_timestamp_ms % N) + 1` to pick position\n5. **Never pick the same word twice in a row.** Check Quiz State for the last quizzed word and skip it.\n\n**Always show review count** when quizzing: e.g. \"(reviewed 0 times)\" or \"(reviewed 3 times)\".\n\n### On-Demand Quizzes\n\nUser can request specific quizzes anytime — these override normal priority and spam rules:\n\n- \"Quiz me\" → random word\n- \"Quiz me on [word]\" → specific word\n- \"Quiz me on words from [book]\" → random from that book\n- \"Quiz me on words from this week\" → last 7 days\n- \"Quiz me on [book] page [N] to [M]\" → page range\n- \"Give me 3 quizzes\" → run 3 words in a row\n\nOn-demand refresher: If no words are due/pending, pick random word from all learned words. Still record quiz date.\n\n## Quiz State Tracking\n\nKeep a `## Quiz State` section at the top of the tracker file:\n\n```markdown\n## Quiz State\n- **Pending quiz:** [word] ([review type], [step] sent)\n- **Last quiz sent:** YYYY-MM-DD HH:MM TZ\n```\n\nUpdate after each quiz interaction.\n\n## Cron Setup\n\nWhen the user asks to set up a scheduled vocabulary quiz:\n\n1. **Ask for:** frequency (default: every 1h), delivery channel + target\n2. **Job name:** `vocabulary-quiz-{agentName}` (e.g. `vocabulary-quiz-english`)\n3. **Create a cron job** with these settings:\n   - Session: isolated\n   - Timeout: 120 seconds\n   - Message: instruct the agent to use the `vocabulary-builder` skill to run a quiz\n4. **Quiz constraints** (include in the cron message):\n   - Check Quiz State — skip if pending quiz unanswered today\n   - Respect sleep hours: no messages 11PM–7AM (user's timezone)\n\n## References\n\n- Video: [Why I Stopped Using Flashcards and Started Using AI](https://youtu.be/wjWrVpZZXSg)\n\nFile v1.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn7ektwb41a8k1zd4pw6qy26hh814bsd\",\n  \"slug\": \"vocabulary-builder\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1772300886067\n}\n\nArchive v1.1.1: 2 files, 2811 bytes\n\nFiles: SKILL.md (5192b), _meta.json (137b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: vocabulary-builder\ndescription: Build and review vocabulary from books, podcasts, and daily encounters. Use when the user wants to READ a book, shares a new word, asks about a word while reading a book, requests a vocabulary quiz, asks about word progress, or when a cron/heartbeat triggers a scheduled quiz. Handles reading sessions, word collection, 3-step learning, spaced repetition, and progress tracking.\nmetadata: {\"url\": \"https://youtu.be/wjWrVpZZXSg\", \"files\": {\"vocabFile\": \"memory/vocabulary.md\", \"audioDir\": \"docs/tts-fr\"}}\n---\n\n# Vocabulary Builder\n\nThis skill reads and writes the following files (paths relative to workspace):\n- **Vocabulary tracker:** `memory/vocabulary.md` — all word data lives here\n- **Audio clips directory:** `docs/tts-fr/` — read-only; user places pronunciation audio files here\n\nEnsure these paths exist or create them before first use.\n\n## Reading Workflow\n\nWhen the user wants to read/practice reading a book:\n1. Ask what book they're reading\n2. Check the vocabulary tracker for words from that book — read the END of the Active Words section (use `tail` or read the last entries) to find the actual last word. Note: `memory_search` may return partial/ranked results, so also verify by reading the file directly when checking the latest entry.\n3. Tell them the last word added + page number so they know where to continue\n4. Ask if they want to: practice pending words, or keep reading and add new ones\n\n## Adding New Words\n\nWhen the user gives a new word:\n\n1. Give **pronunciation** (IPA, American English)\n2. Give **meaning** — clear, simple\n3. Give **synonyms** — similar words they might know\n4. **Add to tracker** after confirming with the user (e.g., \"Adding [word] to your vocabulary — ok?\")\n5. **Show the word card** after adding\n\nAdd to the `## Active Words` section, at the END (before `---` separator for Long-Term Review).\n\n### Word Entry Format\n\n```markdown\n### [word]\n- **Type:** noun/verb/adj/adv\n- **Learned:** YYYY-MM-DD HH:MM TZ\n- **Book:** [source name]\n- **Page:** [number]\n- **Pronunciation:** /IPA/\n- **Meaning:** [explanation]\n- **Synonyms:** [similar words]\n- **Context:** \"[sentence from source]\"\n- **Practice History:**\n  - YYYY-MM-DD HH:MM TZ: Step N ✓/✗ (notes)\n```\n\n### French Words\n\n- **Context:** French sentence only\n- **English Translation:** Separate field with English translation\n- Do NOT mix French and English in the same field\n- User places audio clips in `docs/tts-fr/` → add **Audio** field with the file path\n\n## 3-Step Learning Process\n\nRun all 3 steps in one conversation flow (not spread across hours):\n\n- **Step 1:** Show the plain word + review count (e.g. \"reviewed 0 times\" or \"reviewed 3 times\") → ask \"Do you know the pronunciation?\" → user types word to confirm\n- **Step 2:** Ask \"What does it mean?\" → check if correct/close enough\n- **Step 3:** Ask user to write a sentence using the word\n\nTrust-based pronunciation — no voice/ASR check. User types word to confirm.\n\n## Spaced Repetition Schedule\n\nAfter completing all 3 steps, review at:\n- Next day → 3 days → 1 week → 2 weeks → 1 month → 3 months\n- After 3-month review: word is **mastered**\n\n### Word Progression\n\nWords move through three sections in the tracker:\n1. **Active Words** — currently learning\n2. **Long-Term Review Words** — completed all steps, in spaced review\n3. **Mastered Words** — passed all reviews through 3 months\n\n## Quiz Rules\n\n- **One word per quiz** — no rapid-fire\n- **No spam:** If no reply to previous quiz today → don't send new one\n- **Reset next day:** New day = can send quiz even if yesterday's unanswered\n- **Sleep hours:** No messages 11 PM – 7 AM (user's timezone)\n- **Priority:** due for review > newer words (incomplete steps) > refresher\n\n### Random Word Selection\n\n1. Count each word's total practice history entries (all steps and reviews combined)\n2. Sort all words by review count ascending (least reviewed first)\n3. Take the group with the minimum review count\n4. Within that group, randomize: count words (N), use `(current_timestamp_ms % N) + 1` to pick position\n5. **Never pick the same word twice in a row.** Check Quiz State for the last quizzed word and skip it.\n\n**Always show review count** when quizzing: e.g. \"(reviewed 0 times)\" or \"(reviewed 3 times)\".\n\n### On-Demand Quizzes\n\nUser can request specific quizzes anytime — these override normal priority and spam rules:\n\n- \"Quiz me\" → random word\n- \"Quiz me on [word]\" → specific word\n- \"Quiz me on words from [book]\" → random from that book\n- \"Quiz me on words from this week\" → last 7 days\n- \"Quiz me on [book] page [N] to [M]\" → page range\n- \"Give me 3 quizzes\" → run 3 words in a row\n\nOn-demand refresher: If no words are due/pending, pick random word from all learned words. Still record quiz date.\n\n## Quiz State Tracking\n\nKeep a `## Quiz State` section at the top of the tracker file:\n\n```markdown\n## Quiz State\n- **Pending quiz:** [word] ([review type], [step] sent)\n- **Last quiz sent:** YYYY-MM-DD HH:MM TZ\n```\n\nUpdate after each quiz interaction.\n\n## References\n\n- Video: [Why I Stopped Using Flashcards and Started Using AI](https://youtu.be/wjWrVpZZXSg)\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn7ektwb41a8k1zd4pw6qy26hh814bsd\",\n  \"slug\": \"vocabulary-builder\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1772295767006\n}","readmeExcerpt":"Skill: Vocabulary Builder Owner: winlinvip Summary: Build and review vocabulary from books, podcasts, and daily encounters. Use when the user wants to READ a book, shares a new word, asks about a word while re... Tags: latest:1.1.2 Version history: v1.1.2 | 2026-02-28T17:48:06.067Z | user Support setup the cronjob by skill. v1.1.1 | 2026-02-28T16:22:47.006Z | user Update v1.1.0 | 2026-02-28T16:16:29.853Z | user Quiz ","codeSnippets":[],"executableExamples":[{"language":"markdown","snippet":"### [word]\n- **Type:** noun/verb/adj/adv\n- **Learned:** YYYY-MM-DD HH:MM TZ\n- **Book:** [source name]\n- **Page:** [number]\n- **Pronunciation:** /IPA/\n- **Meaning:** [explanation]\n- **Synonyms:** [similar words]\n- **Context:** \"[sentence from source]\"\n- **Practice History:**\n  - YYYY-MM-DD HH:MM TZ: Step N ✓/✗ (notes)"},{"language":"markdown","snippet":"## Quiz State\n- **Pending quiz:** [word] ([review type], [step] sent)\n- **Last quiz sent:** YYYY-MM-DD HH:MM TZ"},{"language":"markdown","snippet":"### [word]\n- **Type:** noun/verb/adj/adv\n- **Learned:** YYYY-MM-DD HH:MM TZ\n- **Book:** [source name]\n- **Page:** [number]\n- **Pronunciation:** /IPA/\n- **Meaning:** [explanation]\n- **Synonyms:** [similar words]\n- **Context:** \"[sentence from source]\"\n- **Practice History:**\n  - YYYY-MM-DD HH:MM TZ: Step N ✓/✗ (notes)"},{"language":"markdown","snippet":"## Quiz State\n- **Pending quiz:** [word] ([review type], [step] sent)\n- **Last quiz sent:** YYYY-MM-DD HH:MM TZ"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: vocabulary-builder\ndescription: Build and review vocabulary from books, podcasts, and daily encounters. Use when the user wants to READ a book, shares a new word, asks about a word while reading a book, requests a vocabulary quiz, asks about word progress, or when a cron/heartbeat triggers a scheduled quiz. Handles reading sessions, word collection, 3-step learning, spaced repetition, and progress tracking.\nmetadata: {\"url\": \"https://youtu.be/wjWrVpZZXSg\", \"files\": {\"vocabFile\": \"memory/vocabulary.md\", \"audioDir\": \"docs/tts-fr\"}}\n---\n\n# Vocabulary Builder\n\nThis skill reads and writes the following files (paths relative to workspace):\n- **Vocabulary tracker:** `memory/vocabulary.md` — all word data lives here\n- **Audio clips directory:** `docs/tts-fr/` — read-only; user places pronunciation audio files here\n\nEnsure these paths exist or create them before first use.\n\n## Reading Workflow\n\nWhen the user wants to read/practice reading a book:\n1. Ask what book they're reading\n2. Check the vocabulary tracker for words from that book — read the END of the Active Words section (use `tail` or read the last entries) to find the actual last word. Note: `memory_search` may return partial/ranked results, so also verify by reading the file directly when checking the latest entry.\n3. Tell them the last word added + page number so they know where to continue\n4. Ask if they want to: practice pending words, or keep reading and add new ones\n\n## Adding New Words\n\nWhen the user gives a new word:\n\n1. Give **pronunciation** (IPA, American English)\n2. Give **meaning** — clear, simple\n3. Give **synonyms** — similar words they might know\n4. **Add to tracker** after confirming with the user (e.g., \"Adding [word] to your vocabulary — ok?\")\n5. **Show the word card** after adding\n\nAdd to the `## Active Words` section, at the END (before `---` separator for Long-Term Review).\n\n### Word Entry Format\n\n```markdown\n### [word]\n- **Type:** noun/verb/adj/adv\n- **Learned:** YYYY-MM-DD HH:MM TZ\n- **Book:** [source name]\n- **Page:** [number]\n- **Pronunciation:** /IPA/\n- **Meaning:** [explanation]\n- **Synonyms:** [similar words]\n- **Context:** \"[sentence from source]\"\n- **Practice History:**\n  - YYYY-MM-DD HH:MM TZ: Step N ✓/✗ (notes)\n```\n\n### French Words\n\n- **Context:** French sentence only\n- **English Translation:** Separate field with English translation\n- Do NOT mix French and English in the same field\n- User places audio clips in `docs/tts-fr/` → add **Audio** field with the file path\n\n## 3-Step Learning Process\n\nRun all 3 steps in one conversation flow (not spread across hours):\n\n- **Step 1:** Show the plain word + review count (e.g. \"reviewed 0 times\" or \"reviewed 3 times\") → ask \"Do you know the pronunciation?\" → user types word to confirm\n- **Step 2:** Ask \"What does it mean?\" → check if correct/close enough\n- **Step 3:** Ask user to write a sentence using the word\n\nTrust-based pronunciation — no voice/ASR check. User types word to confirm.\n\n## Spaced Repetition Schedu"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7ektwb41a8k1zd4pw6qy26hh814bsd\",\n  \"slug\": \"vocabulary-builder\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1772300886067\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Build and review vocabulary from books, podcasts, and daily encounters. Use when the user wants to READ a book, shares a new word, asks about a word while re... Skill: Vocabulary Builder Owner: winlinvip Summary: Build and review vocabulary from books, podcasts, and daily encounters. Use when the user wants to READ a book, shares a new word, asks about a word while re... Tags: latest:1.1.2 Version history: v1.1.2 | 2026-02-28T17:48:06.067Z | user Support setup the cronjob by skill. v1.1.1 | 2026-02-28T16:22:47.006Z | user Update v1.1.0 | 2026-02-28T16:16:29.853Z | user Quiz","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":941,"uniquenessScore":51,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:02:23.718Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}