> bptools-writer
Create, edit, and validate biology-problems bptools Python question generators and supporting YAML content. Use when requests involve authoring question scripts, updating files under problems/*-problems, tuning randomization or anti-cheat behavior, or debugging BBQ/QTI output that depends on bptools.py and qti_package_maker.
curl "https://skillshub.wtf/vosslab/vosslab-skills/bptools-writer?format=md"Bptools Question Authoring
Overview
Use this skill to author regular bptools-based Python generators in biology-problems.
Follow the repo's shared generator patterns and verify output with small local runs.
Workflow
- Identify scope and load references
- Confirm the target script(s), question type(s), and output format(s).
- Read
references/repos.mdandreferences/docs.mdfirst. - Read
bptools.pyanddocs/QUESTION_FUNCTION_INDEX.mdfor the shared helper API surface. - Load optional domain guides only when the task touches that domain.
- 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.
- Implement with bptools primitives
- Build prompts/choices as plain strings and lists.
- 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
- 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.
- Finish cleanly
- Update
docs/CHANGELOG.mdinbiology-problemsfor code or doc changes. - Keep generated artifacts out of git (
bbq-*.txt,qti*.zip,selftest-*.html).
Core Rules
- Treat
docs/QUESTION_AUTHORING_GUIDE.mdas the primary authoring reference. - Maintain Python style required by this repo: tabs for indentation, ASCII comments,
main()entrypoint. - Keep randomness well mixed for student-facing content; avoid predictable round-robin selection unless explicitly requested for reproducibility/debugging.
- 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/docs.mdfor required and optional biology-problems guides. - Read
references/repos.mdfor local repo paths and high-value files. - Read
references/api_surface.mdfor common bptools and qti_package_maker touchpoints. - Read
references/templates.mdfor starter template locations.
Notes
- 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.
> related_skills --same-repo
> webwork-writer
Create, edit, and lint WeBWorK PG/PGML questions following docs/webwork guidance, HTML whitelist constraints, and renderer-based lint checks. Use for tasks like authoring new PGML problems, adjusting randomization or grading, fixing PGML rendering issues, and running renderer API linting.
> unit-test-starter
Generate thorough Python 3 pytest unit tests across a repo by scanning every *.py file and each function, writing one test module per source file while skipping IO/network behavior and documenting gaps.
> skill-writing-guide
Guide for authoring Agent Skills (SKILL.md). Covers the open standard format, required frontmatter, directory layout, progressive disclosure, description writing, and best practices. Use when creating a new skill, improving an existing skill, or learning how skills work.
> readme-fix
Standardize README.md to match repo conventions. Brief purpose, quick start, and links to docs/. Keep content verifiable, concise, and ASCII. Use when README.md drifted or is missing key pointers.