data-store

A controlled interface for reading and changing durable application data without writing provider-specific database queries. It can work with configured storage adapters such as SQLite or Redis.

In plain words
What is it for?
Use it when skills need to read or write persistent facts for message boards, CRMs, support tools, or business operations.
Why use it?
It keeps business logic separate from the storage system and avoids invented queries or exposed provider credentials. Each operation can also record details such as authorization and idempotency, meaning repeated requests can be handled safely.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/runxhq/runx/data-store
Any agent
npx skills add runxhq/runx --skill data-store
Clone the repo
git clone --depth 1 https://github.com/runxhq/runx

Made for: Claude Code, Codex.

Per session 26 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,751 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00026 $0.02751
Opus 5 $0.00013 $0.01375
Sonnet 5 $0.00005 $0.00550
Haiku 4.5 $0.00003 $0.00275

Measured 3d ago against content hash f5c9a034fd90, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

data-store scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

The scan reads SKILL.md. This mod also ships 3 executable files (tools/data/redis/canonical-json.mjs, tools/data/redis/redis.mjs, tools/data/redis/run.mjs), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/data-store/SKILL.md · 282 lines

How it starts

The opening of the file, as written. The whole thing — 282 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Data Store

Operate durable event state through Runx's typed data operations. This skill gives an agent enough context to append, read, and project state without learning provider secrets, inventing queries, or depending on one storage backend.

Runx ships native SQLite and an external Redis adapter today. Other providers can implement the same exact operation contract. The boundary is stable: a declared data source exposes typed operations; the graph supplies bounded parameters; runtime configuration selects storage; and the receipt records the resource, authority, idempotency, version, digest, and redaction evidence.

Adapter selection

The operator chooses a data source at run time. The skill receives data_source_ref and operation inputs; project or hosted configuration binds that ref to the concrete adapter. A local development ref might be local://runx-data-store/dev-board. A production ref might be tenant://acme/board bound to data.postgres, data.d1, data.redis, or a product-owned HTTP adapter.

Do not put provider logic in the domain skill. Messageboard, CRM, support, and business-ops skills ask for durable facts to be read or written; the data-source binding decides where those facts live. Switching a supported provider is a binding change, not a rewrite of the domain skill.

Each runner calls one exact native operation: data.append_event, data.read_events, data.read_projection, or data.list_stream_heads. Direct invocation defaults to append_and_readback, so a requested durable transition is not reported complete until the resulting projection has been read. Graph callers that already know the operation select the narrower named runner and reuse its typed result. Unbound local://... refs default to native durable SQLite under .runx/data/local-sources/, with one source-scoped database file per logical ref. There is no generic router tool, JSON fixture store, or provider selector in the public input schema.

Adapter preference is operator configuration, not model choice. To choose Redis, SQLite, or a hosted provider, bind the same data_source_ref through RUNX_DATA_SOURCES or .runx/data-sources.json; do not add provider branches to the domain skill.

Read the full file on GitHub · 282 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 282 lines · 26 tokens per session scan A f5c9a034fd90

Subscribe to this mod's changes

data-store is a skill published in the GitHub repository runxhq/runx (84 stars, last pushed 3d ago), licensed Apache-2.0. It adds 26 tokens to every session and 2,751 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

query

Query the Semantica knowledge graph using SPARQL, Cypher, keyword search, and structured graph query patterns.

semantica-agi/semantica · 26 tokens

policy

Define and enforce policies, access controls, and compliance rules over Semantica knowledge graphs.

semantica-agi/semantica · 20 tokens

infra-audit

Reads docker-compose, env files, ORM configs, and connection strings to map current infrastructure. Flags missing layers (cache, queue, analytics) based on observed access patterns. Outputs a structured infrastructure manifest.

SethGammon/Citadel · 44 tokens

beevibe-team-mesh-negotiation

Multi-round negotiation protocol — covers both initiator and peer roles. Use when about to call negotiate(), when receiving a intent block as a peer, or when receiving an 'escalated' sentinel from a blocked respondnegotiate. Covers proposal crafting, counter-strategy, deadlock detection, when to accept early…

beevibe-ai/beevibe · 112 tokens

beevibe-pre-task-setup

Cold-start git workspace setup for a fresh beevibe task. Use at the start of a session whose intent has a block but NO or block — i.e. the first dispatch of this task. Checks for an existing repo clone, pulls the base branch if present (clone if missing), prunes any per-task worktrees from earlier tasks whose work has…

beevibe-ai/beevibe · 198 tokens

beevibe-use-repo

You are the child agent inside a fresh Docker sandbox. Borrow the given GitHub repo, produce a real artifact for the goal, and export it. Do not review the repo. The proof is that it works.

beevibe-ai/beevibe · 50 tokens