OpenWriterControle/plugins/claude-code/skills/context-discovery/context-discovery-protocol.md
Darren Hinde a8fc9c7715
feat(plugin): enhance context management and skill invocation (#239)
* fix(shellcheck): declare and assign separately in router.sh (SC2155)

* feat(plugin): enhance context management and skill invocation

- Update .context-manifest.json to include profile and detailed source information.
- Revise context-scout.md to clarify context root discovery and navigation.
- Modify commands to replace deprecated skills with updated ones (brainstorming → approach, systematic-debugging → debugger).
- Streamline install-context.md for clarity and remove interactive profile selection.
- Improve oac-status.md to provide a more comprehensive status report.
- Add OAC system paths to session-start.sh for better context management.
- Remove obsolete skills and improve documentation for existing commands.
2026-02-23 12:12:29 +00:00

128 lines
4.2 KiB
Markdown

# OAC Context Discovery Protocol
> Single source of truth for all context root discovery.
> Referenced by: context-scout agent, context-discovery skill, any agent needing project context.
---
## Summary
```
.oac.json exists? YES → read context.root → done (fast path)
NO → run discovery chain
Found? YES → signal main agent to write .oac.json (if project-local)
NO → return setup tips
```
---
## Step 1: Check .oac.json (Fast Path)
```
Glob: .oac.json
```
If the file exists, read it and extract `context.root`:
```json
{
"version": "1",
"context": {
"root": ".claude/context"
}
}
```
- Use `context.root` as the resolved context root. **Stop here.**
- If `context.root` is set but that directory has no `navigation.md`: fall through to Step 2 and warn the caller.
---
## Step 2: Discovery Chain
Only runs if Step 1 found no `.oac.json` (or the path in it was invalid).
Check each path **in order**. Stop at the first that has a `navigation.md` file:
```
1. Glob: .claude/context/navigation.md → root = .claude/context (project-local)
2. Glob: context/navigation.md → root = context (project-local)
3. Glob: .opencode/context/navigation.md → root = .opencode/context (project-local)
4. Check: ~/.claude/context/navigation.md → root = ~/.claude/context (global install)
5. Glob: {PLUGIN_ROOT}/context/navigation.md → root = {PLUGIN_ROOT}/context (plugin fallback)
```
`{PLUGIN_ROOT}` is provided in your session context under **OAC System Paths**.
`~` expands to the user's home directory (`$HOME` on Mac/Linux, `%USERPROFILE%` on Windows).
**First match wins.**
---
## Step 3: Signal .oac.json Creation
After a successful discovery chain match, signal the **main agent** (not context-scout — it is read-only) to write `.oac.json` at the project root **only if** the resolved root is project-local:
| Resolved root | Write .oac.json? |
|-------------------------|------------------|
| `.claude/context` | ✅ yes |
| `context` | ✅ yes |
| `.opencode/context` | ✅ yes |
| `~/.claude/context` | ❌ no (global install — applies to all projects, no per-project pointer needed) |
| `{PLUGIN_ROOT}/context` | ❌ no (machine-specific path — don't commit this) |
Content to write at project root `.oac.json`:
```json
{
"version": "1",
"context": {
"root": "{resolved_root}"
}
}
```
---
## Step 4: No Context Found
If all steps fail, **do not error**. Return this message to the user:
```
No context found for this project.
Option 1 — Download standard context bundles (recommended):
Run: /install-context
Downloads coding standards, security patterns, workflows, and more.
Option 2 — Point to docs you already have:
Create .oac.json at your project root:
{
"version": "1",
"context": { "root": "path/to/your/docs" }
}
Option 3 — Proceed without context:
Standards won't be applied — code quality may be inconsistent.
```
---
## Return Format
Always return these three values:
| Field | Value |
|------------------|--------------------------------------------------------------------------------------------------------------------|
| `context_root` | Resolved path (e.g. `.claude/context`) |
| `source` | `oac.json` \| `discovery:claude` \| `discovery:context` \| `discovery:opencode` \| `discovery:plugin` \| `none` |
| `write_oac_json` | `true` if main agent should create `.oac.json` with this root, else `false` |
---
## Notes for Callers
- **context-scout** is read-only — it signals `write_oac_json: true` but cannot write the file itself.
- **Main agent** (or install-context) is responsible for writing `.oac.json`.
- **install-context** always writes `.oac.json` after a successful install — no discovery needed.
- Once `.oac.json` exists, discovery chain never runs again (fast path always wins).