memgineering 0.0.0 → 0.1.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 +68 -0
- package/LICENSE +202 -0
- package/NOTICE +41 -0
- package/README.md +156 -5
- package/assets/MEMGINEERING.md +119 -0
- package/assets/memgineering-memory/SKILL.md +177 -0
- package/assets/memgineering-setup/SKILL.md +141 -0
- package/bin/memgineering.js +1 -6
- package/dist/index.js +5872 -0
- package/package.json +58 -16
- package/scripts/copy-skills.mjs +40 -0
- package/scripts/postinstall.mjs +16 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `memgineering` are documented here, in the
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) style. This project
|
|
5
|
+
follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
English only, deliberately: this file is read by people deciding whether to
|
|
8
|
+
upgrade and by agents summarising a release, and both re-render it in whatever
|
|
9
|
+
language the reader wants. The bilingual rule the monorepo applies to
|
|
10
|
+
`@rayul/kordis` does not extend here.
|
|
11
|
+
|
|
12
|
+
## [Unreleased]
|
|
13
|
+
|
|
14
|
+
## [0.1.0] — 2026-08-09
|
|
15
|
+
|
|
16
|
+
First release. A brain is a folder of your own notes; every agent you use
|
|
17
|
+
reads and writes it through this one CLI.
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- **Recall and open.** `recall <query>` returns memory cards — title, summary,
|
|
22
|
+
and a handle — rather than documents, so an agent can afford to ask on every
|
|
23
|
+
turn. `open <ref>` expands one, and takes a handle, an id, a path inside the
|
|
24
|
+
brain, or a note's exact title, so you do not have to search for something
|
|
25
|
+
you can already name.
|
|
26
|
+
- **Progressive reading.** `--detail title | card | summary | chunks | full`
|
|
27
|
+
on both verbs, plus `open --section <name>`. Every stage is computed from
|
|
28
|
+
the note itself — the summary is the author's own, the chunks are their own
|
|
29
|
+
headings. Nothing is generated.
|
|
30
|
+
- **Writing without an approval queue.** `remember <text>` records an
|
|
31
|
+
observation immediately, as its own note, recallable at once. `revise <ref>`
|
|
32
|
+
changes a memory's conclusion. Both are reversible with `undo`, and `log`
|
|
33
|
+
shows what changed and what can still be taken back.
|
|
34
|
+
- **An operation ledger** inside the brain, so corrections travel with the
|
|
35
|
+
notes they describe. It records hashes and the changed region, never note
|
|
36
|
+
text.
|
|
37
|
+
- **`resurface`** — what is worth having in view at the start of a session,
|
|
38
|
+
with no query: ranked by what has been recalled in this folder before, how
|
|
39
|
+
recently, and which base notes have gone unread.
|
|
40
|
+
- **`init`** lays out a new brain — eleven folders and five base files, ready
|
|
41
|
+
to write into. **`link`** reads notes you already keep, showing the actual
|
|
42
|
+
lines that would be stored before anything is indexed.
|
|
43
|
+
- **Several brains at once.** Resolution goes `--vault`, then a
|
|
44
|
+
`.memgineering` pointer found by walking up, then the brain the current
|
|
45
|
+
directory is inside, then the only one linked — and refuses rather than
|
|
46
|
+
guessing when none of those settle it. `use <brain>` writes the pointer, as
|
|
47
|
+
a relative path where it can, so it can be committed.
|
|
48
|
+
- **`retire` / `unretire`** mark a memory no longer current while it stays
|
|
49
|
+
visible; **`exclude` / `unexclude`** stop reading a note entirely without
|
|
50
|
+
touching it. They are separate because "delete" means both, and guessing
|
|
51
|
+
picks one.
|
|
52
|
+
- **`setup`** installs into Claude Code, Codex and Gemini CLI — `--agent` for
|
|
53
|
+
a non-interactive run, `--human` for a checkbox screen. Optionally registers
|
|
54
|
+
`resurface` to run when a Claude Code session starts.
|
|
55
|
+
- **Self-update.** `update` upgrades this install, or explains why it will
|
|
56
|
+
not: when the package manager on PATH does not own the directory this copy
|
|
57
|
+
lives in — the usual case under nvm, asdf, Volta and mise — it prints the
|
|
58
|
+
command instead of running it, because updating a copy nobody runs while
|
|
59
|
+
reporting success is worse than not updating at all.
|
|
60
|
+
|
|
61
|
+
### Agent guidance
|
|
62
|
+
|
|
63
|
+
Ships a hub block and two sub-skills (`memgineering-memory`,
|
|
64
|
+
`memgineering-setup`) installed into each detected tool's home.
|
|
65
|
+
**Restart your agent session after `setup` for them to load.**
|
|
66
|
+
|
|
67
|
+
[Unreleased]: https://github.com/memgineering/memgineering/compare/v0.1.0...HEAD
|
|
68
|
+
[0.1.0]: https://github.com/memgineering/memgineering/releases/tag/v0.1.0
|
package/LICENSE
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
190
|
+
Copyright [yyyy] [name of copyright owner]
|
|
191
|
+
|
|
192
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
|
+
you may not use this file except in compliance with the License.
|
|
194
|
+
You may obtain a copy of the License at
|
|
195
|
+
|
|
196
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
197
|
+
|
|
198
|
+
Unless required by applicable law or agreed to in writing, software
|
|
199
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
200
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
201
|
+
See the License for the specific language governing permissions and
|
|
202
|
+
limitations under the License.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
memgineering
|
|
2
|
+
Copyright 2026 memgineering
|
|
3
|
+
|
|
4
|
+
This product includes software developed by memgineering
|
|
5
|
+
(https://memgineering.com).
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0. See LICENSE for the full
|
|
8
|
+
terms. This NOTICE file must be included in redistributions and derivative
|
|
9
|
+
works, per section 4(d) of that license.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
UPDATES AND SUPPORT
|
|
13
|
+
-------------------
|
|
14
|
+
|
|
15
|
+
memgineering checks for a newer version at most once a day and, when
|
|
16
|
+
auto-update is on, can install one. Both are stated here rather than only in
|
|
17
|
+
the README because they involve the network and the user's install directory.
|
|
18
|
+
|
|
19
|
+
* The check contacts the npm registry, and optionally
|
|
20
|
+
https://memgineering.com/version-policy.json. Neither request carries
|
|
21
|
+
identifying information beyond what any HTTP client sends.
|
|
22
|
+
* `MEMGINEERING_NO_UPDATE=1` skips the check for a single run.
|
|
23
|
+
`memgineering setup --auto-update off` turns installation off for good.
|
|
24
|
+
* Installation only ever targets the version npm publishes as `latest`.
|
|
25
|
+
The policy document is advisory and can never select a version.
|
|
26
|
+
|
|
27
|
+
Older versions are not disabled remotely, and nothing in this software will
|
|
28
|
+
stop working locally because a newer release exists. Every published version
|
|
29
|
+
remains installable from npm indefinitely. What a future release may withdraw
|
|
30
|
+
is support for older clients on *hosted* services operated by memgineering —
|
|
31
|
+
if that happens, the version policy will say so ahead of time and the CLI will
|
|
32
|
+
print it. Upgrading restores access; nothing you have stored is affected
|
|
33
|
+
either way, because your notes are files on your own disk and remain yours.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
YOUR DATA
|
|
37
|
+
---------
|
|
38
|
+
|
|
39
|
+
This software reads a folder of notes you point it at and keeps a derived
|
|
40
|
+
index outside that folder. It does not upload your notes. Deleting the index
|
|
41
|
+
costs a rebuild and nothing else. See the README for what is stored and where.
|
package/README.md
CHANGED
|
@@ -1,11 +1,162 @@
|
|
|
1
1
|
# memgineering
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
One memory for the AI you connect.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
Your notes stay in a folder you own. Every agent you use — Claude Code, Codex,
|
|
6
|
+
Gemini — reads and writes the same brain through one CLI, so what you told one
|
|
7
|
+
of them is there for the next one, tomorrow, and in whatever tool you move to
|
|
8
|
+
after that.
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
```bash
|
|
11
|
+
npm i -g memgineering
|
|
12
|
+
memgineering setup
|
|
13
|
+
memgineering link ~/Documents/Notes # or: memgineering init ~/brain
|
|
14
|
+
```
|
|
9
15
|
|
|
10
|
-
|
|
16
|
+
## What it does
|
|
11
17
|
|
|
18
|
+
```bash
|
|
19
|
+
memgineering recall "how do we deploy"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
## recall: how do we deploy (2 cards)
|
|
24
|
+
|
|
25
|
+
### 1. Deploy is manual
|
|
26
|
+
stated
|
|
27
|
+
|
|
28
|
+
> launchctl kickstart on the Mac Studio, no CD pipeline
|
|
29
|
+
|
|
30
|
+
`open: deploy-manual`
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Cards first, not documents. Your agent gets the shape of what you know and a
|
|
34
|
+
handle for the one that matters, then opens only that:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
memgineering open deploy-manual # the claims behind the card
|
|
38
|
+
memgineering open deploy-manual --detail full # the whole note
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
And it writes, without stopping to ask:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
memgineering remember "deploys are manual — launchctl by hand, no CD"
|
|
45
|
+
memgineering undo # if that was wrong
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Why there is no approval step
|
|
49
|
+
|
|
50
|
+
Most memory tools queue what an agent learned and wait for you to approve it.
|
|
51
|
+
That tax lands on every true observation in order to catch the rare wrong one,
|
|
52
|
+
and what it produces in practice is a backlog nobody reads.
|
|
53
|
+
|
|
54
|
+
memgineering trades permission-before for correction-after. Every write records
|
|
55
|
+
what changed, against which bytes, and how to reverse it — in a ledger that
|
|
56
|
+
lives inside your brain and travels with it.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
memgineering log # what has changed, and what can still be undone
|
|
60
|
+
memgineering undo <op>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
The one thing it refuses to do is undo on top of an edit you made yourself. If
|
|
64
|
+
the note moved on since, it stops and says so rather than throwing your work
|
|
65
|
+
away.
|
|
66
|
+
|
|
67
|
+
## Your notes stay yours
|
|
68
|
+
|
|
69
|
+
- **Nothing is uploaded.** The index is derived and lives outside your notes
|
|
70
|
+
folder; deleting it costs a rebuild and nothing else.
|
|
71
|
+
- **Prose is never rewritten.** `revise` only touches the memory block in a
|
|
72
|
+
note's frontmatter. Your paragraphs are yours.
|
|
73
|
+
- **You decide what is read.** `link` shows the actual lines that would be
|
|
74
|
+
stored — not a description of them — before anything is indexed. Notes whose
|
|
75
|
+
content looks like a credential are refused automatically; anything else you
|
|
76
|
+
want left alone goes in `.memgdeny`.
|
|
77
|
+
- **`memgineering unlink --purge`** removes every trace this tool kept locally.
|
|
78
|
+
|
|
79
|
+
## Progressive reading
|
|
80
|
+
|
|
81
|
+
Depth is a parameter, because context costs money.
|
|
82
|
+
|
|
83
|
+
| `--detail` | what you get |
|
|
84
|
+
| ---------- | ----------------------------------------------- |
|
|
85
|
+
| `title` | just the titles |
|
|
86
|
+
| `card` | title + summary (default) |
|
|
87
|
+
| `summary` | + the note's headings |
|
|
88
|
+
| `chunks` | + every section, or one with `--section <name>` |
|
|
89
|
+
| `full` | the whole note |
|
|
90
|
+
|
|
91
|
+
`memgineering recall "deploy" --limit 1 --detail full` is "find the best match
|
|
92
|
+
and read it" in a single call.
|
|
93
|
+
|
|
94
|
+
## Several brains
|
|
95
|
+
|
|
96
|
+
A personal one, a team folder that syncs, one per repository. Which one answers
|
|
97
|
+
is decided by where you are:
|
|
98
|
+
|
|
99
|
+
1. `--vault <path>`
|
|
100
|
+
2. a `.memgineering` pointer, found by walking up from the current directory
|
|
101
|
+
3. the brain the current directory is inside
|
|
102
|
+
4. the only one linked
|
|
103
|
+
|
|
104
|
+
If nothing settles it, memgineering refuses and lists the candidates rather
|
|
105
|
+
than guessing. To bind a directory once — a repository root, say:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
memgineering use ~/brains/work # writes a relative path when it can, so it commits
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Starting a session
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
memgineering resurface
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
No query. It ranks by what has been recalled in this folder before, how
|
|
118
|
+
recently, and which of your base notes have gone unread. `memgineering setup`
|
|
119
|
+
can register it to run automatically when a Claude Code session starts.
|
|
120
|
+
|
|
121
|
+
## Commands
|
|
122
|
+
|
|
123
|
+
| | |
|
|
124
|
+
| ----------------------------------- | ----------------------------------------------------- |
|
|
125
|
+
| `recall <query>` | recall memory cards for a question |
|
|
126
|
+
| `open <ref>` | open one memory — by handle, id, path, or exact title |
|
|
127
|
+
| `remember <text>` | write something down now |
|
|
128
|
+
| `revise <ref>` | change a memory's conclusion |
|
|
129
|
+
| `undo [op]` | take back the last change, or a named one |
|
|
130
|
+
| `resurface` | what is worth having in view, unasked |
|
|
131
|
+
| `init <path>` | create a brain, laid out and ready |
|
|
132
|
+
| `link <path>` | read notes you already keep |
|
|
133
|
+
| `use [brain]` | bind this folder to one brain |
|
|
134
|
+
| `unlink` · `reindex` · `sync-rules` | brain housekeeping |
|
|
135
|
+
| `log` | what changed, and what can still be undone |
|
|
136
|
+
| `retire` · `unretire` | mark a memory no longer current, or current again |
|
|
137
|
+
| `exclude` · `unexclude` | stop reading a note entirely, or resume |
|
|
138
|
+
| `setup` | install into your agents |
|
|
139
|
+
| `update` | update memgineering itself |
|
|
140
|
+
|
|
141
|
+
Every command takes `--json`.
|
|
142
|
+
|
|
143
|
+
## Environment
|
|
144
|
+
|
|
145
|
+
| | |
|
|
146
|
+
| -------------------------- | --------------------------------------------------- |
|
|
147
|
+
| `MEMGINEERING_HOME` | state and derived index (default `~/.memgineering`) |
|
|
148
|
+
| `MEMGINEERING_JSON=1` | force JSON output without the flag |
|
|
149
|
+
| `MEMGINEERING_NO_UPDATE=1` | skip the version check for one run |
|
|
150
|
+
|
|
151
|
+
## What is coming
|
|
152
|
+
|
|
153
|
+
**0.2.0 — cloud brains.** Today a brain is a folder on this machine. Next it
|
|
154
|
+
can also live in a memgineering account, so the same memory reaches ChatGPT,
|
|
155
|
+
Claude on the web, and anywhere a browser goes. The local path is not going
|
|
156
|
+
away: what syncs is your originals, your ledger and your rules — never a
|
|
157
|
+
vendor's copy of your notes.
|
|
158
|
+
|
|
159
|
+
## Licence
|
|
160
|
+
|
|
161
|
+
Apache-2.0. See [LICENSE](./LICENSE) and [NOTICE](./NOTICE), which also states
|
|
162
|
+
the update and support policy.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memgineering
|
|
3
|
+
description: Use whenever the user refers to something they told you before, asks what was decided, or tells you something worth keeping. 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
|
+
type: skill
|
|
5
|
+
version: 0.1.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# memgineering
|
|
9
|
+
|
|
10
|
+
The user has a **brain** — a folder of their own notes that every AI tool they
|
|
11
|
+
use can read and write through the `memgineering` CLI. It outlives this
|
|
12
|
+
session and this tool. Treat it as the place where what they know actually
|
|
13
|
+
lives, and this conversation as temporary.
|
|
14
|
+
|
|
15
|
+
## When to reach for it
|
|
16
|
+
|
|
17
|
+
**Start a session by asking what you are missing.** Before working in an
|
|
18
|
+
unfamiliar folder, or when someone opens with "where were we", "what should I
|
|
19
|
+
know", "I've been away":
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
memgineering resurface
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
No query — it ranks by what has been recalled here before, how recently, and
|
|
26
|
+
which of their core notes have gone unread. It is the answer to a vague
|
|
27
|
+
question that recall cannot serve, because there is nothing to search for yet.
|
|
28
|
+
|
|
29
|
+
**Recall before answering** anything that sounds like it was settled before:
|
|
30
|
+
|
|
31
|
+
- "what did we decide about…", "how do I deploy this again", "왜 이렇게 했더라"
|
|
32
|
+
- any question about _their_ project, setup, preferences, or past reasoning
|
|
33
|
+
- before repeating advice you have no evidence they wanted
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
memgineering recall "<the question, in their words>"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
You get cards: title, one-line summary, and an `open:` handle. Open the one
|
|
40
|
+
that matters rather than all of them.
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
memgineering open <handle> # claims behind the card
|
|
44
|
+
memgineering open <handle> --detail full # the whole note
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`open` also takes a note's exact title or its path, so you do not need to
|
|
48
|
+
recall first when you already know what you want.
|
|
49
|
+
|
|
50
|
+
**Remember when you learn something durable** — a decision, a constraint, a
|
|
51
|
+
correction the user made, how something actually works:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
memgineering remember "deploys are manual — launchctl by hand, no CD"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
No approval step, by design. It is recorded and reversible (`memgineering
|
|
58
|
+
undo`), so the cost of a wrong entry is one command, not a permanent mistake.
|
|
59
|
+
Do not ask permission for ordinary observations — write them.
|
|
60
|
+
|
|
61
|
+
**Revise when a conclusion changes:**
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
memgineering revise <handle> --claim "Deploying is manual now." --summary "manual only"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## What to raise with the user rather than just doing
|
|
68
|
+
|
|
69
|
+
The tool does not gate writes; your judgement does. Tell them — plainly, once
|
|
70
|
+
— when:
|
|
71
|
+
|
|
72
|
+
- the change touches `01_BASE/` (their identity, preferences, boundaries,
|
|
73
|
+
tooling). The output marks these `⚠ critical target`.
|
|
74
|
+
- you are recording something they said in passing that they may not want kept
|
|
75
|
+
- what you learned contradicts a memory that is currently marked current
|
|
76
|
+
|
|
77
|
+
Everything else: write it and mention it in a sentence.
|
|
78
|
+
|
|
79
|
+
## Depth costs context — ask for what you need
|
|
80
|
+
|
|
81
|
+
`recall` returns cards, not notes, so calling it often is cheap. Reach for more
|
|
82
|
+
only when a summary is not enough:
|
|
83
|
+
|
|
84
|
+
| depth | what you get |
|
|
85
|
+
| ------------------ | ----------------------------------------------- |
|
|
86
|
+
| `--detail card` | title + summary (default) |
|
|
87
|
+
| `--detail summary` | + the note's headings |
|
|
88
|
+
| `--detail chunks` | + every section, or one with `--section <name>` |
|
|
89
|
+
| `--detail full` | the whole note |
|
|
90
|
+
|
|
91
|
+
`recall "<q>" --limit 1 --detail full` is "find the best match and read it" in
|
|
92
|
+
one call.
|
|
93
|
+
|
|
94
|
+
## At the start of a session
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
memgineering resurface
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Ranks by what has been recalled in this folder before, how recently, and which
|
|
101
|
+
of their base notes have gone unread. No query needed — this is the one that
|
|
102
|
+
tells you what you should already know here.
|
|
103
|
+
|
|
104
|
+
## Rules
|
|
105
|
+
|
|
106
|
+
- **Never edit brain files directly.** Use the CLI: it records what changed and
|
|
107
|
+
keeps `undo` working. A hand edit is invisible to that.
|
|
108
|
+
- **Never invent a handle.** They come from `recall`, `resurface` or `open`.
|
|
109
|
+
- **Full ids in durable places.** The short handle is for this conversation;
|
|
110
|
+
when you save a reference in your own memory or a document, use the full `id:`
|
|
111
|
+
that `open` prints.
|
|
112
|
+
- **Nothing matched is a real answer.** Say the brain has nothing on it rather
|
|
113
|
+
than filling the gap with a guess.
|
|
114
|
+
- **Their notes are theirs.** `revise` only touches the memory block in
|
|
115
|
+
frontmatter; prose is never rewritten by this tool, and should not be
|
|
116
|
+
rewritten by you without being asked.
|
|
117
|
+
|
|
118
|
+
If `memgineering: command not found`, install with `npm i -g memgineering`,
|
|
119
|
+
then `memgineering setup`.
|