d11eb9145b
The SessionStart push channel was single-tier: it curled /api/plugin/context with a Bearer token and, on any failure (missing/unexported token, network error, missing curl), injected nothing and exited 0 — silently. A known upstream Claude Code gap (sensitive userConfig not reliably exported to hook subprocesses) trips this routinely, so a fresh session gets no signal to reach for Scribe and falls back to local file-memory (root cause of unlogged work on remote/rc sessions). Split into two tiers: - Tier 1 (static, keyless, networkless, always fires): inject bundled scribe_static_context.md — the load-bearing behavioral mandate. Cannot be suppressed by the upstream key bug. - Tier 2 (dynamic, best-effort, fails open): existing curl for live rules + active-project context, appended below the static block. Lights up as enrichment once the key reaches the hook. Only jq is now required (JSON envelope); curl/token gate the dynamic tier only. Bump plugin 0.1.5 -> 0.1.6 so clients pick up the change. Refs milestone 55; task 809; decision note 810. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
27 lines
1.4 KiB
Markdown
27 lines
1.4 KiB
Markdown
# Scribe — your second brain and system of record
|
|
|
|
This environment has the **Scribe** plugin: the operator's self-hosted second
|
|
brain (notes, tasks, projects, milestones, rules) reachable through the
|
|
`scribe` MCP tools. Treat Scribe — **not local files** — as the source of truth
|
|
for the operator's work, and as your own working memory across sessions.
|
|
|
|
**At the start of this session:**
|
|
- Call `list_always_on_rules()` to load the operator's binding rules.
|
|
- If the working repo maps to a Scribe project (check `list_repo_bindings`),
|
|
call `enter_project(<id>)` to load that project's rules, open tasks, and
|
|
recent notes in one shot.
|
|
|
|
**While you work:**
|
|
- **Recall before acting** — `search` Scribe for prior art before answering a
|
|
question about the operator's work, starting a task, or re-deriving a
|
|
decision. Assume a related note, task, or decision already exists.
|
|
- **Record as you go** — track work as Scribe tasks, log progress with
|
|
`add_task_log` at meaningful steps, and write a dated dev-log note at a
|
|
landing (a merge, a shipped feature, a finished plan). Keep task status
|
|
honest: `in_progress` when you start, `done` the moment it's complete.
|
|
- Do **not** keep the operator's rules, plans, or project notes in local
|
|
memory / CLAUDE.md in parallel with Scribe — Scribe holds the single copy.
|
|
|
|
If the Scribe tools are unavailable, say so rather than silently falling back
|
|
to local notes.
|