agentsclimarketplace

Implementing admin portal

Skill scalekit-inc/skills/skills/implementing-admin-portal

35 skills that teach AI coding agents to integrate Scalekit auth — agent auth, full-stack login, MCP OAuth 2.1, enterprise SSO, and SCIM. Works with Claude Code, Cursor, Windsurf, and 35+ other agents.

Install
npx -y skills add scalekit-inc/skills --skill implementing-admin-portal

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 2 stars2 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

Implements Scalekit's admin portal for customer self-serve SSO and SCIM configuration. Generates portal links server-side and embeds the portal as an iframe in the app's settings UI. Use when the user asks to add an admin portal, customer self-serve SSO setup, iframe embed for SSO config, shareable setup link, or let customers configure their own SSO or SCIM connection.

SKILL.md

5.0 KB, as published. Nobody here has run it

Admin Portal with Scalekit

Adds a self-serve portal where customers configure their own SSO and SCIM settings — embedded inside your app's settings UI.

If the user only needs a quick shareable link with no code (e.g., for a one-time onboarding call), skip to the Shareable link section at the bottom.


Implementation progress

Admin Portal Implementation Progress:
- [ ] Step 1: Install SDK
- [ ] Step 2: Set environment credentials
- [ ] Step 3: Register app domain in dashboard
- [ ] Step 4: Generate portal link (server-side)
- [ ] Step 5: Render iframe (client-side)
- [ ] Step 6: Handle session expiry events
- [ ] Step 7: Verify portal loads and events fire correctly

Step 1: Install SDK

Detect the project's language/framework from existing files and install:

StackInstall
Node.jsnpm install @scalekit-sdk/node
Pythonpip install scalekit-sdk
Gogo get github.com/scalekit/scalekit-go
JavaAdd com.scalekit:scalekit-sdk to pom.xml

Step 2: Set environment credentials

Add to .env (never hardcode):

SCALEKIT_ENVIRONMENT_URL='https://<your-env>.scalekit.com'
SCALEKIT_CLIENT_ID='<CLIENT_ID>'
SCALEKIT_CLIENT_SECRET='<CLIENT_SECRET>'

Credentials are in Dashboard > Developers > Settings > API Credentials.


Step 3: Register app domain

In Dashboard > Developers > API Configuration > Redirect URIs, add the domain where the portal will be embedded. The iframe will be blocked if this is missing.


Step 4: Generate the portal link (server-side)

Generate a new link on every page load — links are single-use. Plug into the existing route or controller that serves the settings/admin page:

Node.js:

const { location } = await scalekit.organization.generatePortalLink(organizationId);
// Pass `location` to the frontend as a template variable or API response

Python:

portal = scalekit_client.organization.generate_portal_link(organization_id)
location = portal.location
# Pass `location` to your template or JSON response

Never cache this value — each link is single-use and will fail if reused.


Step 5: Render the iframe (client-side)

In the frontend settings/admin template, inject location as the src:

<iframe
  src="{{ portalLink }}"
  width="100%"
  height="600px"
  frameborder="0"
  allow="clipboard-write"
></iframe>

Minimum recommended height: 600px. Match the variable name to the project's existing templating convention.


Step 6: Handle portal UI events

Listen for messages from the iframe to react to configuration changes and session expiry:

window.addEventListener('message', (event) => {
  if (event.origin !== process.env.SCALEKIT_ENVIRONMENT_URL) return;

  const { type } = event.data;
  switch (type) {
    case 'SSO_CONFIGURED':
      // Refresh org status, show success banner, etc.
      break;
    case 'SESSION_EXPIRED':
      // Re-fetch a new portal link and reload the iframe src
      reloadPortalIframe();
      break;
  }
});

SESSION_EXPIRED handling is required — without it the portal silently breaks for long-lived sessions.


Step 7: Verify

  • Open the settings page — confirm the iframe renders without console errors
  • Complete a test SSO configuration inside the portal — confirm SSO_CONFIGURED fires
  • Wait for session expiry (or simulate it) — confirm SESSION_EXPIRED triggers a link refresh
  • Confirm portal link is never the same across two page loads (single-use verification)

Branding (optional)

Configure at Dashboard > Settings > Branding: logo, accent color, favicon. Custom domain support (e.g., sso.yourapp.com) is available in the Scalekit dashboard.


Guardrails

  • Generate link server-side only — never expose CLIENT_SECRET to the browser
  • Re-generate on every page load — caching will break the portal
  • Register your domain in Redirect URIs before testing or the iframe will be blocked
  • Handle SESSION_EXPIRED — re-generate and reload, don't let it fail silently

Shareable link (no-code alternative)

For one-time onboarding calls or zero-engineering setup: go to Dashboard > Organizations, select the org, click Generate link, and share the URL directly. The link gives anyone who has it full access to configure that org's SSO/SCIM settings — use the iframe approach for production. Also share Scalekit's SSO setup guides so the IT admin has provider-specific configuration steps alongside the portal link.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.