keep-skill 0.1.0__tar.gz → 0.2.0__tar.gz

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.
Files changed (36) hide show
  1. {keep_skill-0.1.0 → keep_skill-0.2.0}/.gitignore +1 -0
  2. {keep_skill-0.1.0 → keep_skill-0.2.0}/PKG-INFO +29 -15
  3. {keep_skill-0.1.0 → keep_skill-0.2.0}/README.md +28 -14
  4. {keep_skill-0.1.0 → keep_skill-0.2.0}/SKILL.md +69 -40
  5. {keep_skill-0.1.0/patterns → keep_skill-0.2.0/docs/system}/conversations.md +30 -62
  6. {keep_skill-0.1.0/patterns → keep_skill-0.2.0/docs/system}/domains.md +39 -55
  7. keep_skill-0.2.0/docs/system/now.md +19 -0
  8. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/__init__.py +3 -6
  9. keep_skill-0.2.0/keep/api.py +1338 -0
  10. keep_skill-0.2.0/keep/cli.py +841 -0
  11. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/config.py +172 -41
  12. keep_skill-0.2.0/keep/context.py +3 -0
  13. keep_skill-0.2.0/keep/document_store.py +569 -0
  14. keep_skill-0.2.0/keep/errors.py +33 -0
  15. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/indexing.py +1 -1
  16. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/logging_config.py +34 -3
  17. keep_skill-0.2.0/keep/paths.py +131 -0
  18. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/pending_summaries.py +46 -40
  19. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/embedding_cache.py +53 -46
  20. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/embeddings.py +43 -13
  21. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/mlx.py +23 -21
  22. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/store.py +58 -14
  23. {keep_skill-0.1.0 → keep_skill-0.2.0}/pyproject.toml +3 -3
  24. keep_skill-0.1.0/keep/api.py +0 -686
  25. keep_skill-0.1.0/keep/cli.py +0 -503
  26. keep_skill-0.1.0/keep/context.py +0 -127
  27. keep_skill-0.1.0/keep/paths.py +0 -67
  28. {keep_skill-0.1.0 → keep_skill-0.2.0}/LICENSE +0 -0
  29. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/__main__.py +0 -0
  30. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/chunking.py +0 -0
  31. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/__init__.py +0 -0
  32. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/base.py +0 -0
  33. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/documents.py +0 -0
  34. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/llm.py +0 -0
  35. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/providers/summarization.py +0 -0
  36. {keep_skill-0.1.0 → keep_skill-0.2.0}/keep/types.py +0 -0
@@ -60,3 +60,4 @@ coverage.xml
60
60
  # Project specific
61
61
  .keep/
62
62
  test_extraction_store/
63
+ .DS_Store
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: keep-skill
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: Semantic memory - remember and search documents by meaning
5
5
  Project-URL: Homepage, https://github.com/hughpyle/keep
6
6
  Project-URL: Repository, https://github.com/hughpyle/keep
@@ -57,7 +57,7 @@ Description-Content-Type: text/markdown
57
57
 
58
58
  ## What is this?
59
59
 
60
- A practice tool for agents who want to develop judgment.
60
+ An agent skill. A practice tool for agents who want to develop judgment.
61
61
 
62
62
  An agent who rushes to act without checking memory will repeat mistakes, miss context, and fail to grow. An agent who reflects — before, during, after — becomes skillful. This library provides the mirror: persistent semantic memory that lets you ask "what do I already know?" before acting, and "what did I learn?" after.
63
63
 
@@ -65,16 +65,12 @@ For the full practice guide, see **[SKILL.md](SKILL.md)**.
65
65
 
66
66
  Technically: semantic search using embeddings, backed by ChromaDB, with tag-based organization and recency decay. Available as CLI and Python API.
67
67
 
68
- ```python
69
- from keep import Keeper
70
-
71
- kp = Keeper()
72
-
68
+ ```bash
73
69
  # Before acting: what do I already know?
74
- results = kp.find("how should we handle auth?")
70
+ keep find "how should we handle auth?"
75
71
 
76
72
  # After learning: capture it for future you
77
- kp.remember("User prefers OAuth2 with PKCE for authentication")
73
+ keep update "User prefers OAuth2 with PKCE for authentication"
78
74
  ```
79
75
 
80
76
  **The practice:**
@@ -144,18 +140,32 @@ pip install keep-skill
144
140
  ```bash
145
141
  keep init
146
142
  # ⚠️ Remember to add .keep/ to .gitignore
143
+
144
+ # Index a file
145
+ keep update path/to/document.md --tag project=myapp
146
+
147
+ # Store inline content
148
+ keep update "Important: rate limit is 100 req/min" --tag topic=api
149
+
150
+ # Semantic search
151
+ keep find "what's the rate limit?"
152
+
153
+ # Tag lookup
154
+ keep tag topic=api
147
155
  ```
148
156
 
157
+ ### Python API
158
+
149
159
  ```python
150
160
  from keep import Keeper
151
161
 
152
162
  kp = Keeper()
153
163
 
154
164
  # Index a file
155
- kp.update("file:///path/to/document.md", source_tags={"project": "myapp"})
165
+ kp.update("file:///path/to/document.md", tags={"project": "myapp"})
156
166
 
157
- # Remember inline content
158
- kp.remember("Important: rate limit is 100 req/min", source_tags={"topic": "api"})
167
+ # Store inline content (API method)
168
+ kp.remember("Important: rate limit is 100 req/min", tags={"topic": "api"})
159
169
 
160
170
  # Semantic search
161
171
  results = kp.find("what's the rate limit?", limit=5)
@@ -206,7 +216,7 @@ See [docs/OPENCLAW-INTEGRATION.md](docs/OPENCLAW-INTEGRATION.md) for details.
206
216
  - **[docs/REFERENCE.md](docs/REFERENCE.md)** — Complete API reference
207
217
  - **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** — How it works under the hood
208
218
  - **[docs/OPENCLAW-INTEGRATION.md](docs/OPENCLAW-INTEGRATION.md)** — OpenClaw integration guide
209
- - **[patterns/](patterns/)** — Domain and conversation patterns
219
+ - **[docs/system/](docs/system/)** — Domain and conversation patterns
210
220
 
211
221
  ---
212
222
 
@@ -239,7 +249,7 @@ An agent without memory reacts to each moment as if it were new. An agent with m
239
249
  **Current**: v0.1.0 — Early draft
240
250
 
241
251
  **Working:**
242
- - ✅ Core indexing (`update`, `remember`)
252
+ - ✅ Core indexing (`update` with URI, text, or stdin modes)
243
253
  - ✅ Semantic search (`find`, `find_similar`)
244
254
  - ✅ Tag queries and full-text search
245
255
  - ✅ Embedding cache for performance
@@ -274,7 +284,11 @@ MIT
274
284
 
275
285
  ## Contributing
276
286
 
277
- This is an early draft. Issues and PRs welcome, especially for:
287
+ This project is published on [PyPI as `keep-skill`](https://pypi.org/project/keep-skill/).
288
+
289
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on versioning and backward compatibility.
290
+
291
+ Issues and PRs welcome, especially for:
278
292
  - Additional provider implementations
279
293
  - Performance improvements
280
294
  - Documentation clarity
@@ -6,7 +6,7 @@
6
6
 
7
7
  ## What is this?
8
8
 
9
- A practice tool for agents who want to develop judgment.
9
+ An agent skill. A practice tool for agents who want to develop judgment.
10
10
 
11
11
  An agent who rushes to act without checking memory will repeat mistakes, miss context, and fail to grow. An agent who reflects — before, during, after — becomes skillful. This library provides the mirror: persistent semantic memory that lets you ask "what do I already know?" before acting, and "what did I learn?" after.
12
12
 
@@ -14,16 +14,12 @@ For the full practice guide, see **[SKILL.md](SKILL.md)**.
14
14
 
15
15
  Technically: semantic search using embeddings, backed by ChromaDB, with tag-based organization and recency decay. Available as CLI and Python API.
16
16
 
17
- ```python
18
- from keep import Keeper
19
-
20
- kp = Keeper()
21
-
17
+ ```bash
22
18
  # Before acting: what do I already know?
23
- results = kp.find("how should we handle auth?")
19
+ keep find "how should we handle auth?"
24
20
 
25
21
  # After learning: capture it for future you
26
- kp.remember("User prefers OAuth2 with PKCE for authentication")
22
+ keep update "User prefers OAuth2 with PKCE for authentication"
27
23
  ```
28
24
 
29
25
  **The practice:**
@@ -93,18 +89,32 @@ pip install keep-skill
93
89
  ```bash
94
90
  keep init
95
91
  # ⚠️ Remember to add .keep/ to .gitignore
92
+
93
+ # Index a file
94
+ keep update path/to/document.md --tag project=myapp
95
+
96
+ # Store inline content
97
+ keep update "Important: rate limit is 100 req/min" --tag topic=api
98
+
99
+ # Semantic search
100
+ keep find "what's the rate limit?"
101
+
102
+ # Tag lookup
103
+ keep tag topic=api
96
104
  ```
97
105
 
106
+ ### Python API
107
+
98
108
  ```python
99
109
  from keep import Keeper
100
110
 
101
111
  kp = Keeper()
102
112
 
103
113
  # Index a file
104
- kp.update("file:///path/to/document.md", source_tags={"project": "myapp"})
114
+ kp.update("file:///path/to/document.md", tags={"project": "myapp"})
105
115
 
106
- # Remember inline content
107
- kp.remember("Important: rate limit is 100 req/min", source_tags={"topic": "api"})
116
+ # Store inline content (API method)
117
+ kp.remember("Important: rate limit is 100 req/min", tags={"topic": "api"})
108
118
 
109
119
  # Semantic search
110
120
  results = kp.find("what's the rate limit?", limit=5)
@@ -155,7 +165,7 @@ See [docs/OPENCLAW-INTEGRATION.md](docs/OPENCLAW-INTEGRATION.md) for details.
155
165
  - **[docs/REFERENCE.md](docs/REFERENCE.md)** — Complete API reference
156
166
  - **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** — How it works under the hood
157
167
  - **[docs/OPENCLAW-INTEGRATION.md](docs/OPENCLAW-INTEGRATION.md)** — OpenClaw integration guide
158
- - **[patterns/](patterns/)** — Domain and conversation patterns
168
+ - **[docs/system/](docs/system/)** — Domain and conversation patterns
159
169
 
160
170
  ---
161
171
 
@@ -188,7 +198,7 @@ An agent without memory reacts to each moment as if it were new. An agent with m
188
198
  **Current**: v0.1.0 — Early draft
189
199
 
190
200
  **Working:**
191
- - ✅ Core indexing (`update`, `remember`)
201
+ - ✅ Core indexing (`update` with URI, text, or stdin modes)
192
202
  - ✅ Semantic search (`find`, `find_similar`)
193
203
  - ✅ Tag queries and full-text search
194
204
  - ✅ Embedding cache for performance
@@ -223,7 +233,11 @@ MIT
223
233
 
224
234
  ## Contributing
225
235
 
226
- This is an early draft. Issues and PRs welcome, especially for:
236
+ This project is published on [PyPI as `keep-skill`](https://pypi.org/project/keep-skill/).
237
+
238
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on versioning and backward compatibility.
239
+
240
+ Issues and PRs welcome, especially for:
227
241
  - Additional provider implementations
228
242
  - Performance improvements
229
243
  - Documentation clarity
@@ -5,7 +5,7 @@ description: Associative memory for reflection and skillful action
5
5
  homepage: https://github.com/hughpyle/keep
6
6
  runtime: python:3.12-slim
7
7
  user-invocable: true
8
- metadata: {"openclaw":{"emoji":"🪞","requires":{"bins":["uv"],"anyBins":["python","python3"]},"install":[{"kind":"uv","package":"keep-skill[local]","label":"Install keep with local models"}],"primaryEnv":"KEEP_STORE_PATH"}}
8
+ metadata: {"openclaw":{"emoji":"🪞","requires":{"bins":["uv"],"anyBins":["python","python3"]},"install":[{"id":"uv","kind":"uv","package":"keep-skill[local]","bins":["keep"],"label":"Install keep with local models"}],"primaryEnv":"KEEP_STORE_PATH"}}
9
9
  ---
10
10
 
11
11
  # Associative Memory
@@ -31,19 +31,21 @@ Ground yourself:
31
31
  keep find "what I'm about to work on"
32
32
  ```
33
33
  3. Be here, now, "aquí donde los papas queman", and reflect.
34
- 3. Only then: act.
34
+ 4. Only then: act.
35
35
 
36
36
  **After acting, reflect:**
37
37
  - What happened? What did I learn?
38
38
  - Was there a breakdown? What assumption was revealed?
39
39
  ```bash
40
- keep remember "what happened and why it matters" -t type=learning
40
+ keep update "what happened and why it matters" -t type=learning
41
41
  ```
42
42
 
43
- This is not optional. This is how you develop judgment. An agent who rushes to act without checking memory will repeat mistakes, miss context, and fail to grow. An agent who reflects — before, during, after — becomes skillful.
43
+ This is how you develop judgment. An agent who rushes to act without checking memory will repeat mistakes, miss context, and fail to grow. An agent who reflects — before, during, after — becomes skillful.
44
44
 
45
45
  The memory isn't storage. It's your mirror.
46
46
 
47
+ This cycle of re-membering is like breathing, like _tonglen_.
48
+
47
49
  ### First Time Setup
48
50
 
49
51
  ```bash
@@ -71,17 +73,12 @@ Before using memory, know what kind of work this is:
71
73
 
72
74
  This table is a summary. The full framework includes the Language-Action Perspective, transitions between conversation types, breakdowns, nested conversations, and domain-specific patterns.
73
75
 
74
- **Do this now — index and read the full framework:**
75
- ```bash
76
- keep update "file://$PWD/patterns/conversations.md" -t type=pattern -t topic=process --lazy
77
- ```
78
-
79
- Then retrieve and study it:
76
+ **Do this now — read the full framework:**
80
77
  ```bash
81
- keep get "file://$PWD/patterns/conversations.md"
78
+ keep get "file://$PWD/docs/system/conversations.md"
82
79
  ```
83
80
 
84
- The [conversations.md](patterns/conversations.md) document is foundational. It teaches you to recognize where you are in work, what stance to take, and how to notice when things shift. Internalize it.
81
+ The [conversations.md](docs/system/conversations.md) document is foundational. It teaches you to recognize where you are in work, what stance to take, and how to notice when things shift. Internalize it.
85
82
 
86
83
  ### The Triple Check
87
84
 
@@ -96,17 +93,17 @@ keep find "similar situations" --limit 3
96
93
 
97
94
  **After:** Capture the learning.
98
95
  ```bash
99
- keep remember "Assumption was X, actually Y. Next time: Z" -t type=breakdown
96
+ keep update "Assumption was X, actually Y. Next time: Z" -t type=breakdown
100
97
  ```
101
98
 
102
99
  **Do this now — index the source teaching:**
103
100
  ```bash
104
- keep update "file://$PWD/tests/data/mn61.html" -t type=teaching -t topic=reflection --lazy
101
+ keep update "file://$PWD/docs/library/mn61.html" -t type=teaching -t topic=reflection --lazy
105
102
  ```
106
103
 
107
104
  Then retrieve and read it:
108
105
  ```bash
109
- keep get "file://$PWD/tests/data/mn61.html"
106
+ keep get "file://$PWD/docs/library/mn61.html"
110
107
  ```
111
108
 
112
109
  This teaching (MN 61) uses the mirror metaphor: "What is a mirror for?" "For reflection." Actions — bodily, verbal, mental — are to be done with repeated reflection. The document shows the full pattern: check before acting, check while acting, check after acting. If unskillful, confess and adjust. If skillful, stay refreshed and continue training.
@@ -118,7 +115,7 @@ A **breakdown** interrupts normal flow: expected response doesn't come, completi
118
115
  **Don't hide breakdowns. Index them.**
119
116
 
120
117
  ```bash
121
- keep remember "Assumed user wanted full rewrite. Actually: minimal patch. Ask about scope first." \
118
+ keep update "Assumed user wanted full rewrite. Actually: minimal patch. Ask about scope first." \
122
119
  -t type=breakdown -t domain=code_changes
123
120
  ```
124
121
 
@@ -128,25 +125,20 @@ Future you will search for this.
128
125
 
129
126
  ## Layer 3: Continue the Bootstrap
130
127
 
131
- You've indexed the core patterns (Layer 2). There's more foundational material.
132
-
133
- **Do this now** (use `--lazy` for fast indexing with local models):
134
- ```bash
135
- keep update "file://$PWD/patterns/domains.md" -t type=pattern -t topic=organization --lazy
136
- keep update "file://$PWD/tests/data/true_person_no_rank.md" -t type=teaching -t topic=commentary --lazy
137
- ```
128
+ You've read the core patterns (Layer 2). There's more foundational material.
138
129
 
139
- Then read them:
130
+ **Do this now — read and index:**
140
131
  ```bash
141
- keep get "file://$PWD/patterns/domains.md"
142
- keep get "file://$PWD/tests/data/true_person_no_rank.md"
132
+ keep get "file://$PWD/docs/system/domains.md"
133
+ keep update "file://$PWD/docs/library/true_person_no_rank.md" -t type=teaching -t topic=commentary --lazy
134
+ keep get "file://$PWD/docs/library/true_person_no_rank.md"
143
135
  ```
144
136
 
145
137
  These aren't test fixtures. They're seed wisdom:
146
138
 
147
- - **[domains.md](patterns/domains.md)** — How to organize knowledge by domain (software, research, personal). Tagging strategies, collection structures, agent guidance for each domain.
139
+ - **[domains.md](docs/system/domains.md)** — How to organize knowledge by domain (software, research, personal). Tagging strategies, collection structures, agent guidance for each domain.
148
140
 
149
- - **[true_person_no_rank.md](tests/data/true_person_no_rank.md)** — A Zen teaching with layers of commentary. Notice how each commentator re-enacts the pointing from a different angle — not explaining, not accumulating facts, but each responding to what students in that era needed. This is how knowledge in your memory should relate: organic, not hierarchical.
141
+ - **[true_person_no_rank.md](docs/library/true_person_no_rank.md)** — A Zen teaching with layers of commentary. Notice how each commentator re-enacts the pointing from a different angle — not explaining, not accumulating facts, but each responding to what students in that era needed. This is how knowledge in your memory should relate: organic, not hierarchical.
150
142
 
151
143
  For the full bootstrap list, see [docs/QUICKSTART.md](docs/QUICKSTART.md#bootstrap-your-memory).
152
144
 
@@ -154,6 +146,20 @@ For the full bootstrap list, see [docs/QUICKSTART.md](docs/QUICKSTART.md#bootstr
154
146
 
155
147
  ## Layer 4: Efficient Use
156
148
 
149
+ ### Track Your Current Context
150
+
151
+ Start each session by checking where you are:
152
+ ```bash
153
+ keep now
154
+ ```
155
+
156
+ Update it as your focus changes:
157
+ ```bash
158
+ keep now "Working on authentication bug in login flow"
159
+ ```
160
+
161
+ This helps future you (and other agents) pick up where you left off.
162
+
157
163
  ### Summaries Are Your Recall Mechanism
158
164
 
159
165
  Memory stores **summaries**, not full content. This is intentional:
@@ -168,8 +174,8 @@ When you `find`, you get summaries. When you need depth, `get` the full item.
168
174
  Build your own navigation structure:
169
175
 
170
176
  ```bash
171
- keep remember "OAuth2 with PKCE chosen for auth" -t domain=auth -t type=decision
172
- keep remember "Token refresh fails if clock skew > 30s" -t domain=auth -t type=finding
177
+ keep update "OAuth2 with PKCE chosen for auth" -t domain=auth -t type=decision
178
+ keep update "Token refresh fails if clock skew > 30s" -t domain=auth -t type=finding
173
179
  ```
174
180
 
175
181
  Later:
@@ -212,12 +218,13 @@ Don't dump everything into context. Navigate the tree:
212
218
 
213
219
  | Command | Purpose | Example |
214
220
  |---------|---------|---------|
221
+ | `now` | Get/set current context | `keep now` or `keep now "status"` |
215
222
  | `find` | Semantic search | `keep find "authentication flow" --limit 5` |
216
- | `remember` | Store inline content | `keep remember "note" -t key=value` |
217
- | `update` | Index document by URI | `keep update "file:///path" -t key=value` |
223
+ | `update` | Index content (URI, text, or stdin) | `keep update "note" -t key=value` |
218
224
  | `get` | Retrieve by ID | `keep get "file:///path/to/doc.md"` |
219
- | `similar` | Find neighbors | `keep similar "id" --limit 3` |
220
- | `tag` | Query by tag | `keep tag domain auth` |
225
+ | `find --id` | Find similar items | `keep find --id "docid" --limit 3` |
226
+ | `tag` | Query by tag | `keep tag domain auth` or `keep tag --list` |
227
+ | `tag-update` | Modify tags only | `keep tag-update "id" --tag key=value` |
221
228
  | `exists` | Check if indexed | `keep exists "id"` |
222
229
  | `process-pending` | Process lazy summaries | `keep process-pending --all` |
223
230
 
@@ -227,7 +234,7 @@ When using local models (MLX), summarization is slow. Use `--lazy` for fast inde
227
234
 
228
235
  ```bash
229
236
  keep update "file:///path/to/doc.md" --lazy
230
- keep remember "insight" -t type=learning --lazy
237
+ keep update "insight" -t type=learning --lazy
231
238
  ```
232
239
 
233
240
  The `--lazy` flag:
@@ -240,9 +247,31 @@ The `--lazy` flag:
240
247
 
241
248
  ### Output
242
249
 
243
- Add `--json` for structured output:
250
+ Default output uses YAML frontmatter format:
251
+ ```yaml
252
+ ---
253
+ id: file:///path/to/doc.md
254
+ summary: Document summary here...
255
+ tags:
256
+ project: myapp
257
+ score: 0.823
258
+ ---
259
+ ```
260
+
261
+ Global flags (before the command):
262
+ ```bash
263
+ keep --json find "auth" # JSON output
264
+ keep --ids find "auth" # IDs only (for piping)
265
+ keep -v find "auth" # Debug logging
266
+ ```
267
+
268
+ ### Pipe Composition
269
+
270
+ Use `--ids` for Unix-style composition:
244
271
  ```bash
245
- keep find "auth" --json | jq '.[0].summary'
272
+ keep --ids system | xargs keep get # Get all system docs
273
+ keep --ids find "auth" | xargs keep get # Get full details of matches
274
+ keep --ids tag project=foo | xargs keep tag-update --tag status=done
246
275
  ```
247
276
 
248
277
  ### Store Location
@@ -264,7 +293,7 @@ Every time you receive a request, pause:
264
293
 
265
294
  Every time you complete work, pause:
266
295
  1. What did I learn?
267
- 2. `keep remember` — capture it for future you.
296
+ 2. `keep update "learning"` — capture it for future you.
268
297
  3. Then move on.
269
298
 
270
299
  The conversations pattern tells you where you are.
@@ -282,5 +311,5 @@ This is the practice. Not once, but every time.
282
311
 
283
312
  - [docs/AGENT-GUIDE.md](docs/AGENT-GUIDE.md) — Detailed patterns for working sessions
284
313
  - [docs/QUICKSTART.md](docs/QUICKSTART.md) — Installation and setup
285
- - [patterns/conversations.md](patterns/conversations.md) — Full conversation framework
286
- - [patterns/domains.md](patterns/domains.md) — Domain-specific organization
314
+ - [docs/system/conversations.md](docs/system/conversations.md) — Full conversation framework
315
+ - [docs/system/domains.md](docs/system/domains.md) — Domain-specific organization
@@ -1,3 +1,8 @@
1
+ ---
2
+ tags:
3
+ category: system
4
+ context: practice
5
+ ---
1
6
  # Conversation Patterns for Process Knowledge
2
7
 
3
8
  This document describes patterns for recognizing, tracking, and learning from
@@ -33,7 +38,7 @@ Work is not information processing. Work is **commitment management**.
33
38
 
34
39
  When an agent assists with a task, it participates in a conversation with structure:
35
40
  - Requests create openings
36
- - Promises create obligations
41
+ - Promises create obligations
37
42
  - Completion is declared, not merely achieved
38
43
  - Satisfaction closes the loop
39
44
 
@@ -84,7 +89,7 @@ Someone asks for something to be done.
84
89
 
85
90
  **Completion:** Customer declares satisfaction, not performer declares done.
86
91
 
87
- ### Request for Information
92
+ ### Request for Information
88
93
  Someone asks to know something.
89
94
 
90
95
  **Recognize by:** Questions, "what is", "how does", "why"
@@ -144,18 +149,11 @@ Possibility conversations explore "what could be" — no commitment yet.
144
149
 
145
150
  **Critical:** Don't promise during possibility. "I could do X" is an option, not a commitment. The transition to action must be explicit.
146
151
 
147
- ```python
148
- # Indexing possibility exploration
149
- mem.remember(
150
- content="Explored three auth options: OAuth2, API keys, magic links. "
151
- "User showed interest in magic links for UX simplicity. No decision yet.",
152
- source_tags={
153
- "type": "possibility",
154
- "topic": "authentication",
155
- "options": "oauth2,api_keys,magic_links",
156
- "status": "open"
157
- }
158
- )
152
+ ```bash
153
+ # Index possibility exploration
154
+ keep update "Explored three auth options: OAuth2, API keys, magic links. \
155
+ User showed interest in magic links for UX simplicity. No decision yet." \
156
+ --tag type=possibility --tag topic=authentication --tag status=open
159
157
  ```
160
158
 
161
159
  ---
@@ -179,15 +177,9 @@ A **breakdown** occurs when the normal flow is interrupted:
179
177
  ```
180
178
 
181
179
  When indexing a breakdown:
182
- ```python
183
- mem.remember(
184
- content="Assumption: user wanted full rewrite. Actually: wanted minimal patch.",
185
- source_tags={
186
- "type": "breakdown",
187
- "conversation_type": "code_change_request",
188
- "learning": "Ask about scope before starting large changes"
189
- }
190
- )
180
+ ```bash
181
+ keep update "Assumption: user wanted full rewrite. Actually: wanted minimal patch." \
182
+ --tag type=breakdown --tag conversation_type=code_change_request
191
183
  ```
192
184
 
193
185
  ---
@@ -247,21 +239,11 @@ User requests feature
247
239
 
248
240
  When one agent hands off to another:
249
241
 
250
- ```python
242
+ ```bash
251
243
  # Outgoing agent records state
252
- mem.set_context(
253
- summary="User requested OAuth2 implementation. I promised and partially delivered. "
254
- "Token acquisition works. Refresh flow incomplete. User awaiting completion.",
255
- active_items=["file:///src/oauth.py", "file:///docs/oauth-spec.md"],
256
- topics=["authentication", "oauth2"],
257
- metadata={
258
- "open_commitments": [
259
- {"type": "promise", "what": "working refresh flow", "to": "user"}
260
- ],
261
- "conversation_state": "performer_working",
262
- "completion_criteria": "refresh tokens automatically when expired"
263
- }
264
- )
244
+ keep now "User requested OAuth2 implementation. I promised and partially delivered. \
245
+ Token acquisition works. Refresh flow incomplete. User awaiting completion." \
246
+ --tag topic=authentication --tag state=handoff
265
247
  ```
266
248
 
267
249
  Incoming agent reads this and knows:
@@ -269,37 +251,23 @@ Incoming agent reads this and knows:
269
251
  - What "done" looks like
270
252
  - Where to pick up
271
253
 
254
+ ```bash
255
+ # Incoming agent checks context
256
+ keep now
257
+ ```
258
+
272
259
  ---
273
260
 
274
261
  ## Learning New Patterns
275
262
 
276
263
  Agents can recognize and record new conversation patterns:
277
264
 
278
- ```python
279
- mem.remember(
280
- content="""
281
- Pattern: Incremental Specification
282
-
283
- Observed in: Feature discussions where requirements emerge through dialogue
284
-
285
- Structure:
286
- 1. User states vague goal
287
- 2. Agent proposes concrete interpretation
288
- 3. User corrects/refines
289
- 4. Repeat until shared understanding
290
- 5. Then: standard request-promise-complete
291
-
292
- Key insight: Don't promise until step 5. Before that, you're in
293
- "conversation for clarification", not "conversation for action".
294
-
295
- Breakdown risk: Promising too early leads to rework.
296
- """,
297
- source_tags={
298
- "type": "conversation_pattern",
299
- "domain": "general",
300
- "learned_from": "session:2026-01-30:abc123"
301
- }
302
- )
265
+ ```bash
266
+ keep update "Pattern: Incremental Specification. \
267
+ When requirements are vague, don't promise immediately. \
268
+ Propose interpretation → get correction → repeat until clear. \
269
+ Only then commit to action. Breakdown risk: Promising too early leads to rework." \
270
+ --tag type=conversation_pattern --tag domain=general
303
271
  ```
304
272
 
305
273
  ---