Keep A Grip¶
Keep A Grip is a catalogue of problems in ROS 2, robotics, perception, AI, foundation models, simulation and embedded work. You solve one with whatever assistant you like, then grip quizzes you on the diff you produced and reports the score. The score measures you, not the model.
The loop¶
grip platform login kag_… # a token from your dashboard
grip platform problems --category ros2 # what is there
grip platform solve cmd-vel-safety-filter # sets up ./cmd-vel-safety-filter with PROBLEM.md
# solve it with Claude Code, Codex, Cursor, or by hand; commit as you go
grip platform submit # runs the tests, asks five questions, reports the score
grip platform submit diffs everything you did since grip platform solve set the
repository up, committed or not, and hands the problem author's focus areas to the quiz
generator as context. The quiz itself runs on your machine with your configured provider.
Keep A Grip receives the score, the per-question focus and points, the provider and model
names, the diff size and whether the tests passed. Never the diff, the questions or your
answers.
Up to 0.4 these commands were top-level (grip login, grip solve, grip submit, …).
Those names still work, with a one-line note that they moved, and will be removed later.
Commands¶
| Command | What it does |
|---|---|
grip platform login TOKEN [--url URL] |
Verify the token and store it under your data home, readable by you only. |
grip platform logout |
Forget the stored token. |
grip platform whoami |
Which account the stored token belongs to. |
grip platform problems [--category SLUG] |
List problems you can solve. |
grip platform solve SLUG [--dir PATH] |
Clone the starter repo, or start an empty one, write PROBLEM.md and .grip.toml, commit, remember the base commit. |
grip platform submit [--no-tests] [--dry-run] |
Run the problem's test command, quiz you on the diff, report the attempt. --dry-run prints the payload instead. |
grip platform submit takes the usual quiz options too: --provider, --model,
--difficulty, --report. The pass mark comes from the problem through .grip.toml; a
flag still wins.
Where things live¶
- Token:
$XDG_DATA_HOME/grip/credentials.json(or$GRIP_DATA_HOME).KEEPAGRIP_TOKENandKEEPAGRIP_URLin the environment override it, which is handy in CI or on a shared machine. - Solve state:
.git/grip/keepagrip.jsoninside the solve repository. Delete it and the repository is a plain repository again. - Every graded attempt is also a normal grip report in
.git/grip/last-report.jsonandhistory.jsonl, sogrip study exportsees it.
Writing a problem¶
Anyone signed in can add a problem from the site. The best ones have a real situation, a concrete definition of done, a test command, and a short list of focus areas: what a good reviewer would probe once an assistant has written the code. Those focus areas are exactly what the quiz leans on.