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

@@ -16,10 +16,47 @@ This project uses **spec-driven development** (OpenSpec) as a testbed for agent-
|--------|---------|--------|
| `git-status-report` | Recursive git repo status with diff stats | Done |
| `md-to-docx` | Markdown to DOCX conversion | Done |
| `claude-profile` | Claude Code profile management | Done |
| `claude-profile` | Claude Code profile + engagement-mode launcher | Done |
| `unreflected-logs` | Scan projects for unreflected session logs | Done |
| `validate-skill` | Validate SKILL.md files against known Claude Code restrictions | Done |
### Engagement modes (claude-profile)
`claude-profile` launches Claude Code with both a configuration profile (selecting which `~/.claude-*` directory to use) and an **engagement mode** that bundles a driver model, subagent policy, async tolerance, and workflow stance:
| Mode | Driver | For |
|---|---|---|
| `chat` | Haiku | No project, just conversation |
| `quick` | Sonnet | Single small focused job, fully synchronous |
| `deep` | Sonnet (Opus via named workflows) | Hard design or debugging, plan + spec enforced |
| `hybrid` | Haiku (Opus/Sonnet on demand) | Long sessions, escalates only when needed |
| `orch` | Sonnet | Decompose work and dispatch container agents |
Mode definitions live in `data/claude-profile/modes/<name>.md` — YAML frontmatter (machine-parsed) plus a markdown body that becomes part of the system prompt.
```bash
claude-profile # interactive picker
claude-profile oreillyit --mode deep # explicit profile + mode
claude-profile --preset deep-cluster # named preset from presets.yaml
claude-profile --dryrun [...] # show resolved values, do not launch
```
Copy `data/claude-profile/presets.yaml.example` to `$CLAUDE_CONFIG_DIR/presets.yaml` to set up named presets.
## Repository Structure
```
small-scripts/
├── scripts/ # Executable scripts (symlinked into ~/sbin)
├── specs/ # OpenSpec files, one per script
├── tests/ # Test scripts that exercise --dryrun
├── data/ # Read-only data files used by scripts
│ └── claude-profile/
│ ├── modes/ # Engagement mode definitions
│ └── presets.yaml.example
└── memory/ # Tiered memory topic files
```
## Quick Start
```bash