Exam Revision Handbook
An open-source AI Agent Skill for source-backed GCSE, IGCSE, A-Level, and AP revision guides. It retrieves official AQA, Edexcel, CAIE, and College Board requirements, turns them into teachable handbooks, reviews the complete HTML, and exports PDF only after approval.
Start In One Minute
Download the official v0.7.1 Skill ZIP, or give this repository URL directly to a Skill-compatible Agent:
https://github.com/mianbaofang/exam-revision-handbook
Then ask:
Install this Skill, then create an AQA International GCSE Chemistry revision handbook with a Simplified Chinese term glossary and export it as PDF.
| Curriculum | Official sources currently supported |
|---|---|
| GCSE and A-Level | AQA and Pearson Edexcel UK routes |
| IGCSE and International A-Level | OxfordAQA, Pearson Edexcel, and Cambridge International / CAIE |
| Advanced Placement (AP) | College Board Course and Exam Descriptions |
AS and A2 are stages within A-Level. Other curricula and exam boards do not have automatic source acquisition; manual imports remain experimental.
Why This Skill Exists
This project did not start as "a tool." It started with a real child moving through a difficult transition.
My son is preparing for his International GCSE exams this year. Less than a year ago, he moved from a Chinese public-school path into an international curriculum. Almost overnight, the classroom language changed from Chinese to English. The knowledge itself can be learned step by step, but a new language, a new exam style, and the pressure of an approaching exam season can easily make a child feel pushed along by the system.
I built this study and revision Skill with AI so it can take the relevant course requirements and break them into understandable structures, worked examples, diagrams, and checkpoints. The purpose is simple: not to let AI study for a child, but to reduce the noise around learning and help students face schoolwork with more calm and control.
An open-source AI Skill for generating image-rich, printable handbooks for the British secondary curriculum (GCSE, IGCSE, and A-Level) and the US Advanced Placement (AP) system from official sources, with Analyst, Writer, and Reviewer roles kept visible from source evidence to final HTML/PDF output.
Read Disclaimer before use. This project is not affiliated with or endorsed by any exam board, and generated study materials must be reviewed against official sources.
At A Glance
| Question | Answer |
|---|---|
| Who is it for? | Families, tutors, and agent users preparing GCSE, IGCSE, A-Level, or AP revision handbooks. |
| What does it generate? | A source-backed handbook package with HTML/PDF output, topic plans, worked examples, visual decisions, and review evidence. |
| What does the Python package do? | Fetch official source evidence, render outputs, manage assets, and run mechanical validation. |
| What must the host LLM do? | Write the syllabus outline, teaching explanations, examples, visual decisions, and final product review. |
| Current source scope | AQA, Edexcel, CAIE, and College Board AP. |
Automatic syllabus acquisition covers the supported British source families:
AQA, Edexcel, and CAIE. It includes UK GCSE, International GCSE (IGCSE),
and A-Level routes from the supported British source families, plus the US
College Board AP system. AS and A2 are stages within A-Level, not parallel
curriculum systems. AQA and Edexcel provide separate UK-domestic and
International source routes. CAIE is Cambridge International: it provides
International GCSE and Cambridge International A-Level routes rather than a
separate UK GCSE product. A uk-domestic CAIE selection records a UK-centre
request but still uses the official Cambridge International catalogue. Other
curriculum systems or exam boards cannot use automatic acquisition. Manual PDF
import outside the supported routes is an unverified compatibility path and
may fail with unknown parsing, extraction, metadata, or rendering errors.
What This Project Is
This is a framework, not an unattended content generator. The root
SKILL.md and its contracts provide the
scaffolding — syllabus parsing, HTML/PDF rendering, visual asset management,
multi-role orchestration contracts — but the actual concept explanations and
worked-example wording are produced by the LLM that runs this Skill:
- When the Agent host (OpenClaw / Hermes / Claude / etc.) loads this Skill, the host's LLM plays the Writer role: it writes original concept explanations for each topic from its own knowledge, in the requested style.
- The host's LLM also plays the Analyst role: it reads both the official
Markdown companion (
source/specification.md) and page-level evidence (syllabus-evidence.json), decides the real topic boundaries and exam points, and writes the authoritativesyllabus-outline.json. Python only collects page evidence and invokes external MarkItDown for structure-readable Markdown; it does not decide topics or exam points on its own. - The host's LLM then performs the Reviewer role as a separate review pass: the Reviewer personally opens the rendered HTML and source evidence without treating Python validation or inspection as approval, then checks for teaching effectiveness, blank pages, duplicate mastery text, misused visuals, or gap-to-source issues. Any problem returns to the Writer for repair, HTML rerendering, and another visible LLM review. PDF export is blocked until the current HTML passes. This may be a separate Agent if the user requests multi-agent delegation, but it is not mandatory.
The Python package under src/intl_exam_guide/ provides:
- Provider adapters that fetch official OxfordAQA / Pearson Edexcel / Cambridge International qualification pages and PDFs plus College Board AP Course and Exam Descriptions, extract page-level evidence, and create a mandatory MarkItDown Markdown companion for official PDF workflows without adding MarkItDown to the main package dependencies.
- HTML rendering plus candidate-PDF export gated by LLM approval of the current HTML hash, followed by technical validation and an immutable current-PDF record.
- Validation and quality gates (
scripts/import_concept_explanations.py,scripts/import_infographic_assets.py). - A CLI-only fallback (
python scripts/run_runtime.py -- generate ...) that produces an evidence package without the LLM Analyst outline pass. The CLI fallback is for testing or for environments where no Skill host is available. The output stays atdraft/evidence-readyand cannot be presented asfinal-ready. Run the Skill through an LLM agent to get a teaching-grade handbook.
This version automatically supports the International and UK-domestic routes of three British-curriculum exam boards plus the College Board AP course system:
| Exam board | Current support |
|---|---|
| AQA | Uses OxfordAQA / Oxford International AQA for International GCSE and A-Level routes, and AQA's official subject catalogue for UK GCSE and A-Level routes. |
| Edexcel | Uses the corresponding official Pearson Edexcel International or UK GCSE/A-Level candidate route selected during preflight. |
| CAIE | Uses Cambridge International's official subject index for International GCSE and Cambridge International A-Level. A UK-centre selection remains auditable market metadata; it does not imply a separate CAIE UK GCSE product. |
| College Board AP | Discovers all 42 official AP subjects, selects the core Course and Exam Description, verifies its official source, and records the CED effective version and target exam year. |
It uses one shared handbook workflow across the four source systems: read the official syllabus, expand it into teachable topic units, write reviewed concept explanations from the current topic/source points, create worked examples, decide which points need visuals, visibly review and repair HTML until it passes, and only then export the final PDF.
The workflow is a lightweight three-role process: Analyst, Writer, and Reviewer.
Those names are operating roles, not mandatory separate agents; one host LLM can
run them step by step unless the user explicitly chooses multi-agent delegation.
The Reviewer still has to open the visible HTML and cannot treat machine
validation as approval. Final approval covers every final topic, worked example,
answer, source anchor, and rendered visual, including notation, visual semantics,
and cross-page repetition. Supporting diagnostics are written to
delivery-contract.json and final-review-packet.json; they are not approval.
Delivery quality claims are tracked in the delivery matrix at
tests/fixtures/delivery_matrix.json. Each route has an explicit claim status
and a v0.7 release-evidence status. Candidate routes must not be described as
release-ready until a fresh output passes validation, final review, product
review, and visual-status checks. The shared workflow covers four source systems, but the
matrix evidence defines what is currently deliverable.
v0.7 status words are intentionally conservative:
candidate: route evidence exists, but it is not delivery-grade.draft: a fresh output exists, but concepts, visuals, PDF, validation, or self-review still block final handoff.final-ready: this handbook has complete hash-bound LLM HTML review, gated PDF export, validation, concept, visual, and package evidence from the current artifacts.certified: final-ready evidence has also been reviewed and approved for a release. No current route should be called certified unless the release-evidence manifest says so.
Detailed Usage
Most users do not need to install Python or run commands. Give this Skill link to your OpenClaw, Hermes, or other Skill-compatible Agent:
https://github.com/mianbaofang/exam-revision-handbook
Download the ready-to-use v0.7.1 standard Skill ZIP.
Then ask:
Install this Skill, then generate an AQA Chemistry International GCSE revision handbook with a Simplified Chinese term glossary and export it as PDF.
Typical requests:
Generate an Edexcel Accounting International GCSE revision guide.
Generate a Cambridge IGCSE Economics guide for the 2027 exam year with a Japanese term glossary.
Generate an AQA Mathematics 9260 revision handbook with visual worked examples and final review questions.
Generate an AP Cybersecurity revision handbook for the 2027 exam year.
Before generation starts, the Agent should confirm:
- Exam board, qualification level, subject, code, and official URL when needed.
- Exam year when the official page lists multiple syllabus ranges or the AP CED has a future effective version.
- Term-support language:
enfor no glossary, or a support language such aszh-CN,zh-TW, orjafor a 30-50 item professional term glossary. The handbook body, examples, labels, and visual prompts stay in English. - Explanation style: formal, friendly, life-scene, story-based, detective, or adventure-style.
- Workflow mode: explicitly offer default single-host Analyst/Writer/Reviewer role passes, or optional multi-agent delegation if the user wants separate agents and the host runtime supports them. If the user stays with the default, record that choice in the handoff summary.
- Infographic capability: ask whether the user has a callable image or infographic route for this run. If yes, collect the route type, such as an installed image-generation Skill, a custom API endpoint plus environment variable name, a project script, or an existing generated-asset directory. If no, explain that exact SVG/Kroki assets still require an LLM exact-fit decision and review, while dense infographics will remain pending; then ask whether to continue as a draft-with-pending-images run.
The user should not be forced through a generic image-model menu. The required early question is whether a callable image route exists at all. After the base handbook is generated, the Agent reports how many complex infographics are needed, runs or imports the confirmed route when available, and clearly marks any unresolved complex visuals as not yet reviewed.
What It Produces
outputs/chemistry-9202/
<board>-<level>-<subject>-<time>.html printable student handbook
<board>-<level>-<subject>-<time>.pdf post-approval PDF export
sections/ modular guide sections for review
images/ visual manifest, reviewed assets, and pending jobs
concepts/ concept-writing jobs and reviewed explanations
run-options.json confirmed subject, language, and explanation style
guide-plan.json topic, example, and revision-task plan
qualification.json qualification and source metadata
validation.json quality-check report
final-review-packet.json Agent/LLM final review evidence
agent-product-review.json active Agent product-review and repair evidence
current-render.json explicit current HTML/render snapshot pointer
review-ledger/ hash-bound per-Topic, per-Visual, and holistic LLM review
current-pdf.json explicit current approved-PDF pointer
pdf-exports/ immutable PDF provenance records
current-delivery.json optional hash-verified delivery-copy pointer
handbook-package.json final delivery manifest
The handbook package includes:
- syllabus-based topic structure;
- student-friendly explanations reviewed from per-topic source jobs;
- original worked examples with steps and answer checkpoints;
- per-topic
visual_decisionrecords, includingtext-okreasons when a separate visual would not add learning value; - reviewed exact-SVG/Kroki/image assets where they fit, plus pending complex-infographic briefs;
- final revision questions;
- printable HTML plus a PDF exported only after current-HTML LLM approval.
Before presenting an output as final, run
python scripts/run_runtime.py -- review --out <output-dir>. This rerenders HTML and
prepares final-review-packet.json, but it does not inspect or approve the
handbook and it does not generate PDF. Validation is not enough by itself: the
LLM must personally open the complete current HTML and review what a student
will see. A route with only candidate evidence is not delivery-grade.
A base run with pending concepts/concept_jobs.json entries is a draft until
reviewed concept explanations are imported.
The user's LLM/Agent must perform a visible HTML review-and-repair loop before
handoff: compare the topic sequence and concept explanations with the syllabus
outline, inspect visuals and responsive layout, and repair every fixable issue.
After each repair it must rerender and personally inspect the new HTML again.
The project must not present "the Skill generated it", Python inspection, or a
passing gate as a substitute. Record approval and the exact HTML SHA-256 in
agent-product-review.json. Then run
python scripts/run_runtime.py -- export-pdf --out <output-dir>. The export command
rejects missing, non-LLM, stale, incomplete, or revisions-required approval.
It exports to a temporary candidate, blocks promotion on hard PDF defects, and
only then updates current-pdf.json; older PDFs remain historical rather than
being deleted or selected by modification time. To create a controlled final
copy, add --delivery-dir <directory>. A differing destination is never
overwritten unless --supersede-existing is explicitly supplied to archive it
first.
The first response of a handbook run is a blocking preflight form, not a
generation prompt. It must show fixed choices for external visual capability,
supported board/level, support language, explanation style, workflow mode, batch
scope, and output directory in one message. The user replies with key=value
fields; incomplete or invalid fields keep the run blocked. The Agent must not
download sources, discover providers, split the syllabus, write content, choose
visuals, render HTML, or generate PDF until the form is complete. A configured
image provider is not proof that the user supplied an external visual route.
Preview
OxfordAQA IGCSE Biology
CAIE AS Physics
College Board AP Chemistry
Pearson Edexcel International A Level Mathematics
These are pages from four independently reviewed, current handbooks. They demonstrate layout and visual teaching quality; they do not limit the supported subjects or certify every subject in the source catalogues.
Supported Curriculum Sources
| Curriculum route | AQA | Edexcel | CAIE | College Board |
|---|---|---|---|---|
| UK GCSE | yes | yes | no | no |
| International GCSE | yes | yes | yes | no |
| A-Level | UK / International | UK / International | Cambridge International | no |
| AP | no | no | no | yes |
| OCR, WJEC/Eduqas, CCEA, and other UK boards | no | no | no | no |
The current release supports automatic source acquisition for the routes shown above. Before discovery, the Agent must explicitly record the course market. For AQA and Edexcel that selection chooses the matching official source route. For CAIE it records whether the request is for an International or UK-centre context while using the same official Cambridge International catalogue. This is a source-workflow support claim, not a claim that every subject already has a final-ready handbook sample. Other systems have no automatic acquisition support; manual imports remain unverified and may encounter unknown compatibility errors.
Visuals And Writing Styles
A useful handbook cannot be text-only. The workflow has two passes:
- Build topic explanations and worked examples from the official syllabus.
- Decide which topics or examples need visual explanation.
The host LLM/Agent decides whether each topic or worked example needs text only,
an exact SVG candidate, or a richer infographic. SVG is allowed only when the
visual meaning is fully carried by exact geometry, axes, labels, simple tables,
or simple flows; the Writer must mark svg_fit: "exact", and the asset must be
reviewed or approved before final delivery. Richer items become visual briefs:
lab apparatus, complex geometry, circuits, economics scenes, or text-heavy
educational infographics.
When no callable image model is available, complex visuals remain queued in
images/infographic_jobs.json and images/infographic_jobs.md. The Python
framework does not create local deterministic SVG stand-ins for those briefs.
Kroki or SVG outputs are treated as reviewed exact-fit assets, not substitutes
for dense infographics.
Recommended external image models include:
- OpenAI GPT Image 2.0;
- Qwen Image 2.0 Pro;
- SenseNova U1 Fast.
These are recommendations, not guaranteed built-in capabilities. Users need to provide their own callable API, Skill, script, or generated image assets. Images explain selected syllabus points; they must not introduce unsupported exam claims.
Writing styles include formal exam prep, friendly explanation, life-scene analogy, story-based teaching, detective reasoning, and adventure-style study missions. The default is original framing, not copied protected characters or worlds.
The writing pass also includes a small anti-template-language gate adapted from
the anti-AI-language ideas in qiaomu-novel-generator: it removes safe
formulaic transitions and warns when a guide still sounds like generic AI prose.
This is a design inspiration, not a runtime dependency.
Design inspiration: the anti-template wording check is adapted from
qiaomu-novel-generator. The SVG review contract follows the general idea of a
figure contract: define the claim, labels, source evidence, and review risk
before approving an asset. This is documentation guidance, not a runtime
dependency.
Language Policy
The handbook body is always English because the exams themselves are in English. The preflight language choice is now a term-support language, not a translated-body mode:
enmeans English only, with no glossary.zh-CN,zh-TW,ja, or another supported language adds a 30-50 item professional glossary mapping the selected language to the official English exam terms.- Student-facing explanations, worked examples, topic labels, diagram text, and image prompts remain English.
- The generator should not create a fully translated handbook or sprinkle
bilingual
Chinese / Englishlabels through the body.
Release Notes
Version-by-version update notes live in GitHub Releases and CHANGELOG.md. The README stays focused on what the Skill does and how users run it.
Developer Quick Start
Two operating modes exist. Pick the one that matches your environment.
Mode 1: Skill host (preferred, for production handbooks)
Point your Agent runtime (OpenClaw, Hermes, Claude with subagents, etc.) at
the repository root. The root SKILL.md is the only authoritative entry:
https://github.com/mianbaofang/exam-revision-handbook
The Agent runtime follows the lightweight Skill workflow:
- Analyst role: reads the official syllabus evidence and writes the
authoritative
syllabus-outline.json(topic titles, exam points, source snippets). Python evidence extraction is a hint, not a substitute. - Writer role: writes concept explanations, worked examples,
study-roadmap text, and per-topic
visual_decisionrecords. - Reviewer role: personally opens the rendered HTML, compares it with the
source evidence and outline, sends problems back for rewriting and rerendering,
and writes hash-bound
agent-product-review.jsononly when the current HTML passes.
These are role labels. They may be separate agents in a runtime that supports that, but the Skill does not require a project-manager agent, a mandatory quality-inspector agent, or a release-certification workflow.
Re-runs within the same session are idempotent: re-generated topics overwrite existing handbook-package.json, validation.json, and visual-manifest.json so the Skill can keep iterating until the Reviewer has inspected the visible handbook.
Mode 2: Packaged CLI (no Skill host, evidence package only)
The official CLI run prepares source evidence for the host LLM workflow. It does not split topics, write teaching content, or render the handbook:
python scripts/doctor.py
python scripts/run_runtime.py -- generate \
--query chemistry \
--level igcse \
--out ./outputs/chemistry-9202
Windows PowerShell:
python scripts\doctor.py
python scripts\run_runtime.py -- generate --query chemistry --level igcse --out .\outputs\chemistry-9202
The CLI is for fetching official source material and writing qualification.json, syllabus-evidence.json, and source/. A real teaching handbook still requires Mode 1: an LLM Analyst outline, Writer-authored concepts/visual decisions, rendered HTML, repeated visible LLM review until approval, and gated PDF export afterward.
GitHub main, its v0.7.1 tag, and the attached Skill ZIP are the same current
standard Skill release. There is no separate source edition or install
edition. Contributors changing its Python engine can use
pip install -e ".[dev]"; the ZIP runs the pinned engine from
assets/runtime/ in an isolated user cache.
Checks:
python -m pytest --cov --cov-report=term-missing --cov-fail-under=70 -q
python -m ruff check .
python -m compileall -q src tests scripts
python scripts/scan_for_raw_keys.py . ./outputs
Mechanical Quality Metrics
Version 0.4+ includes a quality metrics system for repeatable diagnostics such as clarity, example relevance, visual helpfulness, and usability signals. These scores can identify material that needs attention, but they cannot certify subject accuracy or replace the complete visible review by the active LLM.
Measuring Quality
from intl_exam_guide.quality import QualityGate
gate = QualityGate()
# Check handbook quality
report = gate.check(
concepts=[{"topic": "Photosynthesis", "text": "...", "keywords": [...]}],
examples=[{"topic": "Photosynthesis", "text": "Step 1: ..."}],
visuals=[{"topic": "Photosynthesis", "type": "flowchart", "prompt": "..."}],
practice_items=[{"question": "..."}],
subject="biology",
)
print(report.summary())
if report.passed:
print("Mechanical quality thresholds met; LLM review is still required")
else:
print("Mechanical quality thresholds not met")
for issue in report.issues:
print(f" - {issue}")
Quality Metrics Measured
| Metric | Threshold | What It Measures |
|---|---|---|
| Concept Clarity | 0.85 | Are concepts explained clearly with examples? |
| Example Relevance | 0.90 | Do examples actually demonstrate the concepts? |
| Visual Helpfulness | 0.80 | Do visuals aid understanding (not decoration)? |
| Overall Usability | 0.85 | Can students actually use this to learn? |
See docs/ACCURACY_POLICY.md for the boundary between mechanical diagnostics and handbook approval.
Repository Layout
SKILL.md the single authoritative Agent entry
agents/ platform-facing Skill metadata
references/ complete workflow, artifact, provider, and runtime contracts
assets/runtime/ pinned Python engine Wheel and integrity lock
evals/ trigger, workflow, migration, and output parity fixtures
reports/ governed Skill and migration evidence
security/ runtime permission and network policy
skill_atlas/ generated routing and maintenance metadata
scripts/ runtime adapters, import helpers, and repository tooling
src/intl_exam_guide/
providers/ exam-board source access and parsing
parsing/ PDF text extraction
planning/ topic, example, and visual-brief planning
rendering/ HTML and PDF rendering
validation/ completeness checks
quality/ teaching effectiveness metrics
docs/ project details, policies, examples, and preview pages
tests/ tests and regression samples
See PROJECT.md before maintaining or handing off the repository.
Safety And Source Policy
Do not commit downloaded official PDFs, past papers, mark schemes, or copied exam questions. Public samples should use original explanations, original practice cards, and the minimum source information needed for review.
Families should have subject teachers or syllabus-aware adults review deeper worked examples before using generated guides as final exam preparation.
Acknowledgements
This project builds on public exam-board materials, open-source tooling, and agent workflow patterns:
- Official public syllabus pages and PDFs from OxfordAQA / Oxford International AQA, Pearson Edexcel, and Cambridge International.
- PDF and document processing:
pypdfand Microsoftmarkitdownwhen available in the host workflow. - Rendering and validation tooling: Playwright, pytest, pytest-cov, Ruff, and mypy.
- Demo and visual workflow: HyperFrames, generated preview assets, and image-generation routes supplied by the user or host runtime.
- Writing-quality guidance: anti-template wording checks inspired by
qiaomu-novel-generatorstyle rules.
Exam-board names are used for source identification only. This project is not endorsed by, affiliated with, or certified by those exam boards.
See DISCLAIMER.md and ACKNOWLEDGEMENTS.md for the full non-affiliation, copyright, and attribution notes.
Status
Current Skill version: v0.7.1. The Skill is public-ready as a framework for
source-backed handbook generation. An individual handbook is final-ready only
after its own complete LLM HTML review is recorded in
agent-product-review.json and review-ledger/, the exact HTML passes the hash
gate, current-pdf.json points to a technically valid hash-bound export, and
any release claim is supported by the delivery matrix and release evidence.
Author
Ethan [email protected]
License
MIT.
No comments yet
Be the first to share your take.