|
| 1 | +--- |
| 2 | +title: "fix: Resolve PR #194 review comments" |
| 3 | +type: fix |
| 4 | +status: completed |
| 5 | +date: 2026-02-24 |
| 6 | +pr: 194 |
| 7 | +origin: PR review by kieranklaassen (2026-02-24) |
| 8 | +--- |
| 9 | + |
| 10 | +# Resolve PR #194 Review Comments |
| 11 | + |
| 12 | +## Overview |
| 13 | + |
| 14 | +PR #194 adds a user research workflow (3 skills, 1 command, 1 agent) to the compound-engineering plugin. A thorough code review identified 11 items across P1/P2/P3 priorities. This plan addresses each item. |
| 15 | + |
| 16 | +**Important context:** The local `main` branch was at `v2.34.0` (fork's main), but `upstream/main` (`EveryInc/compound-engineering-plugin`) has advanced to `v2.35.2` with 25+ commits. The review's P1-1 about the stale branch is **correct** — the PR branch needs rebasing onto `upstream/main`. |
| 17 | + |
| 18 | +### Features on upstream/main that would be regressed without rebase |
| 19 | + |
| 20 | +- `origin:` frontmatter field in plan templates (v2.35.2) |
| 21 | +- Detailed brainstorm carry-forward in plan.md steps 1-7 (v2.35.2) |
| 22 | +- `Sources` sections linking plans to brainstorms (v2.35.2) |
| 23 | +- `System-Wide Impact` sections in MORE and A LOT templates (v2.35.1) |
| 24 | +- Qualified `compound-engineering:workflow:spec-flow-analyzer` namespace (v2.35.0 fix) |
| 25 | +- Kiro CLI target provider (v0.9.0) |
| 26 | +- OpenCode commands merge (v0.8.0) |
| 27 | +- Removed `docs/reports` and `docs/decisions` directories (v0.9.1) |
| 28 | + |
| 29 | +### Conflict-prone files during rebase |
| 30 | + |
| 31 | +| File | Reason | |
| 32 | +|------|--------| |
| 33 | +| `plugins/compound-engineering/commands/workflows/plan.md` | PR adds 3 lines; upstream rewrote brainstorm sections, added origin/sources/system-wide-impact | |
| 34 | +| `plugins/compound-engineering/.claude-plugin/plugin.json` | Version `2.35.0` vs `2.35.2`, description string (component counts differ) | |
| 35 | +| `.claude-plugin/marketplace.json` | Same version/description conflicts | |
| 36 | +| `plugins/compound-engineering/CHANGELOG.md` | Both branches added entries | |
| 37 | +| `plugins/compound-engineering/README.md` | Component count differences | |
| 38 | + |
| 39 | +## Acceptance Criteria |
| 40 | + |
| 41 | +- [x] Branch rebased onto `upstream/main` with conflicts resolved |
| 42 | +- [x] Version bumped to `2.36.0` (minor: new functionality on top of v2.35.2) |
| 43 | +- [x] Component counts accurate across plugin.json, marketplace.json, README.md |
| 44 | +- [x] `.gitignore` pattern catches all transcript file types, not just `.md` |
| 45 | +- [x] `.claude/settings.json` removed from tracking and gitignored |
| 46 | +- [x] Anonymization instructions positioned before insight extraction in `transcript-insights` |
| 47 | +- [x] Privacy checklist items added to both `transcript-insights` and `persona-builder` |
| 48 | +- [x] `research-plan/SKILL.md` uses assertive MUST NOT language for PII |
| 49 | +- [x] All downstream references to old `*.md` gitignore pattern updated |
| 50 | +- [x] Plan docs for the research workflow marked as `status: completed` |
| 51 | +- [x] JSON files valid (`jq .` passes) |
| 52 | + |
| 53 | +--- |
| 54 | + |
| 55 | +## Implementation Tasks |
| 56 | + |
| 57 | +### Task 0: Rebase onto upstream/main (P1-1) |
| 58 | + |
| 59 | +**This must be done first.** All other tasks apply on top of the rebased branch. |
| 60 | + |
| 61 | +**Steps:** |
| 62 | +```bash |
| 63 | +# Fetch latest upstream |
| 64 | +git fetch upstream |
| 65 | + |
| 66 | +# Rebase PR branch onto upstream/main |
| 67 | +git rebase upstream/main |
| 68 | +``` |
| 69 | + |
| 70 | +**Conflict resolution strategy for `plan.md`:** |
| 71 | +- The PR adds 3 lines (user-research-analyst in Step 1, user research bullet in Step 1.6, "What to look for" bullet) |
| 72 | +- Upstream rewrote the brainstorm carry-forward section (Steps 1-7 → more detailed), added `origin:` frontmatter, `Sources`/`System-Wide Impact` sections, and qualified the `spec-flow-analyzer` namespace |
| 73 | +- **Resolution:** Take upstream's version as the base, then re-apply the 3 user-research additions on top. Do NOT overwrite upstream's brainstorm detail, origin field, or system-wide impact sections. |
| 74 | + |
| 75 | +**Conflict resolution for `plugin.json` and `marketplace.json`:** |
| 76 | +- Take upstream's version (`2.35.2`) as base, then bump to `2.36.0` |
| 77 | +- Recount components after rebase: upstream has 29 agents, 22 commands, 19 skills. PR adds 1 agent, 1 command, 3 skills → final should be 30 agents, 23 commands, 22 skills |
| 78 | +- Update description strings to match actual counts |
| 79 | + |
| 80 | +**Conflict resolution for `CHANGELOG.md` and `README.md`:** |
| 81 | +- Keep upstream's entries, add PR's new entries on top |
| 82 | +- Verify README component counts match the recounted totals |
| 83 | + |
| 84 | +**Conflict resolution for `.gitignore`:** |
| 85 | +- Upstream added `todos/` entry. PR adds transcript pattern. Keep both. |
| 86 | + |
| 87 | +### Task 1: Fix `.gitignore` transcript pattern (P1-2) |
| 88 | + |
| 89 | +**File:** `.gitignore` |
| 90 | + |
| 91 | +Change: |
| 92 | +```gitignore |
| 93 | +# Research data - transcripts contain raw interview data with PII |
| 94 | +docs/research/transcripts/*.md |
| 95 | +``` |
| 96 | + |
| 97 | +To: |
| 98 | +```gitignore |
| 99 | +# Research data - transcripts contain raw interview data with PII |
| 100 | +docs/research/transcripts/* |
| 101 | +!docs/research/transcripts/.gitkeep |
| 102 | +``` |
| 103 | + |
| 104 | +**Why:** The `*.md` pattern only ignores markdown transcripts. Users may save transcripts as `.txt`, `.json`, `.csv`, or `.docx` (common exports from Otter.ai, Rev, etc.), and those would leak PII into git. |
| 105 | + |
| 106 | +**Update downstream references** that mention the old `*.md` pattern: |
| 107 | + |
| 108 | +1. `plugins/compound-engineering/skills/transcript-insights/SKILL.md` (~line 298) — update reference from `docs/research/transcripts/*.md` to `docs/research/transcripts/` |
| 109 | +2. `docs/solutions/integration-issues/adding-optional-workflow-phases-with-graceful-degradation.md` (~lines 70, 174) — update pattern references |
| 110 | + |
| 111 | +### Task 2: Remove `.claude/settings.json` from tracking (P2-3) |
| 112 | + |
| 113 | +**Steps:** |
| 114 | +1. `git rm --cached .claude/settings.json` — removes from git index, keeps on disk |
| 115 | +2. Add `.claude/settings.json` to `.gitignore` |
| 116 | + |
| 117 | +This file contains personal dev config (`enabledPlugins` flag) that forces plugin enablement on all repo clones. Claude Code creates this file locally when users install plugins — it should not be committed. |
| 118 | + |
| 119 | +**No contributor impact:** Developers set up plugins via `claude /plugin install`, which creates this file automatically. |
| 120 | + |
| 121 | +### Task 3: Reposition anonymization in `transcript-insights` (P2-4) |
| 122 | + |
| 123 | +**File:** `plugins/compound-engineering/skills/transcript-insights/SKILL.md` |
| 124 | + |
| 125 | +The Privacy Note at the bottom (line 289+) contains detailed anonymization instructions, but they appear AFTER the processing steps. The AI processes the transcript top-to-bottom and may extract PII-containing quotes before encountering the privacy instructions. |
| 126 | + |
| 127 | +**Changes:** |
| 128 | +1. Add a new **Step 4.0: Anonymization During Processing** before Step 4a, containing: |
| 129 | + ```markdown |
| 130 | + ### Step 4.0: Anonymization During Processing |
| 131 | + |
| 132 | + Before extracting insights, apply these transformations to ALL output: |
| 133 | + |
| 134 | + - Assign anonymized participant IDs (user-001, user-002, etc.) |
| 135 | + - Replace real names with anonymized IDs in all quotes and references |
| 136 | + - Replace company names with generic descriptors (e.g., "their company", "a competitor") |
| 137 | + - Strip identifying details from the `source_transcript` filename field |
| 138 | + - Quotes must be exact from the transcript, but with PII replaced inline |
| 139 | + |
| 140 | + If the transcript already uses anonymized IDs (matching pattern `user-NNN`), note that anonymization is already complete and proceed. |
| 141 | + ``` |
| 142 | + |
| 143 | +2. Reduce the existing Privacy Note at the bottom to a cross-reference: |
| 144 | + ```markdown |
| 145 | + ## Privacy |
| 146 | + |
| 147 | + See Step 4.0 for anonymization requirements. Transcripts in `docs/research/transcripts/` contain raw interview data with PII and MUST NOT be committed to version control. |
| 148 | + ``` |
| 149 | + |
| 150 | +3. Add to the Human Review Checklist (or create one if missing): |
| 151 | + ```markdown |
| 152 | + - [ ] No real names, email addresses, or company names in output |
| 153 | + - [ ] All participant references use anonymized IDs (user-NNN) |
| 154 | + ``` |
| 155 | + |
| 156 | +**Design decision:** This is output-time anonymization, not source-modifying. The raw transcript stays intact in `docs/research/transcripts/`; the derived snapshot is anonymized. This preserves the original data for re-processing. |
| 157 | + |
| 158 | +### Task 4: Add privacy verification to `persona-builder` (P2-4) |
| 159 | + |
| 160 | +**File:** `plugins/compound-engineering/skills/persona-builder/SKILL.md` |
| 161 | + |
| 162 | +Persona-builder consumes already-anonymized interview snapshots, NOT raw transcripts. It needs a verification step, not a full anonymization pass. |
| 163 | + |
| 164 | +**Add to the existing Human Review Checklist** (lines 203-211): |
| 165 | +```markdown |
| 166 | +- [ ] All source interviews use anonymized participant IDs (no real names) |
| 167 | +- [ ] No real names, email addresses, or company names appear in persona |
| 168 | +``` |
| 169 | + |
| 170 | +### Task 5: Fix stale privacy language in `research-plan` (P2-5) |
| 171 | + |
| 172 | +**File:** `plugins/compound-engineering/skills/research-plan/SKILL.md` (line 221-223) |
| 173 | + |
| 174 | +Change: |
| 175 | +```markdown |
| 176 | +Consider adding `docs/research/transcripts/` to `.gitignore` if transcripts |
| 177 | +contain personally identifiable information. Research plans and processed |
| 178 | +insights (with anonymized participant IDs) are generally safe to commit. |
| 179 | +``` |
| 180 | + |
| 181 | +To: |
| 182 | +```markdown |
| 183 | +Transcripts in `docs/research/transcripts/` contain raw interview data with PII |
| 184 | +and MUST NOT be committed to version control. The `.gitignore` already excludes |
| 185 | +this directory. Research plans and processed insights (with anonymized |
| 186 | +participant IDs) are safe to commit. |
| 187 | +``` |
| 188 | + |
| 189 | +### Task 6: Update plan docs status (P3-11) |
| 190 | + |
| 191 | +**File:** `docs/plans/2026-02-11-feat-user-research-workflow-plan.md` |
| 192 | + |
| 193 | +Add `status: completed` to the YAML frontmatter (it currently has no status field). |
| 194 | + |
| 195 | +**File:** `docs/plans/2026-02-13-fix-research-process-first-action-plan.md` |
| 196 | + |
| 197 | +Add `status: completed` to the YAML frontmatter (the fix was shipped in commit `47610ea`). |
| 198 | + |
| 199 | +--- |
| 200 | + |
| 201 | +## P3 Items — Deferred |
| 202 | + |
| 203 | +These are valid observations but non-blocking for merge. Document as future work: |
| 204 | + |
| 205 | +| Item | Reason to Defer | |
| 206 | +|------|----------------| |
| 207 | +| P3-6: Headless/batch mode | Future work — primary v1 use case is human-driven | |
| 208 | +| P3-7: Extract output templates to reference files | Optimization — skills work fine as-is | |
| 209 | +| P3-8: Trim discovery playbook (414 lines) | Worth doing but separate PR to avoid scope creep | |
| 210 | +| P3-9: Simplify persona merge spec | Works correctly, can simplify after real-world usage data | |
| 211 | +| P3-10: Simplify agent search strategy | Works correctly, can simplify after real-world usage data | |
| 212 | + |
| 213 | +--- |
| 214 | + |
| 215 | +## Execution Order |
| 216 | + |
| 217 | +``` |
| 218 | +0. git fetch upstream (Task 0 — rebase first) |
| 219 | + git rebase upstream/main (resolve conflicts per strategy above) |
| 220 | +1. Bump version to 2.36.0 in plugin.json + marketplace.json |
| 221 | +2. Recount components, update description strings |
| 222 | +3. git rm --cached .claude/settings.json (Task 2) |
| 223 | +4. Edit .gitignore (Tasks 1 + 2) |
| 224 | +5. Edit transcript-insights/SKILL.md (Task 3) |
| 225 | +6. Edit persona-builder/SKILL.md (Task 4) |
| 226 | +7. Edit research-plan/SKILL.md (Task 5) |
| 227 | +8. Update downstream pattern references (Task 1 follow-up) |
| 228 | +9. Update plan doc frontmatter (Task 6) |
| 229 | +10. Update CHANGELOG.md with v2.36.0 entry |
| 230 | +11. Validate JSON: jq . on plugin.json + marketplace.json |
| 231 | +12. Verify component counts still match |
| 232 | +13. Commit all changes, force-push branch |
| 233 | +``` |
| 234 | + |
| 235 | +## References |
| 236 | + |
| 237 | +- PR #194: https://github.com/EveryInc/compound-engineering-plugin/pull/194 |
| 238 | +- Solution doc: `docs/solutions/integration-issues/adding-optional-workflow-phases-with-graceful-degradation.md` |
| 239 | +- Solution doc: `docs/solutions/integration-issues/workflow-skill-transcript-input-mismatch.md` |
| 240 | +- Plugin versioning: `docs/solutions/plugin-versioning-requirements.md` |
0 commit comments