grounded-coding

Installation
SKILL.md

程序化扎根理论编码

对访谈记录或其他质性资料进行系统化的扎根理论编码分析。每份访谈依次执行开放编码与主轴编码(五个阶段自动连续执行),保存为 Markdown 文件;多份访谈积累后,按需进入选择性编码。

启动:获取基本信息

当用户触发此skill时,首先获取以下信息(如用户未提供,则主动询问):

  1. 质性资料路径:用户上传或提供的访谈记录/质性资料的本地文件路径(支持PDF、Word、TXT等格式)
  2. 研究领域:用户所在的研究领域(如教育学、管理学、社会学等)
  3. 研究主题:用户正在研究的具体主题
  4. 被访者信息:被访谈者的身份描述(如"某小学教师"、"创业者A"等)
  5. 研究议题焦点(可选):用户特别关注的研究议题或分析重点
  6. 访谈序号与既有编码表(持续比较关键信息):
    • 这是你研究中的第几份访谈?(第一份 / 第N份)
    • 如果是第二份及以后:之前访谈的累积编码表是否可以提供? 请提供文件路径,或直接粘贴类属列表,格式如下:
      类属1:[类属名称]
        包含编码:编码A, 编码B, ...
        属性1:[名称](维度:[极端A] ←→ [极端B])
        属性2:[名称](维度:[极端C] ←→ [极端D])
      类属2:...
      
    • 如果是第一份访谈,直接开始全新建构。

如果用户在触发时已经提供了部分信息(如直接给出文件路径和研究主题),不要重复询问已知信息,只补充缺失的必要信息。

收到基本信息、读取质性资料全文后,在进入编码之前,询问研究者是否希望提供示范编码:

"在正式编码前,你可以选择: A. 研究者示范:你先对文本中任意一小段(3–5 个句群)做示范编码,AI 会识别你的编码风格,然后按你的风格完成后续开放编码 B. AI 直接编码:跳过示范,AI 按照标准原则直接开始

哪种方式?(选 B 或不回应则直接开始)"

若研究者选择 A(研究者示范):

  1. 请研究者提供示范片段及其对应编码(格式:S1 "原文" → 编码标签
  2. AI 分析示范编码的风格特征,明确说明:
    • 动名词使用程度:高度动名词化,还是更多名词短语?
    • 抽象层次:贴近原文(描述性),还是已有一定理论提炼?
    • 粒度:每个句群一个编码,还是允许多个?
    • 用词风格:倾向本土化表达,还是理论术语?
  3. 输出风格确认:

    "我理解你的编码风格是:[描述]。我将按照此风格完成后续开放编码。如有偏差,请随时纠正。"

  4. 按研究者风格继续执行五阶段流程

若研究者选择 B 或未回应:

直接进入五阶段,按标准原则编码。

执行流程(五阶段连续执行)

第一阶段:整体主题概览

阅读完全部质性资料后,提炼出几个大的主题方向,为后续微分析提供全局视野。

输出格式:

  • 列出3-6个大的主题,每个主题附简要说明(1-2句话)
  • 说明各主题在资料中的大致分布和权重

这一步的目的是让研究者在进入逐句编码之前,先对资料有一个整体认知框架。就像阅读一本书之前先浏览目录,整体主题概览帮助研究者明确后续微分析的方向和重点。

第二阶段:开放编码

开放编码是扎根理论的基础阶段,目标是从原始资料中逐步建构概念。包含三个连续步骤,对应从具体到抽象的逐步提升:

  1. 识别事件:逐项识别资料中的事项、事情、事务,进行命名(抽象层次较低)
  2. 提炼类属:对具体事件进行分类合并,形成概念(抽象层次较高)
  3. 分析类属:定义类属内容,分析特征,进行属性与维度分类

步骤一:识别事件(逐句微分析)

针对质性资料进行逐句微分析,逐项识别出资料中的事项、事情、事务,进行命名。这一步的抽象层次较低,紧贴原始资料——回答的是"这里发生了什么"。

编码原则:

  1. 逐句编码——按句群进行,不遗漏任何语句。只有纯粹的单词应答(独立成句,如仅有"嗯"、"对"、"好的")可以跳过,且必须在编码结果中标注"已跳过"。其余所有语句,无论看起来信息量多少,都必须给出编码。某句话是否重要,是研究者的判断权,不是 AI 的判断权;当不确定时,给出描述性编码(如"重复前述观点""表达不确定"),而不是跳过
  2. 优先使用动名词形式——GT 开放编码的标准格式是动名词(如"强调自主性""回避直接冲突""将平台规则合理化"),而非名词短语(如"自主性""冲突回避""规则合理化")。动名词保留了行动感和过程性,符合 GT 追问"正在发生什么"的分析取向。编码应简洁,通常 4–8 字,不宜过长
  3. 每个句群给出一个最合适的编码——同一个编码可以在不同句群重复出现(这说明该现象反复被提及)
  4. 紧扣研究议题——编码时重点关注与用户研究主题和研究议题相关的内容
  5. 禁止对仗整齐——编码标签的字数和句法结构应由数据内容决定,而非由输出形式决定。如果检查发现大多数编码字数相近、结构相同(如全部是四字动名词短语),说明在优化形式而非忠实于数据,必须主动打破这种整齐感。有些编码天然更长,有些更短,有些是受访者原话的动名词化,有些是描述性的过程短句,形态多样才符合 GT 的细粒度要求

在编码过程中,用"S+序号"标记每个句群(如S1、S2、S3...),便于后续引用和追溯。

输出数据结构:

句群序号 | 原文内容 | 事件命名(编码)
S1      | 原文...  | 编码A
S2      | 原文...  | 编码B
...

步骤二:提炼类属(含跨文本持续比较)

对步骤一识别出的具体事件进行分类合并,形成更高抽象层次的概念(类属)。这是从"描述"到"概念化"的关键跃升。

持续比较(Constant Comparison)是本步骤的核心操作。 S&C 的持续比较要求:每一个新编码都要与已有的全部编码/类属进行比较, 而不是孤立地对单份文本建构类属。

情况 A:第一份访谈(无既有编码表)

正常进行类属提炼。

归并原则:

  1. 不遗漏任何编码——每个事件命名都必须归入某个类属
  2. 类属数量适中——通常5-10个类属,过多则失去归并意义,过少则信息丢失
  3. 类属命名要求
    • 具有一定的抽象性——高于事件命名的概括层次
    • 体现理论敏感度——能启发理论思考
    • 兼顾本土化——不必强套西方概念,允许反映资料本身的特点
    • 但也不要受制于现有理论——让类属从资料中自然涌现
情况 B:第二份及以后的访谈(有既有编码表)

持续比较分三步进行:

比较步骤 1:对每个新编码,优先尝试归入既有类属

逐一检查:这个新编码,是否描述了既有类属中已有的经验或现象?

  • 是 → 归入既有类属,同时记录该编码是否在属性或维度上提供了新信息(属性扩展或维度极端的新证据)
  • 否 → 暂标为"待判断——可能是新类属"

比较步骤 2:对"待判断"编码,判断是否构成新类属

检查所有"待判断"编码:

  • 彼此之间是否存在共同的抽象指向?
  • 它们描述的现象是否与全部既有类属都有本质差异?
  • 如果是 → 建立新类属,命名,并说明与既有类属的区别
  • 如果否 → 重新检视,看能否归入修订后的既有类属

比较步骤 3:检查是否需要修订既有类属

  • 新文本是否让某个既有类属的边界变得模糊?(是否需要拆分?)
  • 新文本是否揭示两个既有类属实为同一现象的不同侧面?(是否需要合并?)
  • 新文本是否让某个类属的命名不再准确?(是否需要重命名?)

输出数据结构:

句群序号 | 原文内容 | 事件命名(编码) | 类属 | 类属状态(既有/新增/修订)
S1      | 原文...  | 编码A           | 类属X | 既有
S2      | 原文...  | 编码B           | 类属X | 既有(属性扩展:新的维度极端证据)
S3      | 原文...  | 编码C           | 类属Z | 新增
S4      | 原文...  | 编码D           | 类属X→类属X' | 修订(类属X因本次材料重命名为类属X')
...

步骤三:分析类属(属性与维度)

每一个类属定义其内容、分析其特征、进行分类。这是开放编码的收尾工作,使类属从"标签"变为"有内涵的概念"。

概念定义:

  • 属性(Property):类属的某些重要特征,使该类属区分于其他类属
  • 维度(Dimension):属性的程度变化,通常用一对相反概念的连续统来表达(如强—弱、多—少、主动—被动、积极—消极)

分析要求:

  • 每个类属提炼出2个属性
  • 每个属性有2个维度(即两极)
  • 形成四象限的理想类型分类(2属性×2维度极端值 = 4种类型)
  • 结合原始资料中的具体描述来确定属性和维度,确保有据可依
  • 为四象限的每种类型尝试给出一个简短的类型名称

输出格式(每个类属):

类属名称:XXX

属性1:[属性名称]
  维度:[极端A] ←————→ [极端B]

属性2:[属性名称]
  维度:[极端C] ←————→ [极端D]

四象限分类:
           属性2-极端C    属性2-极端D
属性1-极端A  类型I名称     类型II名称
属性1-极端B  类型III名称   类型IV名称

备忘录提示(可选): 属性维度分析过程中,如果某个类属触发了推演冲动——觉得"这里有什么"——现在是写备忘录的好时机。直接说"备忘录"或描述你的想法,即可启动 memo-coach。分析动能稍纵即逝,不要等到编码全部完成再回想。


第三阶段:主轴编码(典范模型关系分析)

主轴编码的核心任务是使用**典范模型(Paradigm Model)**将类属之间的关系进行逻辑关联,形成理论化表述。这是从"描述现象"跨向"解释机制"的关键步骤。

典范模型框架(Strauss & Corbin):

因果条件(Causal Conditions)
    ↓ 触发
现象(Phenomenon)——核心关注的类属
    ↓ 发生在
情境脉络(Context)
    ↓ 受到
中介条件(Intervening Conditions)影响
    ↓ 行动者采取
行动/互动策略(Action/Interaction Strategies)
    ↓ 导致
结果(Consequences)

操作步骤

步骤 1:标注类属角色

逐一审视第二阶段提炼的每个类属,判断其在典范模型中可能扮演的角色。注意:一个类属在不同语境下可能扮演不同角色(如某类属在一组关系中是"条件",在另一组中是"结果")。

步骤 2:建立关系命题

尝试用典范模型的逻辑写出类属之间的关系,格式:

当 [因果条件] 时,在 [情境脉络] 的背景下,受到 [中介条件] 的影响,[行动者] 采取 [行动/策略] 的方式应对 [现象],导致了 [结果]。

不必追求一次写出完整命题——有些位置可能暂时空缺,标注"待后续数据补充"即可。

步骤 3:标注确定性

每个关系标注确定性水平:

  • 有据:有多个句群直接支持(标注支持句群编号)
  • 初现:仅 1–2 个句群支持,需后续访谈验证
  • 推测:基于分析直觉,尚无直接证据

跨访谈演化

  • 第一份访谈:典范模型是初步的、暂定的,很多关系标注为"初现"或"推测",这是正常的
  • 后续访谈:每份新访谈完成开放编码后,重新审视典范模型:
    • 哪些"初现"关系得到了新证据支持?(升级为"有据")
    • 哪些关系被新证据质疑?(需修订方向或降级)
    • 是否出现了新的关系路径?
    • 典范模型的整体结构是否需要调整?

输出格式:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━
典范模型关系分析
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

现象:[类属名称]

因果条件:
- [类属名] → [现象]:[关系说明](确定性:有据/初现/推测,证据:Sx, Sy)

情境脉络:
- [类属名]:[如何构成背景条件](确定性:...)

中介条件:
- [类属名]:[如何影响行动策略](确定性:...)

行动/互动策略:
- [类属名]:[行动者如何应对](确定性:...)

结果:
- [类属名]:[产生什么后果](确定性:...)

关系命题(暂定):
"当 [因果条件] 时,在 [情境脉络] 的背景下,受 [中介条件] 影响,
 [行动者] 采取 [策略] 应对 [现象],导致 [结果]。"

未归位类属:
- [类属名]:暂无法在典范模型中定位,待后续数据
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

备忘录提示(可选): 典范模型的关系建立过程中,如果你发现某个类属的角色让你意外——比如原以为是"结果"的类属,换个角度看可能是"条件"——这种重新定位的时刻正是备忘录最有价值的时候。直接说"备忘录"或描述你的想法,即可启动 memo-coach


第四阶段:编码统计摘要与类属演化记录

对编码结果进行量化统计,帮助研究者从数量角度理解资料结构:

  • 总句群数
  • 事件命名(编码)总数(去重后)
  • 类属总数
  • 每个类属包含的编码数量及占比
  • 编码出现频次最高的前5个编码

如果是第二份及以后的访谈,额外输出"类属演化摘要":

━━━━━━━━━━━━━━━━━━━━━━━━━━━━
类属演化摘要(本次持续比较结果)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【新增类属】(本份访谈中出现、既有编码表中没有的)
- [类属名]:[简要说明这个类属在本份材料中的表现]

【修订类属】(命名调整、拆分、合并)
- [旧类属名] → [新类属名]:[修订理由]

【属性维度扩展】(既有类属中出现了新的维度极端证据)
- [类属名] / [属性名]:新发现 [极端B] 方向的例证 [Sx]

【典范模型关系更新】
- [关系描述]:确定性从 [旧] → [新](新证据:Sx)
- 新增关系路径:[描述]

【未见证据的类属】(既有类属在本份材料中缺席)
- [类属名]:本份访谈中无对应编码(可能是被访者特殊性,或趋近饱和)

【饱和度初步判断】
本份访谈中,新增类属 [N] 个,修订类属 [M] 个,新增关系路径 [K] 条。
[若新增/修订极少,可注明:核心类属已趋于饱和,建议进行理论抽样以检验薄弱环节]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

这一摘要是研究者判断是否继续访谈(理论饱和)的重要依据,也是理论抽样方向的提示。

备忘录提示(可选): 类属演化摘要中如果出现了让你意外的变化——某个既有类属被迫修订、某个新类属突然出现——这种"意外"正是备忘录最需要捕捉的时刻。直接说出来,memo-coach 可以帮你把它推演成理论命题。

第五阶段:保存编码结果到 Markdown 文件(强制执行,不可跳过)

第四阶段完成后,必须立即调用 Write 工具将本份访谈的完整编码结果写入 Markdown 文件。不得仅在对话中输出而不写文件。

文件命名规则:coding_GT_[被访者编号或简称].md (如 coding_GT_A.mdcoding_GT_P1.md

保存路径:当前工作目录(即项目目录根目录)

文件内容格式:

# 扎根编码:【被访者编号/简称】
编码日期:[日期]
研究主题:[研究主题]

## 一、整体主题概览
[第一阶段输出]

## 二、开放编码表
| 句群序号 | 原文内容 | 事件命名(编码) | 类属 |
|---------|---------|----------------|------|
| S1 | ... | ... | ... |

## 三、属性与维度分析
[每个类属的属性、维度、四象限]

## 四、典范模型关系分析
[第三阶段输出]

## 五、编码统计摘要
[第四阶段统计输出]

## 六、类属演化摘要(如适用)
[第四阶段演化摘要输出]

Write 工具调用完成后,告知研究者:

"本份编码已通过 Write 工具保存至 coding_GT_[被访者编号].md。如需继续下一份访谈,请提供文本;如所有访谈已完成,输入"生成Excel"可生成完整编码表。"


最终输出:生成完整 Excel(按需,所有访谈完成后)

当研究者说"生成Excel""所有访谈完成"或主动请求时,才执行此步骤。

将当前项目目录中所有 coding_GT_*.md 文件的数据整合,生成一份汇总所有访谈的 Excel 文件。

使用 scripts/export_coding.py 脚本生成。先将编码数据构造为 JSON,写入临时文件,再调用脚本。

Excel文件结构(5个工作表):

Sheet 1:完整编码表(所有访谈合并)

访谈编号 句群序号 原文内容 事件命名(编码) 类属

Sheet 2:编码-类属汇总

类属 包含的编码 编码数量

Sheet 3:属性与维度

类属 属性1 属性1维度 属性2 属性2维度 四象限分类

Sheet 4:典范模型

现象 因果条件 情境脉络 中介条件 行动/互动策略 结果 关系命题 确定性

Sheet 5:编码统计 包含跨访谈的汇总统计数据

生成命令:

python3 <skill_path>/scripts/export_coding.py --output "<项目目录>/扎根编码_汇总.xlsx" --json-file /tmp/_grounded_coding_data.json

选择性编码(按需,核心类属浮现后)

当研究者说"进入选择性编码""开始整合理论""确定核心类属"时,执行此阶段。

前提:已完成至少 3–4 份访谈的开放编码与主轴编码,有足够的类属积累和典范模型关系基础。

选择性编码是扎根理论建构理论的关键步骤,目标是确定核心类属,围绕它整合所有类属,提出研究问题,构建故事线,并与既有理论展开对话。

步骤 1:确定核心类属

从累积的所有类属中,选择一个既有类属作为核心类属,或者构建一个共同上位概念作为核心类属。

核心类属的判断标准(S&C):

  • 出现频率高:在多份访谈中反复出现
  • 关联性强:与其他大多数类属存在实质性联系(在典范模型中处于枢纽位置)
  • 解释力强:能统摄其他类属,说明"这里的核心现象是什么"
  • 概念饱满:属性和维度已有充分的数据支撑

两种确定方式:

  • 选择既有类属:从已有类属中选出最具统摄力的一个,说明理由
  • 构建上位概念:如果没有单一类属能统摄全局,可以在既有类属之上构建一个更高抽象层次的概念作为核心类属,说明它如何整合多个类属

输出候选核心类属(1–3个),并说明每个的理由和确定方式。

步骤 2:依据核心类属提出研究问题

核心类属确定后,围绕它明确或修订研究问题。在扎根理论中,研究问题不是事先给定的,而是在分析过程中逐渐聚焦的。

操作:

  1. 基于核心类属,用一句话陈述"这个研究最终在回答什么问题"
  2. 对照研究者最初的宽泛切入点,说明研究问题如何从最初的开放探索聚焦到当前的理论焦点
  3. 检验研究问题是否是过程性问题("如何……""怎样……""什么条件下……"),而非静态描述性问题

输出格式:

核心类属:[名称]

研究问题(聚焦后):
[一句话陈述]

聚焦路径:
初始切入点:[研究者最初的宽泛问题]
→ 开放编码发现:[关键发现]
→ 主轴编码揭示:[核心关系]
→ 最终聚焦:[当前研究问题]

步骤 3:构建故事线(Storyline)

围绕核心类属,将所有类属按典范模型框架整合为一个连贯的理论叙事。

核心类属(Central Category):[名称]

因果条件(Causal Conditions):[触发核心现象的类属]
情境脉络(Context):[背景性条件类属]
中介条件(Intervening Conditions):[影响行动策略的类属]
行动/互动策略(Action/Interaction Strategies):[应对核心现象的类属]
结果(Consequences):[行动带来的结果类属]

用 1–2 段话写出分析故事线:

"在这个研究中,核心现象是 [核心类属]。它的发生受到 [条件类属] 的影响,发生在 [情境类属] 的背景下。行动者通过 [行动/策略类属] 加以应对,最终产生了 [结果类属] 的结果。"

对归位不确定的类属,标注"归属待研究者判断"。

步骤 4:理论对话

将涌现的理论与既有文献进行对话,明确本研究的理论贡献定位。

操作:

  1. 识别对话对象:核心类属和关系命题最接近哪些已有理论概念或框架?列出 2–3 个最相关的理论
  2. 比较异同:本研究的涌现理论与这些已有理论在哪些方面一致?在哪些方面不同或推进了?
  3. 定位贡献:本研究的理论发现对已有知识体系的贡献是什么——是验证、修正、扩展、还是挑战?
  4. 标注局限:诚实标注理论对话中的不确定性——哪些对话需要更多数据支持

注意:理论对话中涉及的文献必须是真实存在的。如果不确定某文献是否真实,必须明确告知"此文献需要你自行核实"。

步骤 5:理论命题草案

基于典范模型和故事线,提出 3–5 条可被后续数据检验的理论命题,格式:

命题 N:当 [条件] 时,[行动者] 倾向于采取 [策略],从而导致 [结果]。

每条命题附说明:目前有哪些数据支持,哪些维度尚待补充证据。

移交声明:选择性编码的核心类属确定和命题取舍是研究者的理论判断,以上结果仅供参考。建议在确定核心类属后,使用 negative-case-finder 对命题进行反例压测。

过程中的对话输出

虽然编码过程是自动连续执行的,但在对话中仍然需要逐步呈现分析过程和中间结果,让用户能够跟踪分析进展。具体地:

  1. 第一阶段完成后:输出主题概览的文字说明
  2. 第二阶段完成后:依次输出事件命名表 → 含类属列的编码表 → 每个类属的属性与维度分析
  3. 第三阶段完成后:输出典范模型关系分析
  4. 第四阶段完成后:输出编码统计摘要(含类属演化摘要和典范模型关系更新)
  5. 第五阶段完成后:告知用户 Markdown 文件的保存路径

编码质量原则

编码过程中始终遵循以下原则:

  1. 忠于原始资料——编码必须有原文依据,不能凭空臆造
  2. 保持开放性——不预设理论框架,让概念从资料中涌现
  3. 持续比较——每处理一个新编码,都要与既有编码和类属进行比较:这个现象在此前的访谈中出现过吗?属性是否一致?是否需要修订类属边界?这是跨文本比较,不是单份文本内的一致性检查
  4. 理论敏感性——对资料中隐含的概念和关系保持敏感,但不受既有理论束缚
  5. 饱和性检查——如发现某些编码反复出现且不再产生新的属性或维度,在统计摘要中注明可能已达到理论饱和
  6. 三阶段递进——开放编码建构概念(是什么),主轴编码建立关系(怎么关联),选择性编码整合理论(核心是什么、如何解释)。三个阶段的抽象层次逐步提升,不可跳跃

语言

  • 默认使用中文进行编码和输出
  • 如果质性资料为英文,则编码词汇用英文,但分析说明仍用中文(除非用户要求英文输出)
  • 编码词汇尽量简洁,以动名词形式为主
Related skills

More from yipng05-max/-skills

Installs
7
GitHub Stars
101
First Seen
Apr 1, 2026