Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add synaptiai/agent-capability-standard --skill "recall"
Install specific skill from multi-skill repository
# Description
Retrieve prior decisions, rationale, and learned patterns from memory to apply consistently. Use when needing context from previous interactions, looking up past decisions, or ensuring consistency with prior reasoning.
# SKILL.md
name: recall
description: Retrieve prior decisions, rationale, and learned patterns from memory to apply consistently. Use when needing context from previous interactions, looking up past decisions, or ensuring consistency with prior reasoning.
argument-hint: "[query] [memory_scope session|project|global] [time_range]"
disable-model-invocation: false
user-invocable: true
allowed-tools: Read, Grep
context: fork
agent: explore
Intent
Execute recall to retrieve relevant prior decisions, rationale, and patterns from memory to maintain consistency and learn from past interactions.
Success criteria:
- Relevant memories are retrieved based on query
- Prior decisions and their rationale are surfaced
- Consistency with past reasoning is maintained
- Retrieved information is grounded with timestamps and context
Compatible schemas:
- docs/schemas/memory_schema.yaml
- CLAUDE.md (project memory)
Inputs
| Parameter | Required | Type | Description |
|---|---|---|---|
query |
Yes | string | What to recall: topic, decision type, or pattern name |
memory_scope |
No | enum | Where to search: session (current), project (CLAUDE.md), global (all). Default: project |
time_range |
No | object | Filter by time: { after: "2024-01-01", before: "2024-01-31" } |
include_rationale |
No | boolean | Whether to include decision rationale. Default: true |
similarity_threshold |
No | number | Minimum relevance score (0.0-1.0). Default: 0.5 |
Procedure
1) Parse query intent: Understand what is being recalled
- Identify if query is about a decision, pattern, fact, or context
- Extract key terms for memory search
- Determine if exact match or semantic similarity needed
2) Scope memory search: Identify which memory stores to query
- session: Current conversation context
- project: CLAUDE.md, knowledge files, local docs
- global: All accessible memory stores
3) Search memory stores: Query relevant sources
- CLAUDE.md for project-level decisions and patterns
- Session context for recent interactions
- Knowledge files for domain-specific learnings
- Use Grep for exact term matches, Read for context
4) Rank by relevance: Score and filter results
- Relevance to query terms
- Recency (more recent = higher weight unless historical needed)
- Authority (explicit decisions > implicit patterns)
- Filter below similarity_threshold
5) Extract rationale: For each recalled item, capture reasoning
- Original decision context
- Factors that influenced the decision
- Constraints or assumptions at the time
6) Check consistency: Verify recalled items are internally consistent
- Flag contradictions between recalled items
- Note if context has changed since original decision
7) Format output: Structure results according to output contract
Output Contract
Return a structured object:
recalled:
- id: string # Unique identifier for this memory
type: decision | pattern | fact | context
content: string # The recalled information
rationale: string | null # Why this decision was made
source: string # Where this was found (CLAUDE.md:42, session, etc.)
timestamp: string | null # When originally recorded
relevance_score: number # 0.0-1.0 match to query
context:
project: string | null
conversation_id: string | null
original_query: string | null
query_interpretation: string # How the query was understood
search_scope:
stores_searched: array[string]
time_range_applied: object | null
total_matches: integer # Total before filtering
returned_matches: integer # After relevance filtering
consistency_check:
consistent: boolean
contradictions: array[object] | null
confidence: number # 0.0-1.0 based on match quality
evidence_anchors: array[string] # Sources for recalled items
assumptions: array[string] # Assumptions about memory validity
Field Definitions
| Field | Type | Description |
|---|---|---|
recalled |
array[object] | List of retrieved memories |
recalled[].type |
enum | Kind of memory: decision, pattern, fact, or context |
recalled[].rationale |
string | Explanation for why decision was made |
recalled[].relevance_score |
number | How well this matches the query |
consistency_check |
object | Whether recalled items contradict each other |
confidence |
number | Overall confidence in recall quality |
Examples
Example 1: Recalling a Project Decision
Input:
query: "error handling approach"
memory_scope: project
include_rationale: true
Output:
recalled:
- id: "decision_err_001"
type: decision
content: "Use Result<T, Error> pattern for all fallible operations; avoid exceptions"
rationale: "Explicit error handling improves debuggability and makes failure paths visible in types"
source: "CLAUDE.md:127"
timestamp: "2024-01-10T09:15:00Z"
relevance_score: 0.95
context:
project: "api-service"
conversation_id: "conv_abc123"
original_query: "How should we handle errors in this codebase?"
- id: "pattern_err_001"
type: pattern
content: "Wrap external API errors with domain-specific error types before propagating"
rationale: "Prevents leaking implementation details; enables consistent error messages"
source: "CLAUDE.md:134"
timestamp: "2024-01-10T09:20:00Z"
relevance_score: 0.88
context:
project: "api-service"
conversation_id: "conv_abc123"
original_query: null
query_interpretation: "Looking for decisions and patterns related to error handling in the codebase"
search_scope:
stores_searched: ["CLAUDE.md", "docs/architecture.md"]
time_range_applied: null
total_matches: 5
returned_matches: 2
consistency_check:
consistent: true
contradictions: null
confidence: 0.92
evidence_anchors:
- "CLAUDE.md:127"
- "CLAUDE.md:134"
assumptions:
- "CLAUDE.md reflects current project decisions"
- "No conflicting decisions recorded elsewhere"
Evidence pattern: Each recalled item traced to specific file:line; rationale extracted from surrounding context.
Example 2: Recalling Session Context
Input:
query: "user's preferred output format"
memory_scope: session
time_range:
after: "2024-01-16T00:00:00Z"
Output:
recalled:
- id: "ctx_fmt_001"
type: context
content: "User prefers YAML output over JSON for configuration files"
rationale: "User stated 'I find YAML more readable' in earlier message"
source: "session:message_42"
timestamp: "2024-01-16T10:30:00Z"
relevance_score: 0.97
context:
project: null
conversation_id: "current_session"
original_query: "Can you output this as YAML instead?"
query_interpretation: "Looking for user preferences about output formatting from current session"
search_scope:
stores_searched: ["session"]
time_range_applied:
after: "2024-01-16T00:00:00Z"
before: null
total_matches: 1
returned_matches: 1
consistency_check:
consistent: true
contradictions: null
confidence: 0.97
evidence_anchors:
- "session:message_42"
assumptions:
- "User preference still valid within session"
- "No subsequent preference change"
Example 3: Detecting Contradictory Memories
Input:
query: "database choice"
memory_scope: project
include_rationale: true
Output:
recalled:
- id: "decision_db_001"
type: decision
content: "Use PostgreSQL for all persistent storage"
rationale: "Strong ACID guarantees, mature ecosystem"
source: "CLAUDE.md:45"
timestamp: "2024-01-05T14:00:00Z"
relevance_score: 0.94
context:
project: "backend-service"
conversation_id: "conv_xyz789"
original_query: "Which database should we use?"
- id: "decision_db_002"
type: decision
content: "Use SQLite for local development and testing"
rationale: "Faster setup, no external dependencies"
source: "docs/dev-setup.md:23"
timestamp: "2024-01-12T11:30:00Z"
relevance_score: 0.85
context:
project: "backend-service"
conversation_id: "conv_def456"
original_query: "How to speed up local dev?"
query_interpretation: "Looking for decisions about database selection"
search_scope:
stores_searched: ["CLAUDE.md", "docs/"]
time_range_applied: null
total_matches: 2
returned_matches: 2
consistency_check:
consistent: false
contradictions:
- items: ["decision_db_001", "decision_db_002"]
attribute: "database"
resolution_hint: "Different contexts: production vs development"
confidence: 0.75
evidence_anchors:
- "CLAUDE.md:45"
- "docs/dev-setup.md:23"
assumptions:
- "Both decisions are currently valid"
- "Context difference (prod vs dev) resolves contradiction"
next_actions:
- "Clarify if query refers to production or development"
- "Document environment-specific database strategy"
Verification
- [ ] Query intent correctly interpreted
- [ ] All relevant memory stores searched within scope
- [ ] relevance_score reflects actual match quality
- [ ] Contradictions detected and flagged
- [ ] evidence_anchors provide traceable source references
Verification tools: Read (to validate memory file contents), Grep (to search across memory stores)
Safety Constraints
mutation: falserequires_checkpoint: falserequires_approval: falserisk: low
Capability-specific rules:
- Do not recall or expose credentials, secrets, or PII from memory
- Respect memory scope boundaries; do not access global when session requested
- Flag stale memories (>30 days) with lower confidence
- Do not fabricate memories; return empty if nothing found
Composition Patterns
Commonly follows:
- receive - After receiving a request, recall relevant context
- search - Search results may trigger memory lookup for similar past queries
Commonly precedes:
- decide - Recalled decisions inform new decision-making
- plan - Past patterns guide new plan creation
- explain - Recalled rationale used to explain current approach
- persist - New decisions should be consistent with recalled ones
Anti-patterns:
- Never override recalled decisions without explicit user request
- Never recall without checking for contradictions
- Avoid recalling from stale sources without flagging age
Workflow references:
- Memory recall is implicit in many workflows as context loading
- Pairs with persist for the remember/recall cycle
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.