Remember - Store Decisions and Patterns
Filesystem vs MCP memory (Opus 5 guidance, CC 2.1.111+): Opus 5 reads filesystem memory reliably across multi-session work. Use that to your advantage:
- Short-lived handoff state (current phase, task in-progress, pending approvals) →
.claude/chain/*.json files. Small, structured, session-scoped.
- Durable auto-memory (user facts, feedback, project conventions) →
~/.claude/projects/<slug>/memory/*.md files with a one-line index in MEMORY.md. Read on every session start.
- Cross-session knowledge graph (typed entities + relations for query traversal) → MCP memory server (this skill's default path). Best when future sessions will search for patterns.
The three are complementary, not alternatives. Prefer fs for anything you'd want to grep; prefer MCP for anything you'd want to traverse.
Store important decisions, patterns, or context in the knowledge graph for future sessions. Supports tracking success/failure outcomes for building a Best Practice Library.
Argument Resolution
TEXT = "$ARGUMENTS" # Full argument string, e.g., "We use cursor pagination"
FLAG = "$ARGUMENTS[0]" # First token — check for --success, --failed, --category, --agent
# Parse flags from $ARGUMENTS[0], $ARGUMENTS[1] etc. (CC 2.1.59 indexed access)
# Remaining tokens after flags = the text to remember
Architecture
The remember skill uses knowledge graph as storage:
- Knowledge Graph: Entity and relationship storage via
mcp__memory__create_entities and mcp__memory__create_relations - FREE, zero-config, always works
Benefits:
- Zero configuration required - works out of the box
- Explicit relationship queries (e.g., "what does X use?")
- Cross-referencing between entities
- No cloud dependency
Automatic Entity Extraction:
- Extracts capitalized terms as potential entities (PostgreSQL, React, pgvector)
- Detects agent names (database-engineer, backend-system-architect)
- Identifies pattern names (cursor-pagination, connection-pooling)
- Recognizes "X uses Y", "X recommends Y", "X requires Y" relationship patterns
Usage
Store Decisions (Default)
/ork:remember <text>
/ork:remember --category <category> <text>
/ork:remember --success <text> # Mark as successful pattern
/ork:remember --failed <text> # Mark as anti-pattern
/ork:remember --success --category <category> <text>
# Agent-scoped memory
/ork:remember --agent <agent-id> <text> # Store in agent-specific scope
/ork:remember --global <text> # Store as cross-project best practice
Flags
| Flag |
Behavior |
| (default) |
Write to graph |
--success |
Mark as successful pattern |
--failed |
Mark as anti-pattern |
--category <cat> |
Set category |
--agent <agent-id> |
Scope memory to a specific agent |
--global |
Store as cross-project best practice |
Categories
decision - Why we chose X over Y (default)
architecture - System design and patterns
pattern - Code conventions and standards
blocker - Known issues and workarounds
constraint - Limitations and requirements
preference - User/team preferences
pagination - Pagination strategies
database - Database patterns
authentication - Auth approaches
api - API design patterns
frontend - Frontend patterns
performance - Performance optimizations
Outcome Flags
--success - Pattern that worked well (positive outcome)
--failed - Pattern that caused problems (anti-pattern)
If neither flag is provided, the memory is stored as neutral (informational).
Workflow
1. Parse Input
Check for --success flag → outcome: success
Check for --failed flag → outcome: failed
Check for --category <category> flag
Check for --agent <agent-id> flag → agent_id: "ork:{agent-id}"
Check for --global flag → use global user_id
Extract the text to remember
If no category specified, auto-detect from content
2. Auto-Detect Category
| Keywords |
Category |
| chose, decided, selected |
decision |
| architecture, design, system |
architecture |
| pattern, convention, style |
pattern |
| blocked, issue, bug, workaround |
blocker |
| must, cannot, required, constraint |
constraint |
| pagination, cursor, offset, page |
pagination |
| database, sql, postgres, query |
database |
| auth, jwt, oauth, token, session |
authentication |
| api, endpoint, rest, graphql |
api |
| react, component, frontend, ui |
frontend |
| performance, slow, fast, cache |
performance |
3. Extract Lesson (for anti-patterns)
If outcome is "failed", look for:
- "should have", "instead use", "better to"
- If not found, prompt user: "What should be done instead?"
4-6. Extract Entities and Create Graph
Extract entities (Technology, Agent, Pattern, Project, AntiPattern) from the text, detect relationship patterns ("X uses Y", "chose X over Y", etc.), then create entities and relations in the knowledge graph.
7. Confirm Type + Scope (AskUserQuestion — M118 #1466)
Auto-classification is best-effort. Before writing, ask the user to confirm both the memory type and the persistence scope. Pre-select the auto-detected type as the default option when the classifier is confident (≥0.9):
# Skip when the invocation already specifies type and scope:
# /ork:remember --type=preference --global → skip, use those values
# /ork:remember --session → skip, no persistence
#
# Otherwise, ask both:
AskUserQuestion(questions=[
{"question": "What type of memory?",
"header": "Type",
"options": [
{"label": "Preference", "description": "How I like to work (style, format, tooling)"},
{"label": "Project fact", "description": "State of THIS codebase (decisions, constraints)"},
{"label": "Reference", "description": "External system pointer (URL, doc, dashboard)"},
{"label": "Feedback", "description": "Correction to future behavior — applied as a rule"}
]},
{"question": "Apply to?",
"header": "Scope",
"options": [
{"label": "This project (default)", "description": "Scoped to .claude/projects/<this-project>/memory/"},
{"label": "All projects (global)", "description": "User-level memory at ~/.claude/memory/"},
{"label": "This session only", "description": "Print to context but don't persist"}
]}
])
Default selection rules:
- If auto-detected category maps to one of the 4 type options with confidence ≥0.9, that option is pre-selected (the user can still override).
- "This project" is always the scope default.
- "This session only" returns immediately without writing — useful when the user wants to surface a fact for the conversation but not commit it.
Global memory writes route to ~/.claude/memory/<filename>.md instead of the project-local memory directory. The MEMORY.md index is updated in whichever scope was selected (project- or user-level).
Load entity extraction rules, type assignment, relationship patterns, and graph creation examples: Read("references/graph-operations.md")
7. Confirm Storage
Display confirmation using the appropriate template (success, anti-pattern, or neutral) showing created entities, relations, and graph stats.
Load output templates and examples: Read("references/confirmation-templates.md")
File-Based Memory Updates
When updating .claude/memory/MEMORY.md or project memory files:
- PREFER Edit over Write to preserve existing content and avoid overwriting
- Use stable anchor lines:
## Recent Decisions, ## Patterns, ## Preferences
- See the
memory skill's "Permission-Free File Operations" section for the full Edit pattern
- This applies to the calling agent's file operations, not to the knowledge graph operations above
References
Load on demand with Read("references/<file>"):
| File |
Content |
category-detection.md |
Auto-detection rules for categorizing memories (priority order) |
graph-operations.md |
Entity extraction, type assignment, relationship patterns, graph creation |
confirmation-templates.md |
Output templates (success, anti-pattern, neutral) and usage examples |
Related Skills
ork:memory - Search, load, sync, visualize (read-side operations)
Error Handling
- Knowledge graph unavailable → show configuration instructions
- Empty text → ask user for content; text >2000 chars → truncate with notice
- Both --success and --failed → ask user to clarify
- Entity extraction fails → create generic Decision entity; relation fails → create entities first, retry
1---2name: remember3description: Stores decisions, patterns, and outcomes in the MCP memory knowledge graph as entities with typed observations and relations. Supports recording architectural decisions, anti-patterns, tool preferences, workflow outcomes, and project conventions that persist across sessions. Use when saving patterns, remembering outcomes, recording decisions, or building institutional knowledge.4license: MIT5---6
7# Remember - Store Decisions and Patterns
8
9> **Filesystem vs MCP memory (Opus 5 guidance, CC 2.1.111+):** Opus 5 reads filesystem memory reliably across multi-session work. Use that to your advantage:
10> - **Short-lived handoff state** (current phase, task in-progress, pending approvals) → `.claude/chain/*.json` files. Small, structured, session-scoped.
11> - **Durable auto-memory** (user facts, feedback, project conventions) → `~/.claude/projects/<slug>/memory/*.md` files with a one-line index in `MEMORY.md`. Read on every session start.
12> - **Cross-session knowledge graph** (typed entities + relations for query traversal) → MCP memory server (this skill's default path). Best when future sessions will *search* for patterns.
13>
14> The three are complementary, not alternatives. Prefer fs for anything you'd want to grep; prefer MCP for anything you'd want to traverse.
15
16Store important decisions, patterns, or context in the knowledge graph for future sessions. Supports tracking success/failure outcomes for building a Best Practice Library.
17
18## Argument Resolution
19
20```python
21TEXT = "$ARGUMENTS" # Full argument string, e.g., "We use cursor pagination"
22FLAG = "$ARGUMENTS[0]" # First token — check for --success, --failed, --category, --agent
23# Parse flags from $ARGUMENTS[0], $ARGUMENTS[1] etc. (CC 2.1.59 indexed access)
24# Remaining tokens after flags = the text to remember
25```
26
27## Architecture
28
29The remember skill uses **knowledge graph** as storage:
30
311. **Knowledge Graph**: Entity and relationship storage via `mcp__memory__create_entities` and `mcp__memory__create_relations` - FREE, zero-config, always works
32
33**Benefits:**
34- Zero configuration required - works out of the box
35- Explicit relationship queries (e.g., "what does X use?")
36- Cross-referencing between entities
37- No cloud dependency
38
39**Automatic Entity Extraction:**
40- Extracts capitalized terms as potential entities (PostgreSQL, React, pgvector)
41- Detects agent names (database-engineer, backend-system-architect)
42- Identifies pattern names (cursor-pagination, connection-pooling)
43- Recognizes "X uses Y", "X recommends Y", "X requires Y" relationship patterns
44
45## Usage
46
47### Store Decisions (Default)
48```
49/ork:remember <text>
50/ork:remember --category <category> <text>
51/ork:remember --success <text> # Mark as successful pattern
52/ork:remember --failed <text> # Mark as anti-pattern
53/ork:remember --success --category <category> <text>
54
55# Agent-scoped memory
56/ork:remember --agent <agent-id> <text> # Store in agent-specific scope
57/ork:remember --global <text> # Store as cross-project best practice
58```
59
60## Flags
61
62| Flag | Behavior |
63|------|----------|
64| (default) | Write to graph |
65| `--success` | Mark as successful pattern |
66| `--failed` | Mark as anti-pattern |
67| `--category <cat>` | Set category |
68| `--agent <agent-id>` | Scope memory to a specific agent |
69| `--global` | Store as cross-project best practice |
70
71## Categories
72
73- `decision` - Why we chose X over Y (default)
74- `architecture` - System design and patterns
75- `pattern` - Code conventions and standards
76- `blocker` - Known issues and workarounds
77- `constraint` - Limitations and requirements
78- `preference` - User/team preferences
79- `pagination` - Pagination strategies
80- `database` - Database patterns
81- `authentication` - Auth approaches
82- `api` - API design patterns
83- `frontend` - Frontend patterns
84- `performance` - Performance optimizations
85
86## Outcome Flags
87
88- `--success` - Pattern that worked well (positive outcome)
89- `--failed` - Pattern that caused problems (anti-pattern)
90
91If neither flag is provided, the memory is stored as neutral (informational).
92
93## Workflow
94
95### 1. Parse Input
96
97```
98Check for --success flag → outcome: success
99Check for --failed flag → outcome: failed
100Check for --category <category> flag
101Check for --agent <agent-id> flag → agent_id: "ork:{agent-id}"
102Check for --global flag → use global user_id
103Extract the text to remember
104If no category specified, auto-detect from content
105```
106
107### 2. Auto-Detect Category
108
109| Keywords | Category |
110|----------|----------|
111| chose, decided, selected | decision |
112| architecture, design, system | architecture |
113| pattern, convention, style | pattern |
114| blocked, issue, bug, workaround | blocker |
115| must, cannot, required, constraint | constraint |
116| pagination, cursor, offset, page | pagination |
117| database, sql, postgres, query | database |
118| auth, jwt, oauth, token, session | authentication |
119| api, endpoint, rest, graphql | api |
120| react, component, frontend, ui | frontend |
121| performance, slow, fast, cache | performance |
122
123### 3. Extract Lesson (for anti-patterns)
124
125If outcome is "failed", look for:
126- "should have", "instead use", "better to"
127- If not found, prompt user: "What should be done instead?"
128
129### 4-6. Extract Entities and Create Graph
130
131Extract entities (Technology, Agent, Pattern, Project, AntiPattern) from the text, detect relationship patterns ("X uses Y", "chose X over Y", etc.), then create entities and relations in the knowledge graph.
132
133### 7. Confirm Type + Scope (AskUserQuestion — M118 #1466)
134
135Auto-classification is best-effort. Before writing, ask the user to confirm both the memory type and the persistence scope. Pre-select the auto-detected type as the default option when the classifier is confident (≥0.9):
136
137```python
138# Skip when the invocation already specifies type and scope:
139# /ork:remember --type=preference --global → skip, use those values
140# /ork:remember --session → skip, no persistence
141#
142# Otherwise, ask both:
143AskUserQuestion(questions=[
144 {"question": "What type of memory?",
145 "header": "Type",
146 "options": [
147 {"label": "Preference", "description": "How I like to work (style, format, tooling)"},
148 {"label": "Project fact", "description": "State of THIS codebase (decisions, constraints)"},
149 {"label": "Reference", "description": "External system pointer (URL, doc, dashboard)"},
150 {"label": "Feedback", "description": "Correction to future behavior — applied as a rule"}
151 ]},
152 {"question": "Apply to?",
153 "header": "Scope",
154 "options": [
155 {"label": "This project (default)", "description": "Scoped to .claude/projects/<this-project>/memory/"},
156 {"label": "All projects (global)", "description": "User-level memory at ~/.claude/memory/"},
157 {"label": "This session only", "description": "Print to context but don't persist"}
158 ]}
159])
160```
161
162**Default selection rules:**
163- If auto-detected category maps to one of the 4 type options with confidence ≥0.9, that option is pre-selected (the user can still override).
164- "This project" is always the scope default.
165- "This session only" returns immediately without writing — useful when the user wants to surface a fact for the conversation but not commit it.
166
167**Global memory writes** route to `~/.claude/memory/<filename>.md` instead of the project-local memory directory. The MEMORY.md index is updated in whichever scope was selected (project- or user-level).
168
169Load entity extraction rules, type assignment, relationship patterns, and graph creation examples: `Read("references/graph-operations.md")`
170
171### 7. Confirm Storage
172
173Display confirmation using the appropriate template (success, anti-pattern, or neutral) showing created entities, relations, and graph stats.
174
175Load output templates and examples: `Read("references/confirmation-templates.md")`
176
177## File-Based Memory Updates
178
179When updating `.claude/memory/MEMORY.md` or project memory files:
180- **PREFER Edit over Write** to preserve existing content and avoid overwriting
181- Use stable anchor lines: `## Recent Decisions`, `## Patterns`, `## Preferences`
182- See the `memory` skill's "Permission-Free File Operations" section for the full Edit pattern
183- This applies to the calling agent's file operations, not to the knowledge graph operations above
184
185---
186
187## References
188
189Load on demand with `Read("references/<file>")`:
190
191| File | Content |
192|------|---------|
193| `category-detection.md` | Auto-detection rules for categorizing memories (priority order) |
194| `graph-operations.md` | Entity extraction, type assignment, relationship patterns, graph creation |
195| `confirmation-templates.md` | Output templates (success, anti-pattern, neutral) and usage examples |
196
197---
198
199## Related Skills
200- `ork:memory` - Search, load, sync, visualize (read-side operations)
201
202## Error Handling
203
204- Knowledge graph unavailable → show configuration instructions
205- Empty text → ask user for content; text >2000 chars → truncate with notice
206- Both --success and --failed → ask user to clarify
207- Entity extraction fails → create generic Decision entity; relation fails → create entities first, retry