quiz-wdyk
Test your knowledge with dynamically generated concept questions drawn from your actual projects and experiences
What this skill does
<references>
<reference path="references/quiz-rubric.md" />
</references>
<purpose>
Generate concept questions dynamically from your arsenal and index, present them in a persona's voice, score answers on learning dimensions, and track progress via spaced repetition.
</purpose>
<steps>
<step id="load-configuration" number="1">
<description>Load Configuration</description>
<load-config>
<action>Resolve the user's home directory.</action>
<command language="bash" output="home" tool="Bash">echo $HOME</command>
<constraint>Never pass `~` to the Read tool.</constraint>
<read path="<home>/.things/config.json" output="config" />
<if condition="config-missing">Tell the user: "Run `/things:setup-things` first." Then stop.</if>
<read path="<home>/.things/shared/professional-profile.json" output="profile" />
<read path="<home>/.things/what-do-you-know/preferences.json" output="preferences" />
<if condition="preferences-missing">Tell the user: "Run `/setup-wdyk` first." Then stop.</if>
<substep name="extract-profile-fields">
<action>Extract `building_skills`, `aspirational_skills` from the professional profile, and `default_depth`, `default_persona`, `session_length` from preferences.</action>
</substep>
</load-config>
</step>
<step id="load-arsenal-and-index" number="2">
<description>Load Arsenal and Index</description>
<read path="<home>/.things/i-did-a-thing/index.json" output="index" />
<action>Read all files in `<home>/.things/i-did-a-thing/arsenal/` for skill evidence.</action>
<if condition="no-logs-exist">
<output>
You haven't logged any entries yet. Run `/thing-i-did` first -- quiz questions are generated from your actual projects and experiences.
</output>
<exit />
</if>
</step>
<step id="load-session-history" number="3">
<description>Load Session History</description>
<command language="bash" tool="Bash">bash <plugin_root>/scripts/search-sessions.sh --recent 20</command>
<constraint>Use session history for spaced repetition: weight toward topics with lower scores, longer time since last quiz, and gaps identified in explore sessions.</constraint>
</step>
<step id="select-topic" number="4">
<description>Select Topic</description>
<if condition="topic-provided">
<action>Use the provided topic.</action>
</if>
<if condition="no-topic">
<action>Select a topic using spaced repetition weighting:</action>
1. Topics with gap or partial scores from recent explore/quiz sessions
2. Topics from `building_skills` and `aspirational_skills` not recently quizzed
3. Topics with declining scores (tested before but getting worse)
4. Random selection from arsenal skill areas not yet explored
</if>
<ask-user-question>
<question>I'm thinking we should quiz [topic] -- it's been [reason]. Sound good?</question>
<option>Yes -- let's do it</option>
<option>Different topic -- I have something in mind</option>
</ask-user-question>
</step>
<step id="select-persona" number="5">
<description>Select Persona</description>
<if condition="persona-provided">
<action>Use the specified persona.</action>
</if>
<if condition="no-persona">
<action>Use `default_persona` from config.</action>
</if>
<substep name="load-persona">
<action>Load the selected persona from `<home>/.things/shared/roles/<persona>.md`. Adopt their voice for question delivery and feedback.</action>
</substep>
</step>
<step id="determine-question-count" number="6">
<description>Determine Question Count</description>
<if condition="count-provided">
<action>Use the provided count.</action>
</if>
<if condition="no-count">
<action>Base on `session_length`:</action>
- short --> 3 questions
- medium --> 5 questions
- deep --> 10 questions
</if>
</step>
<step id="generate-questions" number="7">
<description>Generate Questions Dynamically</description>
<action>Generate questions from `<home>/.things/i-did-a-thing/index.json` -- NOT from a static question bank. Each question should reference the user's actual projects and experiences.</action>
<constraint>Questions must be dynamically generated from index entries, never from a pre-built question bank.</constraint>
Question patterns:
- Mechanism: "Explain how [mechanism from their project] works under the hood." (e.g., "Explain how the PostToolUse hook mechanism works in your screenshotr plugin")
- Tradeoff: "What are the tradeoffs of [approach they chose] vs. [alternative]?" (e.g., "What are the tradeoffs of atomic file writes vs. direct writes?")
- Decision rationale: "You chose [decision from log]. What alternatives exist and why did you pick this?" (e.g., "You chose Homebrew for distribution. What alternatives exist and why?")
- Failure mode: "What would go wrong if [component from their project] failed? How would you detect and recover?"
- Generalization: "You applied [pattern] in [project]. Where else would this pattern be useful? Where would it break down?"
- Connection: "How does [concept A from project 1] relate to [concept B from project 2]?"
- Teaching: "Explain [concept from their work] to someone who's never seen it before."
Selection algorithm:
1. Filter index entries by topic relevance (tags, skills_used, skills_developed)
2. For each entry, identify 2-3 potential question angles
3. Score potential questions:
- `gap_weight = 5 - avg_score_for_topic` (from session history)
- `recency_bonus = days_since_last_asked / 14` (capped at 2.0)
- `variety_bonus = 1.5 if question_type not recently used`
4. Select from top-scored questions with weighted randomness
</step>
<step id="present-questions" number="8">
<description>Present Questions</description>
<action>Present questions one at a time in the persona's voice.</action>
<template name="question-presentation">
<output>
[Persona Name]: question
Take your time. Think through it carefully before answering.
</output>
</template>
<constraint>After each answer, briefly acknowledge but don't give detailed feedback yet.</constraint>
<if condition="session-short">
<action>Give per-question feedback instead of batching.</action>
</if>
</step>
<step id="score-each-answer" number="9">
<description>Score Each Answer</description>
<action>Score each answer on the five learning dimensions (from `references/quiz-rubric.md`):</action>
1. Depth (1-5) -- Surface-level recall vs. deep understanding
2. Accuracy (1-5) -- Technically correct mental models
3. Connections (1-5) -- Links to related concepts and experiences
4. Application (1-5) -- Can apply to new scenarios
5. Articulation (1-5) -- Clear, structured explanation
<substep name="classify-concept">
<action>Classify each answer's concept as: strong | partial | gap</action>
</substep>
</step>
<step id="deliver-feedback" number="10">
<description>Deliver Feedback</description>
<action>After all questions, deliver batched feedback.</action>
<template name="quiz-results">
<output>
Quiz Results: [Topic]
| # | Concept | Score | Strength |
|---|---------|-------|----------|
| 1 | concept | x/5 | strong/partial/gap |
| 2 | concept | x/5 | strong/partial/gap |
| ... | | | |
</output>
</template>
<template name="dimension-scores">
<output>
Overall Dimensions:
| Dimension | Score | Notes |
|-----------|-------|-------|
| Depth | x/5 | brief note |
| Accuracy | x/5 | brief note |
| Connections | x/5 | brief note |
| Application | x/5 | brief note |
| Articulation | x/5 | brief note |
</output>
</template>
<templateRelated in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.