Agent skill
icp-refine
Analyze deal outcomes and conversation patterns to refine ICP definitions and targeting criteria.
Filed under Prospecting and list building.
From octavehq/lfgtm · 27 skills · 11 · pushed 2026-08-21
What it does when it runs
Analyze deal outcomes and conversation patterns to refine ICP definitions and targeting criteria. Use when user says "refine ICP", "who should we target", "update our ICP", "ideal customer profile", or asks why deals are being won or lost.
Read from the skill and the 1 file bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/octavehq/lfgtm.git /tmp/lfgtm git -C /tmp/lfgtm sparse-checkout set "skills/icp-refine" mkdir -p ~/.claude/skills/icp-refine cp -R "/tmp/lfgtm/skills/icp-refine/." ~/.claude/skills/icp-refine/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
Or take the whole library
This repo ships a .claude-plugin manifest, so Claude Code can install all 27 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.
/plugin marketplace add octavehq/lfgtm /plugin
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from octavehq/lfgtm/blob/88c5cdb1899aec05dc17e9fabd61e6e376598cd6/skills/icp-refine/SKILL.md, which is licensed MIT (repository). 939 words, 35 headings.
/octave:icp-refine - ICP Intelligence
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.
Principles
Follow these standards during generation. Read each before producing output.
Content and language:
- Editorial rules — no AI-isms, banned vocabulary, honest analyst tone
- Information principles — lead with conclusions, evidence-backed claims, narrative arc
Presentation:
- Presentation principles — use for any visual output (HTML, dashboards, tables); text follows the editorial rules above
Octave data:
- Octave value — prioritize grounded workspace data over generic AI content
Usage
/octave:icp-refine [--period <days>] [--segment <name>] [--focus wins|losses|both]
Examples
/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
Instructions
When the user runs /octave:icp-refine:
Step 1: Set Parameters
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...
Step 2: Gather Current ICP Definition
# 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" })
Step 3: Analyze Deal Outcomes
# 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"]
}
})
Step 4: Analyze Patterns
For each won deal, extract:
- Company profile (industry, size, stage, tech stack)
- Persona(s) involved
- Pain points that resonated
- Value props that closed the deal
- Deal cycle length
- Deal size
- Competitors in the deal
For each lost deal, extract:
- Same attributes
- Why it was lost (competitor, timing, budget, fit, champion)
Step 5: Generate ICP Refinement Report
See refinement-report-template.md for the full ICP refinement report template.
Step 6: Apply Updates (if requested)
# 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>"
})
Step 7: Offer Follow-Up Actions
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
MCP Tools Used
Library Context
list_entities- Segments, personas, productsget_entity- Full entity details for ICP definition
Deal Analytics
list_events- Won/lost dealslist_findings- Conversation insights, objections, signalsget_event_detail- Deep dive into specific deals
Library Updates
update_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 segments
Motions
list_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 learnings
Intelligence
search_knowledge_base- Cross-reference patterns
Error Handling
No 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.
Related Skills
/octave:win-loss-report- 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 entities
Files bundled with it
These load only when the skill asks for them, so they cost nothing until it runs.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- sales-icp by zubair-trabzada · 1,079
- icp-builder by OpenClaudia · 664
- icp-research by thatrebeccarae · 119
- positioning-icp by chadboyda · 74
- icp-matrix-builder by kenny589 · 63
- icp-persona by realjaymes · 55
- icp-architect by Othmane-Khadri · 55
- icp-scorer by JJenglert1 · 54
Need help setting it up?
This page tells you what icp-refine does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.