6.3 KiB
System-prompt profiles: task breakdown for subagent implementation
Last updated: 2026-07-08 · Source plan: system-prompt-profiles-assessment.md
Groups are ordered by dependency, not priority. Group A is read-only and can start immediately, in parallel. Group B is the biggest win but is gated. Groups C and D are sequential follow-ons.
Slimmed scope (2026-07-08, user-approved): execute quick/high-value wins only —
B1 → B3 ∥ C3 → B2, then a minimal C (settings-overlay aliases, no auto-detection).
A1/A2 are deferred until a live interactive /context check shows tool schemas still
dominate despite ToolSearch deferred loading (one user-assisted check replaces Group A;
A3's headless matrix is already substantially in the assessment doc). D is dropped from
the plan — revisit only if CC economics change; max upside ~6.3k with fork-maintenance
downside.
Gate G0 — CLEARED (2026-07-08): user confirmed the os-orchestration (WS4) and os-vault (WS2) eval loops are complete; no eval runs remain in flight. Group B is unblocked.
Group A — Bottom-up audit (read-only, start anytime, parallelizable)
| ID | Task | Depends on | Suggested agent |
|---|---|---|---|
| A1 | Logging proxy. One-file ANTHROPIC_BASE_URL pass-through that forwards to api.anthropic.com and dumps the system and tools arrays of each request to a local file. Ruby preferred (Sandi Metz style not required for a one-file tool). No response mutation, streaming must pass through untouched. Deliverable: bin/ or tools/ script + 3-line usage note. |
— | sonnet |
| A2 | Live prompt capture + audit. Run one headless and (user-assisted) one interactive session through the A1 proxy from cc-os and from an empty dir; save the dumped system/tools arrays; produce an audit doc: token cost per system-prompt section, per tool schema, and a "safely droppable per profile" table. Expect savings in --tools lists (~18k), not prompt text (~6.3k). |
A1 | sonnet |
| A3 | Phase 0 measurement. Script the headless baseline matrix (already partially done in the plan: 4 configs measured) and extend to 3–4 representative session types (cc-os design, client dev, brainstorm) via --output-format json usage fields; record one interactive /context check (user-assisted) to validate the headless numbers against a Fable session. Deliverable: a measurements table appended to the assessment doc. |
— | haiku (scripted runs) + user for the interactive check |
A1 and A3 run in parallel; A2 follows A1.
Group B — Top-down diet (gated on G0, sequential)
| ID | Task | Depends on | Suggested agent |
|---|---|---|---|
| B1 | Split cc-os CLAUDE.md. ~11k tokens → ~2–3k orientation file + docs/implementation-status.md (the append-only changelog moved out, linked not @-imported so it loads on demand). Follow ~/servers/proxmox-hermes/docs/claude-md-maintenance.md: keep it short, pointers over copies, never auto-append. Must preserve: the "keep this file current" contract (redirected to the new doc), plugin naming rule, ADR discipline, OpenSpec workflow. Verify a fresh session still orients correctly. |
G0 | sonnet (judgment about what is orientation vs changelog); main-loop review before commit |
| B2 | Per-profile plugin enablement. Design + create settings overlay files (one per profile: e.g. cc-os-design, client-dev, brainstorm) listing enabledPlugins; a brainstorm profile drops rails-ui-component / api-wrapper / invoice-ninja / creative-team etc. Resolve where overlays live so they don't fight bin/refresh-plugins (open question #3). |
B1 (so measured savings are attributable) | sonnet |
| B3 | memsearch injection review. Measure the SessionStart recall injection size across a week of sessions (~13 KB observed once); review memsearch plugin config options for capping/trimming it; recommend (not apply) a setting. | — (parallel with B1/B2 once G0 clears) | haiku |
Group C — cyolo profile wrapper (Phase 2, after B)
| ID | Task | Depends on | Suggested agent |
|---|---|---|---|
| C1 | Profile prompt components. Create ~/.claude/profiles/ with dev.md, ruby.md, planning.md, brainstorm.md. Objective profiles state the session endpoint explicitly ("this session ends when the plan is written…"). Small files, ~0.5k tokens each. |
B2 (profiles reference the settings overlays) | sonnet |
| C2 | Wrapper script. cyolo shell wrapper: resolve profile from flag (--dev, --planning) + project detection (pwd, Gemfile…), compose append-file, launch claude --append-system-prompt-file <composed> --settings <profile-settings> [--tools …]. |
C1 | sonnet |
| C3 | Open-question spikes (can run before/parallel with C1): (a) does --setting-sources interact cleanly with symlinked local plugins + absolute-path hooks? (b) confirmed overlay location from B2 survives bin/refresh-plugins. Small experiments, written up as findings notes. |
— | haiku |
Group D — Eval-gated replacement experiment (optional, last)
| ID | Task | Depends on | Suggested agent |
|---|---|---|---|
| D1 | Eval design. Read ~/Documents/SecondBrain/howto/running-autoresearch-skill-evals.md FIRST (standing rule). Design the grid: scenario set × {default, dieted stack, profile stack, full-replacement lean prompt} × model tiers; score task success + tokens/turn + wrong-tool proxies. Design only — do not run without user sign-off. |
C2 (profile stack must exist to be a grid column) | sonnet |
| D2 | Run + verdict. Execute the grid headless-only; promote full replacement only if it wins on outcome, not just token count. | D1 | per playbook |
Out of scope (captured, do not implement)
- CLAUDE.md budget linter plugin — vault note claude-md-budget-linter-plugin-concept; overlaps os-doc-hygiene/os-status, resolve at build time.
- Per-model profile variants — deferred by user decision; revisit after profiles exist.
Suggested execution waves
Superseded by the slimmed scope above. Current order:
- Wave 1 (parallel): B1 (main-loop), B3 + C3 (subagents).
- Wave 2: B2 (needs C3's overlay-location answer).
- Wave 3 (minimal C): settings-overlay aliases only; full C1/C2 wrapper deferred until the friction is felt.
- Deferred: A1/A2 pending the interactive
/contextcheck; D dropped (pointer kept).