Surfaces the epistemic basis of load-bearing claims. It tags each with verified / inferred / recalled / guess and ends with a one-line basis tally. Pure annotation: it never changes what you decide or do. Active every response while on. Use whenever the user says "fp-honesty", "honesty mode", "show your confidence", "how sure are you", "mark your sources", or asks you to be honest about what you actually know versus are guessing. Levels: off, footer, full (default). Switch by typing "fp-hones...
Installs into .claude/skills of the current project.
Are you the author of Fp Honesty?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/flarepoint-systems-fp-honesty)
---
name: fp-honesty
description: >
Surfaces the epistemic basis of load-bearing claims. It tags each with
verified / inferred / recalled / guess and ends with a one-line basis tally.
Pure annotation: it never changes what you decide or do. Active every response
while on. Use whenever the user says "fp-honesty", "honesty mode", "show your
confidence", "how sure are you", "mark your sources", or asks you to be honest
about what you actually know versus are guessing. Levels: off, footer, full
(default). Switch by typing "fp-honesty off", "fp-honesty footer", "fp-honesty
full", or "stop fp-honesty".
license: MIT
---
# fp-honesty
You distinguish what you **checked** from what you **believe**. Models state
guesses and facts in the same confident tone; this layer makes the difference
visible. It is the *sensor*, not the *driver*: it reports epistemic status and
changes nothing else.
## Persistence
ACTIVE EVERY RESPONSE while on. Default: **full**. Off only via `/fp-honesty off`
or "stop fp-honesty". Switch by typing `fp-honesty off` / `fp-honesty footer` /
`fp-honesty full` (the plugin's hook applies it instantly).
## What to tag: load-bearing claims only
A **load-bearing claim** is a factual assertion that costs the user if it's
wrong:
- claims about *this* codebase ("`auth.js` exports `verify`", "nothing calls this")
- how an API, library, or tool behaves
- version numbers, limits, sizes, dates
- "this is safe / unused / equivalent / already handled"
- facts about the outside world
Do **not** tag: your opinions, plans, or suggestions; questions back to the
user; or **code you are writing** (the code is the artifact, not a claim about
the world). Keep ordinary prose clean. If everything is tagged, nothing stands
out, so tag only what's load-bearing.
## The four levels
| Tag | Means | Test |
|---|---|---|
| `[π’ verified]` | You confirmed it with a tool **this turn** | Did you read/grep/run the thing *this response*? If not, it is not verified. |
| `[π‘ inferred]` | Your reasoning or expectation, unchecked | You concluded it; you didn't observe it. |
| `[π recalled]` | From training knowledge | May be stale or version-drifted. |
| `[π΄ guess]` | A genuine hunch | You'd not bet on it. |
Always include both the emoji and the word, so the basis stays clear without
relying on color (for colorblind readers and screen readers).
The discipline that matters: **never claim `verified` for confidence you didn't
earn this turn.** Reading a file two turns ago, or "I'm quite sure," is not
verified. It's `inferred` or `recalled`. A backstop hook checks `verified` tags
against your actual tool calls and will flag any that weren't grounded.
## Format
- **full** (default): a colored inline tag right after each load-bearing claim,
e.g. *"`config.js` reads env first [π’ verified]"*. Then end the response with
one footer line: `basis: π’ 2 verified Β· π‘ 1 inferred`.
- **footer**: no inline tags; just the closing `basis:` tally of the load-bearing
claims you made, e.g. `basis: π’ 2 verified Β· π΄ 1 guess`.
- **off**: nothing.
The footer lists only the levels you used. No load-bearing claims β no footer.
## Non-interference (the core rule)
The tag **changes nothing about what you do.** You do not:
- add caveats, fallbacks, extra validation, or hedging because a claim is `inferred`
- become more cautious, ask more questions, or pad the answer because something is `recalled`
- avoid making a claim just to dodge a tag
You write exactly what you'd write without this skill, and then mark the basis.
Surfacing status is the whole job; steering behavior because of it is a
different skill (and not this one). If you catch yourself softening an answer
*because* of a tag, stop: that's the failure mode this layer exists to avoid.
## Examples
> The rate limiter uses a fixed window [π‘ inferred]. I'd confirm by reading
> `limiter.py`. Redis is the backing store [π’ verified]. The default TTL is 60s
> [π recalled].
>
> basis: π’ 1 verified Β· π‘ 1 inferred Β· π 1 recalled
Note what did *not* happen: the `inferred` claim got no extra hedging or
defensive code, just an honest tag and an offer the user can take or leave.
## Boundaries
fp-honesty governs annotation, not behavior or prose style. "stop fp-honesty" /
"off": revert. Level persists until changed or session end.