add-source
GitHub用于在pixtuoid项目中集成新的agent-CLI源适配器。涵盖跨crate配置、站点清单、主题徽章及运行时接线。重点确保执行包含测试覆盖的关键步骤,防止遗漏导致构建失败或功能缺失。
Trigger Scenarios
Install
npx skills add IvanWng97/pixtuoid --skill add-source -g -y
SKILL.md
Frontmatter
{
"name": "add-source",
"version": "1.0.0",
"metadata": {
"scope": "pixtuoid repo only"
},
"description": "Wire a new agent-CLI Source adapter into pixtuoid (a new coding CLI whose sessions become office sprites). Use when the user says 'add support for <CLI>', 'add a source for <tool>', or 'integrate <agent CLI>'. Orchestrates the cross-crate checklist whose steps have TEST TEETH — the ones a diff-scoped edit silently misses (site manifest bridge, per-source badge hue, home-dir fn)."
}
add-source (v1)
Adding an agent CLI is not a single-file change — it spans pixtuoid-core
(decoder + registry + tests), the pixtuoid binary (runtime wiring + install
target + badge hue), and the site manifest. Several steps have test teeth
that only just preflight's FULL run catches, not the targeted source/install
suites — so an agent that stops at "it compiles" ships a red PR.
When to use
- "Add support for <CLI>" / "integrate
" / "add a source for X". - A new transcript-bearing OR hook-only coding CLI should show up as sprites.
The authoritative checklist
The complete, current step list lives in crates/pixtuoid-core/CLAUDE.md
("multi-source decoding" / "Adding a new agent CLI") — read it first; it is the
source of truth and stays current. The Copilot-format summary is
.github/prompts/add-source.prompt.md.
Before you start, decide transcript-bearing vs hook-only (invariant #3): a
hook-only CLI (Reasonix/CodeWhale/opencode/Cursor) sets transcript: None, skips
the runtime wiring + Source impl, and ships a hook.custom decoder + an
install/ target instead.
The test-teeth steps agents miss
These are the ones with a failing test attached — do NOT stop before them:
site/src/sources.jsonrow — a manifest bridge test fails until it exists; thenjust gen-readmeto sync the README. (CLAUDE.md step 5.)- Per-source badge hue — a
Theme::source(SourceColors) field in EVERY theme file + adashboard_linematch arm; two guard tests fail otherwise. (CLAUDE.md step 7.) pub fn <cli>_home()if the CLI has a custom config root — one fn honoring its*_HOMEprecedence, called from BOTH the watcher'sdefault_paths()AND the installer'sdefault_config_path()so they can't disagree. (CLAUDE.md step 6.)- A captured fixture under
tests/sources/fixtures/<name>/<scenario>/exercising the SessionStart hook — the conformance test forces one, and its one-AgentId assertion guards against the reason-field ghost.
(The exact test names + full step list are in crates/pixtuoid-core/CLAUDE.md
"Adding a new agent CLI" and add-source.prompt.md — this skill headlines the
teeth, those own the specifics.)
Finish
- Wire it into
runtime/driver.rs::build_source_set(transcript-bearing only — the one construction site, called byrun_async). This step HAS teeth:build_source_set_wires_every_transcript_bearing_source_plus_the_hook_router(driver.rs) FAILS for a registered source left unwired, sojust preflightcatches the miss — don't make it wait that long. - Capture the real wire shape and set
verified_version("unknown"until a byte-real capture anchors it). Drift-watch it (see the add-a-CLI list's drift-watch note incrates/pixtuoid-core/CLAUDE.md). just gen-contractonly if you touched the--json/SourceStatus/OutcomeRowSHAPE (adding a row doesn't).just preflightbefore the PR, then run the two-lens-review skill.
Version History
- 0620ccd Current 2026-07-05 20:27


