Use when making a forward-looking claim with a checkable outcome (reply within 24h, error rate will drop, this skill will see more use) — record to state/predictions.jsonl with a review horizon so reflection can grade you later. Closes the in-the-moment double-loop.
Scanned 9/1/2026
Install to Claude Code
npx -y skills add jasoncarreira/mimir --skill predictions --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Predictions?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/jasoncarreira-predictions)More formats (shields.io, HTML) on the badges page.
---
name: predictions
description: Use when making a forward-looking claim with a checkable outcome (reply within 24h, error rate will drop, this skill will see more use) — record to state/predictions.jsonl with a review horizon so reflection can grade you later. Closes the in-the-moment double-loop.
---
<!-- desc: Record forward-looking claims with checkable outcomes and review horizons so reflection can grade them later. -->
# Predictions
When you make a forward-looking claim — "Tim will find this
interesting", "the wiki cleanup will reduce orphan pages", "this
new prompt will make tool errors drop" — that's a prediction, and
you can test yourself against reality if you write it down with
enough structure to be checked later.
This is a sibling to the `applied-proposals audit` (FUTURE_WORK
§12.2). That one tracks operator-merged policy changes. This one
tracks YOUR in-the-moment guesses. Both close double-loops; they
just operate at different scopes.
## Contract
**Trigger**: Making a forward-looking claim with a checkable outcome
(1-7 day horizon typical) — "the wiki cleanup will reduce orphan
pages", "Tim will reply within 24h", "this prompt change will drop
tool errors". Also fires when opening a protected-surface proposal PR
through `open_proposal` / `submit_proposal` — attach the prediction to the
proposal rationale or PR body so the applied-proposals audit can verify it.
**Requires**: A specific check time / horizon; a claim narrow enough
to be unambiguously right-or-wrong at horizon (not "things will go
well"); `mimir predictions` CLI on PATH.
**Guarantees**:
- Each prediction lands as a structured `state/predictions.jsonl`
entry: claim, horizon, optional context — never as free-form prose.
- Reflection's grading pass picks up due predictions and scores them;
results feed the agent's own calibration over time.
- The audit loop closes: predicted-vs-actual deltas surface in
reflection turns and applied-proposals audits.
**Does not**: Predict trivially-true / trivially-checkable things
(the test: would you be willing to be wrong, and would being wrong
teach you something?); auto-grade — that's reflection's job; chain
predictions (each is independent — "if X then Y" splits into one
prediction per claim).
## When to write a prediction
- The operator just asked you to predict something explicitly
("what do you think will happen if…").
- You're about to surface something speculative to the operator
(a Bluesky post, a research finding, a flagged anomaly) and
there's a clear "did this land or not?" question 1-7 days out.
- You're proposing a protected-surface change via `open_proposal` /
`submit_proposal` — include a prediction in the proposal rationale or PR
body so the audit can verify it after merge.
- You're noticing a pattern and want to test whether it holds.
Don't predict trivially-true or trivially-checkable things. The
test is: would you be willing to be wrong, and would being wrong
teach you something?
## Format
Use the bundled CLI:
```bash
mimir predictions add \
--claim "Tim will reply to my deep-agents post within 24h" \
--kind binary \
--horizon-hours 24 \
--verifiable-by operator_review \
--rationale "Tim has replied to 80% of similar posts within 12h"
```
Returns the prediction id (e.g. `pred-2026-05-02-a1b2`). Record
it in your reasoning so the operator can find it later.
### Kinds
- `binary` — true/false claim. Marked correct/wrong by review.
- `numeric` — "X will be ~N". Use `--target N` and optional `--tolerance T`.
- `tool_freq` — "Tool/Skill X will be invoked ≥N times in window".
Auto-verifiable: counts `tool_call` events in turns.jsonl over
the horizon. Use `--target-tool Read --target N`.
- `error_rate` — "errors of class X will drop". Auto-verifiable:
counts `tool_call_denied` / `error` events over before/after
windows split at `made_at`. Use `--target N` for the threshold
ratio (e.g. 0.5 = halved).
### Verifiable-by
- `operator_review` — operator marks via `mimir predictions mark`.
Default for `binary` predictions about external behavior.
- `events_jsonl` — auto-verifiable from events.jsonl. Default for
`error_rate` and similar event-derived signals.
- `turns_jsonl` — auto-verifiable from turns.jsonl. Default for
`tool_freq` and similar turn-derived signals.
## Workflow
When you write a prediction:
1. State the claim out loud in your reply (so the operator sees
it).
2. Call `mimir predictions add ...` via Bash.
3. Note the returned id. If the operator might want to mark it
later, surface the id in your reply.
4. End the turn.
## Reviewing predictions
The reflection skill calls `mimir predictions review` weekly to
surface past-horizon predictions ready for evaluation. You don't
need to invoke that yourself unless an operator asks "how did
your predictions do?"
If asked directly:
```bash
mimir predictions review --horizon-elapsed-only
```
Auto-verifiable predictions (`events_jsonl` / `turns_jsonl` kinds)
score themselves on review. For `operator_review` predictions, the
operator marks them via:
```bash
mimir predictions mark <id> --status correct \
--actual "Tim replied at 18:42 with positive comment" \
--lesson ""
```
When `--status wrong`, the `--lesson` is required: trace the
incorrect assumption to a memory block and update it.
## Stats
```bash
mimir predictions stats --days 30
```
Shows accuracy by kind, by author (agent/operator), and a
calibration curve when there are enough samples.
## What NOT to predict
- **Shield-tic predictions.** Predictions whose options all have
similar probabilities and similar shapes — `Meta-1
silence-correct 0.95, Meta-2 logging-correct 0.95, Meta-3
verification-correct 0.95` — are calibration noise that drowns
real signal. The test: would the resolution of this prediction
*change* what you'd do next? If no, it's filler — drop it.
"Calibrated at 95%" inflated by shield-tics is worse than no
calibration data because it lies to the reflection pass.
- **Re-narrating the structured field as prose.** If you wrote
`predictions: a 0.45, b 0.30, c 0.25` in the structured field,
don't then say in the body "I think a is most likely." Pick one
surface — the structured field is what review reads.
- **Predictions you'd have made without thinking.** "The build
will probably pass" without a specific reason isn't a
calibration data point; it's reflex. A real prediction names
*why* you expect the outcome, so a wrong call traces back to a
broken assumption.
## Self-reminders
- **Be specific.** "Things will be better" is unverifiable. "Read
errors will drop below 5/day in the next week" is verifiable.
- **Record the rationale.** When the prediction is wrong, the
rationale is what gets traced back to the broken assumption.
- **Don't over-predict.** A few well-formed predictions per week
beats a flood of vague ones. The point is calibration, not
output volume.
- **Past-horizon counts.** If you see N predictions past their
horizon in `## Recent feedback signals`, work through them
before adding more.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!