Help us improve
Share bugs, ideas, or general feedback.
From dev-workflow
Use after resolving a bug, completing a task with notable pitfalls, or discovering an important architecture constraint. Extracts a structured entry from the session and saves it to the knowledge base.
npx claudepluginhub n0rvyn/indie-toolkit --plugin dev-workflowHow this skill is triggered — by the user, by Claude, or both
Slash command
/dev-workflow:collect-lessonThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill extracts a structured knowledge entry from the current session and writes it to the central knowledge base at `~/.claude/knowledge/` or the project-local `docs/09-lessons-learned/`. It checks for near-duplicates before creating, and asks the user to confirm the draft.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
This skill extracts a structured knowledge entry from the current session and writes it to the central knowledge base at ~/.claude/knowledge/ or the project-local docs/09-lessons-learned/. It checks for near-duplicates before creating, and asks the user to confirm the draft.
| Type | When to use | Suggested body structure |
|---|---|---|
| Lesson / Error | Bug fixed, pitfall discovered | Symptom / Root Cause / Prevention |
| API Note | API quirk, undocumented behavior, version diff | Behavior / Gotcha / Example |
| Architecture Decision | Cross-project reusable pattern or constraint | Context / Decision / Consequences |
| Reference | WWDC note, framework learning, article summary | Summary / Key Points / Links |
The body format is flexible; the YAML frontmatter is mandatory.
Review the current conversation to identify:
api-usage, bug-postmortem, architecture, platform-constraints, stability-audit, data-research, workflow, reference, or a new slug if none fitSearch the central knowledge base for similar entries:
Grep(pattern="<keywords joined by |>", path="~/.claude/knowledge/", output_mode="files_with_matches")keywords: line and titleIf ~/.claude/knowledge/ does not exist yet, skip this step.
Present the draft entry:
Draft knowledge entry:
Title: {suggested title}
Category: {category}
Keywords: {keyword1}, {keyword2}, ...
Scope: global (saves to ~/.claude/knowledge/{category}/)
OR project (saves to docs/09-lessons-learned/)
---
{markdown body}
---
Options:
- Save as-is (global or project scope?)
- Edit (specify what to change)
- Skip
Wait for user response. Apply any edits before saving.
Once the user confirms:
Determine the target directory:
~/.claude/knowledge/{category}/docs/09-lessons-learned/Generate filename: YYYY-MM-DD-{slug}.md where slug is the title lowercased, spaces replaced with hyphens, non-alphanumeric removed, truncated to 40 chars
Create directory if needed: Bash("mkdir -p {target_directory}")
Write the file using the Write tool:
---
category: {category}
keywords: [{kw1}, {kw2}, ...]
date: {YYYY-MM-DD}
source_project: {current project name, optional}
---
# {Title}
{body}
Saved to {file_path}After saving, propagate links to related entries in ~/.claude/knowledge/. Skip this step if the entry was saved to project-local docs/09-lessons-learned/.
Search for entries sharing keywords with the new entry:
| into a single regex: Grep(pattern="{kw1}|{kw2}|{kw3}", path="~/.claude/knowledge/", glob="*.md", output_mode="files_with_matches")keywords: lineIf no related entries found, skip to Step 5d.
For each related entry:
related: field:
Edit the file to insert related: [{new-entry-filename}] after the date: line in frontmatterrelated: field and the new entry is not listed:
Edit the file to append the new entry's filename to the existing related: arrayAfter processing all related entries, Edit the new entry's frontmatter to add related: [{list of related filenames}] after the date: line.
Related entries are referenced by filename only (e.g., 2026-04-07-some-slug.md), not full paths, since category directories may differ.
For each related entry with >=3 keyword overlaps:
> ⚠️ Potential conflict with [[{related-filename}]] — review both entries.After the "Saved to {file_path}" message from Step 4, append:
Cross-references: {N} related entries found, {M} mutual links added, {C} contradictions flagged
If no related entries: Cross-references: no related entries (< 2 keyword overlap)
After saving, inform the user:
Optional: Run `/generate-bases-views --target lessons` to update the Obsidian Bases lessons dashboard.
~/.claude/knowledge/{category}/ or docs/09-lessons-learned/ with correct frontmatterrelated: cross-references in frontmatter