python-orjson-only
Use orjson, never stdlib json. orjson is a hard dep of echo-sdk and used throughout. Fires any time you serialize/deserialize JSON.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use orjson, never stdlib json. orjson is a hard dep of echo-sdk and used throughout. Fires any time you serialize/deserialize JSON.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
| name | python-orjson-only |
| description | Use orjson, never stdlib json. orjson is a hard dep of echo-sdk and used throughout. Fires any time you serialize/deserialize JSON. |
orjson is a project dependency and the standard across echo-sdk. Never use stdlib json.
orjson.dumps(obj) -> bytes — returns bytes, not str. If you need str, .decode().orjson.loads(data) — accepts bytes or str.orjson.dumps(model.model_dump()). Pydantic's own model_dump_json() uses stdlib semantics and is slower — only use it if you specifically need stdlib JSON semantics (rare).orjson.dumps(obj, option=orjson.OPT_NAIVE_UTC | orjson.OPT_SERIALIZE_NUMPY).option=orjson.OPT_SORT_KEYS.json on real workloads.datetime, UUID, numpy without custom encoders.json is just inconsistency.import json anywhere in src/echo/ → use import orjson.json.dumps(x).encode() → orjson.dumps(x) (already bytes).json.loads(x.decode()) → orjson.loads(x) (accepts bytes).pyproject.toml / config files where a library expects stdlib json — that's fine, but in our code, orjson.[[python-pydantic-v2]]Router for any non-trivial echo-sdk task. Maps user intent to the right module skill and diagram. Invoke FIRST for any change to src/echo/ before reaching for a specific module skill.
Recipe for adding a new provider (LLM, transcriber, eval, prompt). Use whenever adding Cohere, Mistral, Deepgram, Phoenix, Promptlayer, etc. — anything that plugs into an existing get_*() factory.
End-to-end recipe for defining a Skill bundle and wiring it into a GenericAgent with the right activation mode and tool registry. Use when extending agent capability via swappable skills rather than baking tools in.
Building agents with BaseAgent / GenericAgent, including skill registration, activation modes (llm vs manual), and system-prompt composition. Use when editing src/echo/agents/ or building a new agent subclass.
Audio transcription provider abstraction (Gemini, EkaCare). Use when transcribing audio, adding a new transcriber, or shaping AudioInput.
Postgres support — asyncpg client, schema-aware binder, PgQueryTool surface. Use when querying postgres from a tool, modifying the binder, or adding a new DB engine.