/credentials
Secure credential management for trading platforms
$ npx -y skills add alsk1992/CloddsBot --skill credentials --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition โ
- You can call itInvoke it directly when you want it.
- Slash command
/credentials
Context preview
The summary Claude sees to decide when to auto-load this skill.
Secure credential management for trading platforms
SKILL.md
credentials.SKILL.mdname: credentials
description: "Secure credential management for trading platforms"
emoji: "๐"
Credentials - Complete API Reference
Securely store and manage API credentials for trading platforms with AES-256-GCM encryption.
---
Chat Commands
Add Credentials
/creds add polymarket Interactive setup
/creds add kalshi --key abc --secret xyz Direct setup
/creds add binance Add Binance API
/creds add hyperliquid Add wallet key
View Credentials
/creds list List configured platforms
/creds status Encryption system status
/creds test polymarket Test API connection
/creds check polymarket Verify credentials work
Remove Credentials
/creds remove polymarket Remove platform creds
/creds clear Clear all (careful!)
Auth Status
/auth status Overall auth status
/auth refresh kalshi Refresh tokens
/auth cooldown View cooldown status
---
TypeScript API Reference
Create Credentials Manager
import { createCredentialsManager } from 'clodds/credentials';
const creds = createCredentialsManager({
// Encryption key (required)
encryptionKey: process.env.CREDENTIALS_KEY,
// Storage backend
storage: 'sqlite', // 'sqlite' | 'postgres'
dbPath: './credentials.db',
// Cooldown settings
cooldownMinutes: 15,
maxFailures: 3,
});Set Credentials
// Polymarket (API + signing key)
await creds.setCredentials({
userId: 'user-123',
platform: 'polymarket',
credentials: {
apiKey: 'pk_...',
apiSecret: 'sk_...',
privateKey: '0x...', // For order signing
funderAddress: '0x...',
},
});
// Kalshi (API key)
await creds.setCredentials({
userId: 'user-123',
platform: 'kalshi',
credentials: {
email: 'user@example.com',
apiKey: 'key_...',
},
});
// Binance Futures
await creds.setCredentials({
userId: 'user-123',
platform: 'binance',
credentials: {
apiKey: 'abc...',
apiSecret: 'xyz...',
},
});
// Hyperliquid (wallet)
await creds.setCredentials({
userId: 'user-123',
platform: 'hyperliquid',
credentials: {
privateKey: '0x...',
walletAddress: '0x...',
},
});Get Credentials
// Get for specific platform
const polymarketCreds = await creds.getCredentials({
userId: 'user-123',
platform: 'polymarket',
});
if (polymarketCreds) {
console.log(`API Key: ${polymarketCreds.apiKey}`);
// Credentials are decrypted on retrieval
}
// List user's configured platforms
const platforms = await creds.listUserPlatforms('user-123');
console.log(`Configured: ${platforms.join(', ')}`);Delete Credentials
// Remove single platform
await creds.deleteCredentials({
userId: 'user-123',
platform: 'kalshi',
});
// Remove all for user
await creds.deleteAllCredentials('user-123');Test Credentials
// Test API connection
const result = await creds.testCredentials({
userId: 'user-123',
platform: 'polymarket',
});
if (result.success) {
console.log(`โ Connected to ${result.platform}`);
console.log(` Balance: $${result.balance}`);
} else {
console.log(`โ Failed: ${result.error}`);
}Cooldown Management
// Mark failed auth attempt
await creds.markFailure({
userId: 'user-123',
platform: 'kalshi',
error: 'Invalid API key',
});
// Check if in cooldown
const inCooldown = await creds.isInCooldown({
userId: 'user-123',
platform: 'kalshi',
});
if (inCooldown) {
const remaining = await creds.getCooldownRemaining({
userId: 'user-123',
platform: 'kalshi',
});
console.log(`Cooldown: ${remaining} minutes remaining`);
}
// Mark successful auth (resets failures)
await creds.markSuccess({
userId: 'user-123',
platform: 'kalshi',
});Build Trading Context
// Get ready-to-use trading context
const context = await creds.buildTradingContext({
userId: 'user-123',
platform: 'polymarket',
});
// Context includes authenticated client
await context.client.getBalance();
await context.client.placeOrder({ ... });---
Supported Platforms
| Platform | Credentials Required | |----------|---------------------| | **Polymarket** | API key, secret, private key, funder address | | **Kalshi** | Email, API key | | **Betfair** | App key, session token | | **Smarkets** | API key | | **Binance** | API key, secret | | **Bybit** | API key, secret | | **Hyperliquid** | Private key, wallet address | | **MEXC** | API key, secret |
---
Security Features
| Feature | Description | |---------|-------------| | **AES-256-GCM** | Military-grade encryption at rest | | **Per-user keys** | Isolated credential storage | | **Cooldown** | Rate limits on failed attempts | | **No logging** | Secrets never logged | | **Memory wipe** | Credentials cleared from memory after use |
---
Environment Variables
# Required encryption key (generate with: openssl rand -hex 32)
CREDENTIALS_KEY=your-64-char-hex-key
# Optional: per-platform keys
POLYMARKET_API_KEY=pk_...
POLYMARKET_API_SECRET=sk_...
POLYMARKET_PRIVATE_KEY=0x...
KALSHI_EMAIL=user@example.com
KALSHI_API_KEY=key_...
---
Best Practices
1. **Strong encryption key** โ Use `openssl rand -hex 32` 2. **Rotate keys regularly** โ Update API keys periodically 3. **Test after adding** โ Always verify credentials work 4. **Minimal permissions** โ Use read-only keys when possible 5. **Backup securely** โ Keep encrypted backups offline
Read more
name: credentials description: "Secure credential management for trading platforms" emoji: "๐"
Credentials - Complete API Reference
Securely store and manage API credentials for trading platforms with AES-256-GCM encryption.
---
Chat Commands
Add Credentials
/creds add polymarket Interactive setup /creds add kalshi --key abc --secret xyz Direct setup /creds add binance Add Binance API /creds add hyperliquid Add wallet key
View Credentials
/creds list List configured platforms /creds status Encryption system status /creds test polymarket Test API connection /creds check polymarket Verify credentials work
Remove Credentials
/creds remove polymarket Remove platform creds /creds clear Clear all (careful!)
Auth Status
/auth status Overall auth status /auth refresh kalshi Refresh tokens /auth cooldown View cooldown status
---
TypeScript API Reference
Create Credentials Manager
import { createCredentialsManager } from 'clodds/credentials';
const creds = createCredentialsManager({
// Encryption key (required)
encryptionKey: process.env.CREDENTIALS_KEY,
// Storage backend
storage: 'sqlite', // 'sqlite' | 'postgres'
dbPath: './credentials.db',
// Cooldown settings
cooldownMinutes: 15,
maxFailures: 3,
});Set Credentials
// Polymarket (API + signing key)
await creds.setCredentials({
userId: 'user-123',
platform: 'polymarket',
credentials: {
apiKey: 'pk_...',
apiSecret: 'sk_...',
privateKey: '0x...', // For order signing
funderAddress: '0x...',
},
});
// Kalshi (API key)
await creds.setCredentials({
userId: 'user-123',
platform: 'kalshi',
credentials: {
email: 'user@example.com',
apiKey: 'key_...',
},
});
// Binance Futures
await creds.setCredentials({
userId: 'user-123',
platform: 'binance',
credentials: {
apiKey: 'abc...',
apiSecret: 'xyz...',
},
});
// Hyperliquid (wallet)
await creds.setCredentials({
userId: 'user-123',
platform: 'hyperliquid',
credentials: {
privateKey: '0x...',
walletAddress: '0x...',
},
});Get Credentials
// Get for specific platform
const polymarketCreds = await creds.getCredentials({
userId: 'user-123',
platform: 'polymarket',
});
if (polymarketCreds) {
console.log(`API Key: ${polymarketCreds.apiKey}`);
// Credentials are decrypted on retrieval
}
// List user's configured platforms
const platforms = await creds.listUserPlatforms('user-123');
console.log(`Configured: ${platforms.join(', ')}`);Delete Credentials
// Remove single platform
await creds.deleteCredentials({
userId: 'user-123',
platform: 'kalshi',
});
// Remove all for user
await creds.deleteAllCredentials('user-123');Test Credentials
// Test API connection
const result = await creds.testCredentials({
userId: 'user-123',
platform: 'polymarket',
});
if (result.success) {
console.log(`โ Connected to ${result.platform}`);
console.log(` Balance: $${result.balance}`);
} else {
console.log(`โ Failed: ${result.error}`);
}Cooldown Management
// Mark failed auth attempt
await creds.markFailure({
userId: 'user-123',
platform: 'kalshi',
error: 'Invalid API key',
});
// Check if in cooldown
const inCooldown = await creds.isInCooldown({
userId: 'user-123',
platform: 'kalshi',
});
if (inCooldown) {
const remaining = await creds.getCooldownRemaining({
userId: 'user-123',
platform: 'kalshi',
});
console.log(`Cooldown: ${remaining} minutes remaining`);
}
// Mark successful auth (resets failures)
await creds.markSuccess({
userId: 'user-123',
platform: 'kalshi',
});Build Trading Context
// Get ready-to-use trading context
const context = await creds.buildTradingContext({
userId: 'user-123',
platform: 'polymarket',
});
// Context includes authenticated client
await context.client.getBalance();
await context.client.placeOrder({ ... });---
Supported Platforms
| Platform | Credentials Required | |----------|---------------------| | **Polymarket** | API key, secret, private key, funder address | | **Kalshi** | Email, API key | | **Betfair** | App key, session token | | **Smarkets** | API key | | **Binance** | API key, secret | | **Bybit** | API key, secret | | **Hyperliquid** | Private key, wallet address | | **MEXC** | API key, secret |
---
Security Features
| Feature | Description | |---------|-------------| | **AES-256-GCM** | Military-grade encryption at rest | | **Per-user keys** | Isolated credential storage | | **Cooldown** | Rate limits on failed attempts | | **No logging** | Secrets never logged | | **Memory wipe** | Credentials cleared from memory after use |
---
Environment Variables
# Required encryption key (generate with: openssl rand -hex 32) CREDENTIALS_KEY=your-64-char-hex-key # Optional: per-platform keys POLYMARKET_API_KEY=pk_... POLYMARKET_API_SECRET=sk_... POLYMARKET_PRIVATE_KEY=0x... KALSHI_EMAIL=user@example.com KALSHI_API_KEY=key_...
---
Best Practices
1. **Strong encryption key** โ Use `openssl rand -hex 32` 2. **Rotate keys regularly** โ Update API keys periodically 3. **Test after adding** โ Always verify credentials work 4. **Minimal permissions** โ Use read-only keys when possible 5. **Backup securely** โ Keep encrypted backups offline
Open Source AI trading agent that operates autonomously across 1000+ markets - Polymarket, Kalshi, Binance, Hyperliquid, Solana DEXs, 5 EVM chains. Scans for edge, executes instantly, manages risk while you sleep. Agent commerce protocol for machine-to-machine payments. Self-hosted. Built on Claude.
Repo: alsk1992/CloddsBot
Other skills on cloddsbot.
- /acp
Enable agent-to-agent commerce with on-chain escrow, cryptographic agreements, and service discovery.
Open skill - /agentbets
AgentBets - AI-native prediction markets on Solana
Open skill - /ai-strategy
AI Strategy - natural language to trades
Open skill - /alerts
Create and manage price alerts for prediction markets
Open skill - /analytics
Performance attribution, trade analytics, and strategy optimization
Open skill - /arbitrage
Automated cross-platform arbitrage detection and monitoring
Open skill

