@coderook/cli 0.22.2 → 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/.claude-plugin/plugin.json +1 -1
- package/README.md +342 -220
- package/dist/cli/src/api.js +27 -2
- package/dist/cli/src/cli.js +323 -87
- package/dist/cli/src/git_history.js +188 -0
- package/dist/cli/src/git_remote.js +1118 -0
- package/dist/cli/src/git_remote_bin.js +22 -0
- package/dist/cli/src/help.js +8 -8
- package/dist/cli/src/import_command.js +150 -0
- package/dist/cli/src/licence_commands.js +5 -5
- package/dist/cli/src/mcp.js +1 -1
- package/dist/cli/src/publish.js +37 -0
- package/dist/cli/src/registry.js +1 -1
- package/dist/cli/src/runner.js +2 -2
- package/dist/cli/src/service_commands.js +53 -3
- package/dist/cli/src/skill_command.js +3 -3
- package/dist/cli/src/track_commands.js +7 -7
- package/dist/desktop-app/src/main/tracks.js +12 -2
- package/dist/desktop-app/src/main/upload.js +11 -1
- package/package.json +53 -51
- package/skills/coderook/SKILL.md +130 -130
package/package.json
CHANGED
|
@@ -1,51 +1,53 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@coderook/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "CodeRook from the command line, on any operating system",
|
|
5
|
-
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
|
-
"homepage": "https://coderook.com",
|
|
7
|
-
"bugs": {
|
|
8
|
-
"url": "https://coderook.com/contact"
|
|
9
|
-
},
|
|
10
|
-
"keywords": [
|
|
11
|
-
"coderook",
|
|
12
|
-
"versioning",
|
|
13
|
-
"backup",
|
|
14
|
-
"cbx"
|
|
15
|
-
],
|
|
16
|
-
"engines": {
|
|
17
|
-
"node": ">=20.11.0"
|
|
18
|
-
},
|
|
19
|
-
"bin": {
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"test:
|
|
36
|
-
"test:
|
|
37
|
-
"test:
|
|
38
|
-
"test:
|
|
39
|
-
"test:
|
|
40
|
-
"test:
|
|
41
|
-
"test:
|
|
42
|
-
"test:
|
|
43
|
-
"test:
|
|
44
|
-
"test:
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@coderook/cli",
|
|
3
|
+
"version": "0.24.0",
|
|
4
|
+
"description": "CodeRook from the command line, on any operating system",
|
|
5
|
+
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
|
+
"homepage": "https://coderook.com",
|
|
7
|
+
"bugs": {
|
|
8
|
+
"url": "https://coderook.com/contact"
|
|
9
|
+
},
|
|
10
|
+
"keywords": [
|
|
11
|
+
"coderook",
|
|
12
|
+
"versioning",
|
|
13
|
+
"backup",
|
|
14
|
+
"cbx"
|
|
15
|
+
],
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=20.11.0"
|
|
18
|
+
},
|
|
19
|
+
"bin": {
|
|
20
|
+
"cbx": "dist/cli/src/cli.js",
|
|
21
|
+
"coderook": "dist/cli/src/cli.js",
|
|
22
|
+
"git-remote-coderook": "dist/cli/src/git_remote_bin.js"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
".claude-plugin",
|
|
26
|
+
"dist",
|
|
27
|
+
"skills"
|
|
28
|
+
],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsc -p tsconfig.json",
|
|
31
|
+
"check": "tsc -p tsconfig.json --noEmit",
|
|
32
|
+
"test": "tsc -p tsconfig.json && node --test --experimental-strip-types test/*.test.ts",
|
|
33
|
+
"start": "node dist/cli/src/cli.js",
|
|
34
|
+
"prepublishOnly": "npm run sync:plugin && npm run build",
|
|
35
|
+
"test:e2e": "node test/e2e.mjs",
|
|
36
|
+
"test:matrix": "node test/state-matrix.mjs",
|
|
37
|
+
"test:attempt": "node test/attempt-identity.mjs",
|
|
38
|
+
"test:get": "node test/get-safety.mjs",
|
|
39
|
+
"test:live": "node test/e2e.mjs --allow-production && node test/state-matrix.mjs --allow-production && node test/get-safety.mjs --allow-production && node test/get-protects-edits.mjs --allow-production && node test/upgrade-migration.mjs --allow-production && node test/fault-get.mjs --allow-production && node test/version-floor.mjs --allow-production && node test/fault-submit.mjs --allow-production && node test/race-attempts.mjs --allow-production && node test/attempt-identity.mjs --allow-production",
|
|
40
|
+
"test:getedits": "node test/get-protects-edits.mjs",
|
|
41
|
+
"test:upgrade": "node test/upgrade-migration.mjs",
|
|
42
|
+
"test:faultget": "node test/fault-get.mjs",
|
|
43
|
+
"test:floor": "node test/version-floor.mjs",
|
|
44
|
+
"test:faultsubmit": "node test/fault-submit.mjs",
|
|
45
|
+
"test:race": "node test/race-attempts.mjs",
|
|
46
|
+
"test:runner": "node test/runner-live.mjs",
|
|
47
|
+
"sync:plugin": "node scripts/sync-plugin-version.mjs"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@types/node": "24.10.1",
|
|
51
|
+
"typescript": "5.9.3"
|
|
52
|
+
}
|
|
53
|
+
}
|
package/skills/coderook/SKILL.md
CHANGED
|
@@ -1,130 +1,130 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: coderook
|
|
3
|
-
description: Save, browse and restore versions of a project on CodeRook — a version host where every version is a complete snapshot and there is no git to learn. Use when asked to save or submit work to CodeRook, check what has changed, look at a project's versions or files, fetch a project, start or switch a line of work, or resolve a save that landed at the same time as somebody else's.
|
|
4
|
-
allowed-tools: Bash Read
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# CodeRook
|
|
8
|
-
|
|
9
|
-
CodeRook stores whole snapshots of a folder. A version names every file the
|
|
10
|
-
project had at that moment, so restoring one never depends on the versions
|
|
11
|
-
around it, and there is no staging area, no branches to rebase and no history
|
|
12
|
-
to rewrite.
|
|
13
|
-
|
|
14
|
-
Everything here is the `coderook` command line. Run it with Bash.
|
|
15
|
-
|
|
16
|
-
## Before anything else
|
|
17
|
-
|
|
18
|
-
`
|
|
19
|
-
person needs to run `
|
|
20
|
-
token, so do not attempt it on their behalf.
|
|
21
|
-
|
|
22
|
-
If the command is not found at all, this machine has the skill but not the
|
|
23
|
-
command line. Either install it once with
|
|
24
|
-
`npm install --global @coderook/cli`, or put `npx -y @coderook/cli` where
|
|
25
|
-
`coderook` appears below — the commands are identical, npx is just slower
|
|
26
|
-
to start.
|
|
27
|
-
|
|
28
|
-
## Reading
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
`status` is the one to reach for when somebody asks what is uncommitted, what
|
|
38
|
-
changed, or whether anything needs saving. It reads the folder and changes
|
|
39
|
-
nothing.
|
|
40
|
-
|
|
41
|
-
## Saving
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Send only what changed; the version still names every file. Write the message
|
|
48
|
-
yourself from the actual diff rather than asking for one — a message like
|
|
49
|
-
"update" helps nobody reading the history later.
|
|
50
|
-
|
|
51
|
-
**Ask before running this.** Saving is the one thing here that leaves a mark on
|
|
52
|
-
somebody's account, and a version saved by mistake is a version they have to
|
|
53
|
-
explain. Propose it, say what it would send, and let them agree.
|
|
54
|
-
|
|
55
|
-
`
|
|
56
|
-
that freely; it is safe and it is the honest way to answer "what would this
|
|
57
|
-
upload?".
|
|
58
|
-
|
|
59
|
-
## Fetching
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
`get` protects local edits by default. `
|
|
67
|
-
to make an exact copy — only run it when the person has said so in those terms.
|
|
68
|
-
|
|
69
|
-
## Lines of work
|
|
70
|
-
|
|
71
|
-
A project can have more than one line, so two people can save without one
|
|
72
|
-
landing on top of the other.
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Switching says where the next save goes and nothing else — no files move.
|
|
82
|
-
Run `
|
|
83
|
-
|
|
84
|
-
## When two saves collide
|
|
85
|
-
|
|
86
|
-
If somebody saved while this folder was behind, the second save becomes a merge
|
|
87
|
-
waiting on a decision rather than overwriting anything.
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Read the conflict out to the person and let them choose. Do not pick a side for
|
|
95
|
-
them: the whole reason it stopped is that the service could not tell which copy
|
|
96
|
-
was wanted.
|
|
97
|
-
|
|
98
|
-
## What is worth leaving out
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Rules live in the project's own `.gitignore`, so CodeRook, git and the website
|
|
106
|
-
all read one file.
|
|
107
|
-
|
|
108
|
-
## Bundles
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
## Things not to do
|
|
117
|
-
|
|
118
|
-
- Do not run `
|
|
119
|
-
be deleted, by name, in this conversation.
|
|
120
|
-
- Do not run `
|
|
121
|
-
again and gains nothing.
|
|
122
|
-
- Do not guess a project name. `
|
|
123
|
-
already linked needs no name at all.
|
|
124
|
-
|
|
125
|
-
## If something refuses
|
|
126
|
-
|
|
127
|
-
The commands explain themselves — pass the message on rather than rewording it.
|
|
128
|
-
A refusal that says a token was not accepted means signing in; one that says a
|
|
129
|
-
project does not allow machines means its owner turned that off deliberately,
|
|
130
|
-
and the answer is to say so, not to find another route in.
|
|
1
|
+
---
|
|
2
|
+
name: coderook
|
|
3
|
+
description: Save, browse and restore versions of a project on CodeRook — a version host where every version is a complete snapshot and there is no git to learn. Use when asked to save or submit work to CodeRook, check what has changed, look at a project's versions or files, fetch a project, start or switch a line of work, or resolve a save that landed at the same time as somebody else's.
|
|
4
|
+
allowed-tools: Bash Read
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# CodeRook
|
|
8
|
+
|
|
9
|
+
CodeRook stores whole snapshots of a folder. A version names every file the
|
|
10
|
+
project had at that moment, so restoring one never depends on the versions
|
|
11
|
+
around it, and there is no staging area, no branches to rebase and no history
|
|
12
|
+
to rewrite.
|
|
13
|
+
|
|
14
|
+
Everything here is the `coderook` command line. Run it with Bash.
|
|
15
|
+
|
|
16
|
+
## Before anything else
|
|
17
|
+
|
|
18
|
+
`cbx whoami` says who this machine is signed in as. If it refuses, the
|
|
19
|
+
person needs to run `cbx sign-in` themselves — it takes a personal access
|
|
20
|
+
token, so do not attempt it on their behalf.
|
|
21
|
+
|
|
22
|
+
If the command is not found at all, this machine has the skill but not the
|
|
23
|
+
command line. Either install it once with
|
|
24
|
+
`npm install --global @coderook/cli`, or put `npx -y @coderook/cli` where
|
|
25
|
+
`coderook` appears below — the commands are identical, npx is just slower
|
|
26
|
+
to start.
|
|
27
|
+
|
|
28
|
+
## Reading
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
cbx status # what has changed in this folder since its last version
|
|
32
|
+
cbx projects # every project on the account
|
|
33
|
+
cbx versions [project] # what has been saved, newest first
|
|
34
|
+
cbx tracks [project] # the lines a project has, and any waiting on a decision
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
`status` is the one to reach for when somebody asks what is uncommitted, what
|
|
38
|
+
changed, or whether anything needs saving. It reads the folder and changes
|
|
39
|
+
nothing.
|
|
40
|
+
|
|
41
|
+
## Saving
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
cbx submit -m "What changed, in a sentence"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Send only what changed; the version still names every file. Write the message
|
|
48
|
+
yourself from the actual diff rather than asking for one — a message like
|
|
49
|
+
"update" helps nobody reading the history later.
|
|
50
|
+
|
|
51
|
+
**Ask before running this.** Saving is the one thing here that leaves a mark on
|
|
52
|
+
somebody's account, and a version saved by mistake is a version they have to
|
|
53
|
+
explain. Propose it, say what it would send, and let them agree.
|
|
54
|
+
|
|
55
|
+
`cbx submit -n` shows exactly what would be sent without sending it. Use
|
|
56
|
+
that freely; it is safe and it is the honest way to answer "what would this
|
|
57
|
+
upload?".
|
|
58
|
+
|
|
59
|
+
## Fetching
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
cbx get # bring this folder up to date
|
|
63
|
+
cbx clone <project> [dir] # fetch a project into a new folder
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`get` protects local edits by default. `cbx get --replace` discards them
|
|
67
|
+
to make an exact copy — only run it when the person has said so in those terms.
|
|
68
|
+
|
|
69
|
+
## Lines of work
|
|
70
|
+
|
|
71
|
+
A project can have more than one line, so two people can save without one
|
|
72
|
+
landing on top of the other.
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
cbx track # which line this folder saves to
|
|
76
|
+
cbx track spike --new # start a line and switch to it
|
|
77
|
+
cbx track main # switch back
|
|
78
|
+
cbx submit --track spike -m "…"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Switching says where the next save goes and nothing else — no files move.
|
|
82
|
+
Run `cbx get` afterwards to bring that line's files in.
|
|
83
|
+
|
|
84
|
+
## When two saves collide
|
|
85
|
+
|
|
86
|
+
If somebody saved while this folder was behind, the second save becomes a merge
|
|
87
|
+
waiting on a decision rather than overwriting anything.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
cbx merges # this folder's saves waiting on a decision
|
|
91
|
+
cbx merge <ref> # look at one, and decide
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Read the conflict out to the person and let them choose. Do not pick a side for
|
|
95
|
+
them: the whole reason it stopped is that the service could not tell which copy
|
|
96
|
+
was wanted.
|
|
97
|
+
|
|
98
|
+
## What is worth leaving out
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
cbx ignore --suggest # dependency directories, build output, virtual environments
|
|
102
|
+
cbx ignore --suggest --apply # add the confident ones to .gitignore
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Rules live in the project's own `.gitignore`, so CodeRook, git and the website
|
|
106
|
+
all read one file.
|
|
107
|
+
|
|
108
|
+
## Bundles
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
cbx bundle . project.cbx # the whole project, every version, as one file
|
|
112
|
+
cbx inspect project.cbx # what is inside, without unpacking
|
|
113
|
+
cbx unbundle project.cbx ./restored
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Things not to do
|
|
117
|
+
|
|
118
|
+
- Do not run `cbx delete` unless the person has asked for that project to
|
|
119
|
+
be deleted, by name, in this conversation.
|
|
120
|
+
- Do not run `cbx sign-out`. It costs them a token they have to fetch
|
|
121
|
+
again and gains nothing.
|
|
122
|
+
- Do not guess a project name. `cbx projects` lists them; a folder that is
|
|
123
|
+
already linked needs no name at all.
|
|
124
|
+
|
|
125
|
+
## If something refuses
|
|
126
|
+
|
|
127
|
+
The commands explain themselves — pass the message on rather than rewording it.
|
|
128
|
+
A refusal that says a token was not accepted means signing in; one that says a
|
|
129
|
+
project does not allow machines means its owner turned that off deliberately,
|
|
130
|
+
and the answer is to say so, not to find another route in.
|