bptools-writer-expert
Skill5 starsChanged 22 days agoMITView on GitHub
Create, edit, and review biology-problems bptools question generators and YAML banks, including student-facing wording, distractor design, randomization, anti-cheat, and BBQ/QTI output via `bptools.py` and `qti_package_maker`.
In this repository47 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- agents-md-fixerSkill
- arch-docsSkill
- book-to-markdownSkill
- docset-updaterSkill
- humanizerSkill
- news-release-docsSkill
- pdf-guideSkill
- readme-docsSkill
- screenshot-docsSkill
- see-also-docsSkill
- setup-install-usage-docsSkill
- color-accessibility-expertSkill
- css-creative-expertSkill
- game-design-expertSkill
- geometry-expertSkill
- glass-expertSkill
- hic-human-interact-expertSkill
- openscad-3d-printing-expertSkill
- podman-expertSkill
- postgresql-expertSkill
- pyside6-engineerSkill
- rust-code-expertSkill
- solid-js-expertSkill
- svg-creator-expertSkill
- typescript-engineerSkill
- ui-ux-engineerSkill
- vision-expertSkill
- wasm-rust-expertSkill
- webwork-writer-expertSkill
- delegate-manager-to-subagentsSkill
- gas-town-workflowSkill
- hang-checkSkill
- html-game-parallel-builderSkill
- parallel-planSkill
- stay-busySkill
- repo-rules-readerSkill
- blueprint-plan-drafterSkill
- ideonomy-plainSkill
- ideonomy-richSkill
- make-goalSkill
- modest-plan-drafterSkill
- audit-code-reviewerSkill
- old-python-code-reviewSkill
- prune-testsSkill
- unit-test-starterSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
29 rules. About 0 are common, 8 are distinctive, and 21 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
21
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 10
Use this skill to author regular bptools-based Python generators in biology-problems.
- Very specific: line 17
Before editing any generator script or writing new write_question() logic, you MUST use the Read tool on:
- Distinctive: line 34
Read them in this session, say so and continue.
- Very specific: line 37
Use references/question_voice.md to jump from a task to the exact guide headings and rubric items.
- Very specific: line 51
Use references/topic_index.md as the routing front door: match the request to a row and load the named guide before opening any generator …
- Very specific: line 53
Use references/task_selection.md to classify question family, item type, reasoning target, output format, randomization scope, and …
- Very specific: line 55
Use references/project_workflow.md to detect whether the target repo is greenfield (no generator exists for this question type) or existing …
- Very specific: line 67
Read references/repos.md to locate the target repo path.
- Very specific: line 68
Read references/docs.md for any additional guides relevant to the task.
- Very specific: line 70
Follow the Design workflow in references/docs/QUESTION_PEDAGOGY_GUIDE.md.
- Distinctive: line 77
Start from known patterns
- Very specific: line 79
Keep a script structure with parse_arguments(), write_question(), and main().
- Very specific: line 81
Use shared parser helpers from bptools for consistent CLI flags.
- Very specific: line 90
Run the modified generator with a small count (for example -d 1).
- Distinctive: line 91
Check produced BBQ text for formatting and expected answer keys.
- Distinctive: line 92
Run relevant tests for edited code paths.
- Very specific: line 93
Use references/testing_and_oracles.md for fixtures, oracles, and invariants.
- Very specific: line 96
Run source source_me.sh && python3 devel/check_question_text.py -i <bbq file> from the target repo root.
- Distinctive: line 98
Verify the key independently, by item type, per Answer verification in the pedagogy guide.
- Very specific: line 101
Update docs/CHANGELOG.md directly when this skill runs as a standalone task.
- Very specific: line 102
Keep generated artifacts out of git (bbq-*.txt, qti*.zip, selftest-*.html).
- Very specific: line 107
Treat references/docs/QUESTION_AUTHORING_GUIDE.md as the primary authoring reference.
- Distinctive: line 114
Keep Blackboard sanitizer compatibility patterns (split comments in JS function declarations) when present in existing generators.
- Very specific: line 115
If output behavior is unclear, inspect both bptools.py and the corresponding qti_package_maker writer/validator paths before changing …
- Very specific: line 119
Read references/question_voice.md for task-to-heading routing in the bundled guides and the rubric item IDs.
- Very specific: line 121
Read references/testing_and_oracles.md for the fixture corpus, oracles, and proof artifacts.
- Very specific: line 122
Read references/api_surface.md for common bptools and qti_package_maker touchpoints.
- Distinctive: line 129
Prefer minimal, targeted changes over broad refactors.
- Distinctive: line 131
When the request includes new question families (matching sets, MC statements, pedigrees, phylogenetic trees, PubChem), load the matching …
≈ “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.
Files
Bptools question authoring
Overview
Use this skill to author regular bptools-based Python generators in biology-problems.
Design each question as a puzzle first, follow the repo's shared generator patterns, and verify
output with small local runs plus a student-text review.
Required reading (load before any bptools edit)
<EXTREMELY-IMPORTANT>
Before editing any generator script or writing new `write_question()` logic,
you MUST use the Read tool on:references/docs/QUESTION_AUTHORING_GUIDE.md- Primary authoring workflow, TEMPLATE.py conventions, required structure.
bptools.pyat the target repo root (this skill is only invoked insidebiology-problems, so the file is reachable at the repo-root path returned bygit rev-parse --show-toplevel).- Canonical helper API. Copying signatures from memory drifts fast; read the
live file so
formatBB_*,collect_and_write_questions,make_outfile, and anti-cheat flags match what is actually defined.
- Canonical helper API. Copying signatures from memory drifts fast; read the
live file so
- For any task that writes or edits student-facing text (stems, choices, hints,
YAML statements, matching values), also Read:
references/docs/QUESTION_PEDAGOGY_GUIDE.md: design workflow, distractors, review rubric.references/docs/QUESTION_VOICE_GUIDE.md: stem anatomy, choices, instructions, mechanics.
Summarize only from the live text of these files. Exception: if you already
Read them in this session, say so and continue.
</EXTREMELY-IMPORTANT>
Use references/question_voice.md to jump from a task to the exact guide headings and rubric
items. Read references/docs/QUESTION_EXEMPLARS.md when choosing an exemplar (step 3).
Domain-specific guides in references/docs/problems/ must be loaded when the
task touches that domain (matching sets, PUBCHEM, MC statements, pedigrees,
phylogenetic trees). See references/docs.md for the full index.
For questions containing tables, read references/table_formatting.md before creating or changing their markup. It covers data tables, scientific matrices, diagram exceptions, and export checks.
Workflow
- Classify the request and detect project state
- Use
references/topic_index.mdas the routing front door: match the request to a row and load the named guide before opening any generator file. - Use
references/task_selection.mdto classify question family, item type, reasoning target, output format, randomization scope, and anti-cheat policy before writing code. - Use
references/project_workflow.mdto detect whether the target repo is greenfield (no generator exists for this question type) or existing (generators already present). Greenfield: write the authoring contract (puzzle design included), start from TEMPLATE.py, implement with bptools primitives, validate with a small run, then run the student-text review. Existing repo: inspect-first (read live bptools.py, inventory generators, audit the current student-facing text against the rubric), make one generator change at a time, then collect the four proof artifacts listed inreferences/testing_and_oracles.md.
- Use
- Satisfy the Required reading block above. This is step zero.
- Identify scope
- Confirm the target script(s), question type(s), and output format(s).
- Read
references/repos.mdto locate the target repo path. - Read
references/docs.mdfor any additional guides relevant to the task.
- Design the puzzle before code
- Follow the Design workflow in
references/docs/QUESTION_PEDAGOGY_GUIDE.md. - Record in the authoring contract (
references/project_workflow.md):- Reasoning target: apply, analyze, evaluate, or recall.
- Data: the figure, table, cross, sequence, or scenario that forces the reasoning.
- Named student errors, one per wrong choice (the distractors); mark any absurd choice.
- Chosen exemplar from
references/docs/QUESTION_EXEMPLARS.md. - Draft stem: data first, one rule sentence if needed, one case sentence, one short question.
- Follow the Design workflow in
- Start from known patterns
- Reuse the nearest template in
references/templates.md. - Keep a script structure with
parse_arguments(),write_question(), andmain(). - Use shared parser helpers from
bptoolsfor consistent CLI flags.
- Reuse the nearest template in
- Implement with bptools primitives
- Build prompts/choices as plain strings and lists.
- Compute each distractor in code from its named error, with a comment naming the error.
- Format questions with the relevant
bptools.formatBB_*function. - Use
bptools.collect_and_write_questions(...)andbptools.make_outfile(...). - Respect anti-cheat defaults and only override intentionally.
- Validate behavior (small run)
- Run the modified generator with a small count (for example
-d 1). - Check produced BBQ text for formatting and expected answer keys.
- Run relevant tests for edited code paths.
- Use
references/testing_and_oracles.mdfor fixtures, oracles, and invariants.
- Run the modified generator with a small count (for example
- Student-text review
- Render several items (for example
-d 5) and read each stem and choice set as a student. - Run
source source_me.sh && python3 devel/check_question_text.py -i <bbq file>from the target repo root; treat findings as advisory prompts for a closer read. - Verify the key independently, by item type, per Answer verification in the pedagogy guide.
- Apply the Review rubric items routed in
references/question_voice.md, revise, and re-run.
- Render several items (for example
- Finish cleanly
- Update
docs/CHANGELOG.mddirectly when this skill runs as a standalone task; underdelegate-manager-to-subagents, dispatch a docs subagent to add the entry. - Keep generated artifacts out of git (
bbq-*.txt,qti*.zip,selftest-*.html).
- Update
Core rules
- Treat
references/docs/QUESTION_AUTHORING_GUIDE.mdas the primary authoring reference. - Questions are puzzles with few words: the data carries the difficulty, distractors come from named student errors, and seriously absurd choices are welcome alongside them.
- Maintain Python style required by this repo: tabs for indentation, ASCII comments,
main()entrypoint. - Draw scenarios with true randomness for student-facing content; reserve deterministic scenario selection for debugging, reproducibility checks, or unit tests. Follow the voice guide's natural choice order when one exists; shuffle choices with no meaningful order.
- Keep Blackboard sanitizer compatibility patterns (split comments in JS function declarations) when present in existing generators.
- If output behavior is unclear, inspect both
bptools.pyand the correspondingqti_package_makerwriter/validator paths before changing format logic.
Reference files
- Read
references/question_voice.mdfor task-to-heading routing in the bundled guides and the rubric item IDs. - Read
references/testing_and_oracles.mdfor the fixture corpus, oracles, and proof artifacts. - Read
references/api_surface.mdfor common bptools and qti_package_maker touchpoints.
Notes
- Bundled docs under
references/docs/are snapshots frombiology-problems/. They can drift from the live repo; treat the live repo as authoritative when they disagree, and refresh the snapshot when the drift matters. - Prefer minimal, targeted changes over broad refactors.
- Reuse existing helper utilities instead of copying formatting logic into each script.
- When the request includes new question families (matching sets, MC statements, pedigrees, phylogenetic trees, PubChem), load the matching optional guide before editing.
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
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.

