capture-insights
Skill1 starsChanged 35 days agoMITView on GitHub
Trigger: "capture", "save this to obsidian", "remember this in my vault", /capture. Extracts engineering insights from the conversation and writes them to topic notes in the Obsidian vault after user confirmation.
In this repository13 other files it gives its agents.
- AGENTS.mdAGENTS.md
- create-runbookSkill
- datadog-logs-analyzerSkill
- datadog-metrics-investigatorSkill
- datadog-report-publisherSkill
- datadog-service-healthSkill
- datadog-triageSkill
- k8s-error-analyzerSkill
- k8s-optimizer-costSkill
- meeting-notes-enhanceSkill
- runSkill
- second-opinionSkill
- stack-updaterSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
21 rules. About 0 are common, 13 are distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈13
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 70
Before writing anything, show a structured summary.
- Very specific: line 87
Use AskUserQuestion to get confirmation.
- Distinctive: line 95
Read the full note file.
- Very specific: line 97
If the section exists, append the content at the end of that section (before the next ## or end of file).
- Very specific: line 98
If no matching section exists, create a new ## Section Name at the end of the note (before any trailing whitespace).
- Distinctive: line 99
Write the updated file, preserving YAML frontmatter exactly.
- Very specific: line 103
Create the file at {{OBSIDIAN_VAULT}}/private/<category>/<Topic Name>.md (choosing the right category folder) with this structure:
- Distinctive: line 125
Only include sections that have content.
- Very specific: line 127
After creating a new note, update {{OBSIDIAN_VAULT}}/private/_index.md to add a link under the corresponding category section.
- Very specific: line 131
Add a date comment at the start of each captured block: <!-- captured: YYYY-MM-DD -->
- Distinctive: line 132
Use bullet points for discrete facts
- Very specific: line 133
Use code blocks (`
`) for commands, SQL, config snippets, error messages - Very specific: line 134
Use [[wikilinks]] to link to other notes in the vault when referencing related topics (e.g., [[Kubernetes]], [[PostgreSQL]])
- Distinctive: line 135
Write in the same language the user used in the conversation (Spanish or English)
- Distinctive: line 171
Never write without user confirmation first.
- Distinctive: line 172
Never modify YAML frontmatter of existing notes.
- Distinctive: line 173
Never delete or overwrite existing content — only append.
- Distinctive: line 174
Never capture ephemeral info (tool installation steps, conversation logistics).
- Distinctive: line 175
Never create duplicate notes — always check existing files first.
- Distinctive: line 176
Never add emoji to the captured content.
- Distinctive: line 177
Never invent information not discussed in the conversation.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Capture Insights to Obsidian PKM
Extracts actionable engineering knowledge from the current Claude Code conversation and persists it to topic-based notes in the Obsidian vault at {{OBSIDIAN_VAULT}}/private/.
When to Use
Apply this skill when the user explicitly asks to capture, save, or persist insights from the conversation to their knowledge base. This is manual-only — never auto-trigger.
What Counts as an Insight
Capture durable engineering and data knowledge — things that help understand how systems are built, why decisions were made, and how things work. Focus on:
- Architecture and design: how repos connect, deployment flows, service dependencies, system boundaries
- Technical decisions and rationale: why something was built a certain way, trade-offs considered, constraints that drove choices
- Bugs with root cause analysis: errors encountered, why they happen, what the underlying cause is (not just "we fixed it")
- Pipeline and CI/CD structure: how builds work, what stages exist, how deployments flow between repos
- Data engineering patterns: how data flows, CDC setup, warehouse loading strategies, scheduling
- Functional requirements: what a system does, what its inputs/outputs are, who uses it and why
Skip — do NOT capture:
- Service URLs, endpoints, or dashboard links (they change and belong in config, not knowledge)
- Tool installation steps, CLI setup, local dev environment config
- Conversation-specific actions (e.g., "we relaunched build #42")
- Wrapper scripts, browser extensions, personal tooling setup
- Things already documented in the vault
- Ephemeral conversation flow, greetings, troubleshooting steps that only apply once
Workflow
Step 1 — Extract insights from the conversation
Review the full conversation and extract discrete insights. For each one, note:
- Topic: the primary subject (e.g., "CI Pipeline", "Payment Gateway", "Kubernetes", "Datadog")
- Content: the actual knowledge to persist
- Scope: is it general (org/team-wide) or project-specific (e.g., my-api)?
Step 2 — Discover existing notes
List all .md files in {{OBSIDIAN_VAULT}}/private/ recursively using Glob (**/*.md). The vault is organized in category folders:
private/
├── business/ ← Business domain, KPIs, commercial frameworks
├── tools/ ← Tech stack (databases, orchestrators, monitoring, etc.)
├── projects/ ← Repos and products owned by the team
├── infra/ ← CI/CD, ops, on-call, deploy
├── reference/ ← Onboarding, queries, meeting notes
├── _index.md ← MOC (Map of Content) — update when creating new notes
└── Tasks.md ← Managed by /tasks skill, do not touchFor each insight, decide:
- Match found → append to the existing note under the right section
- No match → propose creating a new note in the correct category folder (e.g.,
infra/CI Pipeline.md)
Category rules for new notes:
- Business domain knowledge →
business/ - A specific tool in the stack →
tools/ - A repo or product →
projects/ - CI/CD, deployment, ops, monitoring setup →
infra/ - Everything else →
reference/
Step 3 — Present the capture plan to the user
Before writing anything, show a structured summary. Example:
Insights extracted from this conversation:
1. infra/CI Pipeline.md (NEW)
- Monorepo builds 5 services in parallel, each with change detection
- Known bug: serialization error on large merges
- Deploy stage skips when any parallel stage fails
2. projects/Payment Gateway.md (APPEND)
- Service boundary: handles checkout, refunds, webhook processing
- Depends on events from order-service via message queue
Proceed? (confirm / edit / discard)Use AskUserQuestion to get confirmation. The user may edit, remove items, or add context.
Step 4 — Write to the vault
For each confirmed insight:
Appending to an existing note
- Read the full note file.
- Find the most relevant section (
##header). If the insight is project-specific, look for a## project-namesection. - If the section exists, append the content at the end of that section (before the next
##or end of file). - If no matching section exists, create a new
## Section Nameat the end of the note (before any trailing whitespace). - Write the updated file, preserving YAML frontmatter exactly.
Creating a new note
Create the file at {{OBSIDIAN_VAULT}}/private/<category>/<Topic Name>.md (choosing the right category folder) with this structure:
---
title: <Topic Name>
created: <current date in "dddd Do MMMM YYYY HH:mm" format, e.g., "Thursday 22nd May 2026 13:05">
aliases:
tags:
---
# <Topic Name>
## General
<insights that apply to the org/team broadly>
## <project-name>
<insights specific to a project, e.g., my-api>
### <subtopic>
<more granular info if needed>Only include sections that have content. Do not create empty sections.
After creating a new note, update {{OBSIDIAN_VAULT}}/private/_index.md to add a link under the corresponding category section.
Content formatting rules
- Add a date comment at the start of each captured block:
<!-- captured: YYYY-MM-DD --> - Use bullet points for discrete facts
- Use code blocks (
) for commands, SQL, config snippets, error messages - Use
[[wikilinks]]to link to other notes in the vault when referencing related topics (e.g.,[[Kubernetes]],[[PostgreSQL]]) - Write in the same language the user used in the conversation (Spanish or English)
- Be concise — these are reference notes, not narratives
Step 5 — Report results
After writing, confirm:
- Which notes were created or updated
- How many insights were captured
- One-line summary per note of what was added
Note Organization — Hierarchy Within Notes
Each note in private/ is a topic hub. Inside, organize by scope:
# Topic Name <- H1: the topic itself
## General <- Org/team-wide knowledge
- ...
## <project-name> <- Project-specific section
### <subtopic> <- Granular breakdown
- ...
### Known bugs <- Known issues for this project
- ...
## <another-project>
- ...This way a note like CI Pipeline.md can hold:
- General CI patterns for all repos under
## General - Specific pipeline details under
## my-api,## my-frontend, etc.
Anti-Patterns
- Never write without user confirmation first.
- Never modify YAML frontmatter of existing notes.
- Never delete or overwrite existing content — only append.
- Never capture ephemeral info (tool installation steps, conversation logistics).
- Never create duplicate notes — always check existing files first.
- Never add emoji to the captured content.
- Never invent information not discussed in the conversation.
Example
Conversation context: User debugged a CI build failure in a monorepo. The error was a NotSerializableException in one of the parallel build stages, caused by large merge changesets. The deploy stage was skipped because the CI system stops on first failure.
Capture output → New file {{OBSIDIAN_VAULT}}/private/infra/CI Pipeline.md:
---
title: CI Pipeline
created: Thursday 22nd May 2026 13:05
aliases:
tags:
---
# CI Pipeline
## General
<!-- captured: 2026-05-22 -->
- When a parallel stage fails, the CI marks the build as Failed and **does not execute subsequent stages** (like Deploy), even if other parallel stages succeeded
- Rerun from the UI relaunches the entire build, not just the failed stage
## my-api
<!-- captured: 2026-05-22 -->
### Pipeline stages
- Parallel build of 5 services, each with its own `has*RelevantChanges()` function that uses `git diff` to decide whether to build
- Docker images are tagged as `<service-name>-<short-commit>` and pushed to the container registry
- Deploy stage writes the image tag to the [[Helm Charts]] repo for the CD system to pick up
### Known bugs
- `NotSerializableException` on the changeset object — happens when a merge brings many changesets (14+). It is a bug in the CI plugin's state serialization, not in the pipeline definition. Intermittent: rerunning usually works. Permanent fix: update the CI pluginsDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

