282 lines
7.8 KiB
Markdown
282 lines
7.8 KiB
Markdown
# Signal Detection Patterns
|
|
|
|
Comprehensive reference for detecting correction signals and learning opportunities in conversations.
|
|
|
|
## Confidence Levels
|
|
|
|
### HIGH Confidence (Explicit Corrections)
|
|
|
|
These patterns indicate the user is explicitly stating a rule or correction. Always apply these learnings.
|
|
|
|
#### Negative Directives
|
|
|
|
| Pattern | Type | Example |
|
|
|---------|------|---------|
|
|
| `never` | correction | "Never use var in TypeScript" |
|
|
| `don't` / `do not` | correction | "Don't commit directly to main" |
|
|
| `stop doing` | correction | "Stop doing manual deployments" |
|
|
| `wrong` | correction | "That's wrong, use snake_case" |
|
|
| `not like that` | correction | "Not like that, indent with tabs" |
|
|
| `incorrect` | correction | "That's incorrect syntax" |
|
|
| `should not` / `shouldn't` | prohibition | "You shouldn't use eval()" |
|
|
| `must not` / `mustn't` | prohibition | "Must not expose secrets" |
|
|
|
|
**Regex Pattern:**
|
|
```regex
|
|
\b(never|don't|do not|stop doing|wrong|not like that|incorrect|should not|shouldn't|must not|mustn't)\b
|
|
```
|
|
|
|
#### Positive Directives
|
|
|
|
| Pattern | Type | Example |
|
|
|---------|------|---------|
|
|
| `always` | requirement | "Always validate inputs" |
|
|
| `must` | requirement | "You must use parameterized queries" |
|
|
| `required` | requirement | "It's required to have tests" |
|
|
| `the rule is` | explicit_rule | "The rule is no console.log in prod" |
|
|
| `correct way` | explicit_rule | "The correct way is to use hooks" |
|
|
|
|
**Regex Pattern:**
|
|
```regex
|
|
\b(always|must|required|the rule is|correct way)\b
|
|
```
|
|
|
|
#### Frustration Markers
|
|
|
|
These indicate repeated corrections - highest priority learnings.
|
|
|
|
| Pattern | Type | Example |
|
|
|---------|------|---------|
|
|
| `I already told you` | frustration | "I already told you about this" |
|
|
| `again?` | frustration | "Wrong again?" |
|
|
| `not again` | frustration | "Oh not again" |
|
|
| `how many times` | frustration | "How many times do I need to say..." |
|
|
|
|
**Regex Pattern:**
|
|
```regex
|
|
(I already told you|again\?|not again|how many times)
|
|
```
|
|
|
|
#### Explicit Rules
|
|
|
|
| Pattern | Type | Example |
|
|
|---------|------|---------|
|
|
| `the rule is` | explicit_rule | "The rule is we use ESLint" |
|
|
| `you should know` | explicit_rule | "You should know we use Prettier" |
|
|
| `remember that` | explicit_rule | "Remember that we're on Node 20" |
|
|
| `don't forget` | explicit_rule | "Don't forget the error handling" |
|
|
|
|
**Regex Pattern:**
|
|
```regex
|
|
(the rule is|you should know|remember that|don't forget)
|
|
```
|
|
|
|
### MEDIUM Confidence (Approved Approaches)
|
|
|
|
These patterns indicate the user approved a specific approach. Apply with reasonable confidence.
|
|
|
|
#### Approval Markers
|
|
|
|
| Pattern | Type | Example |
|
|
|---------|------|---------|
|
|
| `perfect` | approval | "Perfect, that's what I wanted" |
|
|
| `exactly` | approval | "Exactly right" |
|
|
| `that's right` | approval | "That's right, keep it" |
|
|
| `yes, like that` | approval | "Yes, like that" |
|
|
| `correct` | approval | "Correct implementation" |
|
|
|
|
**Regex Pattern:**
|
|
```regex
|
|
\b(perfect|exactly|that's right|yes, like that|correct)\b
|
|
```
|
|
|
|
#### Positive Feedback
|
|
|
|
| Pattern | Type | Example |
|
|
|---------|------|---------|
|
|
| `good` | positive_feedback | "Good approach" |
|
|
| `great job` | positive_feedback | "Great job on the refactor" |
|
|
| `well done` | positive_feedback | "Well done with the tests" |
|
|
| `nice` | positive_feedback | "Nice solution" |
|
|
| `excellent` | positive_feedback | "Excellent work" |
|
|
|
|
**Regex Pattern:**
|
|
```regex
|
|
\b(good|great job|well done|nice|excellent)\b
|
|
```
|
|
|
|
#### Continuation Markers
|
|
|
|
| Pattern | Type | Example |
|
|
|---------|------|---------|
|
|
| `keep doing` | continuation | "Keep doing it this way" |
|
|
| `continue with` | continuation | "Continue with this approach" |
|
|
| `stick with` | continuation | "Stick with React hooks" |
|
|
|
|
**Regex Pattern:**
|
|
```regex
|
|
\b(keep doing|continue with|stick with)\b
|
|
```
|
|
|
|
### LOW Confidence (Observations)
|
|
|
|
These patterns suggest preferences but require validation before encoding as rules.
|
|
|
|
#### Suggestions
|
|
|
|
| Pattern | Type | Example |
|
|
|---------|------|---------|
|
|
| `maybe` | suggestion | "Maybe try TypeScript" |
|
|
| `perhaps` | suggestion | "Perhaps use a different library" |
|
|
| `might want to` | suggestion | "You might want to add caching" |
|
|
| `consider` | suggestion | "Consider using memoization" |
|
|
|
|
**Regex Pattern:**
|
|
```regex
|
|
\b(maybe|perhaps|might want to|consider)\b
|
|
```
|
|
|
|
#### Observations
|
|
|
|
| Pattern | Type | Example |
|
|
|---------|------|---------|
|
|
| `seems like` | observation | "Seems like this works" |
|
|
| `appears to` | observation | "Appears to be faster" |
|
|
| `looks like` | observation | "Looks like a good pattern" |
|
|
|
|
**Regex Pattern:**
|
|
```regex
|
|
\b(seems like|appears to|looks like)\b
|
|
```
|
|
|
|
## Category Detection
|
|
|
|
### Code Style
|
|
|
|
Patterns indicating code style preferences:
|
|
|
|
```regex
|
|
\b(naming|convention|style|format|indent|case|camelCase|snake_case|PascalCase)\b
|
|
\b(variable|function|class|method|parameter)\s+name
|
|
\b(semicolon|quote|single quote|double quote|tabs|spaces)\b
|
|
```
|
|
|
|
Examples:
|
|
- "Use snake_case for Python variables"
|
|
- "We prefer single quotes for strings"
|
|
- "Indent with 2 spaces, not tabs"
|
|
|
|
### Architecture
|
|
|
|
Patterns indicating architectural decisions:
|
|
|
|
```regex
|
|
\b(pattern|architecture|design|structure|module|component|service)\b
|
|
\b(separation|coupling|cohesion|dependency|layer|abstraction)\b
|
|
\b(microservice|monolith|serverless|event-driven)\b
|
|
```
|
|
|
|
Examples:
|
|
- "Use dependency injection for services"
|
|
- "Keep components loosely coupled"
|
|
- "Follow the repository pattern"
|
|
|
|
### Process
|
|
|
|
Patterns indicating workflow preferences:
|
|
|
|
```regex
|
|
\b(workflow|process|step|procedure|protocol|practice)\b
|
|
\b(commit|branch|merge|review|deploy|test|ci|cd)\b
|
|
\b(pr|pull request|code review|approval)\b
|
|
```
|
|
|
|
Examples:
|
|
- "Always run tests before commit"
|
|
- "Use conventional commits"
|
|
- "Squash commits on merge"
|
|
|
|
### Domain
|
|
|
|
Patterns indicating business logic:
|
|
|
|
```regex
|
|
\b(business|domain|logic|rule|requirement|constraint)\b
|
|
\b(customer|user|client|account|order|payment|invoice)\b
|
|
\b(validate|verify|check|ensure|confirm)\b
|
|
```
|
|
|
|
Examples:
|
|
- "Orders must be validated before processing"
|
|
- "Users need email verification"
|
|
- "Payments require two-factor auth"
|
|
|
|
### Tools
|
|
|
|
Patterns indicating tool preferences:
|
|
|
|
```regex
|
|
\b(tool|cli|command|terminal|shell|editor|ide)\b
|
|
\b(git|npm|yarn|pnpm|docker|kubernetes)\b
|
|
\b(config|setting|environment|variable|env)\b
|
|
```
|
|
|
|
Examples:
|
|
- "Use pnpm instead of npm"
|
|
- "Configure ESLint with these rules"
|
|
- "Run Docker in production"
|
|
|
|
### New Skill
|
|
|
|
Patterns indicating skill-worthy discoveries:
|
|
|
|
```regex
|
|
\b(workaround|trick|hack|solution|fix|debug|resolve)\b
|
|
\b(error|bug|issue|problem)\s+(was|is|fixed|solved|resolved)\b
|
|
(took|spent)\s+\d+\s*(min|minute|hour|day)
|
|
\b(finally|after trying|turns out|the issue was)\b
|
|
```
|
|
|
|
Examples:
|
|
- "The workaround is to clear the cache first"
|
|
- "After 2 hours debugging, found the issue was..."
|
|
- "Turns out the error message was misleading"
|
|
|
|
## Edge Cases
|
|
|
|
### False Positives to Avoid
|
|
|
|
Some patterns may match but don't indicate learnings:
|
|
|
|
- Rhetorical questions: "Why would you never do X?" (not a directive)
|
|
- Hypotheticals: "If you never use Y, then..." (conditional)
|
|
- Quotes/references: "The docs say never..." (not user's directive)
|
|
- Negations: "It's not wrong to..." (opposite meaning)
|
|
|
|
### Context Sensitivity
|
|
|
|
Consider surrounding context:
|
|
|
|
- "That's not wrong" - NOT a correction
|
|
- "That's not right" - IS a correction
|
|
- "Never mind" - NOT a directive about future behavior
|
|
- "Always" in a loop - NOT a behavioral directive
|
|
|
|
## Combining Patterns
|
|
|
|
When multiple patterns match:
|
|
|
|
1. Use the highest confidence pattern
|
|
2. If equal confidence, use the most specific category
|
|
3. Prefer explicit rules over implied preferences
|
|
4. Prioritize frustration markers (indicate repeated issue)
|
|
|
|
## Implementation Notes
|
|
|
|
The `signal_detector.py` script implements these patterns. To update patterns:
|
|
|
|
1. Add pattern to appropriate `*_PATTERNS` list
|
|
2. Run `python signal_detector.py --test` to verify
|
|
3. Add test case for new pattern
|
|
4. Update this documentation
|