ECC brand-discovery 技能 Positioning 模块解析:用 Dunford 模板在 Agent 会话中构建品牌定位
在 ECC(Everything Claude Code)的多技能体系中,brand-discovery 技能把品牌身份访谈拆解为 8 个可断点续作的模块,而 20_positioning.md 正是其中负责"竞争框架"的核心模块模板。本文基于该文档及其技能主文件 SKILL.md,完整拆解 Positioning 模块的框架选型、访谈问题清单、Dunford 定位声明模板与状态机协议,读完你可以理解 ECC 如何用一套结构化方法论,把创始人头脑中隐含的定位判断沉淀为可执行、可复核的 Markdown 交付物。
Positioning 模块在 brand-discovery 技能中的位置
brand-discovery 技能的总目标是产出一份完整的 90_SYNTHESIS.md(主品牌书,Master Brandbook),供组织向设计师、写作者和外部协作者下发 brief。它刻意设计为跨多天甚至数周的多会话流程:答案边聊边落盘,会话结束后不丢失任何已 elicited 的知识,下一次会话可从断点继续。
技能主文件定义了 8 个模块的执行顺序与各自的理论框架(见 SKILL.md 的 Module sequence 表):
| 模块文件 | 标签 | 使用的框架 |
|---|---|---|
10_purpose-why.md |
Purpose / Why | Sinek Golden Circle、Lencioni |
20_positioning.md |
Positioning | Dunford "Obviously Awesome"、Moore 模板 |
30_audience-niche.md |
Audience & Niche | Baker "Business of Expertise"、ICP |
40_personality-archetype.md |
Personality & Archetype | Mark & Pearson 12 原型、J. Aaker 五维 |
50_voice-tone.md |
Voice & Tone | 品牌声音指南 |
60_narrative-story.md |
Narrative / Story | Neumeier trueline、品牌故事弧 |
70_founder-tension.md |
Founder Brands vs Studio Brand | Enns "Win Without Pitching" |
90_SYNTHESIS.md |
Master Brandbook | Kapferer 品牌棱镜、Aaker 品牌系统 |
Positioning 排在第 2 位,承接 Module 10 挖出的核心信念(Why),并为 Module 30 的理想客户画像(ICP)提供竞争语境——先确定"我们在哪个类别里和谁竞争",再细化"最想服务的那个客户长什么样",最后由 Module 90 统一调和。模块要求按序完成;用户若要求跳模块,需在 state.json 中记录该跳过。
20_positioning.md 模板的完整结构
该模板文件本身是一份"访谈脚手架":模块头部声明框架与目标,## Raw 区存放访谈中逐字记录的原始答案,## Synthesis 区承载 Agent 的解读与候选产出。下面逐段继承原文档内容。
模块头部:三大框架与目标
原文档头部声明了三个方法论支柱:
Frameworks: Dunford Obviously Awesome · Moore crossing-the-chasm template · Jobs-to-be-done lens
- Dunford(Obviously Awesome):定位声明的经典句式模板,下文 Synthesis 区的 "For ... is the ... that ..." 结构即来源于此;
- Moore 穿越鸿沟模板:强调跨越从早期采用者到主流市场的"鸿沟",要求定位清晰到能直接指导上市信息;
- Jobs-to-be-done 视角:以"客户雇佣这个品牌完成什么任务"来定义目标客户与价值。
目标(Goal)原文为:
Define the brand's competitive frame — who it's for, what category it competes in, what it does uniquely, and why that matters to the target client. Output is the raw material for a positioning statement the brand can act on.
即:确定品牌面向谁、处于什么竞争类别、独特之处是什么、以及为什么这对目标客户重要。模块产出的是"可直接执行的定位声明的原材料",而非一句孤立的口号。
Raw 区:六组访谈问题(完整清单)
Raw 区的注释要求"逐字引用、记录原话"(<!-- Verbatim quotes and examples. Record exact language. -->),并包含 6 个以 ### 标题组织的追问主题。这 6 个问题构成 Positioning 模块的完整提问骨架:
- Who is the target client? (role, company type, situation) 目标客户是谁——角色、公司类型、所处情境。注意它同时追问情境(situation),与 JTBD 框架呼应。
- What category does the brand compete in? (how clients currently solve this problem) 品牌身处什么类别——即客户当前靠什么方式解决这个问题。这是 Dunford 方法论的关键:类别定义决定了客户用来比较的参照系。
- What makes the brand different from alternatives in that category? 与同类别替代方案相比,品牌独特在哪。
- What does the target client care about most? (the value they get that others can't match) 目标客户最看重什么——他们获得的、他人无法匹配的价值。
- Competitive alternatives named by the founder (include "do nothing" / "hire in-house") 创始人亲自点名的竞争替代方案——模板特别要求把"什么都不做"和"自建团队"也纳入竞争集合。从结构看,这意味着定位必须能赢过"不购买"这个默认选项,而不仅是赢过显性竞品。
- Phrases or metaphors the founder uses naturally to describe what they do 创始人描述自己业务时自然使用的措辞与隐喻。这类"原生语言"是后续 Module 50(Voice & Tone)与 Module 90 品牌书的重要语料来源。
Synthesis 区:五类输出与 Dunford 定位声明模板
Synthesis 区规定了模块收尾时必须给出的五类结构化产出:
1. Positioning statement draft(Dunford 模板)——原文档给出的完整句式:
For [target client] who [situation / JTBD], [brand name] is the [category] that [unique value]. Unlike [alternatives], we [key differentiator].
五个空位与 Raw 区的六个问题一一咬合:target client 与 situation 来自问题 1,category 来自问题 2,unique value 与 key differentiator 来自问题 3、4,alternatives 来自问题 5。这种"问题区与模板区严格对位"的设计,保证访谈结束时定位声明的每个空位都有原文依据可查。
2. Alternative framings(备选框架)——原文档要求"vary the category or the differentiator":换类别定义或换差异点,生成至少两种不同的定位表述供创始人选择,避免锁定在单一叙事上。
3. White-space hypothesis(空白地带假设)——找出"没有任何竞争者占据、而该品牌可以占有的说法",这是 Dunford 方法论中"own the white space"的直接落地。
4. Open questions / ambiguities——记录本轮未解的模糊点,供后续会话继续追问。
5. Tensions with Module 10 Why——显式标记定位声明与 Module 10 挖出的核心信念之间的矛盾,"flag any contradictions for Module 90 reconciliation",即交给最终模块做全局调和。这一点在 90_SYNTHESIS.md 中有对应的承接结构:其第 8 节"Tensions resolved"是一张 Tension | Module A | Module B | Resolution 的表格,专门记录并裁决模块间冲突。
模块执行协议:访谈纪律与状态落盘
模板文件只是骨架,真正让它在 Agent 会话中可运行的是 SKILL.md 定义的访谈纪律与状态协议,Positioning 模块同样适用。
访谈纪律(8 条,全模块通用):
- 一次只问一个问题,绝不列问题清单——清单式提问只会得到清单式回答;
- 每个回答之后:先简短复述(paraphrase),再做一个深挖追问,或在该主题已饱和时收尾,不允许静默跳走;
- Laddering(梯次追问):对每个"what"类回答,追问"为什么这对你重要?"直到浮现核心价值观,通常 2–4 轮;
- 5 Whys:对信念类或定位类断言,追到根本原因,而非停留在表面声明;
- 识别薄回答:答案空泛、术语堆砌或模糊时,索要一个具体例子、客户故事或数字;
- 投射技术(每个模块用一次以打破平台期),三个固定话术:
- "如果品牌是一个人,他会怎样走进房间?"
- 品牌讣告:"如果组织五年后关门,客户会想念什么?你会遗憾没说过什么?"
- 竞争对照:"说一个你欣赏但绝不想成为的同业。具体是什么让他们成为错误的榜样?"
- 饱和信号:连续两个追问没有产生新信息时,总结并关闭模块;
- 模块收尾:写入含
## Raw(逐字引用与实例)和## Synthesis(解读、三个候选表述、未解问题、参与者间矛盾)的结构化模块文件,随后更新state.json检查点。
对 Positioning 模块而言,第 6 条的"竞争对照"投射问题与 Raw 区问题 5(创始人点名的替代方案)天然衔接;第 7 条的饱和判据则直接决定何时允许把 Dunford 模板的空位填完。
会话启动协议:每次激活先检查品牌身份目录中是否已有模块文件与 state.json 检查点;若存在,读取当前模块文件的 Raw 区扫描已捕获答案,然后用两三句话向用户汇报"当前在哪个模块、什么状态、还剩什么",并询问"在此继续,还是切换模块?"
状态写协议:模块达到饱和后写两个文件——模块文件(完整 Raw + Synthesis)和 state.json 检查点,其 schema 为:
{
"session": "{brand_name}-brand-{YYYY-MM}",
"outputPath": "{path_to_brand_identity_directory}",
"completedModules": [],
"inProgressModule": "10_purpose-why.md",
"nextModule": "20_positioning.md",
"participants": ["founder-A"],
"lastUpdated": "{ISO-8601}"
}
写入后必须向用户确认:"Module X saved. State updated. Next: Y." 在 schema 示例中,inProgressModule 为 10_purpose-why.md、nextModule 恰好是 20_positioning.md——即 Purpose 模块完成后的下一站就是本文的 Positioning 模块。
多创始人模式:多位创始人参与时,各自答案写入 founders/{participant}.md 而非主模块文件,且有三重路径安全校验:participant 名只接受字母数字与连字符(拒绝 /、\、.. 等特殊字符);moduleFile 必须对照模块序列枚举值(仅 10 至 90);outputPath 必须是项目目录内的绝对路径,拒绝相对路径与 .. 逃逸。所有创始人完成同一模块后执行 reconciliation pass:在模块文件中汇总收敛点与分歧点,把"有生产力的张力"标记给团队对齐工作坊。
模块协作链:从 Why 到 Brandbook 的交接点
Positioning 模块不是孤岛,它在三个方向上有明确的输入输出契约:
- 上游(Module 10 → 20):10_purpose-why.md 的 Synthesis 区最后一节即 "How does this Why constrain or enable positioning? (bridge to Module 20)",显式搭桥;反过来,20 模块的"Tensions with Module 10 Why"负责回写矛盾。定位声明若与核心信念冲突,必须留痕而非静默取舍。
- 下游(20 → 30):30_audience-niche.md 的 ICP 表格(Role、触发情境、主要痛点、期望结果、预算信号、红旗信号等维度)要求把"定位里说的目标客户"具体化到"可以指导写文案或投放的具体的人",其 Synthesis 区末节同样是"Open questions / threads for Module 20 positioning reconciliation",形成双向对账。
- 终点(20 → 90):90_SYNTHESIS.md 第 2 节"Positioning (from Module 20)"原样复用 Dunford 句式(For [target client] who [situation]... 并增加 "White-space the brand owns" 空位),再与 Why、Audience、Kapferer 棱镜、Aaker 系统、Voice & Tone、叙事资产、创始人/组织品牌边界合并为品牌书,最终由第 8 节冲突表和"3–5 条具体行动"收尾。
在 ECC 中安装与调用
从仓库结构看,该技能在 ECC 中有两处镜像:完整技能目录 skills/brand-discovery/(含 SKILL.md 与 references/ 下 8 份模块模板),以及 .agents/skills/brand-discovery/ 下的同一套文件,后者额外携带一份 Agent 接口描述 agents/openai.yaml(display_name "Brand Discovery"、短描述 "Adaptive multi-session brand identity interviews"、默认提示词 Use $brand-discovery to run a structured brand identity interview.,并允许隐式调用)。
安装层面,manifests/install-modules.json 将 skills/brand-discovery 编入 business-content 模块("Business, writing, market, and investor communication skills"),与 article-writing、market-research、competitive-platform-analysis、marketing-campaign 等同组,面向 claude、cursor 等多个目标平台;根目录 package.json 的打包清单中同样收录了 skills/brand-discovery/。选定 business-content 模块安装后,即可在支持 Agent Skills 的 CLI 中以 $brand-discovery 方式激活该技能。
技能主文件还声明了两个衔接技能:完成定位 brief 后可接 competitive-platform-analysis 来圈定与分类竞争者集合(恰好消费 Positioning 模块产出的"竞争替代方案"清单);若 Voice & Tone 模块需要一份基于素材来源的独立写作风格画像,则转交 brand-voice 技能。
反模式与实操自检
技能主文件列出的 5 条反模式中,与 Positioning 模块直接相关的有三条:
- 不读状态就开问——每次会话必须先检查已有模块文件与
state.json,跳过即丢失全部连续性; - 一次问多个问题——"one question at a time" 不可协商;
- 饱和前就进 Synthesis——若最后两个追问还有新信息,模块就没做完,Dunford 模板的空位也不该提前硬填。
实操上,一个合格的 Positioning 模块交付物应满足:Raw 区 6 个问题各有逐字答案(至少含一个具体例子或数字,回应"薄回答"检测);Synthesis 区给出主定位声明 + 至少两种换类别/换差异点的备选框架 + 一条空白地带假设 + 与 Module 10 的矛盾清单;state.json 中 completedModules 已含 20_positioning.md 且 nextModule 指向 30_audience-niche.md。对照这份清单,即可验证一次定位访谈是否真正"可执行",而不只是聊得愉快。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0624
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00