orbit-thread 0.0.0-stage → 1.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 +31 -0
- package/CONTRIBUTING.md +40 -0
- package/LICENSE +21 -0
- package/PRIVACY.md +9 -0
- package/README.md +319 -2
- package/SECURITY.md +18 -0
- package/bin/orbit-handoff.mjs +8 -0
- package/bin/orbit-thread.mjs +8 -0
- package/docs/PUBLISHING.md +113 -0
- package/docs/SUBMISSION.md +72 -0
- package/docs/VALIDATION.md +179 -0
- package/lib/cli.mjs +296 -0
- package/package.json +25 -4
- package/plugin/.claude-plugin/plugin.json +16 -0
- package/plugin/LICENSE +21 -0
- package/plugin/README.md +26 -0
- package/plugin/assets/icon.png +0 -0
- package/plugin/plugin.json +34 -0
- package/plugin/skills/handoff/SKILL.md +46 -0
- package/plugin/skills/handoff/agents/openai.yaml +6 -0
- package/plugin/skills/handoff/scripts/write_handoff.sh +33 -0
- package/plugin/skills/orbit-setup/SKILL.md +42 -0
- package/plugin/skills/orbit-setup/agents/openai.yaml +6 -0
- package/plugin/skills/orbit-setup/scripts/project_config.mjs +168 -0
- package/plugin/skills/orbit-setup/scripts/setup_project.mjs +500 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.1.0 — 7 October 2026
|
|
4
|
+
|
|
5
|
+
- Rename the product from **Orbit Handoff** to **Orbit Thread**.
|
|
6
|
+
- Publish the feature release under the new npm package name `orbit-thread`; keep historical `orbit-handoff` releases immutable.
|
|
7
|
+
- Add `orbit-setup` for Codex and Claude Code.
|
|
8
|
+
- Add `npx orbit-thread setup`; keep `init` as an alias.
|
|
9
|
+
- Create only missing lightweight PRODUCT, DESIGN, ARCHITECTURE, SECURITY and ROADMAP living docs while preserving existing equivalents.
|
|
10
|
+
- Add selective context-loading, in-place living-doc updates, fresh-context recovery and bounded-subagent rules.
|
|
11
|
+
- Add `configure` for project-specific subagent model/reasoning preferences stored in `.orbit-thread/config.json`.
|
|
12
|
+
- Add `doctor` for full continuity/config/document-health checks; keep `check` as the lightweight legacy managed-skill installation check.
|
|
13
|
+
- Allow Handoff to be invoked implicitly at meaningful verified checkpoints and completed coding tasks.
|
|
14
|
+
- Keep `HANDOFF-STATE.md` overwrite-only, evidence-only and capped at 50 lines.
|
|
15
|
+
- Migrate compatible Orbit Handoff project state to Orbit Thread while preserving locally edited managed files.
|
|
16
|
+
- Reduce CI noise by running feature work on pull requests, main on push, and package/release checks once after the cross-platform test matrix.
|
|
17
|
+
|
|
18
|
+
## 1.0.1 — 5 October 2026
|
|
19
|
+
|
|
20
|
+
- Confirm successful public npm publication and make `npx orbit-handoff install` the primary installation route.
|
|
21
|
+
- Remove stale pre-publication claims and record public package smoke testing.
|
|
22
|
+
- Update release and submission artifact references; directory submissions remain pending.
|
|
23
|
+
- Keep the installer, canonical skill and handoff writer unchanged.
|
|
24
|
+
|
|
25
|
+
## 1.0.0 — 5 October 2026
|
|
26
|
+
|
|
27
|
+
- Publish the proven handoff workflow as Orbit Handoff for Codex and Claude Code.
|
|
28
|
+
- Add interactive installation and ownership-aware init, check, update and uninstall.
|
|
29
|
+
- Package one canonical skill for Claude marketplaces and portable Agent Plugins.
|
|
30
|
+
- Preserve validated atomic handoffs, the 50-line limit and the local-only runtime.
|
|
31
|
+
- Add macOS and Linux tests, release packaging and directory submission guidance.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Thanks for helping improve Orbit Thread. Open an issue for a bug/focused proposal, or send a pull request with a clear explanation and relevant tests. Use synthetic repositories and credentials in reproductions.
|
|
4
|
+
|
|
5
|
+
Requirements: Node.js 20+, Python 3 for packaging, Git and a POSIX shell. The project has no npm runtime dependencies.
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm test
|
|
9
|
+
npm run validate
|
|
10
|
+
npm run scan:public
|
|
11
|
+
npm run build:plugin
|
|
12
|
+
npm pack
|
|
13
|
+
npm run smoke:pack
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Keep canonical skills under:
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
plugin/skills/handoff/
|
|
20
|
+
plugin/skills/orbit-setup/
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Do not create divergent Codex and Claude implementations.
|
|
24
|
+
|
|
25
|
+
Handoff changes must preserve the 50-line cap, overwrite-only current state, validation before atomic replacement, secret backstop, failed-write preservation, no temporary residue, no network calls and no Git mutation.
|
|
26
|
+
|
|
27
|
+
Setup/configuration changes must preserve existing project docs and unrelated instructions, avoid duplicate root/docs files, stay idempotent, keep living docs as current truth rather than changelogs, and keep user-configured subagent preferences inside the managed Orbit Thread block.
|
|
28
|
+
|
|
29
|
+
Installer/update tests must cover migration from compatible Orbit Handoff installations, edited-file preservation and user-owned content.
|
|
30
|
+
|
|
31
|
+
Packaging changes should also be validated with current Claude Code:
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
claude plugin validate ./plugin --strict
|
|
35
|
+
claude plugin validate . --strict
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Public-directory validation is separate from provider approval.
|
|
39
|
+
|
|
40
|
+
Use British English in documentation.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Shabih Anwar
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/PRIVACY.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Privacy
|
|
2
|
+
|
|
3
|
+
Orbit Thread has no telemetry, remote service, external account or MCP server.
|
|
4
|
+
|
|
5
|
+
The Handoff writer processes input locally and saves `HANDOFF-STATE.md`. Orbit Setup writes local/project documentation, managed agent instructions, a small project configuration file and local ownership state. The CLI records hashes and the exact managed instruction blocks it adds.
|
|
6
|
+
|
|
7
|
+
Installation through npm or a plugin marketplace uses the relevant registry or Git host. Your coding agent's model calls and privacy settings remain governed by its provider. Orbit Thread's local writer and setup/configuration scripts do not send repository content anywhere.
|
|
8
|
+
|
|
9
|
+
Keep secrets, credentials, personal data and sensitive production data out of handoffs and living docs. Pattern checks are limited and are not a data-loss-prevention system. `HANDOFF-STATE.md` and Orbit Thread's local ownership state are Git-ignored by setup; ignoring a previously tracked file does not untrack it.
|
package/README.md
CHANGED
|
@@ -1,3 +1,320 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Orbit Thread
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Keep coding agents aligned across long projects without carrying a huge conversation forever.**
|
|
4
|
+
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](https://github.com/shab1h-gh/orbit-thread/actions/workflows/ci.yml)
|
|
7
|
+
|
|
8
|
+
Orbit Thread is a small local continuity layer for Codex and Claude Code. It has two reusable skills:
|
|
9
|
+
|
|
10
|
+
- **Orbit Setup** prepares a project with lightweight living documentation and token-efficient agent rules.
|
|
11
|
+
- **Handoff** keeps one short `HANDOFF-STATE.md` current so a fresh session can resume from verified state instead of replaying a large chat history.
|
|
12
|
+
|
|
13
|
+
Tracked source, Git history and living project docs remain authoritative. The handoff is current execution state, not a changelog.
|
|
14
|
+
|
|
15
|
+
## Quick start
|
|
16
|
+
|
|
17
|
+
From the project you want to configure:
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
npx orbit-thread install
|
|
21
|
+
npx orbit-thread setup
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Choose Codex, Claude Code or both when prompted.
|
|
25
|
+
|
|
26
|
+
Non-interactive:
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
npx orbit-thread install --agent both --scope project --yes
|
|
30
|
+
npx orbit-thread setup --agent both --yes
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Then use the skills directly:
|
|
34
|
+
|
|
35
|
+
| Agent | Setup | Handoff |
|
|
36
|
+
| --- | --- | --- |
|
|
37
|
+
| Codex standalone | `$orbit-setup` | `$handoff` |
|
|
38
|
+
| Claude Code standalone | `/orbit-setup` | `/handoff` |
|
|
39
|
+
| Claude plugin | `/orbit-thread:orbit-setup` | `/orbit-thread:handoff` |
|
|
40
|
+
|
|
41
|
+
## What Orbit Setup creates
|
|
42
|
+
|
|
43
|
+
Orbit Setup is designed to run before the first substantial coding prompt, or later to upgrade an existing project.
|
|
44
|
+
|
|
45
|
+
If equivalent files do not already exist, it creates:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
project/
|
|
49
|
+
├── AGENTS.md
|
|
50
|
+
├── CLAUDE.md # when Claude is selected
|
|
51
|
+
├── .orbit-thread/
|
|
52
|
+
│ └── config.json # tracked project preferences
|
|
53
|
+
└── docs/
|
|
54
|
+
├── PRODUCT.md
|
|
55
|
+
├── DESIGN.md
|
|
56
|
+
├── ARCHITECTURE.md
|
|
57
|
+
├── SECURITY.md
|
|
58
|
+
└── ROADMAP.md
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
At the first meaningful checkpoint, Handoff creates:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
HANDOFF-STATE.md # local, Git-ignored, overwrite-only
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Orbit Thread also keeps its small internal ownership state local and Git-ignored.
|
|
68
|
+
|
|
69
|
+
Existing product/design/architecture/security/roadmap files at either the repository root or under `docs/` are preserved instead of duplicated.
|
|
70
|
+
|
|
71
|
+
### Living-doc rules
|
|
72
|
+
|
|
73
|
+
The generated project instructions tell the agent to:
|
|
74
|
+
|
|
75
|
+
- load only the docs relevant to the current task;
|
|
76
|
+
- inspect only the source files it actually needs;
|
|
77
|
+
- keep `PRODUCT.md`, `DESIGN.md`, `ARCHITECTURE.md`, `SECURITY.md` and `ROADMAP.md` as current truth;
|
|
78
|
+
- update affected sections **in place** after verified changes;
|
|
79
|
+
- never append session diaries or duplicate superseded sections;
|
|
80
|
+
- keep Git as history;
|
|
81
|
+
- never rewrite an applied migration;
|
|
82
|
+
- run the smallest relevant verification before claiming completion.
|
|
83
|
+
|
|
84
|
+
The document-routing rules are deliberately selective:
|
|
85
|
+
|
|
86
|
+
- product behaviour, copy or scope → `PRODUCT.md`
|
|
87
|
+
- UI/UX → `DESIGN.md`
|
|
88
|
+
- runtime, data flow, infrastructure or integrations → `ARCHITECTURE.md`
|
|
89
|
+
- auth, tenancy, secrets or other security-sensitive work → `SECURITY.md`
|
|
90
|
+
- future planning only → `ROADMAP.md`
|
|
91
|
+
|
|
92
|
+
This keeps routine tasks from loading every project document into context.
|
|
93
|
+
|
|
94
|
+
## Checkpoints and fresh-context recovery
|
|
95
|
+
|
|
96
|
+
Orbit Thread asks the coding agent to run Handoff:
|
|
97
|
+
|
|
98
|
+
- after a meaningful verified milestone that changed repository state or durable project truth;
|
|
99
|
+
- after a completed coding task with such changes, before the final reply;
|
|
100
|
+
- before `/clear`, session end, or a usage/context stop when the agent receives warning.
|
|
101
|
+
|
|
102
|
+
It intentionally skips read-only questions and trivial edits.
|
|
103
|
+
|
|
104
|
+
Each successful checkpoint **overwrites** the previous `HANDOFF-STATE.md`. It does not grow into a development diary.
|
|
105
|
+
|
|
106
|
+
After a fresh, cleared or recovered session, the generated project rules tell the agent to recover in this order:
|
|
107
|
+
|
|
108
|
+
1. read `HANDOFF-STATE.md` once if present;
|
|
109
|
+
2. inspect current branch/status/diff/recent Git log;
|
|
110
|
+
3. load only relevant living docs;
|
|
111
|
+
4. inspect only source needed for the recorded next action;
|
|
112
|
+
5. preserve valid uncommitted work and continue from the highest verified milestone.
|
|
113
|
+
|
|
114
|
+
## Handoff format
|
|
115
|
+
|
|
116
|
+
A handoff is normally about 30 lines and has a hard cap of 50:
|
|
117
|
+
|
|
118
|
+
```markdown
|
|
119
|
+
# Handoff State
|
|
120
|
+
|
|
121
|
+
Updated: 07-10-2026 00:30
|
|
122
|
+
|
|
123
|
+
## Current objective
|
|
124
|
+
- Finish account-security settings.
|
|
125
|
+
|
|
126
|
+
## Completed milestones
|
|
127
|
+
- Added the settings route.
|
|
128
|
+
- Connected password change and session revocation.
|
|
129
|
+
|
|
130
|
+
## In progress
|
|
131
|
+
- Passkey-management UI.
|
|
132
|
+
|
|
133
|
+
## Open issues / risks
|
|
134
|
+
- Passkey removal still needs a browser test.
|
|
135
|
+
|
|
136
|
+
## Immediate next steps
|
|
137
|
+
1. Finish passkey management.
|
|
138
|
+
2. Run the authentication suite.
|
|
139
|
+
|
|
140
|
+
## Verification
|
|
141
|
+
- Typecheck passed.
|
|
142
|
+
- Unit tests passed: 42/42.
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
The writer validates before replacing the previous handoff, rejects obvious secret-like content, writes atomically, makes no network calls and does not mutate Git.
|
|
146
|
+
|
|
147
|
+
## Subagent configuration
|
|
148
|
+
|
|
149
|
+
Orbit Thread defaults to **no subagents unless they genuinely help**, with a maximum of two and no recursive subagents.
|
|
150
|
+
|
|
151
|
+
You can save project-specific model/reasoning preferences without hand-editing `AGENTS.md`:
|
|
152
|
+
|
|
153
|
+
```sh
|
|
154
|
+
npx orbit-thread configure --agent claude \
|
|
155
|
+
--model "Claude Sonnet 5.5" --effort low
|
|
156
|
+
|
|
157
|
+
npx orbit-thread configure --agent codex \
|
|
158
|
+
--model "GPT-6.1 Sol" --reasoning high
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Change the maximum:
|
|
162
|
+
|
|
163
|
+
```sh
|
|
164
|
+
npx orbit-thread configure --max-subagents 1
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Disable subagents:
|
|
168
|
+
|
|
169
|
+
```sh
|
|
170
|
+
npx orbit-thread configure --max-subagents 0
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Show configuration:
|
|
174
|
+
|
|
175
|
+
```sh
|
|
176
|
+
npx orbit-thread configure --show
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Reset saved subagent preferences:
|
|
180
|
+
|
|
181
|
+
```sh
|
|
182
|
+
npx orbit-thread configure --agent claude --reset-subagents
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Preferences are stored in `.orbit-thread/config.json` and reflected in Orbit Thread's managed section of `AGENTS.md`. They are preferences rather than hard dependencies: an unavailable exact model setting should not block useful work.
|
|
186
|
+
|
|
187
|
+
## Project doctor
|
|
188
|
+
|
|
189
|
+
Run:
|
|
190
|
+
|
|
191
|
+
```sh
|
|
192
|
+
npx orbit-thread doctor
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
It checks the managed skill installation and project continuity setup, including living docs, config, managed agent blocks, Git-ignore rules, duplicate root/docs files and handoff size.
|
|
196
|
+
|
|
197
|
+
`npx orbit-thread check` remains the lightweight managed-skill installation check kept for Orbit Handoff compatibility; use `doctor` for the full project health check.
|
|
198
|
+
|
|
199
|
+
## Installation
|
|
200
|
+
|
|
201
|
+
Requirements:
|
|
202
|
+
|
|
203
|
+
- Node.js 20+
|
|
204
|
+
- Git for normal repository workflows
|
|
205
|
+
- a POSIX shell and standard Unix utilities for the handoff writer
|
|
206
|
+
|
|
207
|
+
macOS and Linux are supported. Native Windows is not currently supported; WSL is the expected route.
|
|
208
|
+
|
|
209
|
+
### npm / standalone Codex and Claude Code
|
|
210
|
+
|
|
211
|
+
```sh
|
|
212
|
+
npx orbit-thread install
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Project installs use:
|
|
216
|
+
|
|
217
|
+
| Agent | Project location |
|
|
218
|
+
| --- | --- |
|
|
219
|
+
| Codex | `.agents/skills/handoff/` and `.agents/skills/orbit-setup/` |
|
|
220
|
+
| Claude Code | `.claude/skills/handoff/` and `.claude/skills/orbit-setup/` |
|
|
221
|
+
|
|
222
|
+
User/global installs use the equivalent `~/.agents/skills/` or `~/.claude/skills/` locations.
|
|
223
|
+
|
|
224
|
+
### Claude GitHub marketplace
|
|
225
|
+
|
|
226
|
+
Inside Claude Code:
|
|
227
|
+
|
|
228
|
+
```text
|
|
229
|
+
/plugin marketplace add shab1h-gh/orbit-thread
|
|
230
|
+
/plugin install orbit-thread@orbit-thread
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Equivalent shell commands:
|
|
234
|
+
|
|
235
|
+
```sh
|
|
236
|
+
claude plugin marketplace add shab1h-gh/orbit-thread
|
|
237
|
+
claude plugin install orbit-thread@orbit-thread
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
The GitHub marketplace route is separate from Anthropic's official public directory.
|
|
241
|
+
|
|
242
|
+
## Commands
|
|
243
|
+
|
|
244
|
+
| Command | Purpose |
|
|
245
|
+
| --- | --- |
|
|
246
|
+
| `npx orbit-thread install` | Install both skills for selected agent(s). |
|
|
247
|
+
| `npx orbit-thread setup` | Prepare/upgrade the current project workflow and living docs. |
|
|
248
|
+
| `npx orbit-thread configure` | Configure project subagent preferences. |
|
|
249
|
+
| `npx orbit-thread doctor` | Check installation and project continuity health. |
|
|
250
|
+
| `npx orbit-thread@latest update` | Upgrade unchanged managed skill files. |
|
|
251
|
+
| `npx orbit-thread uninstall` | Remove managed skills/instruction blocks while preserving project-owned docs/config/state. |
|
|
252
|
+
| `npx orbit-thread init` | Backwards-compatible alias for `setup`. |
|
|
253
|
+
| `npx orbit-thread check` | Check managed skill installation (kept for Orbit Handoff compatibility). |
|
|
254
|
+
|
|
255
|
+
Common options:
|
|
256
|
+
|
|
257
|
+
```text
|
|
258
|
+
--agent codex|claude|both
|
|
259
|
+
--scope project|user
|
|
260
|
+
--yes
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Migrating from Orbit Handoff 1.0.x
|
|
264
|
+
|
|
265
|
+
Orbit Thread is the successor to **Orbit Handoff**.
|
|
266
|
+
|
|
267
|
+
Existing npm-managed users should install/update through the new package name:
|
|
268
|
+
|
|
269
|
+
```sh
|
|
270
|
+
npx orbit-thread@latest update --agent both --scope project --yes
|
|
271
|
+
npx orbit-thread@latest setup --agent both --yes
|
|
272
|
+
npx orbit-thread doctor --agent both --scope project
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
The v1.1 CLI recognises the managed Orbit Handoff installation/state and migrates it without intentionally overwriting local edits. The old `orbit-handoff` binary name remains an alias inside the Orbit Thread package for compatibility.
|
|
276
|
+
|
|
277
|
+
The historical `orbit-handoff` npm releases remain immutable.
|
|
278
|
+
|
|
279
|
+
For Claude GitHub-marketplace users, update/reinstall from the renamed repository and run:
|
|
280
|
+
|
|
281
|
+
```text
|
|
282
|
+
/orbit-thread:orbit-setup
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
## Updating Orbit Thread
|
|
286
|
+
|
|
287
|
+
```sh
|
|
288
|
+
npx orbit-thread@latest update --agent both --scope project --yes
|
|
289
|
+
npx orbit-thread@latest setup --agent both --yes
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
The first command updates unchanged managed skill files. The second updates the project-managed rules and creates only missing living docs.
|
|
293
|
+
|
|
294
|
+
Locally edited managed skill files are never force-overwritten.
|
|
295
|
+
|
|
296
|
+
## Security and privacy
|
|
297
|
+
|
|
298
|
+
Orbit Thread is local-first.
|
|
299
|
+
|
|
300
|
+
The handoff writer makes no network calls and does not mutate Git. Secret detection is a backstop, not a data-loss-prevention system, so never place credentials, personal data or sensitive production information in handoffs or project docs.
|
|
301
|
+
|
|
302
|
+
The installer refuses unmanaged skill collisions and protects locally modified managed files. Setup preserves unrelated instructions and existing project docs.
|
|
303
|
+
|
|
304
|
+
There is no Orbit Thread telemetry. npm, GitHub, Claude and OpenAI still operate under their own service/privacy policies.
|
|
305
|
+
|
|
306
|
+
See [SECURITY.md](SECURITY.md) and [PRIVACY.md](PRIVACY.md).
|
|
307
|
+
|
|
308
|
+
## Provider directories
|
|
309
|
+
|
|
310
|
+
The repository includes a portable skills-only plugin ZIP suitable for OpenAI's plugin upload flow and a Claude plugin manifest suitable for Anthropic/GitHub distribution.
|
|
311
|
+
|
|
312
|
+
Public OpenAI and Anthropic directory approval is separate from npm/GitHub installation. See [docs/SUBMISSION.md](docs/SUBMISSION.md).
|
|
313
|
+
|
|
314
|
+
## Contributing
|
|
315
|
+
|
|
316
|
+
Issues and focused pull requests are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
317
|
+
|
|
318
|
+
## Licence
|
|
319
|
+
|
|
320
|
+
[MIT](LICENSE) — Shabih Anwar.
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Security
|
|
2
|
+
|
|
3
|
+
Orbit Thread keeps handoff and project-continuity state local.
|
|
4
|
+
|
|
5
|
+
The Handoff writer makes no network requests and does not mutate Git. It validates a temporary file before replacing the previous handoff with a same-directory atomic rename. Failed validation leaves the previous file intact and removes temporary residue. New handoffs inherit `mktemp`'s restrictive permissions.
|
|
6
|
+
|
|
7
|
+
The secret check is a backstop for recognisable credential/private-key patterns, not a complete DLP system. Rejection messages include line numbers rather than matched content.
|
|
8
|
+
|
|
9
|
+
The npm CLI copies the same canonical skills to supported agents. It records file hashes, refuses unmanaged skill collisions or locally edited managed installations, preserves edited files during uninstall and rejects symlinked destinations. Setup uses ownership-tracked instruction blocks, preserves unrelated instructions and existing living docs, and writes project subagent preferences only into Orbit Thread's managed AGENTS.md block.
|
|
10
|
+
|
|
11
|
+
There are no runtime npm dependencies or postinstall hooks.
|
|
12
|
+
|
|
13
|
+
`npx` and plugin installation may access their registries or GitHub. Your coding agent uses its own provider and permissions; Orbit Thread does not expand those permissions or sandbox the host agent.
|
|
14
|
+
|
|
15
|
+
Please report vulnerabilities privately through the repository security advisory form after the repository rename:
|
|
16
|
+
`https://github.com/shab1h-gh/orbit-thread/security/advisories/new`
|
|
17
|
+
|
|
18
|
+
Use synthetic data in reports. Never put live secrets or private project state in public issues.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# npm publication and releases
|
|
2
|
+
|
|
3
|
+
Orbit Thread v1.1.0 is the successor to Orbit Handoff v1.0.x.
|
|
4
|
+
|
|
5
|
+
Historical `orbit-handoff@1.0.0` and `orbit-handoff@1.0.1` releases are immutable. Do not republish, unpublish or move their release tags.
|
|
6
|
+
|
|
7
|
+
The new primary package is:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
orbit-thread
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Release checks
|
|
14
|
+
|
|
15
|
+
Before publication:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
npm test
|
|
19
|
+
npm run validate
|
|
20
|
+
npm run scan:public
|
|
21
|
+
npm run build:plugin
|
|
22
|
+
npm pack
|
|
23
|
+
npm run smoke:pack
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Also validate the Claude plugin with the currently installed Claude Code release:
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
claude plugin validate ./plugin --strict
|
|
30
|
+
claude plugin validate . --strict
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Inspect:
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
orbit-thread-1.1.0.tgz
|
|
37
|
+
dist/orbit-thread-plugin-1.1.0.zip
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Confirm both canonical skills are present:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
plugin/skills/handoff/
|
|
44
|
+
plugin/skills/orbit-setup/
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
and that the packed CLI can install, setup, configure, doctor, update and uninstall in a disposable repository.
|
|
48
|
+
|
|
49
|
+
## Publish
|
|
50
|
+
|
|
51
|
+
After release checks pass:
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
npm publish ./orbit-thread-1.1.0.tgz --access public --registry https://registry.npmjs.org/
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Complete npm's normal browser/2FA challenge if prompted. Never weaken npm account security to automate publication.
|
|
58
|
+
|
|
59
|
+
If interactive authentication is unavailable to the release agent, stop with the verified tarball and give the publisher the exact command above.
|
|
60
|
+
|
|
61
|
+
## Verify public distribution
|
|
62
|
+
|
|
63
|
+
After publication:
|
|
64
|
+
|
|
65
|
+
```sh
|
|
66
|
+
npm view orbit-thread@latest version repository --registry https://registry.npmjs.org/
|
|
67
|
+
mkdir /tmp/orbit-thread-public-smoke
|
|
68
|
+
cd /tmp/orbit-thread-public-smoke
|
|
69
|
+
git init
|
|
70
|
+
npx orbit-thread@latest install --agent both --scope project --yes
|
|
71
|
+
npx orbit-thread@latest setup --agent both --yes
|
|
72
|
+
npx orbit-thread@latest doctor --agent both --scope project
|
|
73
|
+
npx orbit-thread@latest uninstall --agent both --scope project --yes
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Verify `latest` resolves to `1.1.0` and package metadata points to `shab1h-gh/orbit-thread`.
|
|
77
|
+
|
|
78
|
+
## Existing Orbit Handoff users
|
|
79
|
+
|
|
80
|
+
Because the npm package name changes, users should migrate through the new package explicitly:
|
|
81
|
+
|
|
82
|
+
```sh
|
|
83
|
+
npx orbit-thread@latest update --agent both --scope project --yes
|
|
84
|
+
npx orbit-thread@latest setup --agent both --yes
|
|
85
|
+
npx orbit-thread doctor --agent both --scope project
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
The v1.1 CLI accepts compatible Orbit Handoff ownership/project state and migrates it while refusing locally edited managed files.
|
|
89
|
+
|
|
90
|
+
After Orbit Thread is publicly verified, the old package may be deprecated with a migration message, but must not be unpublished:
|
|
91
|
+
|
|
92
|
+
```sh
|
|
93
|
+
npm deprecate 'orbit-handoff@<=1.0.1' 'Renamed to orbit-thread. Install orbit-thread@latest.'
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
That command also requires publisher authentication and is optional.
|
|
97
|
+
|
|
98
|
+
## Claude GitHub-marketplace users
|
|
99
|
+
|
|
100
|
+
After the repository is renamed:
|
|
101
|
+
|
|
102
|
+
```sh
|
|
103
|
+
claude plugin marketplace add shab1h-gh/orbit-thread
|
|
104
|
+
claude plugin install orbit-thread@orbit-thread
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Then run:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
/orbit-thread:orbit-setup
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Public OpenAI and Anthropic directory publication is separate from npm/GitHub distribution. See [SUBMISSION.md](SUBMISSION.md).
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Directory submission
|
|
2
|
+
|
|
3
|
+
Updated 7 October 2026.
|
|
4
|
+
|
|
5
|
+
Provider-directory review is separate from npm, GitHub and standalone installation.
|
|
6
|
+
|
|
7
|
+
## OpenAI / ChatGPT Plugins Directory
|
|
8
|
+
|
|
9
|
+
Orbit Thread v1.1.0 is submitted as:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
dist/orbit-thread-plugin-1.1.0.zip
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Build it with:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
npm run build:plugin
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The ZIP contains portable `plugin.json`, both canonical skills, OpenAI interface metadata, the Orbit Setup onboarding skill, listing icon and compatibility metadata. Orbit Thread needs no MCP server or external account.
|
|
22
|
+
|
|
23
|
+
### Submission flow
|
|
24
|
+
|
|
25
|
+
1. Complete release validation and build the final v1.1.0 ZIP from the release commit/tag.
|
|
26
|
+
2. Open the OpenAI Plugins publisher dashboard:
|
|
27
|
+
`https://platform.openai.com/plugins`
|
|
28
|
+
3. Upload `orbit-thread-plugin-1.1.0.zip`.
|
|
29
|
+
4. Complete automated checks and resolve genuine findings.
|
|
30
|
+
5. Review listing metadata and required policy/data-handling declarations.
|
|
31
|
+
6. Choose **Submit for review**.
|
|
32
|
+
7. Track **Review status** in the same dashboard.
|
|
33
|
+
8. After approval, choose **Publish plugin** when ready.
|
|
34
|
+
|
|
35
|
+
Changing bundled skills or plugin metadata requires a newly uploaded ZIP; changing GitHub alone does not update an already uploaded package.
|
|
36
|
+
|
|
37
|
+
Only advertise public availability after the dashboard says the plugin is published.
|
|
38
|
+
|
|
39
|
+
## Anthropic / Claude public directory
|
|
40
|
+
|
|
41
|
+
The GitHub marketplace route and Anthropic's public Claude directory are separate.
|
|
42
|
+
|
|
43
|
+
After the repository rename, direct GitHub installation is:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
/plugin marketplace add shab1h-gh/orbit-thread
|
|
47
|
+
/plugin install orbit-thread@orbit-thread
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
or:
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
claude plugin marketplace add shab1h-gh/orbit-thread
|
|
54
|
+
claude plugin install orbit-thread@orbit-thread
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
For public-directory publication, use Anthropic's developer directory submission portal. Anthropic announced that developers on paid Claude plans can submit plugins, track review and see usage after publication.
|
|
58
|
+
|
|
59
|
+
Before submission:
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
claude plugin validate ./plugin --strict
|
|
63
|
+
claude plugin validate . --strict
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Then use the directory management/submission surface in Claude, connect the GitHub account that owns `shab1h-gh/orbit-thread`, select the repository/plugin, complete the listing details and submit it for review. Use the immutable v1.1.0 release/tag once created.
|
|
67
|
+
|
|
68
|
+
A successful GitHub marketplace installation does not mean the plugin is approved for Anthropic's public directory.
|
|
69
|
+
|
|
70
|
+
## General rule
|
|
71
|
+
|
|
72
|
+
Provider dashboard state wins over repository documentation. Update these instructions in place if either provider changes its submission flow; Git history already records the old process.
|