/db-redis
Inspect Redis instances configured in .env (DB_REDIS_N_*). Use when the user asks to read keys, check cache state, list keys by pattern, or query info/dbsize on a Redis server. Picks connection by label (e.g. 'cache-dev', 'queue-prod') or numeric index. Read-only in v1 — no
$ npx -y skills add evolution-foundation/evo-nexus --skill db-redis --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
/db-redis
Context preview
The summary Claude sees to decide when to auto-load this skill.
Inspect Redis instances configured in .env (DB_REDIS_N_*). Use when the user asks to read keys, check cache state, list keys by pattern, or query info/dbsize on a Redis server. Picks connection by label (e.g. 'cache-dev', 'queue-prod') or numeric index. Read-only in v1 — no
SKILL.md
db-redis.SKILL.mdname: db-redis
description: "Inspect Redis instances configured in .env (DB_REDIS_N_*). Use when the user asks to read keys, check cache state, list keys by pattern, or query info/dbsize on a Redis server. Picks connection by label (e.g. 'cache-dev', 'queue-prod') or numeric index. Read-only in v1 — no SET/DEL/FLUSH exposed."
metadata:
openclaw:
requires:
env:
- DB_REDIS_1_LABEL
bins:
- python3
primaryEnv: DB_REDIS_1_LABEL
files:
- "scripts/*"
- "references/*"db-redis
Inspect Redis instances declared in `.env`. Same numbered block pattern as every other `db-*` and `SOCIAL_*_N_*` integration.
Setup — one-time, per instance
Add a block to `.env` (gitignored):
DB_REDIS_1_LABEL=cache-dev
DB_REDIS_1_HOST=redis.dev.internal
DB_REDIS_1_PORT=6379
DB_REDIS_1_DB=0 # numeric DB index (default 0)
# DB_REDIS_1_USERNAME= # optional (Redis 6+ ACL)
DB_REDIS_1_PASSWORD=...
# DB_REDIS_1_TLS=false # default false
# DB_REDIS_1_ALLOW_WRITE=false # default false (no write verbs in v1 anyway)
# DB_REDIS_1_QUERY_TIMEOUT=30
# DB_REDIS_1_MAX_ROWS=1000
Full URL alternative (wins when both are set):
DB_REDIS_2_LABEL=queue-prod
DB_REDIS_2_URL=rediss://user:pw@host:6380/0
`LABEL` is always required.
Usage
All commands output JSON on stdout (safe to pipe). Errors go to stderr.
List configured connections
python3 .claude/skills/db-redis/scripts/db_client.py accounts
Health-check (PING, reports RTT)
python3 .claude/skills/db-redis/scripts/db_client.py test cache-dev
List keys (production-safe — uses SCAN, never KEYS *)
# All keys (up to MAX_ROWS)
python3 .claude/skills/db-redis/scripts/db_client.py keys cache-dev
# Pattern + limit
python3 .claude/skills/db-redis/scripts/db_client.py keys cache-dev 'user:*' 50
Read a single key (auto-detects type)
python3 .claude/skills/db-redis/scripts/db_client.py get cache-dev user:123
Handles `string`, `list`, `set`, `hash`, `zset`, `stream` automatically. Includes TTL in seconds (null if persistent).
Server info
# All sections
python3 .claude/skills/db-redis/scripts/db_client.py info cache-dev
# Specific section (memory, clients, replication, stats, persistence, ...)
python3 .claude/skills/db-redis/scripts/db_client.py info cache-dev memory
Database size (number of keys)
python3 .claude/skills/db-redis/scripts/db_client.py dbsize cache-dev
Output shape
`get` on a string key:
{
"ok": true,
"label": "cache-dev",
"key": "user:123",
"type": "string",
"value": "alice",
"ttl_seconds": 3600
}`keys`:
{
"ok": true,
"query_id": "uuid-v4",
"label": "cache-dev",
"pattern": "user:*",
"keys": ["user:1", "user:2", "user:3"],
"row_count": 3,
"truncated": false,
"execution_time_ms": 8
}Guardrails
- **Read-only verbs only in v1** — GET, SCAN (via `keys`), TYPE, TTL, LRANGE/SMEMBERS/HGETALL/ZRANGE/XRANGE (via `get`), INFO, DBSIZE, PING. No SET/DEL/FLUSHDB/FLUSHALL exposed. `ALLOW_WRITE` reserved for future write commands.
- **SCAN instead of KEYS** — `keys` uses `scan_iter` with `count=200` to avoid blocking the server on production instances.
- **Result cap** — `keys` stops at `MAX_ROWS`. Collection readers (LRANGE/SMEMBERS/ZRANGE/XRANGE inside `get`) also cap at `MAX_ROWS`.
- **Decoding** — responses decoded as UTF-8 (`decode_responses=True`). Raw bytes not supported in v1; if you need binary values, store them base64-encoded or ask for a follow-up.
Error codes
- `no_connections`, `not_found`, `ambiguous`, `config_error`, `usage` — same as other `db-*` skills
- `driver_missing` — `redis` (python) not installed
- `connection_failed` — network, auth, TLS, or timeout
- `invalid_args` — bad limit argument
Workflow
1. `accounts` to confirm the label. 2. `dbsize` or `info memory` for a quick overview before listing. 3. `keys <label> '<pattern>'` to find what you're looking for — always use a narrow pattern on prod instances. 4. `get <label> <key>` to read individual values. TTL is included so you know if the value is ephemeral.
Dependencies
- Python 3.10+
- `redis` (python client) — not pre-installed; `uv pip install redis` on first use. Works against Redis 5+, Redis Stack, Valkey, and managed services (Upstash, Redis Cloud, AWS ElastiCache, Google Memorystore).
Deep-dive references
Redis isn't covered by PlanetScale's `database-skills`. Authoritative sources:
- [Redis Commands](https://redis.io/commands/)
- [SCAN vs KEYS](https://redis.io/docs/latest/commands/scan/) — why `keys` uses SCAN
- [ACL (Access Control List)](https://redis.io/docs/latest/operate/oss_and_stack/management/security/acl/) — Redis 6+ username/password
- [Memory Optimization](https://redis.io/docs/latest/operate/oss_and_stack/management/optimization/memory-optimization/)
- [Persistence (RDB vs AOF)](https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/)
Read more
name: db-redis
description: "Inspect Redis instances configured in .env (DB_REDIS_N_*). Use when the user asks to read keys, check cache state, list keys by pattern, or query info/dbsize on a Redis server. Picks connection by label (e.g. 'cache-dev', 'queue-prod') or numeric index. Read-only in v1 — no SET/DEL/FLUSH exposed."
metadata:
openclaw:
requires:
env:
- DB_REDIS_1_LABEL
bins:
- python3
primaryEnv: DB_REDIS_1_LABEL
files:
- "scripts/*"
- "references/*"db-redis
Inspect Redis instances declared in `.env`. Same numbered block pattern as every other `db-*` and `SOCIAL_*_N_*` integration.
Setup — one-time, per instance
Add a block to `.env` (gitignored):
DB_REDIS_1_LABEL=cache-dev DB_REDIS_1_HOST=redis.dev.internal DB_REDIS_1_PORT=6379 DB_REDIS_1_DB=0 # numeric DB index (default 0) # DB_REDIS_1_USERNAME= # optional (Redis 6+ ACL) DB_REDIS_1_PASSWORD=... # DB_REDIS_1_TLS=false # default false # DB_REDIS_1_ALLOW_WRITE=false # default false (no write verbs in v1 anyway) # DB_REDIS_1_QUERY_TIMEOUT=30 # DB_REDIS_1_MAX_ROWS=1000
Full URL alternative (wins when both are set):
DB_REDIS_2_LABEL=queue-prod DB_REDIS_2_URL=rediss://user:pw@host:6380/0
`LABEL` is always required.
Usage
All commands output JSON on stdout (safe to pipe). Errors go to stderr.
List configured connections
python3 .claude/skills/db-redis/scripts/db_client.py accounts
Health-check (PING, reports RTT)
python3 .claude/skills/db-redis/scripts/db_client.py test cache-dev
List keys (production-safe — uses SCAN, never KEYS *)
# All keys (up to MAX_ROWS) python3 .claude/skills/db-redis/scripts/db_client.py keys cache-dev # Pattern + limit python3 .claude/skills/db-redis/scripts/db_client.py keys cache-dev 'user:*' 50
Read a single key (auto-detects type)
python3 .claude/skills/db-redis/scripts/db_client.py get cache-dev user:123
Handles `string`, `list`, `set`, `hash`, `zset`, `stream` automatically. Includes TTL in seconds (null if persistent).
Server info
# All sections python3 .claude/skills/db-redis/scripts/db_client.py info cache-dev # Specific section (memory, clients, replication, stats, persistence, ...) python3 .claude/skills/db-redis/scripts/db_client.py info cache-dev memory
Database size (number of keys)
python3 .claude/skills/db-redis/scripts/db_client.py dbsize cache-dev
Output shape
`get` on a string key:
{
"ok": true,
"label": "cache-dev",
"key": "user:123",
"type": "string",
"value": "alice",
"ttl_seconds": 3600
}`keys`:
{
"ok": true,
"query_id": "uuid-v4",
"label": "cache-dev",
"pattern": "user:*",
"keys": ["user:1", "user:2", "user:3"],
"row_count": 3,
"truncated": false,
"execution_time_ms": 8
}Guardrails
- **Read-only verbs only in v1** — GET, SCAN (via `keys`), TYPE, TTL, LRANGE/SMEMBERS/HGETALL/ZRANGE/XRANGE (via `get`), INFO, DBSIZE, PING. No SET/DEL/FLUSHDB/FLUSHALL exposed. `ALLOW_WRITE` reserved for future write commands.
- **SCAN instead of KEYS** — `keys` uses `scan_iter` with `count=200` to avoid blocking the server on production instances.
- **Result cap** — `keys` stops at `MAX_ROWS`. Collection readers (LRANGE/SMEMBERS/ZRANGE/XRANGE inside `get`) also cap at `MAX_ROWS`.
- **Decoding** — responses decoded as UTF-8 (`decode_responses=True`). Raw bytes not supported in v1; if you need binary values, store them base64-encoded or ask for a follow-up.
Error codes
- `no_connections`, `not_found`, `ambiguous`, `config_error`, `usage` — same as other `db-*` skills
- `driver_missing` — `redis` (python) not installed
- `connection_failed` — network, auth, TLS, or timeout
- `invalid_args` — bad limit argument
Workflow
1. `accounts` to confirm the label. 2. `dbsize` or `info memory` for a quick overview before listing. 3. `keys <label> '<pattern>'` to find what you're looking for — always use a narrow pattern on prod instances. 4. `get <label> <key>` to read individual values. TTL is included so you know if the value is ephemeral.
Dependencies
- Python 3.10+
- `redis` (python client) — not pre-installed; `uv pip install redis` on first use. Works against Redis 5+, Redis Stack, Valkey, and managed services (Upstash, Redis Cloud, AWS ElastiCache, Google Memorystore).
Deep-dive references
Redis isn't covered by PlanetScale's `database-skills`. Authoritative sources:
- [Redis Commands](https://redis.io/commands/)
- [SCAN vs KEYS](https://redis.io/docs/latest/commands/scan/) — why `keys` uses SCAN
- [ACL (Access Control List)](https://redis.io/docs/latest/operate/oss_and_stack/management/security/acl/) — Redis 6+ username/password
- [Memory Optimization](https://redis.io/docs/latest/operate/oss_and_stack/management/optimization/memory-optimization/)
- [Persistence (RDB vs AOF)](https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/)
Other skills on evo-nexus.
- /ai-image-creator
Generate PNG images using AI (multiple models via OpenRouter including Gemini, FLUX.2, Riverflow, SeedDream, GPT-5 Image, proxied through Cloudflare AI Gateway BYOK). Also analyze/describe existing images using multimodal AI vision. Use when user asks to "generate an image",
Open skill - /create-agent
Create a new custom agent for the workspace. Guides the user through defining agent name, domain, personality, skills, model, and memory folder. Use when the user says 'create an agent', 'new agent', 'add an agent', 'I need a custom agent', or wants to create a specialized agent
Open skill - /create-command
Create a new slash command for Claude Code. Guides the user through defining the command name, what it does, and generates the markdown file in .claude/commands/. Use when the user says 'create a command', 'new command', 'add a slash command', 'I want a shortcut for', or wants
Open skill - /create-goal
Create a Mission, Project, or Goal (Mission → Project → Goal → Task hierarchy) in EvoNexus. Guides the user through picking a mission, choosing or creating a project, defining a measurable goal with metric_type and target_value. Writes to the SQLite goals tables via POST
Open skill - /create-heartbeat
Create a new heartbeat (proactive agent scheduled with a decision prompt) for EvoNexus. Guides the user through picking an agent, setting interval, wake triggers, and the decision prompt that governs when the agent acts. Writes to config/heartbeats.yaml with pydantic validation.
Open skill - /create-integration
Create a new custom integration (API/service wrapper) for the workspace. Guides the user through defining the integration's slug, display name, description, category, and required env keys. Writes .claude/skills/custom-int-{slug}/SKILL.md via POST /api/integrations/custom. Use
Open skill

