Forgiveness Confirmation And Prevention logo

Forgiveness Confirmation And Prevention

Community
Deibler
forgiveness-confirmation-and-prevention

Use this skill when the user must commit to an irreversible or high-stakes action and reversibility isn't enough — confirmation dialogs, type-to-confirm patterns, password re-entry, two-step authentication for destructive actions, and structural prevention that makes the wrong action impossible. Trigger when designing destructive flows for genuinely-irreversible commitments, when reviewing confirmation fatigue, or when picking between a single confirm dialog and a multi-step verification. Sub-aspect of `forgiveness`; read that first.

Overview

PublisherDeibler
Repositoryuniversal-design-principles
Skill nameforgiveness-confirmation-and-prevention
Stars
9
Forks
3
Bundled files
1
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by Deibler on GitHub. Read the source before you install it.

Installation

Install the Forgiveness Confirmation And Prevention AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Deibler/universal-design-principles/tree/main/plugins/interaction-and-control-principles/skills/forgiveness-confirmation-and-prevention
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Deibler/universal-design-principles.git /tmp/universal-design-principles
mkdir -p .claude/skills
cp -r /tmp/universal-design-principles/plugins/interaction-and-control-principles/skills/forgiveness-confirmation-and-prevention .claude/skills/forgiveness-confirmation-and-prevention
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Forgiveness Confirmation And Prevention in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Forgiveness Confirmation And Prevention on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Forgiveness Confirmation And Prevention is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Forgiveness through confirmation and prevention

When an action can't be made reversible, the next-best forgiveness is requiring deliberate intent. The user must take an explicit, considered step before the irreversible thing happens. The challenge: confirmation overuse trains users to dismiss it on autopilot, defeating the purpose. Confirmation must be reserved for the moments when it earns its friction.

When confirmation is appropriate

A useful test before adding confirmation: is the action irreversible and high-stakes?

  • Irreversible + high-stakes → confirm. (Account deletion, ownership transfer, large financial transaction.)
  • Reversible + high-stakes → use undo / soft-delete instead. Confirmation here is fatigue-inducing.
  • Irreversible + low-stakes → consider whether it should be reversible. If it must be irreversible, a light confirmation may suffice.
  • Reversible + low-stakes → no confirmation. Just do it; let undo catch mistakes.

Confirmation strength

Match confirmation friction to action severity:

Light confirmation: "Yes / No" dialog

Cancel reservation?
[ Cancel ]   [ Cancel reservation ]

For actions the user clearly initiated, where the dialog mostly catches accidental clicks. The user reads the title, picks an option.

Medium confirmation: dialog with summary

Delete project "Acme Q4"?

This deletes 24 tasks and 8 attached files.

[ Cancel ]   [ Delete project ]

For actions where the user benefits from seeing what they're about to lose. The summary gives them a chance to step back.

Strong confirmation: type-to-confirm

Delete project "Acme Q4"?

This deletes 24 tasks and 8 attached files. Cannot be undone.

To confirm, type the project name below:
[ Acme Q4__________ ]

[ Cancel ]   [ Delete project ]   (button enabled only when name matches)

For irreversible high-stakes actions. The user must actively type the resource name, breaking autopilot. The button stays disabled until the confirmation matches.

Strongest: re-authentication

This action requires re-authentication.
Enter your password to continue.

[ Password__________ ]

[ Cancel ]   [ Continue ]

For account-affecting actions: deleting account, changing email, transferring ownership, viewing audit logs. Re-authentication catches both autopilot mistakes and someone-else-using-my-session attacks.

Type-to-confirm: the canonical pattern for irreversible action

html
<dialog id="delete-dialog">
  <h2>Delete workspace "Acme Inc"?</h2>
  <p>
    This permanently deletes the workspace, all 47 projects, all 12 members'
    access, and 3.2 GB of files. This cannot be undone.
  </p>
  <p>To confirm, type the workspace name below:</p>
  <input id="confirm" placeholder="Acme Inc" autocomplete="off" />
  <div class="actions">
    <button onclick="closeDialog()">Cancel</button>
    <button id="confirm-btn" disabled class="destructive">
      Delete workspace permanently
    </button>
  </div>
</dialog>

<script>
const input = document.getElementById('confirm');
const btn = document.getElementById('confirm-btn');
input.addEventListener('input', () => {
  btn.disabled = input.value !== workspace.name;
});
</script>

What this achieves:

  • The dialog must be opened deliberately.
  • The consequences are stated plainly.
  • The user must type — an active gesture that breaks autopilot.
  • The button is disabled until the typed name matches, so even autopilot Enter doesn't trigger.

For actions that should genuinely never happen by accident, this stack is appropriate.

Re-authentication for security-sensitive operations

html
<button onclick="requireReauthThen('delete-account')">
  Delete account
</button>

<dialog id="reauth-dialog">
  <h2>Confirm your identity</h2>
  <p>For your security, please re-enter your password to continue.</p>
  <input type="password" id="reauth-password" autofocus />
  <div class="actions">
    <button onclick="closeDialog()">Cancel</button>
    <button id="reauth-submit">Continue</button>
  </div>
</dialog>

Use re-authentication when:

  • The action affects security or billing.
  • The action affects other users' access.
  • The action would be devastating if performed by someone with stolen session access.
  • Compliance requires it.

The cost: an extra password entry. The benefit: a second opportunity for the user to reconsider, plus protection against session theft.

Structural prevention (the highest forgiveness)

Stronger than any confirmation: making the wrong action impossible.

Disable the action when invalid

A "Submit" button disabled when the form has errors. The user can't trigger the failure path. (Pair with inline error explanations so the user knows what's missing — see affordance-false-and-anti.)

Type-restricted inputs

<input type="email"> rejects non-email format. <input type="number"> rejects non-numeric. <input type="tel"> shows a numeric keyboard on mobile. Each is structural prevention of certain input errors.

Constraint by selection rather than typing

A <select> for state names prevents typos that a free-text field would allow. A date picker prevents impossible dates. A typeahead constrained to known values prevents misspelled selections.

Physical / hardware analogies

The USB-C connector that can't be inserted upside-down. The pill organizer that shows visual state. The medical injector that can't deliver a dangerous dose.

Required-field marking + blocked submit

html
<form>
  <label>Email <span class="required">*</span>
    <input type="email" required />
  </label>
  <button>Submit</button>
</form>

The browser blocks submission with focus on the missing field. Native scaffolding for prevention.

Anti-patterns

  • Confirmation fatigue. "Are you sure you want to save? / open? / apply?" Every routine action confirmed. Users dismiss everything on autopilot.
  • Pre-selected destructive option. A confirm dialog with the destructive button as default Enter target. Users who hit Enter without reading commit the destruction.
  • Trivial type-to-confirm. Forcing users to type "DELETE" for a routine archive operation. Heavy friction for low-stakes action.
  • Hidden cancellation path. A confirm dialog with no Esc, no backdrop dismiss, just two buttons. The user feels trapped.
  • Confirmation as the only forgiveness. Apps where every destructive action is confirmed but nothing is reversible. Confirmation alone is insufficient — users still make mistakes.
  • Sneaky double-negatives. "Are you sure you don't want to keep your account?" Users misread; mistakes happen.

Calibrating friction to stakes

A useful framing: every confirmation step is a tax. Ask whether the tax is worth it for this specific action.

ActionReversibilityStakesRecommended confirmation
SaveReversibleLowNone
Apply filterReversibleLowNone
Archive itemReversible (toast undo)LowNone
Delete (soft)Recoverable in trashMediumNone
Empty trashIrreversibleMediumLight dialog
Delete projectIrreversibleHighStrong dialog with summary
Delete accountIrreversibleVery highType-to-confirm + reauth
Transfer ownershipIrreversibleVery highType-to-confirm + reauth + email verification

Each step up the friction ladder should correspond to a step up in stakes.

Heuristics

  1. The reversibility-first check. Before adding any confirmation, ask: can this be made reversible instead? If yes, do that.
  2. The autopilot test. If a typical user would dismiss the confirmation without reading, the confirmation isn't doing its job. Either remove it or make it harder to dismiss without reading.
  3. The "what would they regret?" test. For irreversible actions, imagine the user a week later realizing they made a mistake. Did the confirmation do enough to prevent that?
  4. The disabled-button question. When you reach for confirmation, ask whether structural prevention (disabling the action when it shouldn't apply) would work better.

Related sub-skills

  • forgiveness (parent).
  • forgiveness-undo-and-soft-delete — the preferred alternative when reversibility is possible.
  • affordance-false-and-anti — disabled states and structural prevention.
  • constraint — input constraints prevent invalid actions.
  • expectation-effect — confirmation buttons in unexpected positions surprise users.
  • accessibility-understandable (process) — confirmation flows must be operable for all users.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Forgiveness Confirmation And Prevention AI skill do?

Use this skill when the user must commit to an irreversible or high-stakes action and reversibility isn't enough — confirmation dialogs, type-to-confirm patterns, password re-entry, two-step authentication for destructive actions, and structural prevention that makes the wrong action impossible. Trigger when designing destructive flows for genuinely-irreversible commitments, when reviewing confirmation fatigue, or when picking between a single confirm dialog and a multi-step verification. Sub-aspect of `forgiveness`; read that first.

Why use Forgiveness Confirmation And Prevention on TypingMind?

Because you install it once and use it with any model. Forgiveness Confirmation And Prevention is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Forgiveness Confirmation And Prevention in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Deibler/universal-design-principles/tree/main/plugins/interaction-and-control-principles/skills/forgiveness-confirmation-and-prevention. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Forgiveness Confirmation And Prevention?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Forgiveness Confirmation And Prevention?

As many as you like. As long as a model supports skills, you can use Forgiveness Confirmation And Prevention with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Forgiveness Confirmation And Prevention AI skill free?

It is published on GitHub by Deibler. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇