Flow Settings logo

Flow Settings

Community
jpoindexter
flow-settings

Use when designing, building, or reviewing settings screens, account management, preferences, profile pages, or any destructive account action — delete account, change email/password, data export, session management. Also use when users report being unable to find a setting, accidental destructive actions, or when auditing danger-zone and confirmation patterns.

Overview

Publisherjpoindexter
Repositoryux-flow-skills
Skill nameflow-settings
Stars
5
Forks
0
Bundled files
Instructions only
LicenseMIT
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.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

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

Installation

Install the Flow Settings 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/jpoindexter/ux-flow-skills/tree/main/skills/flow-settings
  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/jpoindexter/ux-flow-skills.git /tmp/ux-flow-skills
mkdir -p .claude/skills
cp -r /tmp/ux-flow-skills/skills/flow-settings .claude/skills/flow-settings
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Flow Settings 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 Flow Settings 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 Flow Settings 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.

Settings & Account Management

Overview

Settings are visited rarely and under a specific goal ("turn off that email," "delete my account") — so findability beats aesthetics, and destructive actions must be impossible to trigger by accident yet never hidden from users who need them. Organize by the user's mental model, not your org chart or database schema.

When to Use

  • Building a settings/preferences area for web, iOS, or Android
  • Adding account security flows: email change, password change, 2FA, active sessions
  • Designing delete-account, delete-workspace, or any irreversible action
  • Adding data export (GDPR/CCPA portability)
  • Not for: in-context controls that belong next to the content they affect — a document's sharing settings live on the document (see flow-sharing)
  • Not for: first-run onboarding preference pickers

The Proven Flow

  1. Entry

    • Avatar or gear icon, top-right on web; profile tab or gear on mobile.
    • Landing view shows the settings nav with the most-visited section (Profile/Account) already open — never an empty "pick a category" splash screen.
  2. Navigation

    • Web: left sidebar of grouped categories, content pane on the right (GitHub, Stripe Dashboard).
    • Mobile: single scrolling list of grouped rows drilling into detail screens (iOS Settings).
    • Group by user mental model:
      • You: Profile, Account, Security, Notifications
      • Preferences: Appearance, Language, Privacy, Integrations
      • Money: Billing, Plan, Invoices
      • Org (multi-user products): Members, Teams, Permissions — visually separated from personal settings. GitHub splits personal vs organization settings entirely; Stripe separates account vs team. Users must always know which scope they're editing.
      • Danger zone: last, always.
    • Items needing attention carry a badge or inline alert: unverified email, expiring card, missing 2FA — settings is where users expect to resolve account health.
  3. Search

    • Add it above the nav once you exceed ~15 settings. Users don't browse settings — they hunt.
    • Match setting labels, descriptions, and synonyms: "dark mode" must find "Appearance → Theme."
    • Results deep-link to the exact control, scrolled into view and briefly highlighted. iOS Settings and Chrome's settings search both do this.
  4. Individual settings

    • Each row: label, one-line description of consequence (not a restatement), and the control.
    • Toggles apply instantly, confirmed by the state change itself or a brief toast.
    • Forms (profile fields) use an explicit Save button — disabled until dirty — plus an unsaved-changes guard on navigate-away.
    • Never mix auto-save and explicit-save within the same section; users can't tell what's applied.
    • Avatar upload gets crop-and-preview plus an initials fallback; username changes warn about consequences ("your profile URL changes and old profile links break immediately; repo links redirect until the old username is reclaimed" — GitHub's rename model).
    • Feature surfaces deep-link into settings: the "Manage notifications" link in an email or a nudge lands on that exact settings row, not the settings home.
  5. Email change

    • New email field → verification link sent to the new address → change applies only on verification.
    • Notification email to the old address with a "this wasn't me — secure my account" link.
    • The old email keeps working until verification completes. GitHub and Google both work this way. An instant swap on submit is an account-takeover vector via one stolen session.
  6. Password change

    • Current password (or fresh re-auth) → new password with inline strength meter and visible requirements → confirm.
    • On success: confirmation screen, email notification, and an offer to sign out all other sessions.
    • Sensitive pages require recent authentication — GitHub's "sudo mode," Stripe's re-auth. Re-prompt when the session's last auth is older than ~15–60 minutes.
  7. Two-factor authentication setup

    • Offer methods in security order: passkey / authenticator app first, SMS as fallback only (SIM-swap risk) — state the recommendation inline.
    • Setup: QR code + manual key → user enters a code to prove it works → recovery codes shown once, with download/copy buttons and a "I've saved these" confirm before finishing.
    • Disabling 2FA requires re-auth plus a second factor, and triggers a security email.
  8. Notification settings

    • Matrix by event type × channel (email / push / in-app), not a single master toggle plus mystery.
    • Every email footer's "unsubscribe/manage" deep-links to this exact screen.
    • Security notifications are not disableable — say so: "Security alerts can't be turned off."
  9. Data export

    • One button: "Request export." Async job → email with an expiring, auth-gated download link.
    • Show job state inline: "Export requested Jul 7 — we'll email you when it's ready."
    • State what the export contains ("all documents, comments, and account data") so users can judge completeness before deleting anything.
    • Formats: JSON/CSV plus media files. Never gate export behind a support ticket — GDPR Art. 20 makes portability a right, and export is the trust-preserving companion to deletion.
  10. Delete account — the canonical destructive flow, three gates in order

  11. Confirm intent: a button in the Danger Zone opens a dedicated screen or modal — never a bare "Are you sure?"

  12. Show consequences concretely: "Deletes 3 workspaces and 1,240 documents (subscription paid through Aug 12). This cannot be undone." Enumerate real counts from real data. Apple/Google-billed subscriptions can't be canceled by the developer — link the platform's manage-subscriptions sheet and state the subscription must be canceled there (App Review 5.1.1(v)). Offer alternatives on this same screen: export data, downgrade to free, deactivate instead.

  13. Type-to-confirm: the user types their username, email, or the phrase "delete my account" exactly — GitHub's repo-deletion pattern. Typing engages deliberate attention; a checkbox does not. Then re-auth if the session isn't fresh. The submit button is red, labeled with the consequence ("Delete this account"), and disabled until the phrase matches.

  • Afterward: sign out everywhere, send a confirmation email, and ideally hold a 30-day soft-delete grace window with reactivation-by-login. Whichever policy is real, say it — faking permanence and faking deletion both destroy trust and invite regulators.
  1. Sessions & security events
  • List active sessions: device, approximate location, last active. Per-session revoke plus "Sign out all other sessions."
  • Mark the current session — "This device" — so users don't revoke themselves by accident.
  • Send email on: new-device sign-in, password change, email change, 2FA change. Each email carries a recovery link.

Layout & Structure

  • Groups of 3–7 items. More than 7 in a group → split the group. More than ~9 top-level categories → merge, or make search primary.
  • Hierarchy depth ≤ 3: category → screen → control. Deeper is unfindable without search.
  • One column of controls. Label left, control right (web rows / iOS cells); consequence description under the label in secondary text.
  • Danger Zone: bottom of the Account or General page, visually distinct — GitHub's literal red-bordered "Danger Zone" card. Contents: only destructive, irreversible actions (delete account, transfer ownership, leave organization). Never place a destructive action adjacent to a routine one.
  • Destructive buttons: red/destructive style; never the default-focused button in any dialog; never triggered by Enter; always at least one deliberate extra step away. In confirmation dialogs the safe action gets default focus and prominence.
  • Button copy names the action, never "Yes"/"No"/"OK": "Delete 3 documents" / "Cancel."
  • Consequence-first descriptions beat label restatements: "Stops all email except security alerts" — not "Controls your email settings."
  • Platform specifics:
    • iOS — grouped inset lists, system cells, red text rows for destructive actions. Apple Guideline 5.1.1(v): if the app supports account creation, account deletion must be initiable in-app.
    • Android — standard preference-screen pattern; respect system back behavior between levels.
    • Web — every settings page has a stable, shareable, deep-linkable URL.
  • Disabled ≠ hidden: settings unavailable on the current plan stay visible, disabled, with a one-line reason ("Available on Pro") — hiding them makes users doubt the feature exists.
  • Accessibility: toggles are real switches with accessible names matching the visible label; keyboard focus order follows visual order; destructive confirms trap focus in the dialog with the safe action focused first.
  • Current value visible at rest: rows that drill into a detail screen show the current selection inline ("Language — English") so users don't open screens just to check state — iOS Settings' core convention.
  • Confirmation emails for identity changes only: email, password, 2FA, and payment method changes get an email; toggling dark mode does not. Over-notifying trains users to ignore the security emails that matter.

Quick Reference

SituationPattern
More than ~15 settingsSearch with synonym matching + deep-link-and-highlight
Grouping settingsMental-model groups of 3–7; org/team scope split from personal
Instant vs saved changesToggles auto-apply; text forms explicit Save + dirty guard
Change emailVerify new address first; notify old address; no instant swap
Password change / sensitive pageRe-auth (sudo mode) if last auth >15–60 min ago
Delete accountConfirm → concrete consequences + alternatives → type-to-confirm → re-auth
Any irreversible actionDanger Zone, red, never default-focused, named-action buttons
Reversible destructive actionSingle confirm or undo window — don't over-gate
Data exportSelf-serve async job + expiring emailed link; offered inside deletion flow
New device or credential changeSecurity notification email with recovery link
Multi-workspace destructive actEnumerate real counts of what gets destroyed
Active sessionsList + per-session revoke + "sign out all"
2FA setupApp/passkey first, SMS fallback; recovery codes shown once with save-confirm
Notification preferencesEvent-type × channel matrix; email footers deep-link to it
Plan-gated settingVisible but disabled, with "Available on Pro" reason
Drill-in rowShow current value inline ("Language — English")
Email footer "manage preferences"Deep-links to the exact notification row
Account needs attentionBadge on the relevant settings item (unverified email, expiring card)
Session listCurrent session marked "This device"

Anti-Patterns

Anti-patternWhy it breaksFix
Settings organized by internal team or service namesUsers can't map goal → categoryGroup by user mental model; validate with card sorting
Delete account only via support email or chatRoach motel; GDPR and App Store violationsSelf-serve deletion behind the three gates
"Are you sure?" as the only guard on irreversible deleteHabitual click-through; guaranteed accidentsConsequences + type-to-confirm for irreversible acts
Type-to-confirm on every minor deleteTrains users to autopilot the ritualReserve heavy friction for truly irreversible actions
Instant email swap on submitAccount takeover via one stolen sessionVerify new address + notify old address
Destructive button as dialog default / Enter-triggeredOne keystroke destroys dataSafe action gets default focus
Mixed auto-save and Save-button on one pageUser can't tell what's appliedOne persistence model per section
Settings search matching labels only"dark mode" misses "Theme"Index synonyms and descriptions
Offering deletion but burying exportData-hostage optics; legal riskSurface export inside the deletion flow
No email on password/email/2FA changeSilent account takeoverSecurity event notifications, always
Danger zone rows mixed into the general listAccidental adjacency clicksSegregated, styled, bottom-placed zone
Fake deletion (account silently reactivatable forever)Trust and legal exposureState the real policy: grace window or permanent
Unsaved changes silently discarded on navigationLost work; users distrust every formDirty-state guard with save/discard choice
Master notification toggle onlyUsers kill all email to stop one typeEvent-type × channel matrix
Plan-gated settings hidden entirelyUsers conclude the feature doesn't existVisible, disabled, with the reason and an upgrade link
Username change with silent link breakageEvery old profile link 404sWarn on change + temporary redirects
Recovery codes shown without a save-confirmLocked-out users at the worst momentDownload/copy buttons + "I've saved these" gate
Sensitive changes without re-authOne stolen session owns the accountSudo mode: fresh auth for security-critical pages
Workspace delete confused with account deleteUsers destroy the wrong thingSeparate flows; name the exact object and its counts
Every change triggers a confirmation emailUsers tune out real security alertsEmail only for identity/payment/security changes

Frequently asked questions

What does the Flow Settings AI skill do?

Use when designing, building, or reviewing settings screens, account management, preferences, profile pages, or any destructive account action — delete account, change email/password, data export, session management. Also use when users report being unable to find a setting, accidental destructive actions, or when auditing danger-zone and confirmation patterns.

Why use Flow Settings on TypingMind?

Because you install it once and use it with any model. Flow Settings 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 Flow Settings in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/jpoindexter/ux-flow-skills/tree/main/skills/flow-settings. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Flow Settings?

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 Flow Settings?

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

Is the Flow Settings AI skill free?

Yes. It is published on GitHub by jpoindexter under the MIT license. 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 👇