plugins/octave/skills/icp-refine/SKILL.md
Compare deal outcomes and conversation evidence against your segment and persona definitions, then update the ICP criteria in your library. Use when user says "refine ICP", "update our ICP", "ideal customer profile", "should we change who we target", or wants segment/persona definitions updated from deal evidence. Do NOT use for win/loss pattern analysis itself — use /octave:wins-losses instead.
npx skillsauth add octavehq/lfgtm icp-refineInstall 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.
Analyze deal outcomes, conversation patterns, and qualification scores to refine your ICP definitions. Compares what your library says your ideal customer looks like against what actually wins — then recommends updates.
/octave:icp-refine [--period <days>] [--segment <name>] [--focus wins|losses|both]
/octave:icp-refine # Full ICP analysis (last 180 days)
/octave:icp-refine --period 90 # Last quarter
/octave:icp-refine --segment "Enterprise" # Specific segment
/octave:icp-refine --focus wins # Only analyze what's working
/octave:icp-refine --focus losses # Only analyze what's not working
When the user runs /octave:icp-refine:
If no options specified, use defaults and confirm:
I'll analyze your deal data to refine your ICP.
Period: Last 180 days (change with --period)
Segments: All (change with --segment)
Focus: Wins and losses
Starting analysis...
# Get current segments (this IS the ICP definition)
list_entities({ entityType: "segment" })
# Get full segment details
get_entity({ oId: "<segment_oId>" }) // for each segment
# Get current personas
list_entities({ entityType: "persona" })
get_entity({ oId: "<persona_oId>" }) // for key personas
# Get products/services (what we're selling)
list_entities({ entityType: "product" })
list_entities({ entityType: "service" })
# Get won deals
list_events({
startDate: "<period start>",
filters: {
eventTypes: ["DEAL_WON"]
}
})
# Get lost deals
list_events({
startDate: "<period start>",
filters: {
eventTypes: ["DEAL_LOST"]
}
})
# Get findings from won deals
list_findings({
query: "why we won success factors decision criteria champion",
startDate: "<period start>",
eventFilters: {
outcomeFilters: ["WON"]
}
})
# Get findings from lost deals
list_findings({
query: "why we lost objections blockers competition pricing",
startDate: "<period start>",
eventFilters: {
outcomeFilters: ["LOST"]
}
})
# Get positive conversation signals
list_findings({
query: "excited interested positive resonated value",
startDate: "<period start>",
eventFilters: {
sentiments: ["POSITIVE"]
}
})
# Get negative signals
list_findings({
query: "concerned hesitant not a fit wrong timing",
startDate: "<period start>",
eventFilters: {
sentiments: ["NEGATIVE"]
}
})
For each won deal, extract:
For each lost deal, extract:
See refinement-report-template.md for the full ICP refinement report template.
# Update segment
update_entity({
entityType: "segment",
oId: "<segment_oId>",
instructions: "<specific updates based on findings>"
})
# Update persona
update_entity({
entityType: "persona",
oId: "<persona_oId>",
instructions: "<specific updates>"
})
# Update Motion Playbook narrative sections (Strategic narrative, Pains and consequences, Benefits and impacts, etc.)
# for the Motion ICP cell that corresponds to the refined persona × segment.
update_motion_playbook({
motionPlaybookOId: "<motion_playbook_oId>",
instructions: "Update Strategic narrative and Pains and consequences for the [persona] × [segment] Motion ICP based on ICP refinement findings: [evidence]"
})
# Create new persona if recommended
create_entity({
entityType: "persona",
name: "<new persona name>",
instructions: "<details from deal analysis>"
})
What would you like to do next?
1. Deep dive on a specific finding
2. Analyze a specific segment or persona
3. Compare current quarter vs. previous
4. Update a specific library entity
5. Generate updated enablement materials
6. Export the full report
7. Done
list_entities - Segments, personas, productsget_entity - Full entity details for ICP definitionlist_events - Won/lost dealslist_findings - Conversation insights, objections, signalsget_event_detail - Deep dive into specific dealsupdate_entity - Update segments, personasupdate_motion_playbook - Edit Motion Playbook narrative sections (Strategic narrative, Pains and consequences, Benefits and impacts, etc.) for a Motion ICP cellcreate_entity - New personas or segmentslist_motions - List Motions in the workspacelist_motion_icps - List Motion ICP cells (persona × segment) for a Motionfind_motion_icp - Fetch a Motion ICP cell narrative + Learning Loop learningssearch_knowledge_base - Cross-reference patternsNo Deal Data:
No deal outcomes found in the last [N] days.
ICP refinement requires win/loss data. Options:
- Extend the time period (try --period 365)
- Review conversation data instead (calls/emails without deal outcomes)
- Do a manual ICP review using your library definitions
Insufficient Data:
Found only [N] deals. Statistical patterns may not be reliable.
I'll highlight patterns but flag low-confidence findings. Consider extending the period or combining with qualitative analysis.
No Segments Defined:
No segments found in your library.
I can still analyze deal patterns, but there's nothing to compare against. Consider creating segments first:
/octave:library create segmentOr I'll suggest segment definitions based on the deal data.
/octave:wins-losses - Deeper win/loss analysis (complements ICP refinement)/octave:insights - Field intelligence trends/octave:prospector - Use refined ICP to find new prospects/octave:audit - Check library health after updates/octave:library - Manually update entitiesdevelopment
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.