Generate and practice scenario-grounded exam questions, self-graded, with on-demand explanations. Built first for the Claude Certified Architect – Foundations (CCA-F) exam, but the exam name/domains are config, not hardcoded, so it isn't tied to that one exam.
This is an unofficial, AI-generated practice question bank. It is not affiliated with or endorsed by Anthropic, and the questions are not real exam questions — they're generated by Claude and reviewed by Claude, not sourced from the actual exam.
Requires uv and an Anthropic API
key (a separate, pay-as-you-go credential —
not your Claude.ai or Claude Code login; see the API key's workspace scope
if you hit an anthropic-workspace-id error).
uv sync
export ANTHROPIC_API_KEY="sk-ant-..."generate and practice are wired up (stats is on the roadmap — see
TASKS.md).
# Generate 15 questions (default), weighted across the 5 exam domains
uv run python -m archforge generate
# Generate fewer, and/or use a different model
uv run python -m archforge generate --count 5 --model claude-sonnet-5Each run appends to data/bank.json (gitignored — it's your personal
question bank, not checked in) and prints a cost summary for that run.
generate makes real, billed API calls: each run is several requests (one
per exam domain, plus one review pass), and each domain agent can call
web_search to ground its questions in the official docs. A --count 5 run
has cost well under $1 in testing, but costs scale with --count and with
how much a given run ends up searching.
# Answer every unattempted question
uv run python -m archforge practice
# Answer just 5, from one domain
uv run python -m archforge practice --count 5 --domain "Tool Design & MCP Integration"practice grades locally — no API calls, no cost. Answer with a letter
("A") or letters ("A,C") for multi-select questions, or Q to stop the
session early (what you've already answered stays recorded). It tells you
Correct/Incorrect immediately (on-demand explanations land with story 8) and
records the attempt so the question won't come up again.
uv run pytest
uv run ruff check .
uv run ruff format .See DESIGN.md for the architecture and TASKS.md for what's built vs. planned.