Documenting Session Findings
Overview
Capture session discoveries as durable project knowledge before they're lost to context. Findings become GitHub issues, CLAUDE.md gotchas, and roadmap entries.
When to Use
- After a smoke test reveals bugs or UX issues
- After discovering a gotcha that cost debugging time
- After merging a feature branch, before starting new work
- When you think "we need to track this" about anything found during the session
The Process
digraph findings {
"Session complete" [shape=doublecircle];
"List findings" [shape=box];
"Categorize each" [shape=diamond];
"Bug/enhancement" [shape=box, label="Create GitHub issue"];
"Gotcha/pattern" [shape=box, label="Add to CLAUDE.md"];
"Tracked work" [shape=box, label="Add to roadmap"];
"Commit docs" [shape=box];
"Done" [shape=doublecircle];
"Session complete" -> "List findings";
"List findings" -> "Categorize each";
"Categorize each" -> "Bug/enhancement" [label="actionable"];
"Categorize each" -> "Gotcha/pattern" [label="knowledge"];
"Categorize each" -> "Tracked work" [label="future work"];
"Bug/enhancement" -> "Tracked work";
"Gotcha/pattern" -> "Commit docs";
"Tracked work" -> "Commit docs";
"Commit docs" -> "Done";
}
1. List Findings
Review the session for:
- Errors encountered and their root causes
- Workarounds applied (these mask real bugs)
- Things that weren't obvious until you hit them
- Minor issues deferred during implementation
- Swallowed errors: exceptions caught silently, empty catch blocks, error responses with no logging, null returns that hide failures, generic error messages that discard context
- Architectural concerns: framework-level inconsistencies, patterns that will cause repeated bugs, layer violations, DI resolution gaps, behavior that differs across routes/contexts unexpectedly
2. Categorize and Act
| Finding type |
Action |
Where |
| Bug (broken behavior) |
GitHub issue with repro steps |
gh issue create with bug label |
| Enhancement (missing feature) |
GitHub issue with expected behavior |
gh issue create with enhancement label |
| Swallowed error |
GitHub issue describing what's lost and where |
gh issue create with bug label |
| Architectural concern |
GitHub issue with impact analysis |
gh issue create with enhancement label |
| Gotcha (non-obvious knowledge) |
One-line addition |
Project CLAUDE.md under relevant section |
| Future work (tracked item) |
Roadmap entry with issue cross-ref |
Project roadmap doc |
3. GitHub Issue Quality
Each issue should include:
- Title: What's wrong/missing (not how to fix)
- Root cause: Why it happens (if known)
- Repro steps or observed behavior: What you saw
- Expected behavior: What should happen
- Affected files: Where to look
3a. Swallowed Error Issues
Swallowed errors are a trust violation: the system failed but told no one. Flag these aggressively.
Look for:
catch blocks that log nothing or return generic responses
- Error handlers that discard exception messages, files, or stack traces
- Functions returning
null or false where the caller can't distinguish "not found" from "failed"
- HTTP responses (especially 500) that strip error details without logging them
Each swallowed error issue should include:
- What information is lost: the exception message, stack trace, HTTP status, etc.
- Where it's swallowed: file and line of the catch/handler
- Impact: how this made debugging harder (with a concrete example from the session if possible)
- Fix direction: log before sanitizing, or propagate the error to a monitoring system
3b. Architectural Concern Issues
Architectural concerns are patterns that will generate repeated bugs across the codebase, not just in the code you touched today.
Look for:
- Inconsistent behavior across layers (e.g., DI resolves differently for SSR vs non-SSR routes)
- Missing abstractions that force workarounds (e.g., every non-SSR controller must manually resolve accounts)
- Framework-level gaps where app code compensates with fragile patterns
- Conventions that only work sometimes (e.g.,
$account parameter is useful on SSR routes but misleading on API routes)
Each architectural concern issue should include:
- The inconsistency: what behaves differently and why
- Blast radius: how many files/features are affected or will be affected
- Current workaround: what app code does to compensate
- Suggested fix: whether this is an app-level or framework-level change
4. CLAUDE.md Updates
REQUIRED SUB-SKILL: Use claude-md-management:revise-claude-md for the CLAUDE.md update step. It has a structured review process that produces higher-quality entries than ad-hoc additions.
5. Commit
Single commit with all doc changes: docs: capture session findings (#N, #M, ...)
Common Mistakes
| Mistake |
Fix |
| Creating issues without root cause |
Include what you learned, even if partial |
| Verbose CLAUDE.md entries |
One line per gotcha. Link to issues for details. |
| Forgetting to cross-reference |
Always link roadmap entries to issue numbers |
| Skipping this entirely |
Session findings evaporate. 5 minutes now saves hours later. |
| Ignoring swallowed errors |
If debugging was hard because errors were hidden, that's a finding. File it. |
| Treating architectural issues as one-off bugs |
If the workaround will be needed in every similar controller/route, it's architectural. |
| Filing architectural concerns without blast radius |
"This affects one file" vs "every non-SSR route" changes priority entirely. |
1---2name: documenting-session-findings3description: Use when a development session is complete and findings need to be captured before moving on. Triggers include smoke test failures, discovered bugs, new gotchas, architectural learnings, or any "we should note this" moment. Also use proactively after completing a feature branch merge.4---56# Documenting Session Findings78## Overview910Capture session discoveries as durable project knowledge before they're lost to context. Findings become GitHub issues, CLAUDE.md gotchas, and roadmap entries.1112## When to Use1314- After a smoke test reveals bugs or UX issues15- After discovering a gotcha that cost debugging time16- After merging a feature branch, before starting new work17- When you think "we need to track this" about anything found during the session1819## The Process2021```dot22digraph findings {23 "Session complete" [shape=doublecircle];24 "List findings" [shape=box];25 "Categorize each" [shape=diamond];26 "Bug/enhancement" [shape=box, label="Create GitHub issue"];27 "Gotcha/pattern" [shape=box, label="Add to CLAUDE.md"];28 "Tracked work" [shape=box, label="Add to roadmap"];29 "Commit docs" [shape=box];30 "Done" [shape=doublecircle];3132 "Session complete" -> "List findings";33 "List findings" -> "Categorize each";34 "Categorize each" -> "Bug/enhancement" [label="actionable"];35 "Categorize each" -> "Gotcha/pattern" [label="knowledge"];36 "Categorize each" -> "Tracked work" [label="future work"];37 "Bug/enhancement" -> "Tracked work";38 "Gotcha/pattern" -> "Commit docs";39 "Tracked work" -> "Commit docs";40 "Commit docs" -> "Done";41}42```4344### 1. List Findings4546Review the session for:47- Errors encountered and their root causes48- Workarounds applied (these mask real bugs)49- Things that weren't obvious until you hit them50- Minor issues deferred during implementation51- **Swallowed errors**: exceptions caught silently, empty catch blocks, error responses with no logging, null returns that hide failures, generic error messages that discard context52- **Architectural concerns**: framework-level inconsistencies, patterns that will cause repeated bugs, layer violations, DI resolution gaps, behavior that differs across routes/contexts unexpectedly5354### 2. Categorize and Act5556| Finding type | Action | Where |57|---|---|---|58| Bug (broken behavior) | GitHub issue with repro steps | `gh issue create` with `bug` label |59| Enhancement (missing feature) | GitHub issue with expected behavior | `gh issue create` with `enhancement` label |60| Swallowed error | GitHub issue describing what's lost and where | `gh issue create` with `bug` label |61| Architectural concern | GitHub issue with impact analysis | `gh issue create` with `enhancement` label |62| Gotcha (non-obvious knowledge) | One-line addition | Project `CLAUDE.md` under relevant section |63| Future work (tracked item) | Roadmap entry with issue cross-ref | Project roadmap doc |6465### 3. GitHub Issue Quality6667Each issue should include:68- **Title**: What's wrong/missing (not how to fix)69- **Root cause**: Why it happens (if known)70- **Repro steps or observed behavior**: What you saw71- **Expected behavior**: What should happen72- **Affected files**: Where to look7374### 3a. Swallowed Error Issues7576Swallowed errors are a trust violation: the system failed but told no one. Flag these aggressively.7778Look for:79- `catch` blocks that log nothing or return generic responses80- Error handlers that discard exception messages, files, or stack traces81- Functions returning `null` or `false` where the caller can't distinguish "not found" from "failed"82- HTTP responses (especially 500) that strip error details without logging them8384Each swallowed error issue should include:85- **What information is lost**: the exception message, stack trace, HTTP status, etc.86- **Where it's swallowed**: file and line of the catch/handler87- **Impact**: how this made debugging harder (with a concrete example from the session if possible)88- **Fix direction**: log before sanitizing, or propagate the error to a monitoring system8990### 3b. Architectural Concern Issues9192Architectural concerns are patterns that will generate repeated bugs across the codebase, not just in the code you touched today.9394Look for:95- Inconsistent behavior across layers (e.g., DI resolves differently for SSR vs non-SSR routes)96- Missing abstractions that force workarounds (e.g., every non-SSR controller must manually resolve accounts)97- Framework-level gaps where app code compensates with fragile patterns98- Conventions that only work sometimes (e.g., `$account` parameter is useful on SSR routes but misleading on API routes)99100Each architectural concern issue should include:101- **The inconsistency**: what behaves differently and why102- **Blast radius**: how many files/features are affected or will be affected103- **Current workaround**: what app code does to compensate104- **Suggested fix**: whether this is an app-level or framework-level change105106### 4. CLAUDE.md Updates107108**REQUIRED SUB-SKILL:** Use claude-md-management:revise-claude-md for the CLAUDE.md update step. It has a structured review process that produces higher-quality entries than ad-hoc additions.109110### 5. Commit111112Single commit with all doc changes: `docs: capture session findings (#N, #M, ...)`113114## Common Mistakes115116| Mistake | Fix |117|---|---|118| Creating issues without root cause | Include what you learned, even if partial |119| Verbose CLAUDE.md entries | One line per gotcha. Link to issues for details. |120| Forgetting to cross-reference | Always link roadmap entries to issue numbers |121| Skipping this entirely | Session findings evaporate. 5 minutes now saves hours later. |122| Ignoring swallowed errors | If debugging was hard because errors were hidden, that's a finding. File it. |123| Treating architectural issues as one-off bugs | If the workaround will be needed in every similar controller/route, it's architectural. |124| Filing architectural concerns without blast radius | "This affects one file" vs "every non-SSR route" changes priority entirely. |