Skip to content
Back to skills

Nano Remove Authentication External Custom

ASecurity

Remove a custom BaseAuthExternalRepository<TFlow> external-login provider (scaffolded by nano-add-authentication-external-custom) from a Nano.Library-based application, without touching JWT authentication, Identity, or any other configured provider. Use when the user asks to remove a custom/third-party/in-house external login provider from a Nano API or Web application while keeping regular login working — not for removing JWT authentication entirely (nano-remove-authentication-jwt), and not ...

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 4, 2026
developmentgoshelldockerkubernetesapifrontendbackend

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 4, 2026

npx -y skills add Nano-Core/Nano.Templates --skill nano-remove-authentication-external-custom --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Nano Remove Authentication External Custom?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Nano Remove Authentication External Custom
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nano-core-nano-remove-authentication-external-custom/badge)](https://www.skillsdirectory.com/skills/nano-core-nano-remove-authentication-external-custom)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: nano-remove-authentication-external-custom
description: Remove a custom BaseAuthExternalRepository<TFlow> external-login provider (scaffolded by nano-add-authentication-external-custom) from a Nano.Library-based application, without touching JWT authentication, Identity, or any other configured provider. Use when the user asks to remove a custom/third-party/in-house external login provider from a Nano API or Web application while keeping regular login working — not for removing JWT authentication entirely (nano-remove-authentication-jwt), and not for a built-in provider (nano-remove-authentication-microsoft covers Microsoft; Facebook/Google are removed by hand per AGENTS.md).
---

# Nano remove custom external authentication

Removes a custom external-login provider previously scaffolded by
`nano-add-authentication-external-custom` — the counterpart to that skill. Read it first; this one
undoes exactly what it adds. `Jwt`, the `AuthController`, Identity, and any other configured
provider are left untouched.

If the user actually wants JWT authentication removed entirely, stop and point them at
`nano-remove-authentication-jwt` instead — its own removal already takes every configured external
provider (built-in or custom) down with it; running this skill first would just be redundant.

## Before making any change, determine

1. **Which provider, specifically?** A `BaseAuthExternalRepository<TFlow>` class isn't named or
   registered anywhere central — find it by its `ProviderName` (the constructor's string argument)
   or by asking the user which class/file. If more than one custom provider exists in the app,
   remove only the one named; don't assume "the custom provider" is singular.
2. **Where does the class live, and does it use a custom flow class?** Conventionally
   `Authentication/{Provider}ExternalRepository.cs` in the main application project per
   `nano-add-authentication-external-custom`'s own convention, but confirm by locating the actual
   `BaseAuthExternalRepository<TFlow>` subclass with that `ProviderName` — it may have been moved or
   renamed since scaffolding. Check its `TFlow` generic argument: if it's `AuthCodeFlow`/`ImplicitFlow`
   there's nothing extra, but if it's a custom `BaseAuthFlow` subclass scaffolded alongside it (e.g.
   `Authentication/{Provider}Flow.cs`), that file needs deleting too — **only if nothing else still
   references it**. A custom flow class isn't necessarily this provider's exclusively; if another
   repository also uses it, leave it in place and only remove the repository class being asked
   about.
3. **Was this provider ever wired to real credentials?** Check whether an options class bound via
   `AddNanoConfigSection<TOptions>` exists for it (per the "Wiring real provider credentials later"
   note in the add-skill), and whether any Kubernetes secret / `.docker/.env` entries reference it.
   If the class was still the unmodified placeholder shell (mocked return values, no real HTTP
   calls), there's nothing beyond the class file itself to remove.
4. **Is this provider referenced by frontend sign-in code?** This skill only removes the backend
   repository class (and its config/secrets, if any) — a frontend sign-in button or redirect flow
   built against this provider isn't something this skill can find or remove.

## Removing the class

Delete the `{Provider}ExternalRepository.cs` file (and its matching `.Designer`-equivalent, if
any — none exists for this kind of class, unlike an EF migration), plus the custom flow class file
too if step 2 found one that's exclusively this provider's. No `Program.cs` change is needed
either way, since neither class was ever registered there to begin with — removal is simply
deleting the file(s).

## Removing real credentials, if step 3 found any

Only if the provider had actually been wired up past the placeholder stage:

- Remove the options class and its `AddNanoConfigSection<TOptions>(...)` call from
  `ConfigureServices(...)`, if one was added.
- Remove the matching section from every `appsettings*.json` file it was added to.
- Remove the corresponding keys from `.docker/.env`, if present.
- If a Kubernetes secret was created for this provider specifically (not shared with anything
  else), delete its `.kubernetes/*.yaml` file, remove its apply line from the `Kubernetes Deploy`
  workflow step, remove its `App__...` entries from `.kubernetes/deployment.yaml`'s container
  `env`, and remove its `.kubernetes\*.yaml = .kubernetes\*.yaml` line from `{name}.sln`'s
  `.kubernetes` `SolutionItems` block.

⚠ This does **not** delete any credential that lives outside this codebase — an API key or client
secret registered directly with the external provider's own developer console/dashboard stays
valid there until revoked by hand. Say this explicitly rather than letting "removed the config"
read as "the credential is dead."

## After making the change

- Show every file touched/deleted, including the custom flow class if one was removed.
- Confirm JWT authentication (and any other configured provider, built-in or custom) is unaffected
  — sign-in through every other path keeps working exactly as before, only this one provider
  disappears.
- State plainly which endpoint(s) this took down — the transient `/auth/login/external/{providerName}/...`
  pair, or the persistent signup/add/remove/login set, per whichever mode
  `nano-add-authentication-external-custom` had reported when this was added.
- If step 3 found real credentials wired up, restate the ⚠ above — any external-provider-side
  registration/API key isn't revoked by this skill, only this app's own reference to it.
- If step 4 found frontend sign-in code, remind the user that removing the backend alone leaves a
  sign-in button that now fails — the frontend piece needs removing separately.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…