data-store
Skill97 starsChanged 32 days agoApache-2.0View on GitHub
Read and append durable event state through the store connector's declared operations, not model-authored raw queries.
In this repository94 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- llms.txtllms.txt
- runxSkill
- adopt-skillSkill
- agencySkill
- answer-from-docsSkill
- attention-reviewSkill
- audit-receiptSkill
- brand-voiceSkill
- business-opsSkill
- chargeSkill
- chief-of-staffSkill
- cold-outreachSkill
- content-pipelineSkill
- contract-drafterSkill
- conversation-replySkill
- conversation-reviewSkill
- crm-cleanupSkill
- cve-auditSkill
- data-subject-requestSkill
- deep-researchSkill
- diagnose-skill-runSkill
- dispute-respondSkill
- ecosystem-briefSkill
- extractSkill
- ghostwriteSkill
- github-pr-commentSkill
- github-pr-reviewSkill
- github-syncSkill
- google-analyticsSkill
- google-calendarSkill
- google-search-consoleSkill
- governed-outboundSkill
- helpdeskSkill
- incident-commanderSkill
- issue-intakeSkill
- issue-to-prSkill
- issue-triageSkill
- knowledge-routerSkill
- lead-enrichmentSkill
- lead-qualifySkill
- least-privilegeSkill
- ledgerSkill
- list-hygiene-judgeSkill
- marketplace-invokeSkill
- meeting-followupSkill
- mock-chargeSkill
- mock-paySkill
- mock-refundSkill
- moltbookSkill
- n8n-handoffSkill
- nitrosendSkill
- nws-weather-forecastSkill
- open-meteo-weather-forecastSkill
- operator-inboxSkill
- ops-deskSkill
- organic-growthSkill
- policy-authorSkill
- postmortem-makerSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 89
All runners return runx.data.operation_result.v1:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Data Store
Operate durable event state through the store connector's typed operations. This skill gives an agent enough context to append, read and project state without learning storage credentials, inventing queries, or depending on one storage backend.
The store keeps append-only event streams with an expected version per append,
a rolling projection per stream, and stream heads by latest event. Where the
streams live is the workspace's store instance: the workspace store (SQLite
under .runx/store.sqlite) unless the operator confirmed another, in SQLite,
Postgres or Redis. The skill never names the backend, and every backend answers
with the same digests.
Runners
Each runner calls one store operation and returns its result as
data_operation_result:
append_event:store/events.append.read_events:store/events.read.read_projection:store/projection.read.list_stream_heads:store/heads.list.append_and_readback(the default): append, then read the projection, so a requested durable transition is not reported complete until its projection has been read.
Graph callers that already know the operation select the narrower runner and reuse its typed result.
What this skill does
- Reads bounded event pages, projections and stream-head pages.
- Appends state transitions with idempotency keys and expected versions.
- Produces receipt-bound evidence for the source, resource, operation, versions and digests.
- Keeps product semantics outside the data layer. Messageboards, CRMs, billing ledgers and support desks define their own events and reducers.
When to use this skill
- A graph needs durable state between turns, such as queue position, board state, sync cursor, review status, or approval inbox state.
- A skill must read a bounded slice of event state before deciding the next action.
- A workflow needs to append an auditable transition with optimistic concurrency.
When not to use this skill
- To let a model write SQL, Redis commands or migrations.
- To export broad data sets, secrets, raw PII or whole tables.
- To hide product decisions in storage. Domain skills still own state machines, acceptance criteria and business rules.
- To treat a projection as independent truth when the event stream or receipt chain is available and required for review.
- To bypass payment, send, deploy, moderation or human approval gates.
Procedure
- Identify the domain skill and transition first. The store is a carrier, not the policy owner.
- Name the logical source with
data_source_ref. Never put database URLs, credentials or queries in the skill input. - Select one runner. Direct writes use
append_and_readback; composed graphs select the exact runner. - For writes, pass the stream version you read as
expected_versionand a stableidempotency_keyfor the transition. The same call answers as an idempotent replay in any run; a stream at another version answersconflict. - Return the result with its versions, digests and stop conditions, so the receipt links the data effect to the transition that caused it.
Edge cases and stop conditions
conflict: the stream is not atexpected_version. Nothing was appended; read the stream again before deciding.- A store that cannot be reached fails the step with nothing appended.
- A write whose commit the store did not confirm is held for reconciliation by the kernel; the step never reports a write it cannot prove.
Output schema
All runners return runx.data.operation_result.v1:
{
"schema": "runx.data.operation_result.v1",
"data_source_ref": "local://example",
"provider": "store",
"operation": "events.append",
"resource": "board_events",
"aggregate_id": "posting-123",
"status": "committed",
"before_version": 0,
"after_version": 1,
"idempotency_key": "runx:sha256:...",
"event_ref": "board_events:posting-123:1",
"event_digest": "sha256:...",
"result_digest": "sha256:...",
"projection_digest": "sha256:...",
"projection": null,
"rows": [],
"events": [],
"redactions": [],
"stop_conditions": [],
"provider_evidence": { "backend": "sqlite" }
}idempotency_key is the key the store holds the event under, which the kernel
derives from the call.
An event's type is, in order: event.type, event.event_type,
event.effect_family + "." + event.operation, or event.operation, else
data.event. Domain skills that emit runx.effect.transition.v1 packets
include effect_family and operation on every event so projections say
board.accept or business_ops.route instead of data.event.
Worked example
A board skill decides that posting.claimed is allowed and emits a transition
packet. Its graph calls data-store with runner: append_event, resource
board_events, aggregate posting-123, expected version 2 and idempotency
key posting-123:claim:agent-9. The store appends the event only if the stream
is still at version 2. The receipt proves the decision, the append and the
new version. A later turn calls read_events or read_projection to resume.
Inputs
data_source_ref(required): the logical source inside the workspace's store.resource(required): the event resource or stream family.aggregate_id(required for stream operations): the stream key.event(required for appends): the domain event or transition packet.idempotency_key(required for appends): a stable key for the transition.expected_version(required for appends): the stream version the caller read.observed_at(optional for appends): an RFC 3339 commit time; the time of the append when omitted.limit(optional): events per page (at most 500) or heads per page (at most 100).after_version(optional forread_events): read the ascending page after this version; omit it to read the latest page.event_types(optional forlist_stream_heads): at most 20 exact latest event types.cursor(optional forlist_stream_heads): the opaque cursor the previous page returned.
Invocation example
runx skill data-store append_event \
-i data_source_ref=local://runx-data-store/dev-board \
-i resource=board_events \
-i aggregate_id=posting-123 \
--input-json expected_version=0 \
-i idempotency_key=posting-123:create:v1 \
--input-json event='{"type":"posting.created","payload":{"title":"verify a receipt link"}}' \
--jsonThe same command appends to Postgres or Redis once the operator confirms a store instance there:
runx connector use store --parameter url=redis://cache.internal:6379/0A store that needs a password takes it as the instance's credential:
printf '%s' "$BOARD_DB_PASSWORD" |
runx credential set store --credential password \
--parameter url=postgres://board@db.internal:5432/board --from-stdinDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

