Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
alsk1992 avatar

Identity

  • 13 installs
  • 610 repo stars
  • Updated June 26, 2026
  • alsk1992/cloddsbot

identity is a Claude Code skill that manages user identity, OAuth connections, sessions and device authentication for an app.

About

identity is a Claude Code skill that manages user identity, OAuth provider connections and device authentication. It links Google, GitHub, Discord and Twitter accounts, lists and revokes devices and sessions, and assigns owner, paired or stranger trust levels. A developer uses it to add auth, session and device management to a bot backed by a SQLite store.

  • Manages user identity, OAuth provider links and device authentication
  • Handles sessions, device revocation and owner/paired/stranger trust levels
  • Ships a TypeScript service with SQLite storage and OAuth callback handling

Identity by the numbers

  • 13 all-time installs (skills.sh)
  • Ranked #1,634 of 2,203 Security skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

identity capabilities & compatibility

Free skill; requires OAuth client credentials for each provider.

Capabilities
oauth login · session management · device management · identity management
Works with
github · gmail
Use cases
security audit
Pricing
Bring your own API key
From the docs

What identity says it does

Manage user identity, OAuth provider connections, and device authentication.
SKILL.md
Backup auth methods
SKILL.md
npx skills add https://github.com/alsk1992/cloddsbot --skill identity

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs13
repo stars610
Last updatedJune 26, 2026
Repositoryalsk1992/cloddsbot

What it does

Add user identity, OAuth provider linking, session and device management to a bot with owner/paired/stranger trust levels.

Who is it for?

Adding OAuth auth, session and device management with trust levels to an app or bot.

When should I use this skill?

You need to link OAuth providers, manage sessions/devices or set user trust levels.

What you get

A working identity layer with OAuth links, device and session management and trust levels.

  • OAuth provider linking
  • session and device management
  • trust-level assignment

By the numbers

  • 4 OAuth providers (Google, GitHub, Discord, Twitter)
  • 3 trust levels (owner, paired, stranger)
  • 4 device types (desktop, mobile, tablet, unknown)

Files

SKILL.mdMarkdownGitHub ↗

Identity - Complete API Reference

Manage user identity, OAuth provider connections, and device authentication.

---

Chat Commands

View Identity

/identity                                   Show your identity
/identity status                            Auth status
/identity devices                           List linked devices

OAuth Providers

/identity providers                         List available providers
/identity link google                       Connect Google account
/identity link github                       Connect GitHub account
/identity unlink google                     Disconnect provider

Device Management

/identity device list                       List devices
/identity device name "Work Laptop"         Name this device
/identity device revoke <id>                Revoke device access
/identity device revoke-all                 Revoke all except current

Trust & Security

/identity trust                             View trust level
/identity sessions                          Active sessions
/identity session logout <id>               End session
/identity security                          Security settings

---

TypeScript API Reference

Create Identity Service

import { createIdentityService } from 'clodds/identity';

const identity = createIdentityService({
  // OAuth providers
  providers: {
    google: {
      clientId: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    },
    github: {
      clientId: process.env.GITHUB_CLIENT_ID,
      clientSecret: process.env.GITHUB_CLIENT_SECRET,
    },
  },

  // Session settings
  sessionDurationMs: 86400000 * 30,  // 30 days
  deviceTrustDurationMs: 86400000 * 90,  // 90 days

  // Storage
  storage: 'sqlite',
  dbPath: './identity.db',
});

Get User Identity

const user = await identity.getUser(userId);

console.log(`ID: ${user.id}`);
console.log(`Name: ${user.displayName}`);
console.log(`Email: ${user.email}`);
console.log(`Trust level: ${user.trustLevel}`);
console.log(`Created: ${user.createdAt}`);

Link OAuth Provider

// Generate OAuth URL
const authUrl = identity.getOAuthUrl('google', {
  redirectUri: 'https://your-domain.com/auth/callback',
  state: 'random-state-string',
  scopes: ['email', 'profile'],
});

// Handle callback
const result = await identity.handleOAuthCallback('google', {
  code: 'oauth-code-from-callback',
  state: 'random-state-string',
});

console.log(`Linked: ${result.provider}`);
console.log(`Email: ${result.email}`);

List Linked Providers

const providers = await identity.getLinkedProviders(userId);

for (const provider of providers) {
  console.log(`${provider.name}: ${provider.email}`);
  console.log(`  Linked: ${provider.linkedAt}`);
  console.log(`  Last used: ${provider.lastUsed}`);
}

Unlink Provider

await identity.unlinkProvider(userId, 'google');

Device Management

// List devices
const devices = await identity.getDevices(userId);

for (const device of devices) {
  console.log(`${device.id}: ${device.name || 'Unknown'}`);
  console.log(`  Type: ${device.type}`);  // 'desktop' | 'mobile' | 'tablet'
  console.log(`  Browser: ${device.browser}`);
  console.log(`  OS: ${device.os}`);
  console.log(`  Last seen: ${device.lastSeen}`);
  console.log(`  Current: ${device.isCurrent}`);
}

// Name device
await identity.nameDevice(userId, deviceId, 'Work Laptop');

// Revoke device
await identity.revokeDevice(userId, deviceId);

// Revoke all except current
await identity.revokeAllDevices(userId, { exceptCurrent: true });

Session Management

// List active sessions
const sessions = await identity.getSessions(userId);

for (const session of sessions) {
  console.log(`${session.id}: ${session.device}`);
  console.log(`  Started: ${session.startedAt}`);
  console.log(`  Last active: ${session.lastActive}`);
  console.log(`  IP: ${session.ip}`);
}

// End session
await identity.endSession(sessionId);

// End all sessions
await identity.endAllSessions(userId);

Trust Level

// Get trust level
const trust = await identity.getTrustLevel(userId);
console.log(`Trust: ${trust}`);  // 'owner' | 'paired' | 'stranger'

// Set trust level (admin only)
await identity.setTrustLevel(userId, 'paired');

---

Trust Levels

LevelAccess
ownerFull admin access
pairedStandard user access
strangerNo access (must pair)

---

OAuth Providers

ProviderScopes
Googleemail, profile
GitHubuser:email
Discordidentify, email
Twitterusers.read

---

Device Types

TypeDetection
desktopWindows, macOS, Linux
mobileiOS, Android
tabletiPad, Android tablet
unknownUnrecognized UA

---

Best Practices

1. Link multiple providers — Backup auth methods 2. Review devices regularly — Revoke unused ones 3. Name your devices — Easier to identify 4. Check sessions — Monitor for suspicious access 5. Use strong auth — OAuth over passwords

Related skills

Securityappsecsecrets

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.