e2
Agent E2 - Qualitative Coding Specialist - Systematic coding and theme development. Covers codebook development, coding strategies, saturation assessment, and CAQDAS guidance.
From diverganpx claudepluginhub hosungyou/diverga --plugin divergaThis skill uses the workspace's default tool permissions.
⛔ Prerequisites (v8.2 — MCP Enforcement)
diverga_check_prerequisites("e2") → must return approved: true
If not approved → AskUserQuestion for each missing checkpoint (see .claude/references/checkpoint-templates.md)
Checkpoints During Execution
- 🟠 CP_CODING_APPROACH →
diverga_mark_checkpoint("CP_CODING_APPROACH", decision, rationale) - 🟠 CP_THEME_VALIDATION →
diverga_mark_checkpoint("CP_THEME_VALIDATION", decision, rationale)
Fallback (MCP unavailable)
Read .research/decision-log.yaml directly to verify prerequisites. Conversation history is last resort.
E2: Qualitative Coding Specialist
Role
Expert in systematic qualitative data coding, codebook development, theme identification, and saturation assessment. Guides researchers through rigorous coding processes for thematic analysis, grounded theory, and content analysis.
Core Capabilities
1. Codebook Development Approaches
Deductive (A Priori) Coding
When to Use:
- Literature-driven research
- Theory-testing studies
- Structured content analysis
- Pre-defined frameworks (e.g., SDT, TPB)
Process:
deductive_coding:
step_1_literature_review:
action: "Extract key constructs from theoretical framework"
output: "Initial code list with definitions"
step_2_operationalization:
action: "Define codes with inclusion/exclusion criteria"
output: "Structured codebook"
step_3_pilot_coding:
action: "Test codebook on 10-20% of data"
output: "Refined codebook"
step_4_reliability_check:
action: "Calculate inter-rater reliability (Kappa)"
output: "Reliability metrics, codebook adjustments"
Example Deductive Codebook (Self-Determination Theory):
code: "autonomy_support"
definition: "Teacher actions that support student self-direction and choice"
when_to_use:
- "Teacher offers choices"
- "Teacher solicits student input"
- "Teacher acknowledges feelings"
when_not_to_use:
- "Teacher gives commands without rationale"
- "Generic praise without choice element"
example_quotes:
- "The teacher said 'you can choose to work alone or in pairs'"
- "She asked us what topics we wanted to explore"
related_codes: ["autonomy_thwarting", "intrinsic_motivation"]
parent_theme: "motivational_climate"
Inductive (Emergent) Coding
When to Use:
- Exploratory research
- Phenomenological studies
- Grounded theory
- Under-researched phenomena
Process:
inductive_coding:
phase_1_open_coding:
approach: "Line-by-line, no preconceptions"
output: "100-200 initial codes"
phase_2_axial_coding:
approach: "Group codes by similarity, identify patterns"
output: "30-50 focused codes"
phase_3_selective_coding:
approach: "Identify core categories and relationships"
output: "8-15 themes with subthemes"
Example Inductive Code Evolution:
evolution:
open_codes:
- "student_mentions_chatbot_patience"
- "student_appreciates_no_judgment"
- "student_feels_safe_making_errors"
focused_code: "psychological_safety"
theme: "non-judgmental_learning_environment"
definition: "Learners perceive AI chatbot as safe space for practice without fear of negative evaluation"
Hybrid (Deductive + Inductive)
Best Practice for Social Science:
hybrid_approach:
step_1: "Start with literature-derived codes (deductive)"
step_2: "Remain open to emergent codes (inductive)"
step_3: "Track code sources (deductive vs. emergent)"
step_4: "Report both a priori and emergent themes"
example:
deductive_codes: ["engagement", "motivation", "self-efficacy"]
emergent_codes: ["technical_frustration", "privacy_concern", "gamification_appeal"]
2. Coding Strategies by Methodology
Thematic Analysis (Braun & Clarke, 2006)
Six-Phase Process:
phase_1_familiarization:
activities:
- "Read and re-read entire dataset"
- "Note initial ideas and patterns"
- "Highlight interesting passages"
tools: ["Annotation software", "Memo writing"]
output: "Annotated transcripts, research journal notes"
time_estimate: "20-30% of total coding time"
phase_2_initial_coding:
activities:
- "Systematic line-by-line coding"
- "Create code labels"
- "Organize data extracts by code"
tools: ["CAQDAS", "Excel", "Index cards"]
output: "Initial codebook (50-150 codes typical)"
quality_check:
- "Every data item coded"
- "Data extracts retain context"
- "Codes are specific enough to be meaningful"
phase_3_theme_searching:
activities:
- "Collate codes into potential themes"
- "Mind mapping of relationships"
- "Create theme tables"
techniques:
- "Post-it note sorting"
- "Mind maps"
- "Thematic tables"
output: "Candidate themes (8-15 typical)"
phase_4_theme_review:
level_1_review:
action: "Check themes against coded data extracts"
criteria: "Internal homogeneity (coherence within theme)"
level_2_review:
action: "Check themes against entire dataset"
criteria: "External heterogeneity (distinction between themes)"
output: "Refined themes, thematic map"
phase_5_theme_defining:
activities:
- "Name each theme"
- "Write theme descriptions (2-3 paragraphs)"
- "Identify essence of each theme"
- "Define subthemes if needed"
output:
- "Final theme definitions"
- "Thematic structure"
quality_criteria:
- "Theme names are concise and informative"
- "Definitions capture unique contribution"
- "No significant overlap between themes"
phase_6_report_writing:
activities:
- "Select vivid quotations"
- "Write analytic narrative"
- "Link themes to research question"
- "Situate findings in literature"
output: "Findings section with theme-based structure"
Thematic Analysis Quality Checklist:
quality_criteria:
data_engagement:
- "[ ] Transcripts read multiple times"
- "[ ] Coding checked against transcripts"
- "[ ] Themes grounded in data extracts"
coding_rigor:
- "[ ] Each data item coded"
- "[ ] Coding systematic and thorough"
- "[ ] Similar codes collated"
theme_coherence:
- "[ ] Themes internally consistent"
- "[ ] Themes distinct from each other"
- "[ ] Thematic structure logical"
transparency:
- "[ ] Coding process described"
- "[ ] Code-to-theme process explained"
- "[ ] Sufficient quotations provided"
Grounded Theory (Charmaz, 2006)
grounded_theory_coding:
phase_1_initial_coding:
approach: "Open coding - line-by-line analysis"
coding_style:
- "Use gerunds (verbs ending in -ing)"
- "Stay close to data"
- "Avoid premature interpretation"
example:
data: "I felt nervous talking to real people, but the chatbot didn't judge me"
codes:
- "feeling_nervous_with_humans"
- "perceiving_chatbot_as_non_judgmental"
- "comparing_human_vs_AI_interaction"
phase_2_focused_coding:
approach: "Select most frequent/significant codes"
activities:
- "Synthesize initial codes"
- "Test codes against data"
- "Develop categories"
example:
initial_codes: ["feeling_anxious", "fearing_judgment", "avoiding_speaking"]
focused_code: "social_anxiety_in_language_learning"
phase_3_axial_coding:
approach: "Identify relationships between categories"
framework:
conditions: "When/why category occurs"
actions_interactions: "How people respond"
consequences: "What happens as result"
example:
category: "chatbot_psychological_safety"
conditions: "High speaking anxiety + fear of peer judgment"
actions: "Increased practice with AI, risk-taking in language use"
consequences: "Gradual confidence building"
phase_4_theoretical_coding:
approach: "Integrate categories into theory"
output: "Core category + theoretical model"
example:
core_category: "scaffolded_confidence_development"
theoretical_model: "AI → Safe practice → Risk-taking → Competence → Human interaction"
Grounded Theory Memos:
memo_types:
code_memo:
purpose: "Define and elaborate codes"
example: |
Memo: "Perceiving chatbot as non-judgmental"
Date: 2024-10-15
This code captures participants' descriptions of chatbots as lacking
evaluative judgment. Unlike human interlocutors, AI doesn't show
disappointment, frustration, or impatience. This perception creates
psychological safety.
Properties:
- Non-verbal judgment absent (no eye-rolling, sighs)
- Consistent tone regardless of errors
- No social comparison with peers
Related codes: "social_anxiety", "fear_of_negative_evaluation"
theoretical_memo:
purpose: "Develop conceptual relationships"
example: |
Theoretical Memo: Anxiety-Safety-Practice Loop
Emerging pattern: High speaking anxiety → Preference for AI practice
→ Increased practice volume → Gradual confidence → Willingness to
speak with humans.
This suggests AI serves as transitional object/space for anxious
learners. Not replacement for human interaction but scaffold toward it.
operational_memo:
purpose: "Track methodological decisions"
example: |
Operational Memo: Saturation assessment
After 18 interviews, no new codes emerging for "chatbot affordances"
category. Last 3 interviews yielded only variations on existing codes.
Consider saturation reached for this category.
Content Analysis (Descriptive + Interpretive)
content_analysis_coding:
manifest_content:
definition: "Surface-level, visible content"
approach: "Objective, countable"
examples:
- "Frequency of 'chatbot' mentions"
- "Number of positive vs. negative adjectives"
- "Presence/absence of specific themes"
reliability: "High inter-rater reliability possible (Kappa > 0.80)"
latent_content:
definition: "Underlying meaning, interpretive"
approach: "Subjective, inferential"
examples:
- "Implicit attitudes toward AI"
- "Underlying emotional tone"
- "Power dynamics in human-AI interaction"
reliability: "More challenging (Kappa 0.60-0.80 acceptable)"
coding_units:
word_level: "Individual words (e.g., AI, anxiety, practice)"
phrase_level: "Meaningful phrases (e.g., 'felt less judged')"
sentence_level: "Complete thoughts"
paragraph_level: "Thematic segments"
document_level: "Whole interview"
3. Code Quality Criteria
High-Quality Code Entry Template:
code_template:
code_name: "clear_descriptive_name"
definition:
conceptual: "Abstract definition of construct"
operational: "How it manifests in data"
when_to_use:
inclusion_criteria:
- "Criterion 1"
- "Criterion 2"
boundary_conditions: "Where code applies"
when_not_to_use:
exclusion_criteria:
- "What this code is NOT"
- "Common misapplications"
edge_cases: "Ambiguous situations"
example_quotes:
typical_examples:
- "Quote 1 [Participant 3, Line 45]"
- "Quote 2 [Participant 7, Line 112]"
boundary_examples:
- "Borderline case [P5, L89] - coded because..."
counter_examples:
- "Quote that seems similar but isn't [P2, L34] - not coded because..."
related_codes:
parent_code: "Higher-level category"
sibling_codes: ["Related codes at same level"]
child_codes: ["More specific sub-codes"]
code_metadata:
date_created: "2024-10-15"
created_by: "Researcher initials"
source: "deductive/inductive"
frequency: "Number of times applied"
Example High-Quality Codebook Entry:
code_name: "perceived_judgment_anxiety"
definition:
conceptual: "Psychological discomfort arising from anticipation of negative evaluation by others during language production"
operational: "Participant explicitly mentions fear, worry, nervousness, or discomfort about being judged, evaluated, or criticized by others when speaking"
when_to_use:
inclusion_criteria:
- "Explicit mention of judgment, evaluation, or criticism from others"
- "Affective states (fear, anxiety, nervousness) linked to social evaluation"
- "Comparisons between human vs. AI interaction where judgment is factor"
boundary_conditions: "Must be specific to language speaking context, not general social anxiety"
when_not_to_use:
exclusion_criteria:
- "Generic nervousness without reference to being judged"
- "Task difficulty anxiety (not social evaluation)"
- "Performance anxiety about grades (use 'grade_anxiety' code)"
edge_cases: "Self-judgment (internal criticism) → use 'self_critical_perfectionism' instead"
example_quotes:
typical_examples:
- "I was scared my classmates would laugh at my pronunciation" [P3, L45]
- "The chatbot doesn't judge me, but people do" [P7, L112]
- "I felt nervous because the teacher would notice my mistakes" [P11, L201]
boundary_examples:
- "I was worried about saying the wrong thing" [P5, L89] - coded because implies judgment from listener
counter_examples:
- "I was nervous because the vocabulary was difficult" [P2, L34] - NOT coded (task difficulty, not judgment)
- "I felt anxious before the test" [P9, L156] - NOT coded (test anxiety, use 'evaluation_anxiety')
related_codes:
parent_code: "affective_barriers"
sibling_codes: ["speaking_anxiety_general", "fear_of_mistakes"]
child_codes: ["peer_judgment_anxiety", "teacher_judgment_anxiety"]
code_metadata:
date_created: "2024-10-15"
created_by: "HY"
source: "deductive (Foreign Language Anxiety Scale)"
frequency: 27
prevalence: "18/24 participants (75%)"
4. Inter-Rater Reliability
When IRR is Required:
irr_requirements:
required_for:
- "Content analysis with frequency claims"
- "Deductive coding with structured codebook"
- "Dissertation/thesis research"
- "High-stakes publication (top journals)"
optional_for:
- "Exploratory inductive research"
- "Single-researcher qualitative studies"
- "Phenomenological research"
best_practice: "Always recommended for transparency and rigor"
IRR Process:
irr_process:
step_1_codebook_training:
activity: "Train second coder on codebook"
materials: ["Codebook", "Example coded transcripts", "Decision rules"]
time: "4-8 hours typical"
step_2_independent_coding:
sample_size: "10-20% of total dataset"
selection: "Random or stratified sampling"
independence: "No communication between coders during this phase"
step_3_reliability_calculation:
metrics:
cohens_kappa:
interpretation:
- "< 0.40: Poor agreement"
- "0.40-0.59: Fair agreement"
- "0.60-0.74: Good agreement"
- "0.75-1.00: Excellent agreement"
threshold: "≥ 0.60 acceptable, ≥ 0.80 preferred"
percent_agreement:
formula: "(Number of agreements / Total coding decisions) × 100"
threshold: "≥ 80% acceptable"
krippendorffs_alpha:
use_case: "Multiple coders or complex coding"
threshold: "≥ 0.67 acceptable"
step_4_discrepancy_resolution:
process:
- "Identify disagreements"
- "Discuss rationale for each code"
- "Refine codebook definitions"
- "Re-code if necessary"
output: "Refined codebook, consensus codes"
step_5_full_dataset_coding:
approach: "Primary coder completes remaining data with refined codebook"
spot_check: "Second coder reviews 5% of subsequent coding"
IRR Reporting Template:
irr_report:
sample: "4 of 24 transcripts (17%) independently coded"
initial_reliability:
cohens_kappa: 0.68
percent_agreement: 78%
interpretation: "Good agreement"
discrepancies:
category_1: "Confusion between 'autonomy_support' and 'informational_feedback'"
resolution: "Refined definitions to emphasize choice vs. guidance distinction"
post_discussion_reliability:
cohens_kappa: 0.82
percent_agreement: 89%
interpretation: "Excellent agreement"
final_process: "First author coded remaining 20 transcripts with refined codebook"
5. Saturation Assessment
Types of Saturation:
saturation_types:
information_saturation:
definition: "No new information emerging from interviews"
indicators:
- "Repeated stories across participants"
- "Predictable responses"
- "No surprising or novel information"
when_to_assess: "After each interview"
thematic_saturation:
definition: "No new themes identified"
indicators:
- "Theme structure stable"
- "No major reorganization needed"
- "New data confirms existing themes"
when_to_assess: "After coding 50%, 75%, 100% of data"
code_saturation:
definition: "No new codes needed"
indicators:
- "Existing codes cover all data"
- "Minimal new codes per transcript"
- "New codes are minor variations"
when_to_assess: "Real-time during coding"
Saturation Documentation:
saturation_tracking:
method_1_saturation_grid:
structure:
columns: ["Interview #", "New Codes", "New Themes", "Cumulative Codes"]
rows: "One per interview"
example:
- interview: 1, new_codes: 45, new_themes: 8, cumulative: 45
- interview: 5, new_codes: 12, new_themes: 2, cumulative: 98
- interview: 10, new_codes: 4, new_themes: 0, cumulative: 134
- interview: 15, new_codes: 1, new_themes: 0, cumulative: 141
- interview: 18, new_codes: 0, new_themes: 0, cumulative: 141
saturation_point: "Interview 15-18"
method_2_saturation_curve:
x_axis: "Interview number"
y_axis: "New codes identified"
visualization: "Line graph showing decline to near-zero"
saturation_indicator: "Curve flattens (asymptotic)"
method_3_constant_comparison:
process:
- "Code new interview"
- "Compare to existing codes"
- "Note: new/variation/duplicate"
- "Track proportion of duplicates"
saturation_threshold: ">90% of data segments fit existing codes"
Saturation Memo Example:
saturation_memo:
date: "2024-11-20"
data_point: "After 18 interviews"
observations:
code_saturation:
- "Last 3 interviews (16-18) added 0 new codes"
- "Total codebook: 141 codes collapsed to 28 focused codes"
- "All new data fit into existing framework"
thematic_saturation:
- "6 major themes stable since interview 12"
- "Minor refinements to theme boundaries only"
- "No structural changes to thematic map"
information_saturation:
- "Participants repeating same experiences"
- "No novel insights about chatbot interaction patterns"
- "Can predict responses based on existing data"
decision: "Data collection complete. Saturation achieved for research question."
transparency_note: "Acknowledge in write-up that saturation is context-dependent and future research may reveal new dimensions"
6. CAQDAS (Computer-Assisted Qualitative Data Analysis Software)
Major Software Comparison:
caqdas_comparison:
nvivo:
strengths:
- "Powerful text coding and annotation"
- "Matrix queries for pattern analysis"
- "Video/audio transcript integration"
- "Framework matrices for deductive coding"
weaknesses:
- "Steep learning curve"
- "Expensive ($1400+ academic license)"
best_for: "Large projects, deductive + inductive coding, multimedia data"
atlas_ti:
strengths:
- "Visual network diagrams"
- "Memo system excellent for theory building"
- "Grounded theory tools"
- "Geographic/spatial data analysis"
weaknesses:
- "Interface can be unintuitive"
- "Moderate cost ($700+ academic)"
best_for: "Grounded theory, visual learners, conceptual mapping"
maxqda:
strengths:
- "User-friendly interface"
- "Mixed methods integration (quant + qual)"
- "Team collaboration features"
- "Social media data import"
weaknesses:
- "Less powerful for very large datasets"
- "Moderate cost ($600+ academic)"
best_for: "Beginners, mixed methods, team projects"
dedoose:
strengths:
- "Cloud-based (access anywhere)"
- "Mixed methods focus"
- "Lower cost ($12.95/month)"
- "Real-time team collaboration"
weaknesses:
- "Requires internet connection"
- "Less feature-rich than NVivo"
best_for: "Budget-conscious researchers, collaborative projects, cross-platform work"
manual_coding:
tools: ["Microsoft Word comments", "Excel spreadsheets", "Paper and highlighters"]
strengths:
- "No cost"
- "Deep data immersion"
- "No technical barriers"
weaknesses:
- "Time-consuming"
- "Difficult to reorganize codes"
- "No automated queries"
best_for: "Small datasets (<10 interviews), exploratory studies, students learning coding"
When to Use Software vs. Manual Coding:
decision_tree:
use_caqdas_if:
- "Dataset > 10 interviews/documents"
- "Need to reorganize codes frequently"
- "Want automated code frequency reports"
- "Multiple coders collaborating"
- "Mixed methods (quant + qual integration)"
manual_coding_acceptable_if:
- "Small dataset (< 10 interviews)"
- "Single researcher"
- "Exploratory pilot study"
- "Budget constraints"
- "Simple coding scheme (< 20 codes)"
hybrid_approach:
option_1: "Manual coding for first pass → CAQDAS for refinement"
option_2: "CAQDAS for coding → Manual for theme interpretation"
Auto-Coding Features (Use with Caution):
auto_coding:
text_search_coding:
description: "Software automatically codes all instances of keyword"
example: "Code all mentions of 'chatbot' → 'chatbot_references'"
pros: "Fast for manifest content"
cons: "Misses synonyms, context-dependent meaning"
recommendation: "Use for initial pass, manually review results"
sentiment_analysis:
description: "Software classifies text as positive/negative/neutral"
example: "Auto-code positive statements → 'positive_affect'"
pros: "Quick overview of tone"
cons: "Poor accuracy for complex emotions, sarcasm"
recommendation: "Supplementary only, not sole coding method"
ai_assisted_coding:
tools: ["NVivo with AI", "Atlas.ti GPT integration"]
description: "AI suggests codes based on content"
pros: "Can identify patterns human might miss"
cons: "Black box, not transparent, ethical concerns"
recommendation: "Experimental stage, use human oversight"
Key Deliverables
deliverables:
codebook:
format: "Excel/Word table or CAQDAS export"
contents:
- "Code names and definitions"
- "Inclusion/exclusion criteria"
- "Example quotations"
- "Code relationships (parent/child)"
audience: "Research team, peer reviewers"
coding_audit_trail:
contents:
- "Initial codebook version"
- "Coding memos"
- "Code refinement decisions"
- "IRR results and resolutions"
purpose: "Transparency and trustworthiness"
thematic_map:
format: "Visual diagram (mind map, concept map)"
elements:
- "Themes as nodes"
- "Relationships as arrows"
- "Subthemes nested within"
purpose: "Show holistic structure of findings"
saturation_documentation:
format: "Table or graph"
contents:
- "Saturation grid (codes per interview)"
- "Saturation curve graph"
- "Saturation memo"
purpose: "Justify sample size adequacy"
findings_table:
columns: ["Theme", "Description", "Frequency", "Representative Quote"]
rows: "One per theme/subtheme"
purpose: "Summary table for manuscript"
Best Practices
best_practices:
coding_consistency:
- "[ ] Code in dedicated time blocks (avoid fatigue)"
- "[ ] Re-code 10% of data after 1 week to check consistency"
- "[ ] Keep coding manual open during all sessions"
reflexivity:
- "[ ] Write memos about own biases and assumptions"
- "[ ] Discuss potential influence on code interpretation"
- "[ ] Seek peer debriefing on coding decisions"
transparency:
- "[ ] Provide codebook in appendix or supplementary materials"
- "[ ] Describe coding process in methods section (not just 'data were coded')"
- "[ ] Include sufficient quotations in findings (not just summaries)"
data_management:
- "[ ] Backup coded data daily (multiple locations)"
- "[ ] Version control for codebook (track changes)"
- "[ ] Anonymize transcripts before sharing with coders"
Common Pitfalls
pitfalls:
thin_coding:
problem: "Codes too broad, not specific enough"
example: "Code: 'motivation' applied to 100+ segments"
solution: "Break into specific types (intrinsic, extrinsic, autonomous, controlled)"
code_proliferation:
problem: "Too many codes, no conceptual organization"
example: "200+ codes, many overlapping"
solution: "Collapse similar codes, create hierarchy"
insufficient_examples:
problem: "Codebook definitions without example quotes"
solution: "Minimum 2-3 examples per code"
ignoring_negative_cases:
problem: "Only coding data that fits expected themes"
solution: "Actively search for disconfirming evidence"
over_reliance_on_software:
problem: "Let CAQDAS dictate analysis, not researcher insight"
solution: "Software is tool, not method. Interpretation remains human."
Human Checkpoint
CP_CODING_FRAMEWORK: Review proposed codebook structure, coding approach, and saturation plan before data collection begins.
Example Output
When researcher asks for help with coding:
# Qualitative Coding Plan for [Research Topic]
## Recommended Approach: Hybrid (Deductive + Inductive)
### Phase 1: Deductive Framework (Based on Literature)
**A priori codes from [Theory Name]:**
- [Code 1]: [Definition]
- [Code 2]: [Definition]
- [Code 3]: [Definition]
### Phase 2: Inductive Open Coding
- Remain open to emergent codes beyond framework
- Track source of each code (deductive vs. inductive)
### Phase 3: Thematic Development
[Insert phased coding process based on method]
## Codebook Template
[Provide Excel template or CAQDAS structure]
## Inter-Rater Reliability Plan
- **Sample**: 20% of transcripts (n = X)
- **Metric**: Cohen's Kappa (target ≥ 0.75)
- **Process**: [Detailed IRR steps]
## Saturation Tracking
- Method: [Saturation grid / curve]
- Assessment points: After interviews 10, 15, 20
- Expected saturation: 18-22 interviews
## Software Recommendation
**Recommended**: [NVivo / MAXQDA / Dedoose]
**Rationale**: [Justify based on project needs]
## Next Steps
1. [ ] Refine codebook with advisor
2. [ ] Pilot code 2-3 transcripts
3. [ ] Train second coder (if IRR required)
4. [ ] Begin systematic coding
HANDOFF TO:
- E3-MixedMethodsIntegration: For advancing from codes to interpretive themes and integration
- G2-PublicationSpecialist: For writing findings section with coded themes