/SKILL.md
Use when building autonomous agents that need runtime self-monitoring, context pressure detection, token budget management, session memory, or halt/continue decisions. Use when agents drift, get verbose, exhaust tokens, or need cognitive telemetry.
npx skillsauth add alexcarney460-hue/skynetx-skill skynetxInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Cognitive runtime API for autonomous agents. Provides real-time self-monitoring so agents can detect drift, manage token budgets, compress context, store session memory, and make halt/continue decisions.
Base URL: https://skynetx.io/api/v1
Auth: Authorization: Bearer sk_<your_key>
Signup: skynetx.io (Free tier: 100 credits/mo, 1 credit per API call)
# Get your API key at skynetx.io, then:
curl https://skynetx.io/api/v1/drift \
-H "Authorization: Bearer sk_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"memoryUsedPercent":60,"tokenBurnRate":45,"contextDriftPercent":30,"sessionAgeMinutes":20}'
| Endpoint | Purpose | Cost |
|----------|---------|------|
| POST /drift | System state health score | 1 credit |
| POST /pressure | Session survivability | 1 credit |
| POST /verbosity | Output inflation detection | 1 credit |
| POST /half-life | Stability decay prediction | 1 credit |
| POST /circuit-breaker | Composite halt/continue | FREE |
| POST /compress | Conversation compression | 1 credit |
| POST /memory/store | Save session data | 1 credit |
| GET /memory/retrieve | Load session data | 1 credit |
| DELETE /memory/clear | Clear session data | FREE |
| GET /usage | Check credit balance | FREE |
The recommended pattern for agent self-monitoring:
// 1. Check drift periodically during long sessions
const drift = await fetch('https://skynetx.io/api/v1/drift', {
method: 'POST',
headers: {
'Authorization': `Bearer ${SKYNET_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
memoryUsedPercent: 65,
tokenBurnRate: 50,
contextDriftPercent: 25,
sessionAgeMinutes: 45,
}),
}).then(r => r.json());
// 2. If drifting, use circuit breaker to decide halt/continue
if (drift.status !== 'OPTIMAL') {
const decision = await fetch('https://skynetx.io/api/v1/circuit-breaker', {
method: 'POST',
headers: {
'Authorization': `Bearer ${SKYNET_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
drift: { memoryUsedPercent: 65, tokenBurnRate: 50, contextDriftPercent: 25, sessionAgeMinutes: 45 },
thresholds: { driftScore: 0.7, pressureLevel: 'HIGH' },
}),
}).then(r => r.json());
if (decision.halt) {
// Save state and stop
await fetch('https://skynetx.io/api/v1/memory/store', {
method: 'POST',
headers: {
'Authorization': `Bearer ${SKYNET_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
agent_id: 'my-agent',
session_id: 'session-123',
data: { progress: currentState, reason: decision.recommendation },
}),
});
return; // halt
}
}
// 3. If context is bloated, compress before continuing
const compressed = await fetch('https://skynetx.io/api/v1/compress', {
method: 'POST',
headers: {
'Authorization': `Bearer ${SKYNET_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
messages: conversationHistory,
mode: 'compress',
}),
}).then(r => r.json());
// compressed.savings_percent tells you how much was saved
Full API reference with algorithms, all parameters, and response shapes: see api-reference.md in this skill directory.
Input: memoryUsedPercent, tokenBurnRate, contextDriftPercent, sessionAgeMinutes
Output: score (0-1), status: OPTIMAL | WARNING | AT_RISK | CRITICAL
Algorithm: Weighted sum — memory 40%, burn rate 30%, drift 30%
Input: memoryUsedPercent, tokenBurnRatePerMin, contextDriftPercent, sessionAgeSeconds, tokenBudgetTotal, tokenBudgetUsed
Output: level: LOW | MODERATE | HIGH | CRITICAL
Algorithm: Threshold-based on memory and drift percentages
Input: recentOutputLengths (array), expectedBaseline, tokenBudgetUsed, tokenBudgetTotal
Output: level: OPTIMAL | DRIFTING | EXCESSIVE, driftPercent
Algorithm: Average output vs baseline — >15% = DRIFTING, >30% = EXCESSIVE
Input: sessionAgeMinutes, memoryPressure, contextDrift, tokenRemaining, tokenTotal, errorCount
Output: estimatedHalfLifeMinutes, stability: STABLE | DECAYING | FRAGILE
Algorithm: Token exhaustion time adjusted by decay rate from memory+drift pressure
Input: Any combination of the 4 metrics + custom thresholds
Output: halt (boolean), severity, signals, reasons, recommendation
Defaults: drift > 0.7, pressure >= HIGH, verbosity > 30%, half-life < 10min
Two modes:
compress (fast) — Deduplicates, strips filler phrases, collapses whitespace. For conversations >20 messages, keeps first 3 + last 15.truncate (deep) — Scores messages by importance (system > recent > code > decisions), keeps top-scored until token budget met.POST /memory/store — { agent_id, session_id, data, metadata? } — max 500KB, 7-day TTLGET /memory/retrieve?agent_id=x&session_id=y — omit session_id to list allDELETE /memory/clear?agent_id=x&session_id=y — omit session_id to clear all_credits field with remaining balanceinvoice.paid webhook)| Tier | Price | Credits/mo | Rate Limit | |------|-------|------------|------------| | Free | $0 | 100 | 30/min | | Starter | $9/mo | 5,000 | 60/min | | Pro | $29/mo | 25,000 | 200/min | | Scale | $99/mo | 150,000 | 500/min |
POST /subscribe — create a Stripe checkout session for a subscriptionPOST /subscribe/manage — open the Stripe Customer Portal to change/cancel planFor users who prefer crypto or don't have a card, one-time top-ups are available:
| Pack | Credits | Price | |------|---------|-------| | Small | 5,000 | $12 | | Medium | 25,000 | $40 | | Large | 150,000 | $130 |
POST /credits/purchase → get payment address, POST /credits/confirm → submit tx signatureAll errors return JSON with error field:
{ "error": "No credits remaining", "credits": 0 }
| Code | Meaning | |------|---------| | 400 | Missing or invalid parameters | | 401 | Bad or revoked API key | | 413 | Memory payload > 500KB | | 429 | Rate limited or no credits | | 503 | Service unavailable |
Content-Type: application/json header on POST requestssessionAge instead of sessionAgeMinutes (query params use sessionAge, POST body uses sessionAgeMinutes)recentOutputLengths as a string instead of an array in POST body (use comma-separated in query string)_credits in responses — you'll get 429 when they hit 0development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.