Token导航 LogoToken导航TokenDH.com
研究检索执行命令github未标认证来源可访问许可证需确认审计通过

creationix-rx-data-storeCreationix Rx 数据存储

Agent Skill

用于辅助数据整理、表格处理、CSV/Excel 分析、指标计算和图表准备。它适合让 Agent 清洗字段、汇总数据、发现异常、生成统计口径或把分析结果转成可读说明。使用时需要确认数据来源、字段含义和时间范围,避免把样本数据当全量事实;涉及敏感数据、导出文件或批量写回时,应先确认权限和脱敏边界。

总安装

15,422

周安装

630

GitHub Stars

39

下载量

4,939
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:creationix-rx-data-store(Creationix Rx 数据存储)
来源仓库:https://github.com/aradotso/trending-skills
仓库路径:skills/creationix-rx-data-store
安装命令:
npx skills add https://github.com/aradotso/trending-skills --skill creationix-rx-data-store
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/aradotso/trending-skills --skill creationix-rx-data-store

简介

creationix-rx-data-store 提供嵌入式 JSON 数据存储与高效查询能力。

  • 支持 O(1) 数组访问与 O(log n) 键查找,自动去重与压缩编码。
  • 适用于高频读写与内存敏感的数据处理场景。
  • 需确认数据 schema 稳定性以避免运行时解析错误。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

RX Data Store

Skill by ara.so — Daily 2026 Skills collection.

RX is an embedded data store for JSON-shaped data. Encode once, then query the encoded document in place — no parsing, no object graph, no GC pressure. Think of it as *no-SQL SQLite*: unstructured data with database-style random access.

Key benefits:

  • O(1) array access, O(log n) object key lookup on encoded data
  • Automatic deduplication of values and shared schemas
  • Text-safe encoding (copy-paste friendly, no binary tooling needed)
  • Minimal heap allocations (~10 vs millions for JSON parsing)
  • ~18x compression on real deployment manifests (92 MB → 5.1 MB)

Installation

npm install @creationix/rx        # library
npm install -g @creationix/rx     # CLI (global)
npx @creationix/rx data.rx        # CLI (one-off)

Core API

String API (most common)

import { stringify, parse } from "@creationix/rx";

// Encode
const rx = stringify({ users: ["alice", "bob"], version: 3 });
// Returns a string — store it anywhere you'd store JSON text

// Decode (returns a read-only Proxy)
const data = parse(rx) as any;
data.users[0]         // "alice"
data.version          // 3
Object.keys(data)     // ["users", "version"]
JSON.stringify(data)  // works — full JS interop

Uint8Array API (performance-critical paths)

import { encode, open } from "@creationix/rx";

const buf = encode({ path: "/api/users", status: 200 });
const data = open(buf) as any;
data.path    // "/api/users"
data.status  // 200

Inspect API (lazy AST)

import { encode, inspect } from "@creationix/rx";

const buf = encode({ name: "alice", scores: [10, 20, 30] });
const root = inspect(buf);

root.tag          // ":"
root[0].tag       // "," (a string key)
root[0].value     // "name"
root.length       // 4 (key, value, key, value)

// Iterate children
for (const child of root) {
  console.log(child.tag, child.b64);
}

// Object helpers
for (const [key, val] of root.entries()) { /* ... */ }
const node = root.index("name");   // key lookup → node
const elem = root.index(2);        // array index → node

// Filtered key search (O(log n + m) on indexed objects)
for (const [key, val] of root.filteredKeys("/api/")) { /* ... */ }

Escape hatch to underlying buffer

import { handle } from "@creationix/rx";

const h = handle(data.nested);
// h.data: Uint8Array
// h.right: byte offset

Encoding Options

stringify(data, {
  // Add sorted indexes to containers with >= N entries (enables O(log n) lookup)
  // Use 0 for all containers, false to disable entirely
  indexes: 10,

  // External refs — shared dictionary of known values for cross-document dedup
  refs: { R: ["/api/users", "/api/teams"] },

  // Streaming — receive chunks as they're produced
  onChunk: (chunk: string, offset: number) => process.stdout.write(chunk),
});

encode(data, {
  indexes: 10,
  refs: { R: ["/api/users", "/api/teams"] },
  onChunk: (chunk: Uint8Array, offset: number) => { /* ... */ },
});

If the encoder used external refs, pass the same dictionary to the decoder:

const data = parse(payload, { refs: { R: ["/api/users", "/api/teams"] } });
const data = open(buf, { refs: { R: ["/api/users", "/api/teams"] } });

CLI

rx data.rx                         # pretty-print as tree (default on TTY)
rx data.rx -j                      # convert to JSON
rx data.json -r                    # convert to RX
cat data.rx | rx                   # read from stdin (auto-detect format)
rx data.rx -s key 0 sub            # select a sub-value: data["key"][0]["sub"]
rx data.rx -o out.json             # write to file
rx data.rx --ast                   # output encoding structure as JSON
rx data.rx -w                      # write converted file (.json↔.rx)

Full CLI flags:

FlagDescription
<file>Input file (format auto-detected)
-Read from stdin explicitly
-j, --jsonOutput as JSON
-r, --rexcOutput as RX
-t, --treeOutput as tree
-a, --astOutput encoding structure
-s, --select <seg>...Select a sub-value by path segments
-w, --writeWrite converted file
-o, --out <path>Write to file instead of stdout
-c, --color / --no-colorForce or disable ANSI color
--index-threshold <n>Index containers above n values (default: 16)
--string-chain-threshold <n>Split strings longer than n (default: 64)
--string-chain-delimiter <s>Delimiter for string chains (default: /)
--key-complexity-threshold <n>Max object complexity for dedupe keys (default: 100)

Shell completions:

rx --completions setup zsh   # or bash

Tip — paged, colorized viewing:

p() { rx "$1" -t -c | less -RFX; }

Proxy Behavior

The value returned by parse/open is read-only:

obj.newKey = 1;      // throws TypeError
delete obj.key;      // throws TypeError
"key" in obj;        // works (zero-alloc key search)
obj.nested === obj.nested  // true (container Proxies are memoized)

Supported operations on the Proxy:

  • Property access: data.key, data[0]
  • Object.keys(), Object.entries(), Object.values()
  • for...of, for...in
  • Array.isArray()
  • .map(), .filter(), .find(), .reduce()
  • Spread and destructuring
  • JSON.stringify()

Common Patterns

Build-step: convert JSON artifact to RX

import { readFileSync, writeFileSync } from "fs";
import { stringify } from "@creationix/rx";

const json = JSON.parse(readFileSync("manifest.json", "utf-8"));
const rx = stringify(json, { indexes: 10 });
writeFileSync("manifest.rx", rx, "utf-8");

Runtime: sparse read from large RX file

import { readFileSync } from "fs";
import { parse } from "@creationix/rx";

const manifest = parse(readFileSync("manifest.rx", "utf-8")) as any;

// Only the accessed values are decoded — everything else is skipped
const route = manifest.routes["/dashboard/projects"];
console.log(route.title, route.component, route.auth);

Streaming encode to stdout

import { stringify } from "@creationix/rx";

stringify(largeData, {
  onChunk: (chunk, offset) => process.stdout.write(chunk),
});

Using external refs for cross-document deduplication

import { stringify, parse } from "@creationix/rx";

const sharedRefs = { R: ["/api/users", "/api/teams", "/api/projects"] };

// Encode multiple documents sharing the same ref dictionary
const doc1 = stringify(data1, { refs: sharedRefs });
const doc2 = stringify(data2, { refs: sharedRefs });

// Decode with the same dictionary
const val1 = parse(doc1, { refs: sharedRefs }) as any;
const val2 = parse(doc2, { refs: sharedRefs }) as any;

Low-level inspect traversal (zero allocation)

import { encode, inspect } from "@creationix/rx";

const buf = encode(routes);
const root = inspect(buf);

// Walk object entries without creating JS objects
if (root.tag === ":") {
  for (const [key, val] of root.entries()) {
    if (key.value === "/dashboard") {
      console.log("Found:", val.index("title").value);
      break;
    }
  }
}

Type-safe usage pattern

import { parse } from "@creationix/rx";

interface Route {
  title: string;
  component: string;
  auth: boolean;
}

interface Manifest {
  routes: Record<string, Route>;
  version: number;
}

// Cast after parse — RX Proxy supports all read operations
const manifest = parse(rxString) as unknown as Manifest;
const dashboard = manifest.routes["/dashboard"];

Format Reference

RX is a text encoding — not human-readable like JSON, but safe to copy-paste.

Every value is read right-to-left. The parser scans left past base64 digits to find a tag character:

[body][tag][b64 varint]
            ◄── read this way ──
JSONRXDescription
42+1ktag + (integer), b64 1k = 84, zigzag → 42
"hi"hi,2tag , (string), length = 2
true'ttag ' (ref), built-in literal
[1,2,3]+6+4+2;6tag ; (array), b64 6 = content size
{"a":1}+2a,1:atag : (object), interleaved keys/values

Tags: + integer · * decimal · , string · ' ref/literal · : object · ; array · ^ pointer · . chain · # index


When to Use RX vs Alternatives

ScenarioUse
Large artifact, sparse readsRX
Build manifests, route tablesRX
Small config filesJSON
Human-authored configJSON/YAML
Write-heavy / mutable dataReal database
Fixed schema, minimize wire sizeProtobuf
Relational/tabular dataSQLite
Minimizing compressed transfergzip/zstd + JSON

Troubleshooting

TypeError: Cannot set property on decoded value The Proxy returned by parse/open is read-only by design. To mutate, spread into a plain object first:

const mutable = { ...parse(rx) };
mutable.newKey = "value"; // works

Decoded value looks correct but instanceof Array fails Use Array.isArray(val) instead — this is correctly intercepted by the Proxy.

External refs mismatch / wrong values decoded Ensure the exact same refs dictionary (same keys, same arrays, same order) is passed to both stringify/encode and parse/open.

CLI not found after global install

npm install -g @creationix/rx
# If still not found, check your npm global bin path:
npm bin -g

Inspecting encoded bytes

rx data.rx --ast    # shows encoding structure with tags and offsets

Or use the live viewer at rx.run — paste RX or JSON directly.

Performance: lookups slower than expected Ensure indexes threshold is set appropriately when encoding. For large objects (e.g., 35k keys), use indexes: 0 to index all containers:

stringify(data, { indexes: 0 });

Resources

  • rx.run — live web viewer, paste RX or JSON to inspect
  • docs/rx-format.md — full format spec with grammar and railroad diagrams
  • docs/cursor-api.md — low-level zero-allocation cursor API
  • samples/ — example datasets (route manifest, RPG state, emoji metadata, sensor telemetry)

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

37.21%
按下载量换算1,838

Claude

29.4%
按下载量换算1,452

Cursor

18.91%
按下载量换算934

Gemini CLI

9.15%
按下载量换算452

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

执行命令

安装流程涉及命令执行,可能通过 npx skills add https://github.com/aradotso/trending-skills --skill creationix-rx-data-store 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills