Setup
Claude Code plugin marketplace: a set of domain experts (subagents) grouped into installable plugins.
npx -y skills add franzos/claude-plugins --skill setupAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 29 days oldThe repository was created 29 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use to set up a new Forseti deployment (the web UI and OIDC front-end for the Ory Kratos + Hydra stack), with or without Docker. Brings up the Ory stack and Postgres, generates secure Kratos/Hydra/Forseti config with fresh secrets, wires the mandatory keys (audit webhook token, cookie secret, admin allowlist, service URLs), seeds an admin, and verifies the instance boots and the login flow works. Triggers: installing Forseti, first-time setup, standing up the Ory stack, getting Forseti running.
SKILL.md
5.5 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Setting up Forseti
Forseti is a single Rust binary that fronts Ory Kratos (identity) and Ory Hydra (OAuth2/OIDC) and turns them into a drop-in OIDC provider plus an admin console. A full deployment is: Forseti + Kratos + Hydra + Postgres, and a mail provider. Do not hardcode the schema from memory: the operator guide and the shipped example configs are the source of truth. Read them from the deployment you are working on.
Work through these in order. Confirm the choice at each fork with the user rather than guessing.
1. Locate the deployment and pick a shape
Find what you are working with: a repo checkout (docs/operator-guide.md, config.example.toml, infra/), a release tarball, or a container image (ghcr.io/franzos/forseti). Then pick the runtime shape and confirm it:
- Docker playground stack (fastest):
infra/docker-compose.ymlbrings up Postgres, Kratos (+migrate), Hydra (+migrate), and a mail sink; Forseti itself runs on the host and Kratos reaches it viahost.docker.internal:8081. Driven by theMakefile(make stack-up,stack-up-saml). - Native: prebuilt tarball (
cp config.example.toml config.toml, edit,./forseti; runtime deplibpq5), a Cargo build (make build/make run), or a Guix build againstmanifest.scm. Kratos, Hydra, and Postgres are provided separately.
Read the prerequisites and topology sections of docs/operator-guide.md before proceeding, and docs/operator-guide-proxy.md if this sits behind a reverse proxy.
2. Provision the toolchain (native builds only)
If building from source, get a toolchain without touching the host: invoke the provision-environment skill (prefer the project manifest.scm via guix shell). Skip for tarball or container installs.
3. Bring up the dependencies
Stand up Postgres, Kratos, and Hydra. With the playground: make stack-up (init DB + migrations are wired in). Otherwise deploy Kratos and Hydra yourself and point them at Postgres. Generate their config securely rather than copying dev files verbatim:
- Prefer
forseti config-initto emit Kratos/Hydra config with fresh CSPRNG secrets. - If starting from
infra/kratos/kratos.ymlandinfra/hydra/hydra.yml, rotate every placeholder: Hydrasecrets.systemand the pairwise salt; Kratossecrets.cookieandsecrets.cipher(exactly 32 chars). Never reuse a value from an example or playground config; treat every secret, audit token, and OAuthclient_secretin them as a placeholder to replace. - All Kratos flow
ui_urls and Hydra login/consent/logout URLs must point at the Forseti instance.
4. Write Forseti's config
Copy config.example.toml to config.toml (path overridable via $FORSETI_CONFIG_PATH; every key also has a FORSETI_-prefixed env override). Set at minimum:
[kratos]/[hydra]—public_url+admin_urlfor each.[self]— Forseti's externalurland publicbind(default:3000).[security].cookie_secret— set a stable ≥32-byte secret. If empty, Forseti uses an ephemeral per-boot key and cookies churn on every restart (and break multi-instance).[audit].webhook_token— mandatory; Forseti refuses to boot if empty. It must match the bearer token in everyweb_hookinkratos.yml.[internal].bind— keep on loopback (default127.0.0.1:8081). It carries the audit receiver and the POSIX resolver; never expose it publicly.[admin].allowed_emails— the operator allowlist. Empty means the admin surface is closed; set the intended operators.[database].url—sqlite://./forseti.dbfor single-instance, orpostgres://…for HA.[email]— provider (lettermint/postmark/sendgrid/smtp) and credentials for Forseti's own mailer.[brand]—name,support_email, and theoperator_trust_anchoranti-phishing string.
The Ed25519 webhook signing key (data/webhook-signing-key.pem) is auto-generated 0600 on first boot if absent.
5. Seed an admin and boot
Seed the first admin identity (make seed-admin / infra/seed-admin.sh). Then start Forseti (make run or ./forseti).
6. Verify before declaring done
- Lint the Ory config:
forseti config-check(add--strict). - Confirm the instance is healthy at
/admin/status(it warns on SQLite-with-multi-instance and other footguns). - Exercise the actual login flow in a browser: a Kratos self-service login through Forseti, and one OAuth authorize round-trip if a downstream client exists. Do not report setup as working without loading it.
7. TLS and reverse proxy
Terminate TLS at a reverse proxy and pass X-Forwarded-Proto: https and X-Forwarded-Host, or Ory emits http:// URLs and non-Secure cookies. Only set [proxy].trust_forwarded_for = true behind a proxy that strips inbound forwarded-for headers. See docs/operator-guide-proxy.md for path-prefix vs subdomain vs port topologies.
When the deployment goal is more specific than a fresh install (add a login provider, enable Linux login, register a client), hand off to the forseti:reconfigure skill.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.