cc-os/docs/plans/system-prompt-profiles-task...

6.3 KiB
Raw Blame History

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 34 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 → ~23k 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:

  1. Wave 1 (parallel): B1 (main-loop), B3 + C3 (subagents).
  2. Wave 2: B2 (needs C3's overlay-location answer).
  3. Wave 3 (minimal C): settings-overlay aliases only; full C1/C2 wrapper deferred until the friction is felt.
  4. Deferred: A1/A2 pending the interactive /context check; D dropped (pointer kept).