@esparkman/pensieve 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,183 @@
1
+ ---
2
+ description: Query the Pensieve knowledge base for stored information. Use to retrieve decisions, preferences, entities, discoveries, or session history.
3
+ ---
4
+
5
+ # /recall
6
+
7
+ Query the Pensieve knowledge base for specific information.
8
+
9
+ ## Usage
10
+
11
+ ```
12
+ /recall authentication -> Returns all auth-related memories
13
+ /recall entities -> Returns domain model understanding
14
+ /recall session:last -> Returns last session summary
15
+ /recall preferences:testing -> Returns testing preferences
16
+ /recall discoveries -> Returns all discoveries
17
+ /recall patterns -> Returns identified patterns
18
+ /recall questions -> Returns open questions
19
+ ```
20
+
21
+ ## Step 1: Parse Query
22
+
23
+ Identify what the user wants to recall:
24
+ - Topic keyword -> Search all memories for that topic
25
+ - `entities` -> List all entities
26
+ - `session:last` -> Get last session
27
+ - `preferences:[category]` -> Get preferences in category
28
+ - `discoveries` -> List all discoveries
29
+ - `patterns` -> List identified patterns
30
+ - `questions` -> List open questions
31
+
32
+ ## Step 2: Use Pensieve MCP Tool
33
+
34
+ Use the `pensieve_recall` MCP tool with the appropriate query.
35
+
36
+ ### Topic Search (Default)
37
+
38
+ ```json
39
+ {
40
+ "query": "[topic_keyword]"
41
+ }
42
+ ```
43
+
44
+ ### Entities
45
+
46
+ ```json
47
+ {
48
+ "query": "entities"
49
+ }
50
+ ```
51
+
52
+ ### Last Session
53
+
54
+ ```json
55
+ {
56
+ "query": "session:last"
57
+ }
58
+ ```
59
+
60
+ ### Preferences by Category
61
+
62
+ ```json
63
+ {
64
+ "query": "preferences:[category]"
65
+ }
66
+ ```
67
+
68
+ ### Discoveries
69
+
70
+ ```json
71
+ {
72
+ "query": "discoveries"
73
+ }
74
+ ```
75
+
76
+ ### Patterns
77
+
78
+ ```json
79
+ {
80
+ "query": "patterns"
81
+ }
82
+ ```
83
+
84
+ ### Open Questions
85
+
86
+ ```json
87
+ {
88
+ "query": "questions"
89
+ }
90
+ ```
91
+
92
+ ## Step 3: Format Results
93
+
94
+ Present the results to the user in a clear format:
95
+
96
+ ```
97
+ ## Recall: [query]
98
+
99
+ Found [N] results:
100
+
101
+ ### Decisions
102
+ - [Topic]: [Decision] (recorded [date])
103
+
104
+ ### Discoveries
105
+ - [Name]: [Description] at [location]
106
+
107
+ ### Preferences
108
+ - [category]/[key]: [value]
109
+
110
+ ### Entities
111
+ - [Name]: [Description] -> [Relationships]
112
+ ```
113
+
114
+ If no results found:
115
+ "No memories found for '[query]'. Try a different search term or use `/remember` to save new knowledge."
116
+
117
+ ## Examples
118
+
119
+ **Input:** `/recall authentication`
120
+
121
+ **Action:** Call `pensieve_recall` with:
122
+ ```json
123
+ {
124
+ "query": "authentication"
125
+ }
126
+ ```
127
+
128
+ **Output:**
129
+ ```
130
+ ## Recall: authentication
131
+
132
+ Found 3 results:
133
+
134
+ ### Decisions
135
+ - Authentication: We use Devise with magic links (recorded 2024-01-15)
136
+ - Session Management: Use Redis for session storage (recorded 2024-01-14)
137
+
138
+ ### Discoveries
139
+ - DeviseConfig: Custom Devise configuration at config/initializers/devise.rb
140
+ ```
141
+
142
+ **Input:** `/recall preferences:testing`
143
+
144
+ **Action:** Call `pensieve_recall` with:
145
+ ```json
146
+ {
147
+ "query": "preferences:testing"
148
+ }
149
+ ```
150
+
151
+ **Output:**
152
+ ```
153
+ ## Recall: preferences:testing
154
+
155
+ ### Preferences
156
+ - testing/approach: system tests for UI flows
157
+ - testing/coverage: 80% minimum
158
+ - testing/framework: RSpec with Capybara
159
+ ```
160
+
161
+ **Input:** `/recall session:last`
162
+
163
+ **Action:** Call `pensieve_recall` with:
164
+ ```json
165
+ {
166
+ "query": "session:last"
167
+ }
168
+ ```
169
+
170
+ **Output:**
171
+ ```
172
+ ## Recall: Last Session
173
+
174
+ **Date:** 2024-01-15 14:30
175
+ **Summary:** Implemented user authentication with Devise
176
+
177
+ ### Work in Progress
178
+ Email templates (partially styled)
179
+
180
+ ### Next Steps
181
+ 1. Complete email templates
182
+ 2. Add OAuth providers
183
+ ```
@@ -0,0 +1,145 @@
1
+ ---
2
+ description: Save discoveries, decisions, or preferences to Pensieve memory. Use to persist important learnings like architectural decisions, coding preferences, or discovered patterns.
3
+ ---
4
+
5
+ # /remember
6
+
7
+ Save discoveries, decisions, or preferences to Pensieve memory.
8
+
9
+ ## Usage
10
+
11
+ ```
12
+ /remember decision: We use Devise for authentication with magic links
13
+ /remember preference: Always use system tests over request specs for UI flows
14
+ /remember entity: Customer belongs_to Tenant, has_many Orders
15
+ /remember discovery: Found ButtonComponent at app/components/base/button_component.rb
16
+ ```
17
+
18
+ ## Step 1: Parse Input
19
+
20
+ Identify the type from the user's input:
21
+ - `decision:` -> Save as decision
22
+ - `preference:` -> Save as preference
23
+ - `entity:` -> Save as entity
24
+ - `discovery:` -> Save as discovery
25
+
26
+ Extract the content after the type indicator.
27
+
28
+ ## Step 2: Use Pensieve MCP Tool
29
+
30
+ Use the `pensieve_remember` MCP tool with the appropriate parameters.
31
+
32
+ ### For Decisions
33
+
34
+ ```json
35
+ {
36
+ "type": "decision",
37
+ "topic": "[extracted_topic]",
38
+ "content": "[decision_text]",
39
+ "rationale": "[rationale_if_provided]"
40
+ }
41
+ ```
42
+
43
+ ### For Preferences
44
+
45
+ ```json
46
+ {
47
+ "type": "preference",
48
+ "category": "[category]",
49
+ "key": "[key]",
50
+ "value": "[value]"
51
+ }
52
+ ```
53
+
54
+ ### For Entities
55
+
56
+ ```json
57
+ {
58
+ "type": "entity",
59
+ "name": "[entity_name]",
60
+ "description": "[description]",
61
+ "relationships": "[relationships]",
62
+ "location": "[file_location_if_known]"
63
+ }
64
+ ```
65
+
66
+ ### For Discoveries
67
+
68
+ ```json
69
+ {
70
+ "type": "discovery",
71
+ "category": "[component|pattern|token|other]",
72
+ "name": "[name]",
73
+ "location": "[file_path]",
74
+ "description": "[description]"
75
+ }
76
+ ```
77
+
78
+ ## Step 3: Confirm
79
+
80
+ Report what was saved to the user:
81
+
82
+ "Saved [type]: [summary]"
83
+
84
+ If the save failed, report the error and suggest a fix.
85
+
86
+ ## Examples
87
+
88
+ **Input:** `/remember decision: We use TypeScript for all new code because it catches errors at compile time`
89
+
90
+ **Action:** Call `pensieve_remember` with:
91
+ ```json
92
+ {
93
+ "type": "decision",
94
+ "topic": "Language Choice",
95
+ "content": "We use TypeScript for all new code",
96
+ "rationale": "Catches errors at compile time"
97
+ }
98
+ ```
99
+
100
+ **Output:**
101
+ ```
102
+ Saved decision:
103
+ Topic: Language Choice
104
+ Decision: We use TypeScript for all new code
105
+ Rationale: Catches errors at compile time
106
+ ```
107
+
108
+ **Input:** `/remember preference: testing/approach = system tests for UI flows`
109
+
110
+ **Action:** Call `pensieve_remember` with:
111
+ ```json
112
+ {
113
+ "type": "preference",
114
+ "category": "testing",
115
+ "key": "approach",
116
+ "value": "system tests for UI flows"
117
+ }
118
+ ```
119
+
120
+ **Output:**
121
+ ```
122
+ Saved preference:
123
+ Category: testing
124
+ Key: approach
125
+ Value: system tests for UI flows
126
+ ```
127
+
128
+ **Input:** `/remember entity: Order has_many LineItems, belongs_to Customer`
129
+
130
+ **Action:** Call `pensieve_remember` with:
131
+ ```json
132
+ {
133
+ "type": "entity",
134
+ "name": "Order",
135
+ "description": "Represents a customer order",
136
+ "relationships": "has_many LineItems, belongs_to Customer"
137
+ }
138
+ ```
139
+
140
+ **Output:**
141
+ ```
142
+ Saved entity:
143
+ Name: Order
144
+ Relationships: has_many LineItems, belongs_to Customer
145
+ ```
@@ -0,0 +1,162 @@
1
+ ---
2
+ description: Persist learnings and summarize the session before ending. Use this before closing a conversation to save decisions, discoveries, and next steps for continuity.
3
+ ---
4
+
5
+ # /session-end
6
+
7
+ Persist learnings and summarize the session before context is cleared.
8
+
9
+ ## Purpose
10
+
11
+ Save everything learned during this session so the next conversation can pick up seamlessly:
12
+ - Summarize accomplishments
13
+ - Note work in progress
14
+ - Record planned next steps
15
+ - Persist any unrecorded decisions or preferences
16
+
17
+ ## Step 1: Gather Session Information
18
+
19
+ Ask the user (or infer from conversation):
20
+ - What was accomplished this session?
21
+ - What is still in progress?
22
+ - What are the planned next steps?
23
+
24
+ If the user doesn't provide this, attempt to summarize based on the conversation.
25
+
26
+ ## Step 2: Identify Key Files
27
+
28
+ List the key files that were worked on during this session:
29
+
30
+ ```bash
31
+ # If git is available, check recent changes
32
+ git diff --name-only HEAD~1 2>/dev/null || echo "Unable to detect changed files"
33
+ ```
34
+
35
+ Or track files mentioned during the conversation.
36
+
37
+ ## Step 3: Save Any Pending Memories
38
+
39
+ Before ending the session, use `pensieve_remember` to save any decisions, discoveries, or preferences that were made but not yet recorded.
40
+
41
+ For each unrecorded decision:
42
+ ```json
43
+ {
44
+ "type": "decision",
45
+ "topic": "[topic]",
46
+ "content": "[decision]",
47
+ "rationale": "[rationale]"
48
+ }
49
+ ```
50
+
51
+ For each unrecorded discovery:
52
+ ```json
53
+ {
54
+ "type": "discovery",
55
+ "category": "[category]",
56
+ "name": "[name]",
57
+ "location": "[location]",
58
+ "description": "[description]"
59
+ }
60
+ ```
61
+
62
+ ## Step 4: End Session with Summary
63
+
64
+ Use the `pensieve_session_end` MCP tool to finalize the session:
65
+
66
+ ```json
67
+ {
68
+ "summary": "[what was accomplished]",
69
+ "work_in_progress": "[what's still ongoing]",
70
+ "next_steps": "[planned actions for next session]",
71
+ "key_files": ["file1.rb", "file2.ts"]
72
+ }
73
+ ```
74
+
75
+ ## Step 5: Confirm Session Saved
76
+
77
+ Present a summary to the user:
78
+
79
+ ```
80
+ ## Session Saved
81
+
82
+ ### Summary
83
+ [what was accomplished]
84
+
85
+ ### Work in Progress
86
+ [what's still ongoing]
87
+
88
+ ### Next Steps
89
+ [planned actions for next session]
90
+
91
+ ### Key Files
92
+ - [file1]
93
+ - [file2]
94
+
95
+ ### Decisions Recorded
96
+ - [decision1]
97
+ - [decision2]
98
+
99
+ ### Open Questions
100
+ - [question1]
101
+
102
+ ---
103
+
104
+ Your session has been saved. When you start a new conversation,
105
+ Pensieve will automatically load this context.
106
+ ```
107
+
108
+ ## Automatic Triggers
109
+
110
+ Consider running `/session-end` when:
111
+ - User says "goodbye", "done", "that's all", etc.
112
+ - User explicitly requests to save progress
113
+ - A significant milestone is completed
114
+
115
+ ## Example
116
+
117
+ **User:** "Okay, I think we're done for now. We finished the user authentication flow."
118
+
119
+ **Action:** Call `pensieve_session_end` with:
120
+ ```json
121
+ {
122
+ "summary": "Completed user authentication flow with Devise, including login, logout, password reset, and magic link support",
123
+ "work_in_progress": "Email templates (partially styled)",
124
+ "next_steps": "1. Complete email templates\n2. Add OAuth providers\n3. Add two-factor authentication",
125
+ "key_files": [
126
+ "app/models/user.rb",
127
+ "app/controllers/sessions_controller.rb",
128
+ "config/initializers/devise.rb"
129
+ ]
130
+ }
131
+ ```
132
+
133
+ **Output:**
134
+ ```
135
+ ## Session Saved
136
+
137
+ ### Summary
138
+ Completed user authentication flow with Devise, including:
139
+ - Login/logout functionality
140
+ - Password reset flow
141
+ - Magic link support
142
+
143
+ ### Work in Progress
144
+ Email templates (partially styled)
145
+
146
+ ### Next Steps
147
+ 1. Complete email templates
148
+ 2. Add OAuth providers
149
+ 3. Add two-factor authentication
150
+
151
+ ### Key Files
152
+ - app/models/user.rb
153
+ - app/controllers/sessions_controller.rb
154
+ - config/initializers/devise.rb
155
+
156
+ ### Decisions Recorded
157
+ - Use Devise with magic links for passwordless auth
158
+
159
+ ---
160
+
161
+ Your session has been saved. See you next time!
162
+ ```
@@ -0,0 +1,97 @@
1
+ ---
2
+ description: Load and display context from Pensieve at the start of a conversation. Use this at the beginning of every session to ensure continuity from previous work.
3
+ ---
4
+
5
+ # /session-start
6
+
7
+ Display and confirm the context loaded from Pensieve at the start of a conversation.
8
+
9
+ ## Purpose
10
+
11
+ Pensieve automatically loads context when the MCP server starts. This command:
12
+ - Displays what was loaded for transparency
13
+ - Starts session tracking for the current conversation
14
+ - Provides continuity from previous sessions
15
+
16
+ ## Step 1: Start Session Tracking
17
+
18
+ Use the `pensieve_session_start` MCP tool to begin tracking this session:
19
+
20
+ ```json
21
+ {}
22
+ ```
23
+
24
+ This creates a new session record that will be updated when `/session-end` is called.
25
+
26
+ ## Step 2: Get Full Context
27
+
28
+ Use the `pensieve_get_context` MCP tool to retrieve all loaded context:
29
+
30
+ ```json
31
+ {}
32
+ ```
33
+
34
+ This returns:
35
+ - Last session summary and next steps
36
+ - Key decisions
37
+ - User preferences
38
+ - Open questions
39
+ - Recent discoveries
40
+
41
+ ## Step 3: Present Context
42
+
43
+ Format and present the loaded context to the user:
44
+
45
+ ```
46
+ ## Session Started
47
+
48
+ ### Last Session
49
+ **Date:** [started_at]
50
+ **Summary:** [summary]
51
+
52
+ ### Work in Progress
53
+ [work_in_progress or "None"]
54
+
55
+ ### Planned Next Steps
56
+ [next_steps or "None"]
57
+
58
+ ### Key Decisions
59
+ - [topic]: [decision]
60
+ - [topic]: [decision]
61
+ ...
62
+
63
+ ### Your Preferences
64
+ - [category]/[key]: [value]
65
+ ...
66
+
67
+ ### Open Questions
68
+ - [question]
69
+ ...
70
+
71
+ ---
72
+
73
+ Ready to continue. What would you like to work on?
74
+ ```
75
+
76
+ ## Fresh Installation
77
+
78
+ If Pensieve returns no prior context, inform the user:
79
+
80
+ ```
81
+ ## Session Started (Fresh Installation)
82
+
83
+ No prior context found. This appears to be a fresh Pensieve installation.
84
+
85
+ Your memories will be stored as you work. Use:
86
+ - `/remember` to save decisions, preferences, and discoveries
87
+ - `/recall` to query stored knowledge
88
+ - `/session-end` before ending to save your progress
89
+
90
+ What would you like to work on?
91
+ ```
92
+
93
+ ## Notes
94
+
95
+ - Pensieve auto-loads context when the MCP server starts, so this command primarily displays what's already loaded
96
+ - Session tracking begins with this command and ends with `/session-end`
97
+ - Context persists in `~/.pensieve/memory.sqlite` (user-level) or project-level if configured
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esparkman/pensieve",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Pensieve - persistent memory for Claude Code. Remember decisions, preferences, and context across sessions.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -40,6 +40,7 @@
40
40
  "node": ">=18"
41
41
  },
42
42
  "files": [
43
- "dist"
43
+ "dist",
44
+ ".claude"
44
45
  ]
45
46
  }