**Status:** π Agent Guideline | **Module:** signal | **Part of:** Agent Brain Conflict detection. The agent SHOULD call `conflicts` before storing new facts β this is a manual step, not automatic.
14 stars
0 votes
0 copies
2 views
Added September 7, 2026
developmenttypescriptpythongobash
Security analysis
A100/100
Scanned September 7, 2026
$npx -y skills add modbender/skill-library-mcp --skill signal --agent claude-code
Installs into .claude/skills of the current project.
Are you the author of Signal?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/modbender-signal)
# Signal Memory β‘
**Status:** π Agent Guideline | **Module:** signal | **Part of:** Agent Brain
Conflict detection. The agent SHOULD call `conflicts` before storing new facts β this is a manual step, not automatic.
## When to Run Signal
Signal is NOT automatic. The agent must explicitly call it:
1. **Before storing a new fact**: Run `./scripts/memory.sh conflicts "<content>"` before `add`
2. **On-demand**: User asks "check for conflicts" or "anything inconsistent?"
```bash
# Before adding any new entry:
./scripts/memory.sh conflicts "User prefers Python for data work"
# If NO_CONFLICTS β proceed with add
# If POTENTIAL_CONFLICTS β ask user or supersede
```
## How Conflict Detection Works
The engine filters out common stopwords (I, the, is, etc.) and compares meaningful words between the new content and existing entries. A potential conflict requires:
- At least 2 meaningful words overlapping
- The overlap covering at least 30% of the shorter text's meaningful words
This prevents false positives like "I like Python" vs "Python is a snake" (different context, only 1 meaningful word overlap after filtering "I", "is", "a").
## Conflict Types
### Direct Contradiction
```
Existing: "User prefers TypeScript"
New: "User prefers Python"
β Ask: "Previously you said you prefer TypeScript. Has that changed?"
```
### Temporal Update
```
Existing: "Alex works at CompanyA"
New: "Alex works at CompanyB"
β Not a conflict β supersede the old entry
β Run: ./scripts/memory.sh supersede <old_id> <new_id>
```
### Context-Dependent
```
Existing: "Use short responses"
New: "Give me detailed analysis"
β Not a conflict β different contexts
β Store both with context:
./scripts/memory.sh add preference "Short responses" user "style" "" "casual chat"
./scripts/memory.sh add preference "Detailed analysis" user "style" "" "research tasks"
```
## Detection Flow
```
New content arrives
β
βΌ
conflicts <content>
β
βββ NO_CONFLICTS β proceed with store
β
βββ POTENTIAL_CONFLICTS (with overlap %)
β
βββ Same topic, different claim? β Ask user
βββ Same topic, newer info? β Supersede
βββ Different context? β Store both with context field
```
## Response Templates
### Contradiction Found
```
"I have something that might conflict with this:
- Previously: [old claim]
- Now: [new claim]
Should I update, or are both true in different contexts?"
```
### User Corrects You
```
"Got it, tracking that correction."
β ./scripts/memory.sh correct <old_id> "<new_content>" "<reason>"
```
## What Signal Does NOT Do
- Run automatically before stores (agent must call it manually)
- Monitor "tone shifts" (that's Vibe guidelines)
- Track confidence (that's Gauge guidelines)
- Run continuously in the background
- Detect "implicit" conflicts from silence or repeated questions
## Integration
- **Archive**: Agent should call `conflicts` before `add` (not automatic)
- **Gauge**: Conflicts may warrant downgrading confidence to UNCERTAIN