Loads relevant patterns and known errors before track planning. Searches conductor/knowledge/ for solutions we've used before and errors we've encountered. Injects findings into the planner prompt to prevent reinventing solutions and repeating mistakes. Triggered automatically by orchestrator before PLAN step.
Scanned 5/27/2026
Install via CLI
openskills install Ibrahim-3d/orchestrator-supaconductor---
name: knowledge-manager
description: "Loads relevant patterns and known errors before track planning. Searches conductor/knowledge/ for solutions we've used before and errors we've encountered. Injects findings into the planner prompt to prevent reinventing solutions and repeating mistakes. Triggered automatically by orchestrator before PLAN step."
---
# Knowledge Manager — Pre-Planning Intelligence
Searches the knowledge base for relevant patterns and errors before a track begins, injecting institutional memory into the planning process.
## When This Runs
**Automatically** — The orchestrator calls this agent BEFORE dispatching the `loop-planner` for any track.
## Inputs
1. **Track spec.md** — To understand what the track is about
2. **Track type** — From metadata.json (feature, UI, integration, etc.)
3. **Keywords** — Extracted from spec (e.g., "auth", "Supabase", "form", "state")
## Workflow
### 1. Extract Keywords from Spec
read_file the track's `spec.md` and extract relevant keywords:
```typescript
const keywords = extractKeywords(spec);
// Example: ["authentication", "Supabase", "login", "signup", "OAuth"]
```
Keywords come from:
- Section headings
- Technical terms
- Integration names (Supabase, Stripe, Gemini)
- Component types (form, modal, grid, etc.)
- Pattern names (state management, API routes, etc.)
### 2. Search Pattern Library
Search `conductor/knowledge/patterns.md` for matching patterns. Score each entry by keyword overlap and **return only the top 3 highest-scoring results** (skip zero-score entries):
```markdown
## Relevant Patterns Found (top 3 by relevance)
### Pattern: Supabase Client Singleton
**Category**: Integration
**Relevance score**: 3/5 keywords matched
**Summary**: Use singleton pattern with server/client separation
**Key Code**:
```tsx
// lib/supabase/server.ts
export const createClient = async () => { /* ... */ };
```
### Pattern: Server Actions with Error Handling
**Category**: API
**Relevance score**: 2/5 keywords matched
**Summary**: Wrap all server actions with try/catch and typed responses
```
### 3. Search Error Registry
Search `conductor/knowledge/errors.json` for errors related to this track type. Score each entry by keyword overlap and **return only the top 3 highest-scoring results**:
```markdown
## Known Errors to Watch For
### Error: Hydration Mismatch (err-003)
**Pattern**: "Hydration failed because the initial UI does not match"
**Context**: Auth state can differ between server and client
**Prevention**: Wrap auth-dependent UI in useEffect or client component
### Error: NEXT_REDIRECT in try/catch (err-004)
**Pattern**: "NEXT_REDIRECT"
**Context**: Server actions with redirect after login
**Prevention**: Re-throw NEXT_REDIRECT errors or move redirect outside try/catch
```
### 4. Generate Knowledge Brief
Output a knowledge brief that gets injected into the planner's prompt. **Total output must not exceed 500 tokens.** If the top-3 patterns + top-3 errors would exceed this budget, truncate lower-scored entries first:
```markdown
# Knowledge Brief for [Track ID]
## Relevant Patterns (Apply These)
1. **Supabase Client Singleton** — Use separate server/client clients
2. **Server Actions with Error Handling** — Typed responses with try/catch
## Known Errors (Avoid These)
1. **Hydration Mismatch** — Don't render auth-dependent UI on server
2. **NEXT_REDIRECT** — Handle redirect() specially in try/catch
## Previous Similar Work
- Track `auth-flow_20260115` implemented similar auth flow
- See `conductor/tracks/auth-flow_20260115/plan.md` for reference
## Recommendations
- Consider using the existing auth patterns from previous track
- Watch for SSR/client hydration issues with auth state
```
## Output Format
The Knowledge Manager returns a structured brief:
```json
{
"patterns_found": [
{
"name": "Supabase Client Singleton",
"category": "Integration",
"relevance": "high",
"summary": "...",
"code_snippet": "..."
}
],
"errors_to_watch": [
{
"id": "err-003",
"pattern": "Hydration mismatch",
"prevention": "..."
}
],
"similar_tracks": [
{
"track_id": "auth-flow_20260115",
"relevance": "Implemented OAuth flow"
}
],
"recommendations": [
"Reuse auth patterns from previous track",
"Watch for hydration issues"
]
}
```
## Integration with Orchestrator
The orchestrator injects this brief into the planner's dispatch:
```typescript
// In conductor-orchestrator
async function dispatchPlanner(trackId: string) {
// 1. Run Knowledge Manager first
const knowledgeBrief = await Task({
subagent_type: "general-purpose",
description: "Load knowledge for track",
prompt: `You are the knowledge-manager agent.
Track: ${trackId}
Spec: ${specContent}
Search conductor/knowledge/patterns.md and errors.json.
Return a knowledge brief with relevant patterns and errors.`
});
// 2. Dispatch planner WITH knowledge brief
await Task({
subagent_type: "general-purpose",
description: "Create track plan",
prompt: `You are the loop-planner agent.
${knowledgeBrief.output}
Create plan.md using the patterns above where applicable.
Avoid the known errors listed.`
});
}
```
## Search Strategies
### By Category
Match track type to pattern/error categories:
- UI track → Search "UI", "component", "styling" patterns
- Integration track → Search "Integration", "API", "Supabase", "Stripe" patterns
- Feature track → Search "State", "API", "Testing" patterns
### By Keyword
Fuzzy match keywords from spec against pattern descriptions and error contexts.
### By Recency
Prioritize patterns from recent tracks (more likely to be relevant to current codebase state).
## Maintaining the Knowledge Base
The Knowledge Manager is read_file-only. Writing to the knowledge base is done by:
- **Retrospective Agent** — After track completion
- **Fixer Agent** — When discovering new error patterns
## No Matches Found
If no relevant patterns or errors are found, return:
```json
{
"patterns_found": [],
"errors_to_watch": [],
"similar_tracks": [],
"recommendations": ["No prior patterns found. Document solutions discovered in this track."]
}
```
This is fine — it means we're doing something new. The retrospective will capture learnings after.
No comments yet. Be the first to comment!