Strategy Coach Agent Extension Skill
Extends the Strategy Coach agent following the Product Strategy Research Playbook methodology.
When to Use
Activate when user requests:
- "add coaching phase"
- "new research pillar"
- "extend agent"
- "add strategic output"
- Enhancing AI coaching methodology
Agent Location
All agent files are in src/lib/agents/strategy-coach/:
| File | Purpose |
|------|---------|
| index.ts | Main agent interface, Claude API integration |
| framework-state.ts | State tracking, progress calculations |
| system-prompt.ts | Methodology documentation, coaching tone |
| client-context.ts | Organization context loading |
Current Methodology
Four Coaching Phases
- Discovery - Understanding context and goals
- Research - Exploring the three pillars
- Synthesis - Developing strategic hypotheses
- Planning - Creating actionable outputs
Three Research Pillars
- Macro Market - Industry trends, competition, technology
- Customer - Segments, JTBD, pain points
- Colleague - Internal capabilities, constraints
Strategic Bets Format
We believe [trend/customer need]
Which means [opportunity/problem space]
So we will explore [hypothesis/initiative direction]
Success looks like [leading indicator metric]
Extension Patterns
Adding a New Phase
- Update
framework-state.ts:
export interface FrameworkState {
phase: 'discovery' | 'research' | 'synthesis' | 'planning' | 'new_phase';
// ...
}
export function calculateProgress(state: FrameworkState): number {
// Add new phase to progress calculation
}
- Update
system-prompt.ts:
const NEW_PHASE_GUIDANCE = `
## New Phase: {Phase Name}
### Purpose
{What this phase accomplishes}
### Key Activities
- {Activity 1}
- {Activity 2}
### Transition Criteria
Move to next phase when:
- {Criterion 1}
- {Criterion 2}
`;
Adding a Research Pillar
- Update
framework-state.ts:
export interface ResearchProgress {
macroMarket: PillarProgress;
customer: PillarProgress;
colleague: PillarProgress;
newPillar: PillarProgress; // Add new pillar
}
interface PillarProgress {
started: boolean;
completed: boolean;
insights: string[];
}
- Update
system-prompt.ts:
const NEW_PILLAR_SECTION = `
### Pillar 4: {Pillar Name}
#### Core Questions
- {Question 1}
- {Question 2}
#### Key Areas to Explore
| Area | Focus |
|------|-------|
| {Area 1} | {Focus description} |
| {Area 2} | {Focus description} |
#### Insight Format
Capture insights as:
- **Observation**: What was discovered
- **Implication**: What it means for strategy
- **Evidence**: Supporting data points
`;
Adding Strategic Output Types
- Update
framework-state.ts:
export interface CanvasCompletion {
marketReality: boolean;
customerInsights: boolean;
organizationalContext: boolean;
strategicSynthesis: boolean;
strategicContext: boolean;
newOutputType: boolean; // Add new output
}
- Update
system-prompt.ts:
const NEW_OUTPUT_TEMPLATE = `
## {Output Name} Template
### Purpose
{What this output provides}
### Structure
1. **Section 1**: {Description}
2. **Section 2**: {Description}
### Example
{Concrete example of the output}
`;
Coaching Tone Guidelines
When extending the agent, maintain:
- Socratic questioning - Guide through questions, don't prescribe
- Empathetic acknowledgment - Validate challenges
- Structured exploration - Follow methodology phases
- Actionable synthesis - End with clear next steps
Example prompt patterns:
const QUESTIONING_PATTERNS = [
"What patterns are you seeing in...",
"How might this affect...",
"What would need to be true for...",
"Who else in your organization might have insight on...",
];
State Persistence
State is stored in framework_state JSONB column in conversations table.
Update state through the agent:
export function updateFrameworkState(
currentState: FrameworkState,
update: Partial<FrameworkState>
): FrameworkState {
return {
...currentState,
...update,
lastUpdated: new Date().toISOString(),
};
}
Testing Extensions
Add tests in tests/unit/lib/agents/strategy-coach/:
describe('New Phase', () => {
it('should calculate progress correctly', () => {
const state = createStateWithNewPhase();
expect(calculateProgress(state)).toBe(expectedProgress);
});
it('should transition from previous phase', () => {
// Test phase transition logic
});
});
微信扫一扫