- Skill ID
- codewithmukesh/dotnet-claude-kit/instinct-system
- Publisher
- codewithmukesh
- Repository
- dotnet-claude-kit
- Installs
- 0
- Files
- 1
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
codewithmukesh/dotnet-claude-kit/instinct-systemInstalls these files- SKILL.md
What this skill tells the agent
Instinct System
One learning system, three tiers. Every signal Claude receives during work — an observed pattern, a user correction, a surprising discovery — routes to exactly one store.
Core Principles
- Three tiers, one routing decision — Instincts are unconfirmed hypotheses (
.claude/instincts.md). Corrections are user-confirmed rules (MEMORY.md). Discoveries are insights that explain the world (.claude/learning-log.md). Rules prescribe behavior; insights describe it; instincts are rules-in-waiting. Never mix the tiers — a hypothesis in MEMORY.md pollutes permanent knowledge, and a confirmed rule left as an instinct gets forgotten.
- Instincts are hypotheses, not rules — An instinct starts as a guess from a single observation and has no authority until confirmed. "One handler uses
sealed" is an instinct at 0.3; "all 12 handlers usesealed" is a rule at 0.9. Confidence (0.3–0.9) drives behavior: note at 0.3, mention at 0.5, follow at 0.7, promote at 0.9.
- A user correction is a confirmed instinct at full confidence — When the user corrects you, skip the confirmation cycle entirely. Generalize the lesson, capture it immediately in MEMORY.md with the "why", and confirm what was captured. A correction costs the user 30 seconds today and saves hours across all future sessions — losing one is the most expensive mistake this system can make.
- Project-scoped, never global — What holds in one codebase may be wrong in another. Instincts live per-project; transfers between projects go through export/import with confidence decay, never at full confidence.
- Review at session start, prune periodically — Read MEMORY.md and load instincts at 0.7+ before writing any code; scan recent log entries for the working area. Knowledge captured but never reviewed is wasted effort. Audit all three stores when they bloat — stale instincts, duplicate rules, and unreviewed logs defeat the purpose.
Patterns
Tier Routing
| Signal | Destination | Lifespan |
|---|---|---|
| Pattern observed, not yet confirmed ("I think they always...") | .claude/instincts.md at 0.3 | Until promoted or discarded |
| User correction ("no, use X", "don't do that again", "remember this") | MEMORY.md immediately, generalized | Permanent until proven wrong |
| Instinct reaching 0.9 confidence | Promote to MEMORY.md, remove from instincts | Permanent |
| Non-obvious discovery (bug root cause, gotcha, workaround, perf finding) | .claude/learning-log.md | 3–6 months, then archive or promote |
| Same gotcha logged 3+ times | Promote to MEMORY.md as a preventive rule | Permanent |
| Session state (done/pending) | Handoff via wrap-up — not this system | Until next session |
Instinct Lifecycle (Observe-Hypothesize-Confirm)
1. OBSERVE — "This handler is internal sealed class. Convention?"
2. HYPOTHESIZE — Write to .claude/instincts.md at confidence 0.3:
- Use `sealed` on handler classes | confidence: 0.3 | seen: 1 | last: 2026-06-12
3. SEEK — Actively check 2-3 related files (find_symbol, get_public_api).
Passive observation is not enough.
4. ADJUST — Confirmed: raise per the adjustment track.
Contradicted: halve confidence, note the exception.
Mixed: hold steady, note the split.
5. PROMOTE — At 0.9, present evidence and offer promotion to MEMORY.md.Instinct Storage Format
.claude/instincts.md, grouped by category with structured metadata:
# Project Instincts
## Code Style [0.7]
- Use `sealed` on all handler classes | confidence: 0.8 | seen: 5 | last: 2026-06-12
- Prefix private fields with underscore | confidence: 0.5 | seen: 2 | last: 2026-06-10
## Architecture [0.7]
- Feature folders use singular names | confidence: 0.7 | seen: 4 | last: 2026-06-12Category header [0.7] = average confidence. Standard categories: Code Style, Architecture, Naming, Testing, Data Access, API Design, Configuration, Performance, Tooling.
Confidence Adjustment Rules
No ad-hoc scoring. Follow this track precisely:
CONFIRMATION: 1st observation → 0.3 | 2nd → 0.5 | 3rd → 0.7 | 4th → 0.8
5th+ with zero contradictions → 0.9 (promotion candidate)
CONTRADICTION: Any contradiction → halve current confidence (0.7 → 0.35)
Two in a row → 0.1 (effectively dead)
USER OVERRIDE: Explicit confirm → 0.8 | Explicit correct → 0.0 (remove,
capture in MEMORY.md instead) | "Sometimes" → cap at 0.5
STALENESS: No observations for 10+ sessions → flag for review
Contradicted, unreconfirmed for 5 sessions → removeActing on Instincts by Confidence
0.0–0.2 → IGNORE — insufficient evidence, do not mention
0.3–0.4 → NOTE — record internally, do not apply
0.5–0.6 → MENTION — "This project may use [pattern]. Follow it?"
0.7–0.8 → FOLLOW — apply by default, mention on first use
0.9 → PROMOTE — offer to add to MEMORY.md as a permanent ruleNever silently apply an instinct below 0.7.
Correction Capture Flow (Tier 2)
When the user corrects your output ("no, use X instead", "we don't do it that way", "always/never do X", "remember this"):
1. DETECT — Recognize the correction signal.
2. ACKNOWLEDGE — "Got it — HybridCache instead of IMemoryCache."
3. GENERALIZE — Specific: "Don't use IMemoryCache in the Orders endpoint"
General: "Always use HybridCache over IMemoryCache —
stampede protection + L1/L2 out of the box."
Ask: is this specific to this file? This layer? What's the
underlying principle? Store the broadest correct statement.
4. CHECK — Scan MEMORY.md for overlap. Update an existing rule rather
than adding a near-duplicate.
5. STORE — Write under the right category, one line, rationale after
the dash. If a matching instinct exists, remove it — it
just graduated.
6. CONFIRM — "Added to Memory > Data Access: HybridCache over IMemoryCache."MEMORY.md format — same categories as instincts, one actionable rule per line:
## Data Access
- Always use HybridCache over IMemoryCache — stampede protection + L1/L2
- Never use repository pattern over EF Core — use DbContext directlyDiscovery Logging (Tier 3)
Log organic findings to .claude/learning-log.md the moment they occur — a 2-line entry written immediately beats a paragraph reconstructed later. Entry format:
## 2026-06-12 | Gotcha | MassTransit Consumer Registration Order Matters
Multiple consumers for one message type run in registration order; if the
first throws, the rest are skipped. Caused missed audit events.
**Files:** `src/Shared/Extensions/MassTransitConfig.cs:15-30`
**Resolution:** Independent consumer endpoints or the retry filter.Log when (and only when) you hit one of these triggers:
Bug Root Cause — the cause was NOT where the error appeared
Architecture Decision — discovered WHY something is built a certain way
Gotcha — framework/library behaved surprisingly
Performance Discovery — unexpected perf behavior, with the measurement
Pattern Found — reusable codebase pattern worth remembering
External Service — third-party API behaves differently than documentedThose six trigger names are also the category vocabulary — use them verbatim in entries. Routine changes with nothing surprising do not get logged.
Session-Start Loading
1. Read MEMORY.md — apply rules proactively, don't wait to be reminded
2. Read .claude/instincts.md — load 0.7+ as defaults, note 0.5–0.6
3. Scan recent learning-log entries for the area you're working in
4. Flag stale instincts (10+ sessions without observation) for reviewModes
Three operations on the instinct store, invoked by name or trigger phrase.
More from codewithmukesh
Use this skill in a project
Open any RiverX project, search the Skills panel for codewithmukesh/dotnet-claude-kit/instinct-system, and install it in one click.
