Skip to content
Back to skills

Quiz

ASecurity

turn a shipped feature into a study map and an ungraded 20-question quiz (saves quiz to .construct/)

  • 3 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 19, 2026
ai-agentsbashnodetestinggitapi

Works with

  • terminal
  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 19, 2026

npx -y skills add MaisonDeVolonte/construct --skill quiz --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Quiz?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Quiz
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/maisondevolonte-quiz/badge)](https://www.skillsdirectory.com/skills/maisondevolonte-quiz)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: quiz
model: fable
effort: max
license: MIT
compatibility: requires bash, git
description: turn a shipped feature into a study map and an ungraded 20-question quiz (saves quiz to .construct/)
argument-hint: "[--help] <text> [--test]"
disable-model-invocation: true
metadata:
  artifact: .construct/retardify/quiz/
---

# Instructions

## Telemetry
```!
"${CLAUDE_PLUGIN_ROOT}"/skills/quiz/quiz.sh "$ARGUMENTS"
echo "sidecar exit: $?"
```
- `help: requested` → the run was refused before it started; `## Help` below is the whole turn
- it already ran, so there is no command to issue
- fail (`sidecar exit` > 0) → abort and report the raw terminal error inside a markdown code block
- `state: graded` → this quiz is already scored; ASK whether to write a fresh one, then WAIT
- `state: ungraded` → the quiz is taken and waiting on a grade, so SKIP to step 3
- success (`sidecar exit` = 0) and `state: absent` → take `target` and continue to step 1

1. read the feature before writing a question about it
  - read every file the feature touches, and follow the imports rather than guessing at them
  - work out the order somebody should read them in to understand it from nothing
  - that order is ideal-build order, which is neither alphabetical nor the order you opened them

2. write `[target]` in the shape defined under `## the shape` below, then STOP
  - `Files`, `Model` and `Pattern` are the study half, and they carry no questions
  - `Quiz` is 20 questions, each with four options and NO indication of which is right
  - questions test the why, the tradeoff and the order of operations, never trivia recall
  - a question whose answer is visible in the study half above teaches nothing; ask past it
  - stamp `- generated:` and leave `- graded:` off entirely; the grade is a later run
  - show the saved quiz inline and STOP, so the user can take it

    NEVER write the answer, mark an option, or hint at one, in any form, for any reason
    a quiz whose answers ship with it measures reading comprehension and nothing else

3. grade the taken quiz, once the user has ticked their picks
  - read each `- [x]` pick, work out the right answer from the code, and mark it `- [x]` too
  - add one `> ✓` line per correct answer, saying in one clause why it is right
  - add one `> ✗ picked <X>, answer <Y>` line per miss, explaining the actual mechanism
  - add a `> 📚 study:` line under each miss, naming the transferable concept and where to read it
  - stamp `- graded:` with the score, then close with the blind-spot map across every miss

4. validate what landed, then show it and STOP
  ```bash
  plugins/retardify/skills/quiz/quiz.sh --check [target]
  ```
  - FIX every ERROR and re-run; a quiz that fails its own validator is not saved work
  - show the saved quiz inline, then STOP

    NEVER refactor the feature you were asked to quiz, and never offer to
    a quiz that quietly improves its subject is testing something that no longer exists

## the shape
> the spec this skill writes against; the validator below grades what landed

**the file:** `.construct/retardify/quiz/YYYY-MM-DD-<feature>.md`, kebab-case, one per sitting
- dated rather than replaced, since retaking a quiz later is how progress gets measured
- files are listed in ideal-build order, never alphabetical and never touched-order
- maximally concise, roadmap-style language — a map, not a textbook
- lines carry a single clause, capped at 100 characters, and never wrap
- scrub client names, tokens, and other sensitive detail before it lands in a commit

# QUIZ: Short Title
one line 'big idea' description of the topic/feature/concept the quiz covers

## Files
one line per file: what it is, why it's in this spot, one clause max

*example:*
> - [x] `types.ts` is the shape everything downstream returns; read this first, always
> - [x] `apis/source.ts` does raw fetch only, no formatting; the "one call, cache it" pattern
> - [x] `aggregate.ts` is where raw data becomes UI-ready strings; the fail-soft pattern lives here
> - [x] `Widget.tsx` is dumb consumer; if this file surprises you, the layer below did its job wrong

## Model
the one idea to walk away with, 1-3 lines, no more

*example:*
> raw source → per-source derivation → aggregate (format + cache + fail-soft) → dumb UI.
> every new stat repeats this exact chain — nothing skips a layer, nothing shares a fetch.

## Pattern
how to build the next similar thing, using this as the reference

*example:*
> 1. add the shape to `types.ts`
> 2. build one raw source under `apis/`, one job, no formatting
> 3. derive + format + cache in `aggregate.ts`
> 4. wire the dumb UI row last

## Quiz
20 questions, one answer each — graded against the code on a later run
- generated: YYYY-MM-DD HH:MM
- graded: YYYY-MM-DD HH:MM — score N/20 (missed QX)

**as generated:** four options, nothing marked, no verdict line

*example:*
> **Q1 — why is `exclusions.mjs` plain `.mjs` instead of `.ts`?**
> - [ ] A. `.mjs` loads faster than compiled `.ts` at runtime
> - [ ] B. build scripts run in plain node, and TS runtime files can import `.mjs` either way
> - [ ] C. the framework config requires filter modules to be `.mjs`
> - [ ] D. a `.ts` file would be caught by its own denylist

**as graded:** the pick and the answer are both marked, and a verdict line closes each question

*example:*
> **Q1 — why is `exclusions.mjs` plain `.mjs` instead of `.ts`?**
> - [ ] A. `.mjs` loads faster than compiled `.ts` at runtime
> - [x] B. build scripts run in plain node, and TS runtime files can import `.mjs` either way
> - [ ] C. the framework config requires filter modules to be `.mjs`
> - [ ] D. a `.ts` file would be caught by its own denylist
>
> ✓ B — the one format both plain-node build scripts and the TS runtime read without a compile

**a miss carries the mechanism and the concept behind it**

*example:*
> ✗ picked A, answer C — a 404 returns to the caller untouched; only 429/5xx enter the retry loop
> 📚 study: transient vs deterministic failure — 4xx means the request is wrong, retrying cannot fix

**the blind-spot map** closes a graded quiz, naming what the misses have in common

*example:*
> the single miss is not a feature gap; it is a general concept that happens to surface here.
> the frontier is the transferable ideas underneath the system, not the system itself.

## Help
> IF the invocation carries `--help` or `-h`, this section is the whole turn:

```text
SKILL: /plugin:name
DESCRIPTION: <the `description` frontmatter, verbatim>
POSTURE: <the readme index's keyword for this skill>
FLAGS:
- --flag: <what it changes, in the telemetry bullet's own words>
ARGUMENTS:
- <arg>: <what it names>
ARTIFACT: <the `metadata.artifact` path, or none>
OUTPUT: <what lands in the turn: an audit entry, a handover block, an inline report>
SPEC: <this doc's own path>
```

- every field prints, in this order; one with nothing to say prints `none`
- every value is COPIED from the source named beside it, never composed fresh
- ask what they are actually trying to do, and what they have already tried
- name the flag or the sibling skill that fits their answer, then STOP
- run no step, write no file, and never fall through to step 1

## Subagent Style
```!
awk 'NR>1 && /^---$/ {p=1; next} p' "${CLAUDE_PLUGIN_ROOT}/subagent-styles/operator.md"
```

Files in this skill

  • SKILL.md7.2 KB
  • quiz.sh18.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…