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

73 lines
6.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# System-prompt profiles: task breakdown for subagent implementation
_Last updated: 2026-07-08 · Source plan: [system-prompt-profiles-assessment.md](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 ✅ (2026-07-08, see [b2-profile-overlays.md](b2-profile-overlays.md) — deep-merge confirmed, 3 overlays shipped to `~/.claude/profiles/`, measured savings marginal: 32 to 632 tokens) | **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). ✅ Done 2026-07-08 —
overlays shipped; measured token savings marginal (plugin listings are cheap
post-ToolSearch), so profiles' value is focus, not context cost.
3. **Wave 3 (minimal C):** settings-overlay aliases only; full C1/C2 wrapper deferred
until the friction is felt. B2's marginal-savings result lowers this further —
do only when friction is actually felt.
4. **Deferred:** A1/A2 pending the interactive `/context` check; D dropped (pointer kept).