threadnote 1.1.2 → 1.1.3
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/LICENSE +67 -80
- package/README.md +19 -2
- package/THIRD_PARTY.md +36 -0
- package/dist/mcp_server.cjs +566 -3
- package/dist/threadnote.cjs +429 -8
- package/docs/agent-instructions.md +22 -5
- package/docs/index.html +2 -2
- package/docs/share.md +100 -10
- package/package.json +4 -3
package/docs/share.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# Sharing
|
|
1
|
+
# Sharing context with teammates
|
|
2
2
|
|
|
3
|
-
`threadnote share` lets a small team keep
|
|
4
|
-
git repository so every member's local agent can recall them.
|
|
5
|
-
preferences, and unpublished durable notes stay local; only
|
|
6
|
-
explicitly publish
|
|
3
|
+
`threadnote share` lets a small team keep curated durable memories and agent
|
|
4
|
+
artifacts in a git repository so every member's local agent can recall them.
|
|
5
|
+
Personal handoffs, preferences, and unpublished durable notes stay local; only
|
|
6
|
+
content you explicitly publish leaves your machine.
|
|
7
7
|
|
|
8
8
|
## Model in one screen
|
|
9
9
|
|
|
@@ -34,7 +34,7 @@ threadnote share init --team friends git@github.com:you/friends-memories.git
|
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
`share init` clones the remote into your local memory tree and ingests any
|
|
37
|
-
existing markdown
|
|
37
|
+
existing shareable markdown into OpenViking.
|
|
38
38
|
|
|
39
39
|
### See what's configured
|
|
40
40
|
|
|
@@ -86,6 +86,95 @@ Threadnote rewrites the shared memory in place, strips local-only provenance
|
|
|
86
86
|
headers, commits, and pushes the shared repo. You do not need to store a
|
|
87
87
|
personal replacement and run `share publish` again.
|
|
88
88
|
|
|
89
|
+
### Share a skill or command
|
|
90
|
+
|
|
91
|
+
Shared agent artifacts live in the same team repo, but outside `durable/`:
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
agent-artifacts/
|
|
95
|
+
skills/codex/<name>/SKILL.md
|
|
96
|
+
skills/claude/<name>/SKILL.md
|
|
97
|
+
commands/claude/<name>.md
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Publish a local artifact:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
threadnote share publish-artifact ~/.codex/skills/reviewer/SKILL.md
|
|
104
|
+
threadnote share publish-artifact ~/.claude/skills/triage/SKILL.md
|
|
105
|
+
threadnote share publish-artifact ~/.claude/commands/review-pr.md
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Path inference handles the common Codex and Claude locations. If the file is
|
|
109
|
+
somewhere else, pass metadata explicitly:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
threadnote share publish-artifact ./SKILL.md --agent codex --kind skill --name reviewer
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Useful flags:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
threadnote share publish-artifact <path> --preview
|
|
119
|
+
threadnote share publish-artifact <path> --redact
|
|
120
|
+
threadnote share publish-artifact <path> --force
|
|
121
|
+
threadnote share publish-artifact <path> --no-push
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
`publish-artifact` runs the same scrubber as memory publish, writes the artifact
|
|
125
|
+
under `agent-artifacts/`, ingests it into OpenViking under the shared team
|
|
126
|
+
namespace, commits, and pushes. Existing artifacts with different content are
|
|
127
|
+
not overwritten unless `--force` is passed.
|
|
128
|
+
|
|
129
|
+
Agents can do the same through MCP:
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
share_skill({"path":"~/.codex/skills/reviewer/SKILL.md"})
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Agents can also list and install shared artifacts through MCP:
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
list_shared_skills({})
|
|
139
|
+
install_shared_skill({"name":"reviewer","agent":"codex","kind":"skill"})
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
`list_shared_skills` syncs configured shared repos before listing and reports
|
|
143
|
+
one of:
|
|
144
|
+
|
|
145
|
+
- `not_installed`
|
|
146
|
+
- `current`
|
|
147
|
+
- `update_available`
|
|
148
|
+
- `local_modified`
|
|
149
|
+
- `remote_changed_and_local_modified`
|
|
150
|
+
|
|
151
|
+
### Install shared artifacts locally
|
|
152
|
+
|
|
153
|
+
Shared artifacts are recallable after sync, but they are not installed into
|
|
154
|
+
agent-native locations automatically. Installation is opt-in:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
threadnote share install-artifacts # preview only
|
|
158
|
+
threadnote share install-artifacts --apply # write files locally
|
|
159
|
+
threadnote share install-artifacts --name reviewer --agent codex --kind skill --apply
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Install targets are namespaced by Threadnote team to avoid colliding with
|
|
163
|
+
personal files:
|
|
164
|
+
|
|
165
|
+
```text
|
|
166
|
+
~/.codex/skills/threadnote/<team>/<name>/SKILL.md
|
|
167
|
+
~/.claude/skills/threadnote/<team>/<name>/SKILL.md
|
|
168
|
+
~/.claude/commands/threadnote/<team>/<name>.md
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
If a target already exists with different content, installation refuses to
|
|
172
|
+
overwrite local modifications unless `--force` is passed. Remote updates are
|
|
173
|
+
applied by running the same install command again; Threadnote tracks the last
|
|
174
|
+
installed shared hash in a sidecar metadata file next to the installed
|
|
175
|
+
artifact. Start a new agent session after installing if that agent snapshots
|
|
176
|
+
skills or commands at startup.
|
|
177
|
+
|
|
89
178
|
### Keep teammates' updates current
|
|
90
179
|
|
|
91
180
|
Threadnote does a periodic background `git fetch` for configured share teams.
|
|
@@ -176,10 +265,11 @@ updates the git `origin` URL and verifies it with `git fetch`.
|
|
|
176
265
|
- linux home paths (`/home/<you>/...`) → `<local-path>`
|
|
177
266
|
- The scrubber complements but does not replace human review. Strip the value,
|
|
178
267
|
preview with `--preview`, and then publish.
|
|
179
|
-
- Only
|
|
180
|
-
`incidents/`, and other lifecycle
|
|
181
|
-
|
|
182
|
-
skip any file outside
|
|
268
|
+
- Only `durable/` memories and `agent-artifacts/` markdown files are
|
|
269
|
+
shareable. `handoffs/`, `preferences/`, `incidents/`, and other lifecycle
|
|
270
|
+
kinds stay local by construction — both the initial ingest (`share init`) and
|
|
271
|
+
the sync-pull reindex (`share sync`) skip any file outside the shareable
|
|
272
|
+
top-level directories.
|
|
183
273
|
- `share publish` deletes the personal copy after publishing. If you want to
|
|
184
274
|
keep both, copy the memory to a new URI first (`ov read` then
|
|
185
275
|
`threadnote remember`).
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "threadnote",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.3",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "dist/threadnote.cjs",
|
|
6
6
|
"description": "Shared local context and handoffs for development agents",
|
|
7
|
-
"license": "
|
|
7
|
+
"license": "AGPL-3.0-or-later",
|
|
8
8
|
"homepage": "https://github.com/Kashkovsky/threadnote#readme",
|
|
9
9
|
"bugs": {
|
|
10
10
|
"url": "https://github.com/Kashkovsky/threadnote/issues"
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"dist/",
|
|
36
36
|
"docs/",
|
|
37
37
|
"LICENSE",
|
|
38
|
+
"THIRD_PARTY.md",
|
|
38
39
|
"manager/",
|
|
39
40
|
"README.md",
|
|
40
41
|
"scripts/"
|
|
@@ -71,7 +72,7 @@
|
|
|
71
72
|
"@types/react": "^19.2.16",
|
|
72
73
|
"@types/react-dom": "^19.2.3",
|
|
73
74
|
"@vitest/coverage-v8": "^4.1.7",
|
|
74
|
-
"commander": "^
|
|
75
|
+
"commander": "^15.0.0",
|
|
75
76
|
"esbuild": "^0.27.7",
|
|
76
77
|
"eslint": "^10.3.0",
|
|
77
78
|
"globals": "^17.6.0",
|