memgineering 0.23.1 → 0.24.0
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.
- package/CHANGELOG.md +54 -0
- package/assets/MEMGINEERING.md +1 -1
- package/assets/memgineering-rules/SKILL.md +15 -4
- package/assets/memgineering-writing/SKILL.md +12 -3
- package/dist/index.js +739 -100
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,60 @@ language the reader wants. The bilingual rule the monorepo applies to
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
## [0.24.0] — 2026-09-12
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- **`memgineering rescope <ref>` changes which project a memory binds in.**
|
|
19
|
+
`scope` decides which of the two rule budgets a decision is drawn from — it
|
|
20
|
+
is the field that answers "does this bind me here" — and nothing could write
|
|
21
|
+
it. Moving one meant `supersede`, which retires the loser, so folding a
|
|
22
|
+
project-scoped rule into an unscoped one would have made the rule vanish
|
|
23
|
+
everywhere except the project it was scoped to.
|
|
24
|
+
Two flags, deliberately: `--scope <project>` narrows or moves,`--global`
|
|
25
|
+
widens. A rule that stops naming a project starts binding in every project,
|
|
26
|
+
and that is the change hardest to notice afterwards, so it is spelled rather
|
|
27
|
+
than being what happens when the scope is left off.
|
|
28
|
+
- **`memgineering expire <ref> --until <date>` gives a memory an end date, and
|
|
29
|
+
does not retire it.** Until that date it is current; after it, recall still
|
|
30
|
+
returns it — one step below what is current, and labelled. Recall has always
|
|
31
|
+
understood this; only the writer was missing. Reach for it when a memory was
|
|
32
|
+
always going to run out, rather than when a decision has been overtaken.
|
|
33
|
+
- **A hosted brain's rule list says how fresh each rule is** (`freshness` on
|
|
34
|
+
`POST /rules`), so an agent handed a rule whose end date has passed is told
|
|
35
|
+
so rather than reading it as current.
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
|
|
39
|
+
- **Retiring a rule now stops it being pushed to agents on a hosted brain.**
|
|
40
|
+
The rule list filtered "is it marked as a rule" and nothing else, while the
|
|
41
|
+
local one has always dropped retired rules — putting a decision somebody
|
|
42
|
+
retired in front of an agent as binding is the tool arguing with them.
|
|
43
|
+
`retire` writes the status and leaves the marking alone, so nothing else
|
|
44
|
+
caught it: on a hosted brain, which is what a signed-in machine reads,
|
|
45
|
+
retiring a rule did not stop the before-edit hook showing it.
|
|
46
|
+
- **A date written into a note that states no claim is no longer ignored.**
|
|
47
|
+
Freshness read `valid_until` only off a stated claim, and most notes state
|
|
48
|
+
none — so an end date in such a note was read by nothing at all.
|
|
49
|
+
- **An upgrade now tells your agent that its guidance went stale.** The only
|
|
50
|
+
thing that ever said so was a `postinstall` script, and npm 12 blocks install
|
|
51
|
+
scripts by default — measured on 12.0.2, all it prints is `1 package had
|
|
52
|
+
install scripts blocked`, which does not say what the blocked script would
|
|
53
|
+
have said. So on that npm an upgrade left a new binary beside the hub and
|
|
54
|
+
skills an older release wrote, in `~/.claude`, `~/.codex` and `~/.gemini`,
|
|
55
|
+
and both halves reported success. The CLI now says it itself, before any
|
|
56
|
+
command, on a channel npm cannot block: run `memgineering setup` once and it
|
|
57
|
+
goes quiet. It stays out of `guard`, which runs on every file edit.
|
|
58
|
+
|
|
59
|
+
### Agent guidance
|
|
60
|
+
|
|
61
|
+
`memgineering-rules` and `memgineering-writing` both changed: there are now
|
|
62
|
+
three ways a rule stops applying rather than two (`--no-rule`, `retire`,
|
|
63
|
+
`expire`), and `rescope` is how a rule moves between projects. **Restart your
|
|
64
|
+
agent session after upgrading** so the new guidance is loaded — or run
|
|
65
|
+
`memgineering setup`, which the CLI will now ask for by itself when the
|
|
66
|
+
installed guidance is older than the binary.
|
|
67
|
+
|
|
14
68
|
## [0.23.1] — 2026-09-11
|
|
15
69
|
|
|
16
70
|
### Fixed
|
package/assets/MEMGINEERING.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: memgineering
|
|
3
3
|
description: Use whenever the user refers to something they told you before, asks what was decided, tells you something worth keeping, or settles something that should hold next time. The memory lives in their own folder and outlives this session; check it before answering from guesswork, and write to it when you learn something durable.
|
|
4
4
|
type: skill
|
|
5
|
-
version: 0.
|
|
5
|
+
version: 0.24.0
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# memgineering
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: memgineering-rules
|
|
3
|
-
description: Use when the user settles something they expect to hold next time — a colour they will not use, a step never to skip, a way things get named here — or when you want to see what already binds you in this folder. A decision does not have to be announced as a rule to be one. Triggers include "from now on", "always", "never", "don't do that again", "let's go with X from here", "we always do it this way", "what rules do I have". Covers remember --rule, rules, and what the before-edit hook shows.
|
|
3
|
+
description: Use when the user settles something they expect to hold next time — a colour they will not use, a step never to skip, a way things get named here — or when you want to see what already binds you in this folder. A decision does not have to be announced as a rule to be one. Triggers include "from now on", "always", "never", "don't do that again", "let's go with X from here", "we always do it this way", "what rules do I have" — and, for moving one, "that should apply everywhere", "not just this project", "all my projects", "only in this repo from now on". Covers remember --rule, rules, rescope, and what the before-edit hook shows.
|
|
4
4
|
type: skill
|
|
5
5
|
allowed-tools: Bash(memgineering:*)
|
|
6
6
|
---
|
|
@@ -150,12 +150,23 @@ Two consequences worth knowing before you mark things:
|
|
|
150
150
|
are why they no longer can: a rule scoped to the project has its own room and
|
|
151
151
|
cannot lose every slot to whatever the user has been reaching for lately. It
|
|
152
152
|
still pays to keep the standing set small — ten is what a session reads.
|
|
153
|
-
- **
|
|
153
|
+
- **Three ways out, and they are not the same.** `memgineering revise <ref>
|
|
154
154
|
--no-rule --reason "…"` says it was never a rule: it stops being shown before
|
|
155
155
|
an edit, and stays a perfectly ordinary current memory that recall returns.
|
|
156
156
|
`memgineering retire <ref>` says it no longer holds: it stops binding AND
|
|
157
|
-
drops to the bottom of recall, labelled.
|
|
158
|
-
|
|
157
|
+
drops to the bottom of recall, labelled. `memgineering expire <ref> --until
|
|
158
|
+
<date>` says it held until then: it KEEPS binding and recall keeps returning
|
|
159
|
+
it, ranked below what is current and labelled from that date. Reach for the
|
|
160
|
+
first when the marking was the mistake, the second when the decision has been
|
|
161
|
+
overtaken, and the third when it was always going to run out.
|
|
162
|
+
- **`memgineering rescope <ref>` changes WHERE a rule binds, not whether it
|
|
163
|
+
does.** `--scope <project>` binds it in that project alone — agents working
|
|
164
|
+
anywhere else stop being shown it. `--global` binds it everywhere, which is
|
|
165
|
+
the change hardest to notice afterwards, so it has a flag of its own rather
|
|
166
|
+
than being what happens when you leave the scope off. Nothing the note says
|
|
167
|
+
changes either way, and `memgineering undo` reverses it.
|
|
168
|
+
Ask before widening: a rule the user wrote about one repository, made global,
|
|
169
|
+
arrives in every session they open.
|
|
159
170
|
- **`--no-rule` on its own asks for nothing else.** No claim, no summary — the
|
|
160
171
|
conclusion, the summary and the title come back byte for byte, which is the
|
|
161
172
|
whole reason it exists. It used to go through `revise`, which requires a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: memgineering-writing
|
|
3
|
-
description: Use when you learn something durable and should record it, when a conclusion you already recorded turns out to have changed, when something needs undoing or retiring, when the brain has filled up with near-duplicates that want tidying, or when the user's `01_BASE/` files are still empty and only a conversation can fill them. Triggers include "remember this", "that didn't work", "this worked instead", "that's not right anymore", "undo that", "looks good", "set up my memory", "fill in my profile", "stop reading that note", "clean up my notes", "these two say the same thing", "is this a duplicate", "move my memories over", "bring my notes from the other tool", "don't save that", "never store that". Covers remember, revise, undo, log, retire, exclude, onboard, the consolidate/propose/approve flow, carrying facts in from another store, storage boundaries, and what to say before writing.
|
|
3
|
+
description: Use when you learn something durable and should record it, when a conclusion you already recorded turns out to have changed, when something needs undoing or retiring, when the brain has filled up with near-duplicates that want tidying, or when the user's `01_BASE/` files are still empty and only a conversation can fill them. Triggers include "remember this", "that didn't work", "this worked instead", "that's not right anymore", "undo that", "looks good", "set up my memory", "fill in my profile", "stop reading that note", "clean up my notes", "these two say the same thing", "is this a duplicate", "move my memories over", "bring my notes from the other tool", "don't save that", "never store that", "that's only true until <date>", "it stops being true after", "don't tell me that forever". Covers remember, revise, undo, log, retire, expire, exclude, onboard, the consolidate/propose/approve flow, carrying facts in from another store, storage boundaries, and what to say before writing.
|
|
4
4
|
type: skill
|
|
5
5
|
allowed-tools: Bash(memgineering:*)
|
|
6
6
|
---
|
|
@@ -203,17 +203,26 @@ it>"`.
|
|
|
203
203
|
This rewrites only the memory block in frontmatter. The prose is the user's;
|
|
204
204
|
neither the command nor you should rewrite it uninvited.
|
|
205
205
|
|
|
206
|
-
## Retiring versus excluding
|
|
206
|
+
## Retiring versus expiring versus excluding
|
|
207
207
|
|
|
208
208
|
```
|
|
209
209
|
memgineering retire <ref> --reason "the date moved" # no longer current, still visible
|
|
210
|
+
memgineering expire <ref> --until 2026-10-31 --reason "the phase ends then" # NOT retired
|
|
210
211
|
memgineering exclude path/to/note.md --reason "it has someone's phone number in it" # stop reading it
|
|
211
212
|
memgineering retract --actor "mcp:ChatGPT" --since 2026-09-01 # SHOWS what one writer / window wrote
|
|
212
213
|
memgineering retract --actor "mcp:ChatGPT" --since 2026-09-01 --yes # retires all of it, one ledger row each
|
|
213
214
|
```
|
|
214
215
|
|
|
215
216
|
Retiring keeps the note in recall, ranked last and labelled. Excluding takes it
|
|
216
|
-
out of the index and never touches the file.
|
|
217
|
+
out of the index and never touches the file.
|
|
218
|
+
|
|
219
|
+
**`expire` is not a retirement, and the difference only shows up later.** It
|
|
220
|
+
gives a memory an end date: until then it is current, and after it recall still
|
|
221
|
+
returns it — one step below what is current, labelled with the date. Reach for
|
|
222
|
+
it when the memory was always going to run out ("Phase 1 lands by the end of
|
|
223
|
+
October", a key that rotates, a plan with a deadline in it) rather than when a
|
|
224
|
+
decision has been overtaken. Retiring such a note says something untrue about
|
|
225
|
+
it; leaving it says something untrue too. If the user says "delete", ask
|
|
217
226
|
which they mean.
|
|
218
227
|
|
|
219
228
|
## Tidying up a brain: detect, draft, approve
|