Add claude-profile engagement mode picker with statusline and session-start integration

- claude-profile: phase 1-3 picker (profile, mode, launch) with preset support,
  dryrun, WezTerm theming, and --append-system-prompt mode body injection
- 5 mode files (chat/quick/deep/hybrid/orch) with YAML frontmatter + prose body;
  new escalates_to field drives statusline →Opus arrow for deep and hybrid
- statusline.sh reads CLAUDE_CONFIG_DIR/active-mode.env to show
  [Sonnet→Opus] deep · topic format when launched via claude-profile
- Root CLAUDE.md session-start: auto-selects project from cwd or CLAUDE_PROJECT
  in active-mode.env, skipping the interactive picker when context is clear
- Spec, tests (37 assertions, 9 test files, all passing), context docs, and
  preset example included

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Paul O'Reilly
2026-04-12 00:36:38 +12:00
parent 765f32b4fa
commit 143b32597e
19 changed files with 1506 additions and 138 deletions

View File

@@ -25,10 +25,16 @@ small-scripts/
│ └── <script-name>
├── tests/ # Test scripts (one per main script)
│ └── test-<script-name>.sh
├── data/ # Read-only data files consumed by scripts
│ └── <script-name>/ # One subdirectory per script that needs data
└── memory/ # Tiered memory topic files
└── log/ # Session logs
```
### data/ directory
Some scripts need static data that is too large or too structured to embed inline (e.g. `claude-profile` reads engagement mode definitions from `data/claude-profile/modes/*.md`). Put such data under `data/<script-name>/`. Treat it as read-only at runtime — user customisation belongs in the user's config directory, not in `data/`. Example files (e.g. `presets.yaml.example`) live alongside the data and are copied by the user into their config dir.
## Workflow
### Adding a new script