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/docs/share.md CHANGED
@@ -1,9 +1,9 @@
1
- # Sharing memories with teammates
1
+ # Sharing context with teammates
2
2
 
3
- `threadnote share` lets a small team keep a curated set of durable memories in a
4
- git repository so every member's local agent can recall them. Personal handoffs,
5
- preferences, and unpublished durable notes stay local; only memories you
6
- explicitly publish leave your machine.
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 memories into OpenViking.
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 the `durable/` kind is shareable. `handoffs/`, `preferences/`,
180
- `incidents/`, and other lifecycle kinds stay local by construction — both
181
- the initial ingest (`share init`) and the sync-pull reindex (`share sync`)
182
- skip any file outside `durable/`.
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.2",
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": "GPL-3.0-or-later",
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": "^14.0.3",
75
+ "commander": "^15.0.0",
75
76
  "esbuild": "^0.27.7",
76
77
  "eslint": "^10.3.0",
77
78
  "globals": "^17.6.0",