Agent skill

Frontmcp Auth UI

by agentfront in agentfront/frontmcp

A skill your agent uses when customizing, branding, or replacing the built-in FrontMCP OAuth pages (the login, consent, federated-select, incremental-authorization, and error pages) with your own…

Apache-2.0Auto-check passedBackend & APIs

Install Frontmcp Auth UI

skills CLI
$ npx skills add agentfront/frontmcp --skill frontmcp-auth-ui -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install agentfront/frontmcp frontmcp-auth-ui --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/agentfront/frontmcp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/libs/skills/catalog/frontmcp-auth-ui .claude/skills/frontmcp-auth-ui && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
frontmcp-auth-ui
GitHub stars
146
Token cost
~3.7k tokens
SKILL.md length
1,172 words
Files
4 (incl. references)
Skills in repo
12
Repo updated
First seen
Licence
Apache-2.0

At a glance

A skill your agent uses when customizing, branding, or replacing the built-in FrontMCP OAuth pages (the login, consent, federated-select, incremental-authorization, and error pages) with your own…

  • Works in 5 steps: Write a React component (default export)… → Map the slot to its .tsx path under… → (Optional) Add an auth.extras[name]… → …
  • Replacing the built-in FrontMCP OAuth pages (the login
  • SKILL.md covers When to Use This Skill, Prerequisites, Steps and Scenario Routing Table, plus 7 more sections
  • Calls npm; reaches esm.sh

What it does

Frontmcp Auth UI is an agent skill from agentfront/frontmcp. Use when customizing, branding, or replacing the built-in FrontMCP OAuth pages (the login, consent, federated-select, incremental-authorization, and error pages) with your own React components. Covers the auth.ui slot-to-file map and auth.extras name-to-handler map on the auth config (no decorator, no class); the @frontmcp/ui/auth React hooks, the AuthPageWrapper component, and mountAuthPage (client-rendered via an esm.sh import-map plus a per-file server-side transform, with no bundling and no SSR); and the…

Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `examples/custom-auth-ui/login-slot.md`, `examples/custom-auth-ui/multi-step-auth-extra.md` and `references/custom-auth-ui.md`).

It sits in Backend & APIs, covering React components, Authorization and RBAC and Web application vulnerabilities. It works with React and Model Context Protocol. The repository describes itself as: TypeScript-first framework for the Model Context Protocol (MCP). You write clean, typed code; FrontMCP handles the protocol, transport, DI, session/auth, and execution flow. The licence is Apache-2.0.

When your agent uses it

  • Replacing the built-in FrontMCP OAuth pages (the login
  • Federated-select
  • Incremental-authorization
  • Error pages) with your own React components

Example prompts

  • “/frontmcp-auth-ui”

Requirements

  • Node.js

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Write a React component (default export) for the slot, reading the injected state via @frontmcp/ui/auth hooks (see…
  2. Map the slot to its .tsx path under auth.ui — a RELATIVE path auto-anchored to the config file's directory (no fileURLToPath)
  3. (Optional) Add an auth.extras[name] handler function for any mid-flow validated field
  4. Declare both under auth: @FrontMcp({ auth: { mode: 'local', ui: { login: './…' }, extras: { … } } }) (per-app under splitByApp — put them…
  5. Verify using the Verification Checklist below

What it can do on your machine

Read from SKILL.md and the folder at commit 8f59ba8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • esm.sh

    Also links to:

    • docs.agentfront.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Frontmcp Auth UI loads about 3.7k tokens when it runs, and up to ~7.9k if it reads all its reference files. Until then it costs about 207 tokens; SKILL.md has 1,172 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~207
When it runs · the whole SKILL.md, loaded when a task matches
~3.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from agentfront/frontmcp at commit 8f59ba8, republished under its Apache-2.0 licence (© agentfront). 1,172 words, ~3,704 tokens.

Download SKILL.mdSave it as .claude/skills/frontmcp-auth-ui/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
frontmcp-auth-ui
description
Use when customizing, branding, or replacing the built-in FrontMCP OAuth pages (the login, consent, federated-select, incremental-authorization, and error pages) with your own React components. Covers the auth.ui slot-to-file map and auth.extras name-to-handler map on the auth config (no decorator, no class); the @frontmcp/ui/auth React hooks, the AuthPageWrapper component, and mountAuthPage (client-rendered via an esm.sh import-map plus a per-file server-side transform, with no bundling and no SSR); and the framework-owned CSRF and CSP. Triggers: custom login page, brand the consent screen, replace the OAuth UI, custom authorization UI, style the auth pages, multi-step login. The skill for CUSTOM AUTHORIZATION UI (distinct from auth config in frontmcp-config and permissions in frontmcp-authorities).
tags
auth, auth-ui, login, consent, custom-ui, react, oauth, guide
category
config
targets
all
bundle
full
priority
5
visibility
both
license
Apache-2.0
metadata.docs
https://docs.agentfront.dev/frontmcp/authentication/custom-ui

FrontMCP Custom Authorization UI (auth.ui)

Entry point for replacing FrontMCP's built-in OAuth pages (login, consent, federated, incremental, error) with your own React components. Custom UI is a simple slot→file map (auth.ui) plus an extras name→handler map (auth.extras) on the auth config — there is no decorator and no class. The references/custom-auth-ui.md reference has the full API; the examples/ show a single login slot and a multi-step extras form.

When to Use This Skill

Must Use
  • Branding or fully replacing the local/remote mode login page with a custom React component
  • Building a custom consent screen, federated provider picker, incremental authorization, or error page
  • Adding a server-validated multi-step field to an authorization page (e.g. "add another item") via auth.extras
  • Understanding which half is the server (auth.ui / auth.extras in @frontmcp/sdk) and which is the client (@frontmcp/ui/auth)
  • Looking up the AuthFlowState fields a slot component receives, or the /oauth/ui/extra route
  • Confirming that the framework (not your component) owns CSRF + CSP
Skip When
  • You only need to add/rename fields on the built-in login page or run a custom verifier — use the declarative login / authenticate config in frontmcp-config → configure-auth instead (no React, no build step)
  • You are customizing a tool widget (not an auth page) — use create-tool → ui-widgets
  • You don't need a custom page at all — configuring no auth.ui keeps the built-in pages

Decision: Use this skill when you want to render your OWN component for an auth slot. Use configure-auth's declarative login config when tweaking the built-in page's fields is enough.

Prerequisites

  • A FrontMCP server in local or remote auth mode (see frontmcp-config → configure-auth)
  • @frontmcp/ui, react, and react-dom installed (react/react-dom are peer deps of @frontmcp/ui)

Steps

  1. Write a React component (default export) for the slot, reading the injected state via @frontmcp/ui/auth hooks (see references/custom-auth-ui.md)
  2. Map the slot to its .tsx path under auth.ui — a RELATIVE path auto-anchored to the config file's directory (no fileURLToPath)
  3. (Optional) Add an auth.extras[name] handler function for any mid-flow validated field
  4. Declare both under auth: @FrontMcp({ auth: { mode: 'local', ui: { login: './…' }, extras: { … } } }) (per-app under splitByApp — put them on the @App({ auth }) that owns the pages)
  5. Verify using the Verification Checklist below

Scenario Routing Table

ScenarioReferenceDescription
Replace any built-in auth page with a React componentcustom-auth-uiauth.ui: { slot: './file.tsx' }, the hooks, <AuthPageWrapper>, mountAuthPage
Add a server-validated mid-flow field (multi-step form)custom-auth-uiauth.extras: { name: handler }, the accumulator, useExtraField / useAddedItems
Look up the flow-state fields a component receivescustom-auth-uiAuthFlowState field table (no PII)
Understand the served route and the framework-owned CSRF + CSPcustom-auth-ui/oauth/ui/extra, the esm.sh import-map + inline module, security ownership

The map form

Custom UI is a slot→file map on the auth config. Point each slot at a sibling .tsx/.jsx source (default export); the SDK transpiles it once server-side and inlines it as an ES module, with deps loaded from esm.sh via an import-map and mountAuthPage appended for you — exactly as @Tool({ ui }) leads with the FileSource { file } form:

ts
// src/server.ts
import { App } from '@frontmcp/sdk'; // or @FrontMcp

@App({
  auth: {
    mode: 'local',
    // slot → RELATIVE .tsx, auto-anchored to THIS config file's directory.
    ui: { login: './auth/login.tsx' },
    // extra name → handler fn (no class).
    extras: { 'envs:add': async (input, ctx) => ({ ok: true, addedItems: [{ key: String(input.key) }] }) },
  },
})
export default class Server {}

A relative auth.ui path resolves against the directory of the file that declares the @App/@FrontMcp config — captured automatically at decoration time. No fileURLToPath needed. Absolute paths pass through; on capture failure the framework falls back to process.cwd() with a warning.

Common Patterns

PatternCorrectIncorrectWhy
Slot registrationauth: { ui: { login: './login.tsx' } }auth: { ui: [LoginAuthUi] } (array of classes)Custom UI is a slot→file MAP now — no decorator, no class
Path anchoringRelative './login.tsx' (auto-anchored to the config file)fileURLToPath(new URL('./login.tsx', import.meta.url))The framework captures the config file's dir for you — manual anchoring is no longer needed
Extra registrationauth: { extras: { 'envs:add': handlerFn } }auth: { extras: [AddEnvExtra] } (annotated class)Extras are an extra-name → handler-function MAP now
CSRFLet the hooks round-trip csrfTokenGenerating / checking a token in your componentThe server mints + verifies CSRF; your component must not
User identityUser-typed fields live in your own <form> inputsPutting email/name into AuthFlowStateAuthFlowState is PII-free by contract — it carries OAuth client ids + control fields only
Wrapper formWrap UI in <AuthPageWrapper> (renders the finish <form> + hidden fields)Hand-rolling pending_auth_id / csrf hidden inputsThe wrapper injects the control fields so a no-JS submit still works
Show full SKILL.md (496 more words)Show less

Verification Checklist

  • GET /oauth/authorize returns a page with an EMPTY #frontmcp-auth-root (not the built-in page) — the component's rendered markup is NOT in the HTTP response
  • The page has a <script type="module"> with the TRANSPILED component (React.createElement, NOT a bundle/IIFE/react-dom/server) + an import { mountAuthPage } from '@frontmcp/ui/auth' tail
  • The page has a <script type="importmap"> mapping react + @frontmcp/ui/auth → https://esm.sh/..., with ?external=react,react-dom on the @frontmcp/* URLs (single React)
  • The HTML injects window.__FRONTMCP_AUTH__ with the flow state (and no PII — no email/name field)
  • Response carries the auth CSP headers (frame-ancestors 'none', https://esm.sh allowed, NO 'unsafe-eval') and X-Frame-Options: DENY
  • There is no /oauth/ui/<slot>.js route (it 404s — the module is inlined, not served separately)
  • (If using auth.extras) a valid POST /oauth/ui/extra returns { ok: true, addedItems }, an invalid one returns 400, and a bad csrf returns 400
  • Removing the slot from auth.ui falls back to the built-in page unchanged

Troubleshooting

ProblemCauseSolution
Built-in page still showsSlot not in auth.ui, or the .tsx failed to transpileConfirm the slot is in auth: { ui: { … } } on the scope that owns the pages; check logs — a transpile error falls back to the built-in page
Blank page / @frontmcp/ui/auth 404s in the browser@frontmcp/ui/auth isn't on esm.sh (unpublished monorepo)Publish @frontmcp/ui, OR map it to a locally-served ESM URL via @FrontMcp({ ui: { cdnOverrides } }) (see references/custom-auth-ui.md → Local dev / offline)
ENOENT / component not found at runtimePath doesn't resolve from the config file's dirUse a path relative to the config file (auto-anchored), or an absolute path
Hooks throw "must be used inside …"Component rendered without <AuthPageWrapper>Mount via mountAuthPage(Component) (it wraps for you) or wrap manually in <AuthPageWrapper>
extras POST returns 400 (csrf)The submitted csrf ≠ the server-minted tokenLet the hooks send it — useExtraField / submitExtra attach pending_auth_id + csrf automatically
Custom page can't import @frontmcp/ui/authPackage (or react/react-dom) not installednpm install @frontmcp/ui react react-dom

Examples

Each reference has matching examples under examples/<reference>/:

custom-auth-ui
ExampleLevelDescription
login-slotIntermediateReplace the built-in login page with a custom React component via auth.ui: { login: './login.tsx' } and useAuthFlow.
multi-step-auth-extraAdvancedAdd a server-validated multi-step field with auth.extras: { 'envs:add': fn }, useExtraField, and useAddedItems.

Accessing This Skill

Skills are distributed as plain SKILL.md files plus a sibling references/ and examples/ tree, so consumers can pick whichever access mode fits:

ModeHow it works
FilesystemRead libs/skills/catalog/frontmcp-auth-ui/ directly from a clone of the catalog repo, or from a published @frontmcp/skills install. SKILL.md is the entry point.
frontmcp CLIfrontmcp skills list, frontmcp skills read frontmcp-auth-ui, frontmcp skills read frontmcp-auth-ui:references/<file>.md, frontmcp skills install frontmcp-auth-ui — no server required.
MCP skill://When a developer mounts this skill into their own FrontMCP server (@FrontMcp({ skills: [...] })), the SDK exposes it via SEP-2640 resources: skill://frontmcp-auth-ui/SKILL.md, skill://frontmcp-auth-ui/references/{file}.md, etc. The server's skill://index.json returns the SEP-2640 discovery document for everything mounted on it.

The catalog itself is not an MCP server. The skill:// URIs only resolve when a server has been configured to host this skill.

Reference

  • Custom Authorization UI (auth.ui)
  • Related skills: frontmcp-config (→ configure-auth for the declarative login config), create-tool (→ ui-widgets for tool widgets)

© agentfront, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in libs/skills/catalog/frontmcp-auth-ui of agentfront/frontmcp.

  • SKILL.md
  • examples/custom-auth-ui/login-slot.md
  • examples/custom-auth-ui/multi-step-auth-extra.md
  • references/custom-auth-ui.md

Open the folder on GitHubat commit 8f59ba8

Compare with similar skills

Frontmcp Auth UI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Frontmcp Auth UI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Frontmcp Auth UI this skillagentfront/frontmcp146—~3.7kAutomated safety check: PassApache-2.0
Laravel Inertia React Structurefreekmurze/dotfiles1k—~1kAutomated safety check: PassNone
Hilla TestAI-Unified-Process/marketplace140—~3.9kAutomated safety check: WarnApache-2.0
MCP Developmentcoollabsio/coolify63k1 repos~949Automated safety check: PassMIT
Django Access Reviewgetsentry/skills1k3 repos~2.6kAutomated safety check: NotesApache-2.0
Passport Developmenttrypostit/trypost676—~1.9kAutomated safety check: PassMIT

Similar skills

  • Frontend structure conventions for Laravel Inertia React applications based on Spatie's production practices.

    1k GitHub stars~1k tokensUpdated 2 days ago
    Backend & APIsAuto-check passed
  • Hilla Test

    AI-Unified-Process/marketplace

    Creates tests for Hilla use cases on both sides of the browser boundary: Vitest + React Testing Library tests for the React/TypeScript view (with the generated endpoint clients mocked) and Spring…

    140 GitHub stars~3.9k tokensUpdated 2 days ago
    Testing & QAAuto-check: warnings
  • MCP Development

    coollabsio/coolify

    A skill your agent uses for Laravel MCP development. An agent skill from coollabsio/coolify.

    63k GitHub starsUsed in 1 repo~949 tokens
    Frontend & DesignAuto-check passed
  • Django Access Review

    getsentry/skills

    Official

    Django access control and IDOR security review. An agent skill from getsentry/skills.

    1k GitHub starsUsed in 3 repos~2.6k tokens
    Backend & APIsAuto-check: notes
  • Passport Development

    trypostit/trypost

    Develops OAuth2 API authentication with Laravel Passport. An agent skill from trypostit/trypost.

    676 GitHub stars~1.9k tokensUpdated today
    Backend & APIsAuto-check passed
  • Supercheck Security Auth

    supercheck-io/supercheck

    Work on Supercheck authentication, RBAC, tenant isolation, sessions, API and trigger keys, invitations, project membership, project variables, OAuth, super-admin behavior, SSRF, or…

    215 GitHub stars~1.2k tokensUpdated today
    Backend & APIsAuto-check passed

More from agentfront/frontmcp

All 12 skills in this repo
  • Frontmcp Channels

    agentfront/frontmcp

    A skill your agent uses when pushing real-time notifications or events into Claude Code (or another MCP client) sessions, or building two-way chat bridges.

    146 GitHub stars~3.7k tokensUpdated today
    Auto-check passed
  • Frontmcp Extensibility

    agentfront/frontmcp

    A skill your agent uses when extending FrontMCP beyond the core SDK by integrating external npm packages, libraries, or third-party services into providers and tools.

    146 GitHub stars~3.2k tokensUpdated today
    Auto-check passed
  • Frontmcp Observability

    agentfront/frontmcp

    A skill your agent uses when adding tracing, structured logging, metrics, or monitoring to a FrontMCP server.

    146 GitHub stars~4.6k tokensUpdated today
    Auto-check passed
  • Frontmcp Authorities

    agentfront/frontmcp

    A skill your agent uses when implementing authorization and access control for FrontMCP tools, resources, prompts, or skills, deciding who may invoke what.

    146 GitHub stars~7.1k tokensUpdated today
    Auto-check passed
  • Frontmcp Config

    agentfront/frontmcp

    A skill your agent uses when configuring a FrontMCP server through frontmcp.config or the @FrontMcp options.

    146 GitHub stars~7k tokensUpdated today
    Auto-check passed
  • Frontmcp Deployment

    agentfront/frontmcp

    A skill your agent uses when deploying, building for production, packaging, or shipping a FrontMCP server.

    146 GitHub stars~9.2k tokensUpdated today
    Auto-check: notes

Questions about Frontmcp Auth UI

What does Frontmcp Auth UI do?

A skill your agent uses when customizing, branding, or replacing the built-in FrontMCP OAuth pages (the login, consent, federated-select, incremental-authorization, and error pages) with your own…. Frontmcp Auth UI is an agent skill from agentfront/frontmcp. Use when customizing, branding, or replacing the built-in FrontMCP OAuth pages (the login, consent, federated-select, incremental-authorization, and error pages) with your own React components.

When should I use Frontmcp Auth UI?

Frontmcp Auth UI fits situations like: replacing the built-in FrontMCP OAuth pages (the login; federated-select; incremental-authorization; error pages) with your own React components.

How do I install Frontmcp Auth UI in Claude Code?

Run `npx skills add agentfront/frontmcp --skill frontmcp-auth-ui -a claude-code`. Or copy the skill folder (libs/skills/catalog/frontmcp-auth-ui in agentfront/frontmcp) into .claude/skills/frontmcp-auth-ui in your project. Claude Code loads it when a task matches its description.

How do I install Frontmcp Auth UI in Codex?

Run `npx skills add agentfront/frontmcp --skill frontmcp-auth-ui -a codex`. Or copy the skill folder (libs/skills/catalog/frontmcp-auth-ui in agentfront/frontmcp) into .agents/skills/frontmcp-auth-ui in your project. Codex loads it when a task matches its description.

Can I use Frontmcp Auth UI in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add agentfront/frontmcp --skill frontmcp-auth-ui -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/frontmcp-auth-ui, .gemini/skills/frontmcp-auth-ui, .github/skills/frontmcp-auth-ui and .opencode/skills/frontmcp-auth-ui in your project.

What does Frontmcp Auth UI need to run?

Going by SKILL.md and its folder, Frontmcp Auth UI needs the command-line tools its instructions call (npm). Our summary lists: Node.js.

Does Frontmcp Auth UI access the network?

SKILL.md names 2 domains. In commands or code: esm.sh; the agent is likely to contact it when it follows the instructions. As links in the text: docs.agentfront.dev. This is read from the text; nothing was executed.

Is Frontmcp Auth UI safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Frontmcp Auth UI use?

Frontmcp Auth UI is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Frontmcp Auth UI use?

About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.2k tokens, read only when the agent opens those files.

What are the alternatives to Frontmcp Auth UI?

Skills that share tags, products or a category with Frontmcp Auth UI: Laravel Inertia React Structure (freekmurze/dotfiles, 1k stars), Hilla Test (AI-Unified-Process/marketplace, 140 stars), MCP Development (coollabsio/coolify, 63k stars) and Django Access Review (getsentry/skills, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Frontmcp Auth UI?

agentfront (a GitHub organization) maintains it in agentfront/frontmcp, which has 146 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 7, 2026.

Source: agentfront/frontmcp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.