Surfaces the epistemic basis of load-bearing claims — 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...
Scanned 8/30/2026
Install to Claude Code
npx -y skills add SlashyIsTaken/fp-pluginplaza --skill fp-honesty --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Fp Honesty?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/slashyistaken-fp-honesty)More formats (shields.io, HTML) on the badges page.
---
name: fp-honesty
description: >
Surfaces the epistemic basis of load-bearing claims — 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 — 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.
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!