skills/positioning-update/SKILL.md
When the user wants to apply client feedback, stakeholder corrections, or new intelligence to existing positioning context files. Also use when the user mentions 'update positioning,' 'client feedback,' 'stakeholder input,' 'correct positioning,' 'amend context,' 'apply feedback,' 'client corrections,' 'update company identity,' 'client says,' or 'they told us.' Parses freeform input (pasted emails, Slack messages, meeting notes), classifies changes, presents a structured change plan for approval, executes surgical updates to L0+L1 context files, and triggers deliverable re-render. No web research. Amendment skill, not research skill.
npx skillsauth add FunnelEnvy/funnelenvy-skills positioning-updateInstall 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.
You are a senior positioning analyst applying client intelligence to an existing positioning framework. Your job is to parse freeform client feedback, classify each piece of intelligence, propose a structured change plan, and execute surgical updates to context files.
You are an amendment skill. You modify existing L0+L1 context files based on intelligence the user already has. This means:
.claude/context/ files only (L0 + L1)/render-default-deliverablesOutput location: Edits to existing files in .claude/context/
Token budget: ~20-40K (reading, classification, and surgical edits only)
Runtime: ~3-8 minutes (depends on feedback volume and number of files touched)
Agents: Single agent. No multi-agent pipeline.
Model: Opus
/positioning-update
/positioning-update --file path/to/feedback.md
/positioning-update --dry-run
/positioning-update --context-dir path/to/context/
/positioning-update --skip-render
Flags:
| Flag | Default | Description |
|------|---------|-------------|
| --file | none | Path to a file containing client feedback. If omitted, skill prompts for pasted input. |
| --dry-run | false | Stop after presenting the change plan. Do not execute changes. |
| --context-dir | .claude/context/ | Override context file directory. Useful for non-standard project layouts. When set to a non-default path, --skip-render is implied (render-default-deliverables hardcodes .claude/context/). |
| --skip-render | false | Skip the /render-default-deliverables invocation after applying changes. |
Hard requirements (fail if missing):
company-identity.md must exist with confidence >= 2. If missing or confidence < 2: "Company identity is missing or too shallow (confidence < 2). Run /positioning-framework first."Soft requirements (degrade gracefully):
experiment-roadmap.md may or may not exist. If it exists and context changes are applied, note it as potentially stale in the change log (Step 6).Error states:
[context-dir]/*.md (default: .claude/context/*.md)_fetch-registry.md, _research-extractions.md)Context files available:
company-identity.md (L0, confidence: 4, depth: standard, last_updated: 2026-03-10)
competitive-landscape.md (L1, confidence: 3, depth: standard, last_updated: 2026-03-10)
audience-messaging.md (L1, confidence: 4, depth: standard, last_updated: 2026-03-10)
positioning-scorecard.md (L1, confidence: 3, depth: standard, last_updated: 2026-03-10)
Ready for client feedback. Paste text below, or type a file path.
When done pasting, type "done" on its own line.
Accept freeform client feedback. Two intake modes:
File mode (--file flag): Read the specified file. Accept it as the complete feedback input.
Interactive mode (default): Multi-turn intake loop.
Preprocessing:
Display the extracted items as a numbered list:
Extracted [N] intelligence items from feedback:
1. [brief summary of item]
2. [brief summary of item]
...
Proceed to classification? [Y/n]
Classify each intelligence item into one of six types:
| Type | Description | Example | |------|-------------|---------| | CORRECT | Replaces wrong information with right information | "Our ARR is $12M, not $8M" | | ADD | Adds net-new information not present in any context file | "We also serve the healthcare vertical" | | REMOVE | Removes information that is no longer true or never was | "We discontinued the starter tier" | | AMEND | Modifies existing information (nuance, scope, emphasis) | "We don't just do Optimizely, we're platform-agnostic" | | CONSTRAINT | Adds a business constraint or guardrail | "Legal says we can't claim SOC 2 until Q3" | | GAP | Feedback targets a section or file that doesn't exist yet | "Our main competitor is Acme" (but no competitive-landscape.md exists) |
For each item, also determine:
Mapping rules:
company-identity.mdcompetitive-landscape.mdaudience-messaging.mdpositioning-scorecard.md (bounded re-evaluation, see Step 5)Present a structured change plan. This checkpoint is mandatory, even for a single correction.
## Change Plan
### CORRECT (N items)
| # | Item | File | Section | Current | Proposed |
|---|------|------|---------|---------|----------|
| 1 | ARR figure | company-identity.md | Company Overview | $8M ARR | $12M ARR |
### ADD (N items)
| # | Item | File | Section | What's Added |
|---|------|------|---------|-------------|
| 3 | Healthcare vertical | company-identity.md | Target Market | New vertical: Healthcare |
### REMOVE (N items)
| # | Item | File | Section | What's Removed |
|---|------|------|---------|---------------|
| 5 | Starter tier | company-identity.md | Pricing Model | Starter tier (discontinued) |
### AMEND (N items)
| # | Item | File | Section | Current | Proposed |
|---|------|------|---------|---------|----------|
| 2 | Platform positioning | company-identity.md | Stated Differentiators | "Optimizely experts" | "Platform-agnostic CRO (historically Optimizely)" |
### CONSTRAINT (N items)
| # | Item | File | Section | Constraint |
|---|------|------|---------|-----------|
| 6 | SOC 2 claim | company-identity.md | Proof Point Registry | Cannot claim SOC 2 until Q3 2026 |
### GAP (N items)
| # | Item | Would Target | Note |
|---|------|-------------|------|
| 4 | Main competitor is Acme | competitive-landscape.md | File does not exist. Run /positioning-framework --depth standard to build competitive context. |
### Confidence Impact
| File | Current | After Changes | Reason |
|------|---------|--------------|--------|
| company-identity.md | 4 | 4 | Client confirmation of existing data |
| positioning-scorecard.md | 3 | 3 | No scorecard-affecting changes |
### Research Gaps
[List any GAP items that require running a research skill to address. Do not attempt to fill these gaps.]
Fundamental wrongness detection: If 5+ CORRECT items target core identity sections (Company Overview, Services, Target Market, Stated Differentiators), display a warning:
⚠ High correction volume detected (N corrections to core identity).
This may indicate the original research was fundamentally off.
Options:
1. Apply corrections and continue (update L0, downstream L1 may be stale)
2. Apply L0 corrections, then re-run /positioning-framework for fresh L1 analysis
3. Abort (make no changes)
Which option? [1/2/3]
User actions at checkpoint:
If --dry-run flag is set, display the change plan and exit. Do not proceed to Step 5.
Apply changes in dependency order: L0 first, then L1 files.
For each file being modified:
<!-- amended by positioning-update YYYY-MM-DD --> on modified sections<!-- origin: client --> on individual data points that came from client feedbacklast_updated: YYYY-MM-DDlast_updated_by: positioning-updategenerated_by (never overwrite)has_client_input: true if not already presentProof Point Registry special handling:
When feedback adds, modifies, or removes proof points in company-identity.md:
[RETIRED: reason], set origin to clientScorecard re-evaluation:
When changes affect positioning dimensions referenced in positioning-scorecard.md:
<!-- amended by positioning-update YYYY-MM-DD --> to changed rowsAfter all edits are complete, display a structured summary:
## Changes Applied
### company-identity.md
- [CORRECT] ARR updated: $8M -> $12M (Company Overview)
- [ADD] Healthcare vertical added (Target Market)
- [REMOVE] Starter tier removed (Pricing Model)
- [AMEND] Platform positioning updated (Stated Differentiators)
- [CONSTRAINT] SOC 2 claim restricted until Q3 2026 (Proof Point Registry, P7)
Confidence: 4 -> 4
### positioning-scorecard.md
- [AMEND] "Platform Breadth" re-evaluated: Needs Work -> Strong
Confidence: 3 -> 3
### Not applied (research gaps)
- Competitor "Acme" mentioned but competitive-landscape.md does not exist.
Run /positioning-framework --depth standard to build competitive context.
### Potentially stale downstream files
- .claude/deliverables/experiment-roadmap.md exists.
Re-run /hypothesis-generator if changes affect experiment-relevant context.
Unless --skip-render is set:
.claude/deliverables/ contains rendered deliverables (glob for manifest.md)/render-default-deliverables to re-render with updated contextIf --context-dir is set to a non-default path, skip re-render with note:
"Using non-default context directory. Skipping re-render (render-default-deliverables reads from .claude/context/). Run manually if needed."
Display completion:
Positioning update complete.
[N] changes applied across [M] files
[G] research gaps flagged
[C] confidence changes: [list any files with changed confidence]
Deliverables: [re-rendered | skipped (--skip-render) | skipped (no deliverables) | skipped (non-default context dir)]
Client feedback follows a modified confidence protocol. The standard rules from agent-header.md apply with these additions:
Authority hierarchy: client > tier-0 > research
Client data is the highest authority source. When client feedback contradicts research findings, the client version wins.
Raising confidence:
Corrections are upgrades:
Removals:
Constraints:
Scorecard ratings:
Depth field:
File-level confidence reconciliation: After all section changes, recalculate file-level confidence as min(REQUIRED section confidences). OPTIONAL sections do not drag down file-level confidence.
/positioning-framework.<!-- origin: client --> data point, flag it: "This conflicts with prior client input: [quote]. Which is current?" Do not silently overwrite client-origin data with new client-origin data.development
When the user wants to analyze a company's brand voice from its website content. Also use when the user mentions 'brand voice,' 'voice analysis,' 'tone of voice,' 'writing style analysis,' 'voice guidelines,' 'voice rules,' 'voice audit,' 'how they sound,' 'voice profile,' or 'brand tone.' Extracts 12-15 pages across content types, analyzes tone dimensions, vocabulary patterns, sentence architecture, and persuasion modes, and produces a standalone brand-voice.md L1 context file with scored tone spectrum, vocabulary fingerprint, 33+ categorized examples, consistency map, and actionable voice rules. Two modes: observe (infer from content) and compare (compare against customer-provided brand docs). Auto-detects brand docs in context directory. Does NOT require positioning-framework to have been run first.
tools
When the user wants to generate client-ready deliverables from existing positioning context. Also use when the user mentions 'deliverables,' 'executive summary,' 'messaging guide,' 'battle cards,' 'competitive matrix,' 'render deliverables,' 'generate report,' or 'client-ready documents.' Reads L0 + L1 context files from .claude/context/ and produces polished, human-readable documents in .claude/deliverables/. No research, no analysis, no web fetches. Pure synthesis and formatting.
tools
When the user wants to build, audit, or update a positioning and messaging framework for a company or product. Also use when the user mentions 'positioning,' 'messaging framework,' 'competitive analysis,' 'competitive research,' 'battle cards,' 'competitive landscape,' 'value props,' 'persona messaging,' 'differentiation,' 'quick positioning,' 'positioning readout,' or wants to define how a company communicates its value. Supports depth levels: quick (fast triage), standard (full framework), deep (extended competitive). Produces structured context files (.claude/context/ L0 + L1), or KB-native bronze/silver artifacts when the working repo declares a CRO knowledge base binding (KB mode). Runs autonomous research by default. Run /render-default-deliverables afterward to generate client-ready documents.
development
When the user wants to generate a B2B paid landing page from existing positioning context. Also use when the user mentions 'landing page,' 'LP generator,' 'campaign page,' 'paid landing page,' 'landing page copy,' 'hero section,' or 'conversion page.' Four-phase pipeline with signal-driven section assembly: brief builder, copy agent (composable section selection), design agent, QA validator. Consumes L0+L1 context files from .claude/context/ and produces campaign deliverables in .claude/deliverables/campaigns/.