Agent skills for working with Arkiv — the Web3 database, powered by $GLM. Each skill follows the Agent Skills format and provides focused guidance for compatible agents.
| Skill | What it does |
|---|---|
arkiv |
Routes Arkiv tasks to the appropriate focused skill. |
arkiv-first-write |
Sets up Rabdi and verifies a first entity and read-back. |
arkiv-data-modeling |
Designs typed schemas, per-column indexes, bytes storage, and relations. |
arkiv-query |
Builds typed queries, ordering, bounded current-state pages, and filtered counts. |
arkiv-entity-lifecycle |
Explains flags, patching, ownership, deletion, and backup/restore. |
arkiv-entity-expiration |
Chooses expiration deadlines and reconciles Lifetime Extension. |
arkiv-write-safety |
Serializes bounded batches and reconciles uncertain transaction outcomes. |
arkiv-app-integration |
Connects browser wallets, authenticated server routes, DTOs, and events. |
arkiv-security-trust |
Defines public-data, publisher, signer, and authorization boundaries. |
arkiv-troubleshooting |
Diagnoses exact errors, missing results, and stale reads. |
arkiv-encryption |
Encrypts bytes columns and explains key custody and remaining metadata exposure. |
arkiv-large-files |
Plans verified chunks/images, compatible package selection, hybrid pointers and recovery. |
arkiv-social-graph |
Models relationships and scopes arkiv-graph visualization. |
arkiv-indexing |
Builds Arkiv-to-app projections and explains the separate EVM-to-Arkiv sync package. |
arkiv-feedback |
Prepares sanitized bug/feature reports and submits only with authorization. |
arkiv-mcp |
Explains the plugin's General connection, separate event profiles, read-only checks, consent-gated feedback and service privacy boundaries. |
arkiv-best-practices |
Deprecated compatibility entrypoint; start with arkiv. |
Library guides require checking each installed package's public API, SDK 1.0 compatibility and Rabdi support. Read its AGENTS.md and relevant skill; a candidate, widened peer range or earlier network test does not establish a published compatible release.
Start with the router:
# npm
npx skills add Arkiv-Network/skills --skill arkiv
# pnpm
pnpm dlx skills add Arkiv-Network/skills --skill arkivReplace arkiv with a name from the index to install a specific skill. The default scope is the current project; add --global for your user account. Check npx skills --help for supported hosts and flags. --all installs every skill into every supported agent without prompts; choose a specific skill for a focused installation.
Load arkiv for an Arkiv task, then the task skill it selects. Use arkiv-first-write to install the SDK, configure Rabdi, verify a first entity and propose the inline Arkiv rules for the project's AGENTS.md while preserving existing guidance.
The guidance targets SDK >=1.0.0 <2, checked with 1.0.1, and Rabdi (chain ID 7794095). Before using another version, inspect its installed declarations and current official documentation. Configure rabdi({ accessKey }); the SDK encodes the RPC key in its URL path. Keep operator keys server-side and redact keyed URLs from errors/logs; writes require an authorized signer and spending budget.
Use explicit latest nonce, gas and network gasPrice for Rabdi writes, then check receipt status. The measured starting gas floor is 1,000,000 plus 400,000 per extra batch operation; large bytes need measurement and at least twice the measured maximum. Approve exact-operation cost/balance and reconcile uncertainty before any new attempt. See first-write and write-safety for the complete policy.
Each skill declares its checked SDK range, network, date and MIT license in frontmatter. These declarations describe the documented scope and do not certify every provider, application or future release.
For the combined plugin for Claude Code and Codex CLI, use the separate Arkiv plugin repository. It imports a fixed canonical revision and bundles the General MCP connection and project rules. Read its installation and verification scope before use.
Contributors and agents should read AGENTS.md. Recent guidance covers complete atomic batch validation, separately authorized removal after readonly corrections, transfer provenance and, in arkiv-mcp, the plugin's General connection, with event profiles as separate URLs the human adds and the ended Devfolio profile kept frozen. The resumable importer saves intent before wallet entry, distinguishes receipt-confirmed progress from verified fields and recovers without resubmitting a known transaction. Its plan-version-2/journal-version-3 importer fails closed on incompatible older files; preserve those files and reconcile with the original importer.
The router's advisory installed-import check reads named imports, package exports and installed declarations without executing application code or making network requests. Unsupported evidence stays unmeasured. Hosts can run the script explicitly; supported Claude hosts can also invoke its frontmatter hook. This check does not replace TypeScript compilation or runtime checks.
node --test tests/snippets/import-check.test.mjs tests/snippets/skill-references.test.mjs
node scripts/check-skill-references.mjs
# Explicit network fixture: verifies official tarball integrity, never runs package scripts.
node tests/snippets/published-imports.mjsUse defineSchema and constructors from @arkiv-network/sdk/schema. Only columns marked .indexed() support predicates; bytes() stores binary/JSON data but cannot be indexed, filtered or sorted. Reads return flat $key, $owner, $creator, $expiresAt and selected column values. Use $attributes for all values or $attributeSchema for types/indexing without large values.
Rabdi queries read current state, with one-key server ordering, pages up to 100, offsets/keyset traversal and filtered counts. Multi-page scans are not inherently one snapshot. See the query and backup skills before claiming complete or historical exports. Natural expiration emits no event; watchers need current-state reconciliation after gaps.
SDK 1.0.1 adds ExpirationTime.max() and exported MAX_LIFETIME = 7_884_000n, counted from create/extension inclusion; extending with max() sets expiry to the new inclusion block plus that maximum. Excessive lifetime throws InvalidExpiryError before send. The manual below-maximum margin is only a compatibility fallback for SDK 1.0.0; see the versioned expiration recipe. There is no unlimited lifetime.
Get free keys at access keys and test funds at the faucet. Missing keys raise MissingAccessKeyError; an explicitly empty key chooses heavily limited keyless access that can return HTTP 429. Current provider quota is 100,000,000 units per key, with each arkiv_query costing 10 and other methods zero. Keys do not fund or authorize writes.
Contributor validation, strict compilation of every executable example and separate authorized Rabdi live checks are documented in tests/README.md. The idempotent seed is node --experimental-vm-modules scripts/seed-rabdi.mjs; keep its private durable journal across restarts and reconcile ambiguous outcomes before another write.
For every funded Rabdi write, first preflight the exact frozen operation unsigned at latest. Stop on errors and surface the sanitized original cause. Then send explicit gas=max(1,000,000+400,000*(ops-1), 2*estimate), current gasPrice and latest nonce within the approved balance/spend ceilings. The guarded unsigned-only estimator cannot sign or broadcast.