<< All versions
Skill v1.0.1
currentAutomated scan96/100alsk1992/cloddsbot/identity
1 files
──Details
PublishedSeptember 9, 2026 at 01:15 AM
Content Hashsha256:52ed58af0990f09b...
Git SHA715fd4a6c06b
Bump Typepatch
──Files
Files (1 file, 5.3 KB)
SKILL.md5.3 KBactive
SKILL.md · 230 lines · 5.3 KB
version: "1.0.1" name: identity description: "User identity, OAuth connections, and device management" emoji: "🪪"
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
typescript
import { createIdentityService } from 'clodds/identity';const identity = createIdentityService({// OAuth providersproviders: {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 settingssessionDurationMs: 86400000 * 30, // 30 daysdeviceTrustDurationMs: 86400000 * 90, // 90 days// Storagestorage: 'sqlite',dbPath: './identity.db',});
Get User Identity
typescript
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
typescript
// Generate OAuth URLconst authUrl = identity.getOAuthUrl('google', {redirectUri: 'https://your-domain.com/auth/callback',state: 'random-state-string',scopes: ['email', 'profile'],});// Handle callbackconst 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
typescript
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
typescript
await identity.unlinkProvider(userId, 'google');
Device Management
typescript
// List devicesconst 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 deviceawait identity.nameDevice(userId, deviceId, 'Work Laptop');// Revoke deviceawait identity.revokeDevice(userId, deviceId);// Revoke all except currentawait identity.revokeAllDevices(userId, { exceptCurrent: true });
Session Management
typescript
// List active sessionsconst 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 sessionawait identity.endSession(sessionId);// End all sessionsawait identity.endAllSessions(userId);
Trust Level
typescript
// Get trust levelconst trust = await identity.getTrustLevel(userId);console.log(`Trust: ${trust}`); // 'owner' | 'paired' | 'stranger'// Set trust level (admin only)await identity.setTrustLevel(userId, 'paired');
Trust Levels
| Level | Access | |
|---|---|---|
| owner | Full admin access | |
| paired | Standard user access | |
| stranger | No access (must pair) |
OAuth Providers
| Provider | Scopes | |
|---|---|---|
| email, profile | ||
| GitHub | user:email | |
| Discord | identify, email | |
| users.read |
Device Types
| Type | Detection | |
|---|---|---|
desktop | Windows, macOS, Linux | |
mobile | iOS, Android | |
tablet | iPad, Android tablet | |
unknown | Unrecognized UA |
Best Practices
- Link multiple providers — Backup auth methods
- Review devices regularly — Revoke unused ones
- Name your devices — Easier to identify
- Check sessions — Monitor for suspicious access
- Use strong auth — OAuth over passwords