plugins/octave/skills/train/SKILL.md
Practice selling with role-play simulations, knowledge quizzes, and guided learning on your GTM library. Use when user says "role-play a call", "quiz me", "practice objections", "sales training", "test my knowledge", or asks for interactive learning. For Resonate/Elevate/Compel methodology practice, use /octave:deal-coach instead.
npx skillsauth add octavehq/lfgtm trainInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Practice and learn your GTM playbooks and Motion ICPs through interactive role-play simulations and knowledge quizzes — all grounded in your real library data. Role-play against buyer personas with realistic objections, or quiz yourself on value props, competitive positioning, and discovery techniques.
/octave:train [mode] [--persona <name>] [--competitor <name>] [--difficulty easy|medium|hard]
/octave:train # Interactive - pick a mode
/octave:train roleplay # Simulate a buyer conversation
/octave:train roleplay --persona "CTO" # Role-play with a specific persona
/octave:train roleplay --scenario discovery # Practice discovery calls
/octave:train quiz # Test your GTM knowledge
/octave:train quiz --topic objections # Quiz on objection handling
/octave:train quiz --competitor "Acme" # Competitive knowledge check
When the user runs /octave:train:
If no mode specified, ask:
AskUserQuestion({
questions: [{
question: "What do you want to practice?",
header: "Train mode",
options: [
{ label: "Role-Play", description: "Simulate a sales conversation — I'll play the buyer and give you feedback" },
{ label: "Quiz", description: "Test your knowledge of personas, objections, value props, and competitive positioning" },
{ label: "Guided Learning", description: "Walk me through a topic from your Motion ICP narrative — teach me like I'm a new hire" }
],
multiSelect: false
}]
})
Simulate realistic buyer conversations using persona data from the library.
Ask for scenario parameters (use AskUserQuestion for structured choices):
AskUserQuestion({
questions: [
{
question: "What scenario do you want to practice?",
header: "Scenario",
options: [
{ label: "Discovery call", description: "First conversation — qualify the opportunity and uncover pain" },
{ label: "Objection handling", description: "Practice responding to tough objections mid-deal" },
{ label: "Demo pitch", description: "Present your product's value to a skeptical buyer" },
{ label: "Competitive displacement", description: "Sell against a competitor the buyer currently uses" }
],
multiSelect: false
},
{
question: "How tough should I be?",
header: "Difficulty",
options: [
{ label: "Friendly", description: "Interested buyer, open to learning — good for building confidence" },
{ label: "Skeptical (Recommended)", description: "Realistic buyer who pushes back and needs convincing" },
{ label: "Hostile", description: "Tough buyer — time-pressed, has objections, hard to impress" }
],
multiSelect: false
}
]
})
If no persona specified, present available personas:
# Get personas from library
list_entities({ entityType: "persona" })
Ask:
AskUserQuestion({
questions: [{
question: "Which buyer persona should I play?",
header: "Persona",
options: [
{ label: "[Persona 1 name]", description: "[Title] — [key concern]" },
{ label: "[Persona 2 name]", description: "[Title] — [key concern]" },
{ label: "[Persona 3 name]", description: "[Title] — [key concern]" }
],
multiSelect: false
}]
})
# Get full persona details
get_entity({ oId: "<persona_oId>" })
# Find the matching Motion ICP cell (persona × segment) for messaging context
list_motions()
list_motion_icps({ motionOId: "<motion_oId>" })
find_motion_icp({ motionIcpOId: "<motion_icp_oId>", includeLearnings: true })
# Get real objections from conversations (to make role-play realistic)
list_findings({
query: "objections pushback concerns",
startDate: "<180 days ago>",
eventFilters: {
personas: ["<persona_oId>"]
}
})
# Get product details
list_entities({ entityType: "product" })
get_entity({ oId: "<product_oId>" })
# Get competitor details (for competitive scenarios)
get_entity({ oId: "<competitor_oId>" }) // if competitive scenario
# Get proof points (to evaluate if rep uses them)
search_knowledge_base({ query: "<persona> results metrics", entityTypes: ["proof_point", "reference"] })
Present the scenario context, then begin:
See roleplay-scene-template.md for the role-play scene template.
Run the conversation with the shared role-play engine — roleplay-mechanics.md defines how to play the buyer at each difficulty tier, session length (8-12 exchanges), and natural endings. Train-specific grounding:
list_findings)After the role-play ends, provide detailed feedback following the scorecard mechanics in roleplay-mechanics.md:
See roleplay-scorecard-template.md for the role-play scorecard template.
Test knowledge of the user's own GTM library.
AskUserQuestion({
questions: [{
question: "What do you want to be quizzed on?",
header: "Quiz topic",
options: [
{ label: "Personas", description: "Pain points, priorities, buying triggers, and how to sell to each persona" },
{ label: "Objection handling", description: "Common objections and how to respond — from your Motion ICP narratives and real conversations" },
{ label: "Competitive positioning", description: "Differentiators, trap questions, and counters for each competitor" },
{ label: "Full GTM review", description: "Mix of everything — personas, products, value props, objections, competitors" }
],
multiSelect: false
}]
})
Also ask for quiz format:
AskUserQuestion({
questions: [{
question: "What format?",
header: "Format",
options: [
{ label: "Rapid fire (Recommended)", description: "Quick question-answer, 10 questions, scored at the end" },
{ label: "Scenario-based", description: "Situational questions — 'A prospect says X, what do you do?'" },
{ label: "Deep dive", description: "Fewer questions but explain your reasoning — I'll coach you on each answer" }
],
multiSelect: false
}]
})
# Load based on topic
# For Personas:
list_entities({ entityType: "persona" })
get_entity({ oId: "<persona_oId>" }) // for each persona
# For Objections:
list_findings({
query: "objections pushback concerns pricing",
startDate: "<180 days ago>"
})
list_motions()
list_motion_icps({ motionOId: "<motion_oId>" })
find_motion_icp({ motionIcpOId: "<motion_icp_oId>", includeLearnings: true })
# For Competitive:
list_entities({ entityType: "competitor" })
get_entity({ oId: "<competitor_oId>" }) // for each competitor
# For Full GTM:
list_entities({ entityType: "persona" })
list_entities({ entityType: "product" })
list_entities({ entityType: "competitor" })
search_knowledge_base({ query: "value propositions proof points" })
list_entities({ entityType: "use_case" })
Run questions with the shared quiz engine — roleplay-mechanics.md defines question pacing, per-answer grading, and running-score display.
See quiz-formats.md for the rapid fire, scenario-based, and deep dive quiz format templates with question types per topic.
See quiz-results-template.md for the quiz results template.
Walk through a topic from the library like a training session.
AskUserQuestion({
questions: [{
question: "What do you want to learn about?",
header: "Topic",
options: [
{ label: "A persona", description: "Deep walkthrough of how to sell to a specific buyer type" },
{ label: "A competitor", description: "Learn competitive positioning, differentiators, and counters" },
{ label: "A Motion", description: "Walk through a Motion's Default Motion Playbook (persona × segment matrix) plus any Custom Motion Playbooks" },
{ label: "Your product", description: "Master your product's capabilities, use cases, and proof points" }
],
multiSelect: false
}]
})
Fetch the relevant entity and present it as a structured training walkthrough:
# Load the entity
get_entity({ oId: "<entity_oId>" })
# Load related Motion + ICP cell
list_motions()
list_motion_icps({ motionOId: "<motion_oId>" })
find_motion_icp({ motionIcpOId: "<motion_icp_oId>", includeLearnings: true })
# For the "A Motion" topic, also walk the Motion's playbooks
list_motion_playbooks({ motionOId: "<motion_oId>" })
get_motion_playbook({ motionPlaybookOId: "<mp_oId>" }) // Default + any Custom playbooks
# Load real conversation examples
list_findings({
query: "<topic>",
startDate: "<180 days ago>"
})
# Load proof points
search_knowledge_base({ query: "<topic>", entityTypes: ["proof_point", "reference"] })
See guided-learning-template.md for the interactive guided learning lesson template.
list_entities - List personas, products, competitors, use casesget_entity - Full entity details (persona pain points, competitor weaknesses, etc.)list_motions - List Motions in the workspacelist_motion_playbooks - List Motion Playbooks under a Motion (Default + Custom)get_motion_playbook - Full details for a Motion Playbooklist_motion_icps - List Motion ICP cells (persona × segment) for a Motionfind_motion_icp - Motion ICP narrative (Target ICP overview, Strategic narrative, Pains/Benefits, Methodology, References) + Learning Loop learningssearch_knowledge_base - Proof points, references, messaginglist_findings - Real objections, pain points, and signals from calls/emailsgenerate_content - Generate scenario descriptions, coaching feedbackNo Personas in Library:
No personas found in your library.
Role-play and quizzes work best with persona data. Add personas first:
/octave:library create personaI can still run a general sales quiz using your product info.
No Conversation Data:
No conversation data available yet.
I'll use your library data for role-play and quizzes. As your team logs calls and emails, training will get richer with real-world objections and patterns.
No Competitors:
No competitors in your library.
Competitive quizzes and displacement role-plays need competitor data. Add competitors:
/octave:library create competitorI can still quiz you on personas, value props, and general objection handling.
Sparse Library:
Your library has limited data for a full training session.
Start with:
/octave:library create product- Add your product/octave:library create persona- Add buyer personas/octave:library create competitor- Add competitorsEven with just a product and one persona, I can run basic training.
/octave:deal-coach - Methodology-specific practice (Resonate → Elevate → Compel) with coaching microsites, decks, and quizzes/octave:enablement - Generate training materials (cheat sheets, objection guides, discovery banks)/octave:battlecard - Deep competitive intelligence for competitive training/octave:insights - Surface real field intelligence to inform training/octave:wins-losses - Win/loss patterns to learn from/octave:research - Research a real prospect before a live call/octave:generate - Generate real outreach after practicingdevelopment
Turn one or more Octave GTM Explorer / Beats reports into a branded, shareable digest with selectable insight scope, evidence depth, and output format. Use when the user asks for a report digest, weekly or monthly insight recap, executive intelligence brief, magazine-style insight story, report deck, or a recurring published summary of Octave insights.
content-media
Product and feature launch planning with full content kit generation across channels and audiences. Use when user says "launch plan", "product launch", "feature announcement", "GTM plan for launch", "launch content kit", or mentions launching something new.
development
A dense internal deal room a rep hands to a champion so they can run the buying-committee sell without you in the room. Quantified business case, stakeholder map with per-seat ammo, objection handling, and a path to yes, rendered as self-contained HTML. Use when user says "champion deal room", "arm my champion", "help my champion sell internally", "internal business case for [deal]", or wants a champion enablement doc. For a customer-facing top-of-funnel page use /octave:microsite; for the formal closing proposal use /octave:proposal.
data-ai
Analyze email threads, call transcripts, and conversations for resonance, adherence to messaging, and competitive differentiation. Use when user says "analyze this call", "how did the email land", "score this thread", "conversation analysis", or pastes conversation content to evaluate.