{
"$schema": "https://cmn.dev/schemas/v1/spore-core.json",
"id": "agent-first-data",
"name": "Agent-First Data",
"version": "0.21.0",
"domain": "agentfirstkit.com",
"key": "ed25519.BwbSzqdDYyMN1pPW5snRk3afrJAovHn8aueMvDpfNKVw",
"synopsis": "A naming convention that lets AI agents understand your data without being told what it means, plus a CLI and library for reading and safely editing structured JSON, TOML, YAML, dotenv, and INI documents.",
"intent": [
"Encode all semantic information in the field name itself so agents parse structured data without external schemas, documentation, or type systems — _ms/_s/_epoch_ms for time, _msats/_sats/_usd_cents for currency, _bytes for size, _secret for auto-redaction",
"Define a JSONL output protocol where every line carries a code field (startup for config state, tool-defined for status/progress, ok/error for results) plus a trace object for execution context (duration, token counts, cost, data source) — same structure whether the transport is CLI stdout, HTTP response body, MCP tool result, or SSE stream",
"Provide three output formats via --output json|yaml|plain: JSON is the canonical lossless format, YAML preserves structure with quoted strings and --- separators, plain applies suffix-driven human formatting (epoch_ms → RFC 3339, _bytes → human-readable, _secret → ***, _ms ≥ 1000 → seconds)"
],
"license": "MIT",
"mutations": [
"Make --version/-V always emit a structured protocol-v1 version event (JSON by default, or --output yaml|plain/--json), dropping the conventional plain-text form so version output follows the same protocol as every other CLI result",
"Extend the version payload to carry name alongside version, plus an optional human-facing display_name and an opaque caller-supplied build identifier such as a git commit SHA, each omitted when absent",
"Teach the version pre-parser to recognize the caller's own value-taking global flags — from the clap command in Rust, an explicit value-flags list in Go/Python/TypeScript — so a flag's value like --stdout-file <path> is never mistaken for the subcommand boundary that would hide a following --version",
"Land the redesign identically across Rust, Go, Python, and TypeScript at API parity, and update the normative spec's version-output section to match"
],
"bonds": [],
"tree": {
"algorithm": "blob_tree_blake3_nfc",
"exclude_names": [
".git",
".cmn"
],
"follow_rules": [
".gitignore"
]
}
}