From octave
Generates deal coaching materials — role-play, microsites, decks, and quizzes — using the Resonate → Elevate → Compel sales methodology grounded in your Octave library.
How this skill is triggered — by the user, by Claude, or both
Slash command
/octave:deal-coachThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
An interactive coaching skill built around the **Resonate → Elevate → Compel** sales methodology. Choose your output mode — role play, coaching microsite, coaching deck, or interactive quiz — and get coaching grounded in deal context AND your actual GTM messaging.
An interactive coaching skill built around the Resonate → Elevate → Compel sales methodology. Choose your output mode — role play, coaching microsite, coaching deck, or interactive quiz — and get coaching grounded in deal context AND your actual GTM messaging.
Three Stages:
| Stage | Focus |
|---|---|
| Resonate | Understand and resonate with the buyer |
| Elevate | Confirm the fit and elevate the opportunity |
| Compel | Deliver the value and compel the buyer to action |
Three Coaching Outputs per Stage:
| Field | Type | Purpose |
|---|---|---|
| Buyer Mindset | String | Where the buyer's head is — psychology, fears, motivations |
| Value Propositions | Array | Which value props to deploy and why they fit this stage |
| Talking Points | Array | Specific things to say, grounded in deal context |
This skill reads five coaching reference files at runtime:
references/frameworks.md — Resonate / Elevate / Compel: Buyer Mindset + Value Props + Talking Pointsreferences/coaching-agents.md — 3 coaching agent personas + 2 cross-stage + scoring rubricsreferences/stage-mapping.md — Buyer's Journey → coaching stage mapping + inference rulesreferences/html-templates.md — HTML section/slide templates per output modereferences/messaging-narratives.md — How coaching grounds in GTM contextIf reference files are not found, fall back to general coaching methodology and note the limitation.
How this differs from /octave:train:
/octave:train is generic sales training (objection handling, personas, product knowledge)/octave:deal-coach is methodology-specific — every output is structured around Resonate/Elevate/Compel, scored against coaching rubrics, and coached by stage-specific agentsHow this differs from /octave:meeting-prep:
/octave:meeting-prep produces a strategic battle plan for an upcoming meeting/octave:deal-coach produces training and coaching materials organized around the three coaching stagesBefore generating, decide whose brand this coaching asset should match (usually the target company; sometimes your own company). Then:
<slug> and check for a cached brand kit at ~/.octave/brands/<slug>/manifest.json.tokens.css (:root + the embedded @font-face) and get-brand-components/assets/kit_base.css into the output <style>;brand-kit.md → Signature moves, and reuse the kit's real logo, images/, and icons.json;get-brand-components/scripts/render_kit.py (hero / split / logos / pricing / cta / footer blocks)./octave:get-brand-components <domain>, then proceed.The brand kit is the strongest styling signal — when one is available, prefer it over generic
--stylepresets. See theget-brand-componentsskill for the kit format, token contract, and renderer.
After generating the asset, offer an optional review (don't force it): "Want me to run a quick review pass over this — layout, brand, narrative, groundedness, and AI-slop?" If yes, follow get-brand-components/references/asset-review.md: render/screenshot the output, inspect it across the five dimensions (render the pixels and actually look — overflow and white-on-white only show in the render), report a short scorecard of specific located findings, then fix and re-verify. Skip silently if the user declines.
/octave:deal-coach
/octave:deal-coach [company domain or name]
/octave:deal-coach --mode [roleplay|microsite|deck|quiz]
/octave:deal-coach --stage [resonate|elevate|compel]
/octave:deal-coach [domain] --mode roleplay --stage elevate
/octave:deal-coach
/octave:deal-coach acme.com
/octave:deal-coach --mode roleplay
/octave:deal-coach acme.com --mode microsite --stage compel
/octave:deal-coach --mode quiz --stage resonate
/octave:deal-coach acme.com --mode deck --stage elevate
Follow these steps precisely. Do not skip or reorder them.
If the user specified --mode, use that. Otherwise, ask:
AskUserQuestion({
questions: [{
question: "What kind of deal coaching output do you want?",
header: "Output Mode",
options: [
{
label: "Role Play",
description: "Practice a coaching-backed conversation scored against Buyer Mindset, Value Props, and Talking Points. 8-12 exchanges, then a scorecard."
},
{
label: "Coaching Microsite",
description: "Self-contained HTML coaching page organized around Buyer Mindset / Value Propositions / Talking Points — with deal context, priority actions, and stage-grounded messaging."
},
{
label: "Coaching Deck",
description: "Slide presentation walking through the coaching framework for a specific deal, with stage-specific content and talk tracks."
},
{
label: "Interactive Quiz",
description: "Test coaching methodology knowledge with deal-grounded scenarios. Scoring breaks down by Resonate/Elevate/Compel."
}
],
multiSelect: false
}]
})
Store the selected mode for routing in Step 5.
Determine if coaching should be grounded in a specific deal or run in generic/practice mode.
If the user already provided a domain, name, or email, skip to 2b.
AskUserQuestion({
questions: [{
question: "Should this be grounded in a specific deal, or do you want generic practice?",
header: "Deal Context",
options: [
{
label: "Specific Deal",
description: "Ground coaching in a real account — uses CRM data, findings, events, and the matched Motion ICP narrative to make coaching deal-specific."
},
{
label: "Generic Practice",
description: "Practice the methodology with library-level data only (personas, Motion ICP narrative, proof points). No specific account context."
}
],
multiSelect: false
}]
})
If Generic Practice: Skip to Step 2c.
If Specific Deal: Ask for the company domain or contact email:
AskUserQuestion({
questions: [{
question: "What company domain or contact email should I research?",
header: "Company",
options: [
{
label: "Enter domain",
description: "e.g., acme.com"
},
{
label: "Enter email",
description: "e.g., [email protected]"
}
],
multiSelect: false
}]
})
Run these MCP tool calls to build a complete picture. Run independent calls in parallel:
Company & CRM Context (parallel):
enrich_company({ domain: "<domain>" })
find_crm_records({ domain: "<domain>" })
find_crm_activities({ domain: "<domain>" })
generate_crm_context({ domain: "<domain>" })
Library Context (parallel):
search_knowledge_base({ query: "<company name> OR <industry>" })
list_findings({ domain: "<domain>" })
list_events({ domain: "<domain>" })
list_all_entities({ entityType: "persona" })
list_all_entities({ entityType: "competitor" })
list_all_entities({ entityType: "proofPoint" })
Motion ICP (after enrichment / persona / segment inference):
list_motions()
list_motion_icps({ motionOId: "<motion_oId>" })
find_motion_icp({ motionIcpOId: "<matched_motion_icp_oId>", includeLearnings: true })
If a Custom Motion Playbook (Thematic / Milestone / Account / Competitive) applies, also fetch its narrative:
list_motion_playbooks({ motionOId: "<motion_oId>" })
get_motion_playbook({ motionPlaybookOId: "<custom_motion_playbook_oId>" })
If any tool call fails, note the gap and continue. Coach with available data and flag missing context.
For generic mode, gather library-level data only:
list_all_entities({ entityType: "persona" })
list_all_entities({ entityType: "competitor" })
list_all_entities({ entityType: "proofPoint" })
Then load the Default Motion Playbook narrative for the most relevant Motion:
list_motions()
list_motion_icps({ motionOId: "<motion_oId>" })
find_motion_icp({ motionIcpOId: "<representative_motion_icp_oId>", includeLearnings: true })
Read the references needed for the inferred or selected stage:
Read: references/frameworks.md
Read: references/stage-mapping.md
Read: references/coaching-agents.md
Read: references/messaging-narratives.md
If generating HTML output (microsite or deck), also read:
Read: references/html-templates.md
If the user specified --stage, use that and skip to Step 3b.
Use the weighted inference algorithm from references/stage-mapping.md:
| Signal | Weight | Source |
|---|---|---|
| CRM deal stage | 40% | find_crm_records → map to Resonate/Elevate/Compel |
| Conversation findings | 30% | list_findings — pain points (→Resonate), competitor mentions (→Elevate), ROI/budget (→Compel) |
| Deal activity patterns | 20% | list_events — discovery call (→Resonate), demo (→Elevate), proposal (→Compel) |
| Time in stage | 10% | Days in current stage vs. expectation |
For generic practice mode: Skip inference. Let the user choose:
AskUserQuestion({
questions: [{
question: "Which coaching stage do you want to practice?",
header: "Stage",
options: [
{
label: "Resonate",
description: "Understand and resonate with the buyer — discovery principles, building trust through understanding"
},
{
label: "Elevate",
description: "Confirm the fit and elevate the opportunity — disrupt status quo, differentiate on value, build credibility"
},
{
label: "Compel",
description: "Deliver the value and compel the buyer to action — business case, Why Now, champion enablement"
}
],
multiSelect: false
}]
})
Confidence calibration: CRM absence is a data hygiene issue, not a deal health signal. If CRM data is missing but activity signals are strong, redistribute the CRM weight across other signals.
Present the inference:
STAGE INFERENCE
===============
Stage: [Resonate / Elevate / Compel]
Confidence: [High / Medium / Low]
Buyer's Journey Phase: [Phase Name]
EVIDENCE
--------
CRM Stage (40%): "[Stage Name]" → maps to [Stage] [or "No CRM record — data gap, not deal gap"]
Findings (30%): [Key signals]
Activities (20%): [Key activities]
Time (10%): [Assessment]
Then confirm:
AskUserQuestion({
questions: [{
question: "Does this stage assessment look right?",
header: "Confirm Stage",
options: [
{
label: "Yes — proceed with [Stage]",
description: "Generate [selected mode] coaching for [Stage]"
},
{
label: "No — let me pick",
description: "Override the inference and choose a different stage"
},
{
label: "Show all stages",
description: "See all 3 stages with descriptions before choosing"
}
],
multiSelect: false
}]
})
If user picks "No" or "Show all stages," present the full stage list (same as generic mode above).
If time-in-stage signals indicate a stalled deal (>2x expected time), add stall diagnosis:
STALL DETECTION
===============
This deal appears stalled at [Journey Phase].
Time in stage: [X] days (expected: [Y] days)
Root Cause Hypothesis: [Stage] gap
- [Explanation of why this stage gap is likely the root cause]
- [Specific evidence from findings/activities]
Recommendation: Focus coaching on [Root Cause Stage], not the nominal CRM stage.
Route to the root cause stage's coaching agent, not the nominal stage.
Based on the confirmed stage, activate the appropriate coaching agent from references/coaching-agents.md:
| Stage | Coaching Agent | Focus |
|---|---|---|
| Resonate | Resonance Coach | Discovery principles (wide, deep, high), trust building |
| Elevate | Elevation Coach | Case for Change, Value Framing, differentiated value, proof points |
| Compel | Compel Coach | Business case building, Why Now Case, champion enablement |
Cross-stage agents (available as supplements):
Load the agent's persona, coaching criteria, scoring rubric, and grounding instructions from the reference file. Use the grounding map from references/messaging-narratives.md to connect the agent's outputs to the seller's Octave library data.
Branch based on the output mode selected in Step 1.
AskUserQuestion({
questions: [{
question: "What kind of role play do you want?",
header: "Scenario",
options: [
{
label: "Single Stage Practice",
description: "Practice one stage ([Stage]) in a focused 8-12 exchange conversation"
},
{
label: "Full Journey Simulation",
description: "Walk through Resonate → Elevate → Compel in sequence, simulating the full buying journey"
}
],
multiSelect: false
},
{
question: "How difficult should the buyer be?",
header: "Difficulty",
options: [
{
label: "Friendly",
description: "Buyer is open and receptive. Good for learning the coaching framework."
},
{
label: "Skeptical",
description: "Buyer pushes back moderately. Tests methodology under pressure."
},
{
label: "Hostile",
description: "Buyer is resistant, dismissive, or aggressive. Tests advanced skills and composure."
}
],
multiSelect: false
}]
})
If in specific-deal mode, identify the buyer persona from entities gathered in Step 2. If generic, let the user choose from available personas:
AskUserQuestion({
questions: [{
question: "Which persona should the buyer represent?",
header: "Buyer Persona",
options: [
// Dynamically populated from list_all_entities({ entityType: "persona" })
{
label: "[Persona Name]",
description: "[Persona title/role — from entity data]"
}
// ... up to 4 personas
],
multiSelect: false
}]
})
Load the coaching agent's rubric and grounding map for the selected stage.
For deal-specific mode, map all Octave data to coaching output fields using references/messaging-narratives.md.
For generic mode, use the Default Motion Playbook narrative data (Motion ICP cell) to create a representative scenario.
Prepare buyer behavior rules based on stage:
| Stage | Buyer Psychology | Behavior Rules |
|---|---|---|
| Resonate | Exploratory, guarded | Shares surface problems, tests whether seller digs deeper. Friendly: volunteers info. Hostile: one-word answers. |
| Elevate | Status quo defender / comparison shopper | Resists change, references competitors. Friendly: open to new perspective. Hostile: "We've been doing fine for years" / "Your competitor does that too." |
| Compel | Analytical, needs numbers, risk-averse | Asks about ROI, pushes back on vague claims. Friendly: engages with data. Hostile: "Those numbers don't apply to us" / "Now is not the right time." |
Set the scene:
See mode-output-templates.md for the role play scene setup template.
Then begin as the buyer persona:
For Full Journey Simulation:
After the role play ends:
See mode-output-templates.md for the full coaching scorecard template with stage-specific talking points rubrics.
After the scorecard:
Want to:
1. Run this role play again (same stage, same difficulty)
2. Try a harder difficulty level
3. Practice the next stage ([Next Stage])
4. Practice objection handling for this stage
5. Get a coaching microsite for this stage
6. Switch to a different output mode
7. Done
Reference the style preset system from skills/deck/references/style-presets.md.
Each coaching stage has a default style preset:
| Stage | Default Preset | Rationale |
|---|---|---|
| Resonate | soft-light | Exploratory, calm, trust-building |
| Elevate | midnight-pro | Urgency, disruption, bold contrast |
| Compel | executive-dark | Business gravitas, financial seriousness |
Present the default with option to override:
AskUserQuestion({
questions: [{
question: "The default style for [Stage] is [preset name] ([rationale]). Want to use it or pick a different style?",
header: "Style",
options: [
{
label: "[Default Preset] (Recommended)",
description: "[Preset description]"
},
{
label: "Pick a different style",
description: "Choose from available presets"
},
{
label: "Auto-pick from brand",
description: "Extract colors from the company's website and generate a custom theme"
}
],
multiSelect: false
}]
})
If user picks "Pick a different style," present mood-based preview options (follow the pattern from deck/SKILL.md Step 4).
Before generating HTML, present the content plan:
See mode-output-templates.md for the microsite content outline template with full structure, design principles, and Octave sources block.
Use templates from references/html-templates.md to generate a self-contained HTML file.
Content grounding rules (from references/messaging-narratives.md):
Structural rules:
<details> with +/− toggle<details> elementsopen attribute)Content density limits:
| Section | Limit |
|---|---|
| Header + Deal Brief | Company info + 4-6 deal stats + coaching stage badge + deal-specific subtitle |
| Priority Actions | Exactly 3 actions |
| Deal Activity | 3-6 timeline entries (key events + "Next" entry) |
| Journey Map | 3 phases (Resonate/Elevate/Compel), each with generic explanation + deal-specific context |
| Stage Assessment | 3-4 evidence cards + confidence calibration |
| Buyer Mindset | Mindset narrative + 3-5 buyer signals + adaptation guidance |
| Value Propositions | 4-6 props with evidence inline and usage notes |
| Talking Points | 4-6 talk tracks (strategic point + quote + evidence) organized by conversation flow |
| Objection Handling | 3-5 objections grounded in buyer's decision frame |
| Next Stage Preview | 1 transition checklist + next agent preview |
| Deal Gaps (MEDDPICC) | 8 elements + gap-to-action mapping (if included) |
| The Play | 1 strategic sentence + 1 concrete action |
Output location:
.octave-deal-coach/
[company-kebab]-[stage]-[YYYY-MM-DD]/
[company-kebab]-[stage].html
Example:
.octave-deal-coach/acme-corp-elevate-2026-03-03/acme-corp-elevate.html
For generic mode, use practice instead of company name:
.octave-deal-coach/practice-resonate-2026-03-03/practice-resonate.html
After writing the file, open it:
open "[file path]"
Same as MS-1. Use stage-appropriate default presets.
Present the slide outline for approval. Slide content varies by stage:
Resonate (~7 slides):
Elevate (~9 slides):
Compel (~9 slides):
Present outline and ask:
Generate this deck?
1. Yes — generate
2. Adjust slides
3. Change style
4. Start over
Use slide templates from references/html-templates.md for a self-contained HTML file with scroll-snap slide architecture.
Viewport fitting rules (from deck/SKILL.md):
clamp() — never fixed pxclamp()overflow: hidden on every .slideAnimation:
.animate-in class with opacity + translateYnth-child stagger delaysprefers-reduced-motionNavigation:
page-break-after: always, remove snapOutput location:
.octave-deal-coach/
[company-kebab]-deck-[stage]-[YYYY-MM-DD]/
[company-kebab]-deck-[stage].html
After writing, open in browser:
open "[file path]"
AskUserQuestion({
questions: [{
question: "What type of coaching quiz do you want?",
header: "Quiz Type",
options: [
{
label: "Stage Recognition",
description: "A buyer says X — which coaching stage? Tests your ability to diagnose where a deal is."
},
{
label: "Methodology Application",
description: "You're in [Stage] — what's the right Buyer Mindset, Value Props, and Talking Points approach? Tests methodology knowledge."
},
{
label: "Talk Track Completion",
description: "Buyer says [objection/question]. Using the coaching methodology, what's your response?"
},
{
label: "Full Review",
description: "Mix of all categories covering Resonate, Elevate, and Compel. Comprehensive assessment."
}
],
multiSelect: false
},
{
question: "How many questions?",
header: "Length",
options: [
{
label: "Quick (5 questions)",
description: "Fast check — 5-10 minutes"
},
{
label: "Standard (10 questions)",
description: "Thorough assessment — 15-20 minutes"
},
{
label: "Deep (15 questions)",
description: "Comprehensive review — 25-30 minutes"
}
],
multiSelect: false
}]
})
Load coaching content from reference files. If deal-specific, ground questions in actual deal data. If generic, use Motion ICP narrative data (the Default Motion Playbook).
Build question bank by category:
Stage Recognition:
Methodology Application:
Talk Track Completion:
Full Review:
Present questions one at a time:
QUESTION [N]/[Total]
Category: [Stage Recognition / Methodology Application / Talk Track Completion]
Stage: [Resonate / Elevate / Compel]
[If deal-grounded: "Based on your [Company] deal"]
[Question text]
[For multiple choice: Present 4 options]
[For open-ended: Ask the user to type their response]
After each answer:
[Correct / Partially Correct / Incorrect]
[Brief explanation referencing specific coaching elements]
[If deal-grounded: How this applies to their specific deal]
Score so far: [X]/[N]
See mode-output-templates.md for the full quiz results template with breakdowns by stage, dimension, and category.
After results:
Want to:
1. Retake this quiz
2. Take a quiz focused on your weakest area ([Stage])
3. Practice a role play for your weakest area
4. Get a coaching microsite for your weakest area
5. Try a different output mode
6. Done
After delivering any output, offer iterations:
For Role Play and Quiz: Next actions are included in RP-4 and QZ-4 above.
For Microsite and Deck: After opening the HTML file, present:
Coaching [microsite/deck] generated and opened in your browser.
File: [file path]
Company: [Company Name or "Generic Practice"]
Stage: [Resonate / Elevate / Compel] — [Stage subLabel]
Coaching Agent: [Agent Name]
Style: [Preset Name]
Want to:
1. Practice this stage with a role play
2. Add MEDDPICC deal gap analysis [if not already included]
3. Move to the next stage ([Next Stage]: [subLabel])
4. Try a different output mode for this stage
5. Regenerate with a different style
6. Done
If the user picks option 3 (next stage), return to Step 3b with the next stage pre-selected and flow through Steps 4-5 again.
All HTML outputs go to .octave-deal-coach/ in the project root:
.octave-deal-coach/
[company-kebab]-[stage]-[YYYY-MM-DD]/
[company-kebab]-[stage].html # Microsite
[company-kebab]-deck-[stage]-[YYYY-MM-DD]/
[company-kebab]-deck-[stage].html # Deck
This directory should be in .gitignore.
| Tool | Purpose |
|---|---|
enrich_company | Company profile, industry, tech stack, strategic context |
find_crm_records | Deal stage, amount, close date, pipeline position |
find_crm_activities | Recent interactions — calls, emails, meetings |
generate_crm_context | AI-synthesized CRM narrative |
| Tool | Purpose |
|---|---|
list_motions | List all Motions in the workspace |
list_motion_playbooks | List Motion Playbooks (Default + Custom) under a Motion |
get_motion_playbook | Full details for a Motion Playbook |
list_motion_icps | List Motion ICP cells (persona × segment intersections) for a Motion |
find_motion_icp | Full Motion ICP cell narrative (Target ICP overview, Operating landscape, Strategic narrative, Pains and consequences, Benefits and impacts, Methodology, References) plus Learning Loop learnings |
get_entity | Individual entity details (persona, competitor, proof point) |
| Tool | Purpose |
|---|---|
search_knowledge_base | Find matching guides and research |
search_resources | Find relevant resources (docs, presentations) |
list_all_entities | List personas, competitors, proof points, references |
list_findings | Objections, pain points, competitor mentions from conversations |
list_events | Deal history, stage changes, activity timeline |
| Tool | Purpose |
|---|---|
generate_content | Generate supporting content if needed |
No CRM data found: "I couldn't find CRM records for [domain]. I'll proceed with library-level data only. Stage inference will rely on findings and events. You can also manually select a stage."
No Motion ICP found: "No matching Motion ICP cell found. I'll use general coaching methodology without Motion-specific grounding. Talk tracks will reference the framework but won't include your specific Strategic narrative, Benefits and impacts, or Methodology content. Consider creating a Motion for this offering, or layering a Custom Motion Playbook (Thematic / Milestone / Account / Competitive) onto an existing Motion."
No findings/events: "No conversation findings or events found for [domain]. Stage inference will rely primarily on CRM stage. For more accurate coaching, ensure conversation data is synced to Octave."
Reference file not found: "Could not load [reference file]. Falling back to general coaching methodology. For full coaching, ensure reference files are in
skills/deal-coach/references/."
Stage inference low confidence: "I'm not confident about the coaching stage — multiple stages scored similarly. I'd recommend selecting manually. Here are all options: [present all three stages]."
MCP connection failed: "Could not connect to Octave. Check your connection with
/octave:workspace. Deal coaching requires Octave MCP tools for deal context and library data."
HTML write failed: "Could not write the HTML file. Check that
.octave-deal-coach/is writable. Try:mkdir -p .octave-deal-coach"
/octave:train — Generic sales training (role play, quiz, guided learning) without deal coaching methodology/octave:meeting-prep — Strategic meeting battle plan as HTML/octave:deck — General-purpose slide deck builder/octave:pipeline — Deal coaching and pipeline management/octave:enablement — Sales enablement materials (cheat sheets, objection guides)/octave:battlecard — Competitive intelligence and battlecards/octave:research — Account and person researchnpx claudepluginhub octavehq/lfgtm --plugin octavePractice selling with role-play simulations, knowledge quizzes, and guided learning using your GTM library. Train objection handling, discovery calls, and competitive positioning.
Create comprehensive sales playbooks for products, segments, or sales motions. Use this skill whenever someone needs to build a sales playbook, create a new hire onboarding guide, document a sales process, standardize a sales motion, says "build a playbook for [product/segment]", "document our sales process", "create a selling guide", or when systematizing tribal knowledge into repeatable processes. Also trigger when someone mentions sales methodology documentation, go-to-market playbooks, vertical playbooks, or rep enablement guides.
Generates sales playbooks: outbound sequences, discovery call guides, objection handling scripts, demo frameworks, and proposal templates. Captures ICP context for tailored outputs.