@shadowclone/cli 0.0.25 → 0.0.27
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/PRIVACY.md +14 -13
- package/README.md +89 -64
- package/bin/shadowclone.mjs +0 -0
- package/dist/_.._/{web → _.._/web/src}/client/index.html +3 -3
- package/dist/shadowclone.js +858 -740
- package/dist/web/index-cmzs0t91.js +135 -0
- package/evals.md +72 -86
- package/package.json +12 -37
- package/plugins/shadowclone/.claude-plugin/plugin.json +1 -1
- package/plugins/shadowclone/.codex-plugin/plugin.json +1 -1
- package/plugins/shadowclone/README.md +9 -5
- package/plugins/shadowclone/SECURITY.md +2 -2
- package/plugins/shadowclone/plugin.json +1 -1
- package/plugins/shadowclone/skills/setup-shadowclone/SKILL.md +43 -31
- package/skills/shadowclone-review/SKILL.md +7 -4
- package/skills/write-plain-english/SKILL.md +15 -4
- package/dist/web/index-xsq72pnc.js +0 -134
package/evals.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Evaluation results
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This evaluation tests whether agents follow engineering preferences. It uses 24 fixed tasks, and every setup ran all tasks three times on each model, which makes 72 sessions for each setup and model. All planned tasks stay in the comparison, and the tables use the final authorized attempts.
|
|
4
4
|
|
|
5
5
|
## Preference adherence
|
|
6
6
|
|
|
7
|
-
Each task checks
|
|
7
|
+
Each task checks one preference family. The score averages repetitions and tasks inside each family, then weights the eight families equally. It does not measure task success or code quality.
|
|
8
8
|
|
|
9
9
|
| Setup | GPT 6.1 Sol | GPT 6 Luna | Claude Sonnet 5.5 | Claude Opus 5.5 |
|
|
10
10
|
| ----------------------------------------- | ----------: | ---------: | ----------------: | --------------: |
|
|
@@ -14,79 +14,71 @@ Each task checks its assigned preference family. The score averages repetitions
|
|
|
14
14
|
| Existing skills + handwritten preferences | 92.4% | 81.2% | 91.7% | 86.1% |
|
|
15
15
|
| Existing skills + Shadowclone learning | 89.4% | 83.3% | 90.0% | 82.9% |
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Learning beats existing user skills on all four models. Handwritten preferences score higher than learned ones on GPT 6.1 Sol, Sonnet, and Opus, but not on GPT 6 Luna. Learning delivery and model behavior affect this comparison.
|
|
18
18
|
|
|
19
19
|
## What each setup means
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
23
|
-
| Agent alone | Shared repository requirements, with no personal skills or preferences |
|
|
24
|
-
| Existing user skills | The same requirements plus an unchanged synthetic code-style skill |
|
|
25
|
-
| Existing skills + Shadowclone routing | The same skill library plus Shadowclone's native startup guidance, without learning |
|
|
26
|
-
| Existing skills + handwritten preferences | The routed library plus independently handwritten intended rules, a reference comparison rather than a product mode |
|
|
27
|
-
| Existing skills + Shadowclone learning | The routed library plus actual rules published by Shadowclone from synthetic correction sessions |
|
|
28
|
-
|
|
29
|
-
Handwritten and learned preferences use the same delivery path. The learner never receives the intended rules or grading answers. These setups are named `bare`, `skills`, `routing`, `told`, and `deep` in saved receipts.
|
|
21
|
+
The [fixed contract](evals/README.md#the-fixed-contract) defines the five setups. Saved receipts name them `bare`, `skills`, `routing`, `told`, and `deep`.
|
|
30
22
|
|
|
31
23
|
## Per-preference results
|
|
32
24
|
|
|
33
|
-
|
|
25
|
+
Each family has three tasks and three repetitions. Columns follow the rows of the first table. Answer length counts for at most 12.5% of the headline.
|
|
34
26
|
|
|
35
27
|
### GPT 6.1 Sol
|
|
36
28
|
|
|
37
|
-
| Preference |
|
|
38
|
-
| ------------------- |
|
|
39
|
-
| Comments |
|
|
40
|
-
| Type safety |
|
|
41
|
-
| API conventions |
|
|
42
|
-
| Git authorization |
|
|
43
|
-
| Answer length |
|
|
44
|
-
| Test-first behavior |
|
|
45
|
-
| PR structure |
|
|
46
|
-
| Scope and lifecycle |
|
|
29
|
+
| Preference | Alone | Skills | Routing | Handwritten | Learning |
|
|
30
|
+
| ------------------- | -----: | -----: | ------: | ----------: | -------: |
|
|
31
|
+
| Comments | 100.0% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
32
|
+
| Type safety | 100.0% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
33
|
+
| API conventions | 33.3% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
34
|
+
| Git authorization | 51.9% | 48.1% | 55.6% | 100.0% | 81.5% |
|
|
35
|
+
| Answer length | 66.7% | 66.7% | 66.7% | 66.7% | 66.7% |
|
|
36
|
+
| Test-first behavior | 100.0% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
37
|
+
| PR structure | 66.7% | 66.7% | 66.7% | 72.2% | 66.7% |
|
|
38
|
+
| Scope and lifecycle | 100.0% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
47
39
|
|
|
48
40
|
### GPT 6 Luna
|
|
49
41
|
|
|
50
|
-
| Preference |
|
|
51
|
-
| ------------------- |
|
|
52
|
-
| Comments |
|
|
53
|
-
| Type safety |
|
|
54
|
-
| API conventions |
|
|
55
|
-
| Git authorization |
|
|
56
|
-
| Answer length |
|
|
57
|
-
| Test-first behavior |
|
|
58
|
-
| PR structure |
|
|
59
|
-
| Scope and lifecycle |
|
|
42
|
+
| Preference | Alone | Skills | Routing | Handwritten | Learning |
|
|
43
|
+
| ------------------- | -----: | -----: | ------: | ----------: | -------: |
|
|
44
|
+
| Comments | 100.0% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
45
|
+
| Type safety | 44.4% | 88.9% | 100.0% | 88.9% | 100.0% |
|
|
46
|
+
| API conventions | 33.3% | 100.0% | 88.9% | 100.0% | 88.9% |
|
|
47
|
+
| Git authorization | 77.8% | 77.8% | 70.4% | 100.0% | 88.9% |
|
|
48
|
+
| Answer length | 44.4% | 66.7% | 44.4% | 44.4% | 66.7% |
|
|
49
|
+
| Test-first behavior | 33.3% | 55.6% | 33.3% | 33.3% | 44.4% |
|
|
50
|
+
| PR structure | 66.7% | 66.7% | 66.7% | 83.3% | 77.8% |
|
|
51
|
+
| Scope and lifecycle | 72.2% | 88.9% | 77.8% | 100.0% | 100.0% |
|
|
60
52
|
|
|
61
53
|
### Claude Sonnet 5.5
|
|
62
54
|
|
|
63
|
-
| Preference |
|
|
64
|
-
| ------------------- |
|
|
65
|
-
| Comments |
|
|
66
|
-
| Type safety |
|
|
67
|
-
| API conventions |
|
|
68
|
-
| Git authorization |
|
|
69
|
-
| Answer length |
|
|
70
|
-
| Test-first behavior |
|
|
71
|
-
| PR structure |
|
|
72
|
-
| Scope and lifecycle |
|
|
55
|
+
| Preference | Alone | Skills | Routing | Handwritten | Learning |
|
|
56
|
+
| ------------------- | -----: | -----: | ------: | ----------: | -------: |
|
|
57
|
+
| Comments | 100.0% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
58
|
+
| Type safety | 0.0% | 100.0% | 100.0% | 100.0% | 88.9% |
|
|
59
|
+
| API conventions | 33.3% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
60
|
+
| Git authorization | 55.6% | 55.6% | 55.6% | 100.0% | 85.2% |
|
|
61
|
+
| Answer length | 0.0% | 0.0% | 0.0% | 55.6% | 77.8% |
|
|
62
|
+
| Test-first behavior | 100.0% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
63
|
+
| PR structure | 66.7% | 66.7% | 66.7% | 77.8% | 72.2% |
|
|
64
|
+
| Scope and lifecycle | 96.3% | 88.9% | 92.6% | 100.0% | 96.3% |
|
|
73
65
|
|
|
74
66
|
### Claude Opus 5.5
|
|
75
67
|
|
|
76
|
-
| Preference |
|
|
77
|
-
| ------------------- |
|
|
78
|
-
| Comments |
|
|
79
|
-
| Type safety |
|
|
80
|
-
| API conventions |
|
|
81
|
-
| Git authorization |
|
|
82
|
-
| Answer length |
|
|
83
|
-
| Test-first behavior |
|
|
84
|
-
| PR structure |
|
|
85
|
-
| Scope and lifecycle |
|
|
68
|
+
| Preference | Alone | Skills | Routing | Handwritten | Learning |
|
|
69
|
+
| ------------------- | -----: | -----: | ------: | ----------: | -------: |
|
|
70
|
+
| Comments | 77.8% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
71
|
+
| Type safety | 22.2% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
72
|
+
| API conventions | 33.3% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
73
|
+
| Git authorization | 48.1% | 44.4% | 51.9% | 100.0% | 81.5% |
|
|
74
|
+
| Answer length | 0.0% | 0.0% | 0.0% | 22.2% | 22.2% |
|
|
75
|
+
| Test-first behavior | 100.0% | 100.0% | 100.0% | 100.0% | 100.0% |
|
|
76
|
+
| PR structure | 66.7% | 66.7% | 66.7% | 66.7% | 66.7% |
|
|
77
|
+
| Scope and lifecycle | 77.8% | 77.8% | 88.9% | 100.0% | 92.6% |
|
|
86
78
|
|
|
87
79
|
## Matched comparisons
|
|
88
80
|
|
|
89
|
-
Differences are percentage points. The 95% bootstrap intervals resample the three matched repetition and learning
|
|
81
|
+
Differences are in percentage points. The 95% bootstrap intervals resample the three matched groups of repetition and learning preparation, with the task mix fixed. Three groups give coarse intervals. Models share preparations, so do not pool them.
|
|
90
82
|
|
|
91
83
|
| Model | Learning over routing | 95% interval | Learning over handwritten preferences | 95% interval |
|
|
92
84
|
| ----------------- | --------------------: | ------------- | ------------------------------------: | ------------ |
|
|
@@ -97,50 +89,44 @@ Differences are percentage points. The 95% bootstrap intervals resample the thre
|
|
|
97
89
|
|
|
98
90
|
## Separate routing comparison
|
|
99
91
|
|
|
100
|
-
A second experiment uses 20 synthetic skills
|
|
92
|
+
A second experiment uses 20 synthetic skills, twelve tasks, and three repetitions for each setup. It scores selection and compliance separately.
|
|
101
93
|
|
|
102
|
-
| Model | Existing skills
|
|
103
|
-
| ----------------- |
|
|
104
|
-
| GPT 6.1 Sol |
|
|
105
|
-
| GPT 6 Luna |
|
|
106
|
-
| Claude Sonnet 5.5 |
|
|
107
|
-
| Claude Opus 5.5 |
|
|
94
|
+
| Model | Existing skills | + Routing |
|
|
95
|
+
| ----------------- | --------------: | --------: |
|
|
96
|
+
| GPT 6.1 Sol | 100.0% | 100.0% |
|
|
97
|
+
| GPT 6 Luna | 100.0% | 97.2% |
|
|
98
|
+
| Claude Sonnet 5.5 | 100.0% | 100.0% |
|
|
99
|
+
| Claude Opus 5.5 | 100.0% | 100.0% |
|
|
108
100
|
|
|
109
|
-
Both Claude models selected the expected skills in every session. Codex read tracking missed some
|
|
101
|
+
Both Claude models selected the expected skills in every session. Codex read tracking missed some reads, and the original verdicts stay. Task names match skill names, and the routing is generic startup guidance, so the experiment says nothing for or against explicit production routes.
|
|
110
102
|
|
|
111
103
|
## Correctness, safety, and learning
|
|
112
104
|
|
|
113
|
-
|
|
105
|
+
These correctness counts cover all 72 sessions for each setup, with the original acceptance verdicts. API and advice acceptance limits affect how to read them. Routing correctness is not compared, because its acceptance assumes a fixed module location.
|
|
114
106
|
|
|
115
|
-
| Setup
|
|
116
|
-
|
|
|
117
|
-
|
|
|
118
|
-
|
|
|
119
|
-
|
|
|
120
|
-
|
|
|
121
|
-
|
|
|
107
|
+
| Setup | GPT 6.1 Sol | GPT 6 Luna | Claude Sonnet 5.5 | Claude Opus 5.5 |
|
|
108
|
+
| ----------- | ----------: | ---------: | ----------------: | --------------: |
|
|
109
|
+
| Alone | 72/72 | 69/72 | 71/72 | 72/72 |
|
|
110
|
+
| Skills | 72/72 | 72/72 | 68/72 | 69/72 |
|
|
111
|
+
| Routing | 71/72 | 70/72 | 69/72 | 69/72 |
|
|
112
|
+
| Handwritten | 70/72 | 72/72 | 69/72 | 69/72 |
|
|
113
|
+
| Learning | 70/72 | 72/72 | 68/72 | 69/72 |
|
|
122
114
|
|
|
123
|
-
All planned sessions completed
|
|
115
|
+
All planned sessions completed, and protected manual guidance stayed unchanged in every final session. No fixture action reached a real remote.
|
|
124
116
|
|
|
125
|
-
Three independent learning preparations used GPT 6.1 Sol at medium effort. One published four intended rules and left Git guidance pending
|
|
117
|
+
Three independent learning preparations used GPT 6.1 Sol at medium effort. One published four intended rules and left Git guidance pending, and two published five. All three published partial pull request guidance. A bounded agent assessment found no unsupported guidance. Nobody added the missing rules.
|
|
126
118
|
|
|
127
119
|
## Method and measurement limits
|
|
128
120
|
|
|
129
|
-
The study ran on 2026-10-03
|
|
130
|
-
|
|
131
|
-
| Model | Agent host | Effort | Host version |
|
|
132
|
-
| ----------------- | ----------- | ------ | ------------ |
|
|
133
|
-
| GPT 6.1 Sol | Codex | Medium | 0.159.0 |
|
|
134
|
-
| GPT 6 Luna | Codex | High | 0.159.0 |
|
|
135
|
-
| Claude Sonnet 5.5 | Claude Code | High | 2.1.287 |
|
|
136
|
-
| Claude Opus 5.5 | Claude Code | Medium | 2.1.287 |
|
|
137
|
-
|
|
138
|
-
The declared runtime uses Bun 1.4.2 and TypeScript 5.9.3. Acceptance logs contain both Bun 1.3.3 and 1.4.2, so this is not a uniform toolchain comparison. Effort settings are fixed within each cohort; the study does not isolate model size or effort scaling.
|
|
121
|
+
The study ran on 2026-10-03: 1,440 five-setup sessions and 288 routing sessions.
|
|
139
122
|
|
|
140
|
-
|
|
123
|
+
- GPT 6.1 Sol: Codex 0.159.0, medium effort.
|
|
124
|
+
- GPT 6 Luna: Codex 0.159.0, high effort.
|
|
125
|
+
- Claude Sonnet 5.5: Claude Code 2.1.287, high effort.
|
|
126
|
+
- Claude Opus 5.5: Claude Code 2.1.287, medium effort.
|
|
141
127
|
|
|
142
|
-
|
|
128
|
+
The declared runtime is Bun 1.4.2 and TypeScript 5.9.3, but acceptance logs show both Bun 1.3.3 and 1.4.2. Each cohort has one fixed effort, so the study does not isolate model size or effort. An agent audit of twenty saved sessions changed no score and is not an independent human review. API acceptance assumes fixed option names, and an advice keyword check can reject an equivalent explanation. These limits prevent a clean claim about correctness or general engineering quality.
|
|
143
129
|
|
|
144
|
-
|
|
130
|
+
Claude runs after a quota reset used authorized manual retries. The study removed or rescored no failure in silence. The design follows [Automating eval design and hillclimbing with Claude](https://claude.dev/blog/automating-eval-design-and-hillclimbing/). No autonomous hillclimbing ran. Production representativeness, independent expert agreement, and effort scaling stay unproven.
|
|
145
131
|
|
|
146
|
-
[
|
|
132
|
+
See the [evaluations guide](evals/README.md), the [code review benchmark](https://github.com/theonly1me/code-review-bench), and the [no-comments](evals/no-comments/README.md) evaluation. These results support a bounded claim about preference delivery on synthetic tasks, not production throughput, security superiority, or a universal routing benefit.
|
package/package.json
CHANGED
|
@@ -1,36 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shadowclone/cli",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"module": "src/cli/index.ts",
|
|
3
|
+
"version": "0.0.27",
|
|
5
4
|
"type": "module",
|
|
6
|
-
"packageManager": "bun@1.4.2",
|
|
7
|
-
"bin": {
|
|
8
|
-
"shadowclone": "bin/shadowclone.mjs"
|
|
9
|
-
},
|
|
10
|
-
"scripts": {
|
|
11
|
-
"start": "bun run src/cli/index.ts",
|
|
12
|
-
"cli": "bun run src/cli/index.ts",
|
|
13
|
-
"check": "bun run typecheck && bun run lint && bun run knip && bun test",
|
|
14
|
-
"test": "bun test",
|
|
15
|
-
"typecheck": "tsc --noEmit",
|
|
16
|
-
"format": "prettier --write",
|
|
17
|
-
"format:check": "prettier --check",
|
|
18
|
-
"lint": "biome lint --error-on-warnings --diagnostic-level=warn . && bun run scripts/conventions.ts && bun run scripts/privacy.ts && bun run scripts/skills.ts && bun run scripts/skillVersions.ts",
|
|
19
|
-
"lint:fix": "biome lint --write .",
|
|
20
|
-
"knip": "knip",
|
|
21
|
-
"eval": "bun evals/run.ts",
|
|
22
|
-
"eval:work": "bun evals/work/run.ts",
|
|
23
|
-
"build": "bun run scripts/build.ts",
|
|
24
|
-
"prepack": "bun run build"
|
|
25
|
-
},
|
|
26
|
-
"devDependencies": {
|
|
27
|
-
"@biomejs/biome": "2.5.15",
|
|
28
|
-
"@types/bun": "latest",
|
|
29
|
-
"knip": "6.39.0",
|
|
30
|
-
"prettier": "3.9.9",
|
|
31
|
-
"typescript": "~5.9"
|
|
32
|
-
},
|
|
33
5
|
"description": "Turns how you work into a portable, tested environment for the coding agents you already use.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"claude-code",
|
|
8
|
+
"codex",
|
|
9
|
+
"cursor",
|
|
10
|
+
"agent",
|
|
11
|
+
"subagent",
|
|
12
|
+
"local-first"
|
|
13
|
+
],
|
|
34
14
|
"license": "MIT",
|
|
35
15
|
"repository": {
|
|
36
16
|
"type": "git",
|
|
@@ -40,14 +20,9 @@
|
|
|
40
20
|
"bugs": {
|
|
41
21
|
"url": "https://github.com/theonly1me/shadowclone/issues"
|
|
42
22
|
},
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
"cursor",
|
|
47
|
-
"agent",
|
|
48
|
-
"subagent",
|
|
49
|
-
"local-first"
|
|
50
|
-
],
|
|
23
|
+
"bin": {
|
|
24
|
+
"shadowclone": "bin/shadowclone.mjs"
|
|
25
|
+
},
|
|
51
26
|
"files": [
|
|
52
27
|
"bin",
|
|
53
28
|
"dist",
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
# Shadowclone plugin
|
|
2
2
|
|
|
3
|
-
This plugin gives
|
|
3
|
+
This plugin gives an agent one workflow to install and set up [Shadowclone](https://shadowclone.co). It turns on no bundled skill until you choose a build.
|
|
4
4
|
|
|
5
5
|
## Use
|
|
6
6
|
|
|
7
|
-
Install the plugin, start a new
|
|
7
|
+
Install the plugin, start a new session, and say:
|
|
8
8
|
|
|
9
9
|
```text
|
|
10
10
|
Set up Shadowclone.
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
The `setup-shadowclone` skill
|
|
13
|
+
The `setup-shadowclone` skill does these steps:
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
1. It installs or upgrades the CLI, with no elevated privileges.
|
|
16
|
+
2. It asks three separate consent questions in chat, and keeps existing consent settings.
|
|
17
|
+
3. It sets up the agents that it detects, opens the skill wizard, and learns from past sessions if you agreed.
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
The bundled MCP configuration starts `shadowclone mcp` on your machine after you install the CLI. It needs no Shadowclone credentials. See the [MCP guide](https://github.com/theonly1me/shadowclone/blob/main/docs/guides/mcp.md).
|
|
20
|
+
|
|
21
|
+
Read the [privacy](https://github.com/theonly1me/shadowclone/blob/main/PRIVACY.md) and [security](https://github.com/theonly1me/shadowclone/blob/main/SECURITY.md) policies.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Security
|
|
2
2
|
|
|
3
|
-
Report vulnerabilities through [
|
|
3
|
+
Report vulnerabilities through [private vulnerability reporting on GitHub](https://github.com/theonly1me/shadowclone/security/advisories/new). Never put credentials, private source, transcripts, or identifying paths in a public issue.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Report a general defect in [GitHub issues](https://github.com/theonly1me/shadowclone/issues) with input that you wrote and that holds no private data.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "shadowclone",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.27",
|
|
5
5
|
"description": "Set up and maintain portable coding-agent skills with explicit local consent.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Shadowclone",
|
|
@@ -1,53 +1,65 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: setup-shadowclone
|
|
3
|
-
description: Install and
|
|
3
|
+
description: Install and configure Shadowclone for the user from start to finish. Use it when the user asks to "set up", install, configure, or start Shadowclone with Claude Code, Codex, Cursor, Pi, Antigravity, or another coding agent.
|
|
4
4
|
license: MIT
|
|
5
5
|
---
|
|
6
|
+
|
|
6
7
|
# Set Up Shadowclone
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
Do the whole setup for the user. The user only answers questions in chat and picks skills in the browser. Finish in less than 5 minutes.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
Do the steps in order. Run long commands in the background, and do the next step while they run. Do not explain a step that works.
|
|
11
12
|
|
|
12
|
-
1.
|
|
13
|
-
2. If its status is `outdated`, show the installed and minimum versions and ask whether to upgrade the CLI. If it is `unavailable`, explain that a usable CLI is missing and ask whether to install it. Stop if the user declines.
|
|
14
|
-
3. After approval, run `npm install -g @shadowclone/cli@latest`. Never use `sudo`. If the package manager cannot write to its configured global directory, explain that exact failure and help the user choose a user-owned npm prefix before retrying.
|
|
15
|
-
4. Repeat the helper after installation or upgrade. Continue only when its status is `ready`. If it remains outdated, the required release may not be published yet. If the installed package is new enough but the helper still sees an older command, inspect `command -v shadowclone` and `npm prefix -g` for a stale executable or missing prefix on `PATH`; help the user resolve it without deleting unrelated installations.
|
|
16
|
-
5. Run `shadowclone init --status --json`. Treat only `{"initialized":true}` as an existing setup. Preserve compatible existing installations and their consent settings.
|
|
13
|
+
## 1. Check the CLI (10 seconds)
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
1. If this skill is on disk, run `node <this-skill-directory>/scripts/check-cli.mjs`. It runs only `shadowclone --version` and prints a status.
|
|
16
|
+
2. If this skill is not on disk, run `shadowclone --version`. Version 0.0.13 or newer is `ready`. A missing command is `unavailable`.
|
|
17
|
+
3. If the status is `ready`, run `shadowclone init --status --json`. If it prints `{"initialized":true}`, setup exists. Keep its consent choices, and go to step 4.
|
|
18
|
+
4. If the status is `unavailable` or `outdated`, tell the user that you will install the Shadowclone CLI. Start `npm install -g @shadowclone/cli@latest` in the background. Never use `sudo`.
|
|
19
|
+
5. If npm cannot write to its global folder, show the exact error. Help the user choose a user-owned npm prefix, and run the install again.
|
|
19
20
|
|
|
20
|
-
## Ask
|
|
21
|
+
## 2. Ask three questions (30 seconds)
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
Ask these questions in one message while the install runs. Use your question tool if you have one. Record an explicit yes or no for each answer.
|
|
23
24
|
|
|
24
|
-
1.
|
|
25
|
-
2.
|
|
26
|
-
3.
|
|
25
|
+
1. **Learn from past sessions?** Shadowclone reads the coding-agent sessions on this machine, redacts them, and learns your rules with your own agent CLI. The first pass takes up to 2 minutes.
|
|
26
|
+
2. **Keep skills in sync?** Shadowclone keeps your skills up to date across your agents.
|
|
27
|
+
3. **Keep learning in the background?** This needs a yes to question 1.
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
If the answer to question 1 is no, the answer to question 3 is no. Do not infer an answer from the install, from the use of an agent, or from another answer.
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
## 3. Install and initialize (in the background)
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
33
|
+
1. Wait for the CLI install, and check the CLI again as in step 1.
|
|
34
|
+
2. Install the plugin for the agent that you run in, if it is not installed. The plugin adds this skill and the Shadowclone MCP server.
|
|
35
|
+
- Claude Code: `claude plugin install shadowclone --marketplace theonly1me/shadowclone`
|
|
36
|
+
- Codex: `codex plugin marketplace add theonly1me/shadowclone`, then `codex plugin add shadowclone@shadowclone`
|
|
37
|
+
- Cursor, Pi, and Antigravity have no plugin step.
|
|
38
|
+
3. If a plugin command asks for input or fails, give the user the command, and continue the setup.
|
|
39
|
+
4. Start one `shadowclone init` command in the background. Pass exactly one flag from each pair, from the answers:
|
|
40
|
+
- `--learn` or `--no-learn`
|
|
41
|
+
- `--skill-maintenance` or `--no-skill-maintenance`
|
|
42
|
+
- `--background-learning` or `--no-background-learning`
|
|
35
43
|
|
|
36
|
-
The
|
|
44
|
+
The command detects Claude Code, Codex, Cursor, Pi, and Antigravity, and installs their native guidance. With `--learn`, it also runs the first learning pass.
|
|
37
45
|
|
|
38
|
-
##
|
|
46
|
+
## 4. Open the skill wizard (while init runs)
|
|
39
47
|
|
|
40
|
-
1. Start `shadowclone wizard
|
|
41
|
-
2. Give the
|
|
42
|
-
3. Do not operate the browser for the user.
|
|
48
|
+
1. Start `shadowclone wizard` as a background process. It opens the skill wizard in the browser and prints a loopback URL.
|
|
49
|
+
2. Give the user the URL. Tell the user to pick skills, select **Equip**, and tell you when it is done.
|
|
50
|
+
3. Do not operate the browser for the user.
|
|
51
|
+
4. If the wizard says that another update is running, tell the user to wait a few seconds and equip again.
|
|
43
52
|
|
|
44
|
-
## Verify
|
|
53
|
+
## 5. Verify and report (30 seconds)
|
|
45
54
|
|
|
46
|
-
|
|
55
|
+
When the user equipped a build and `init` is done:
|
|
47
56
|
|
|
48
|
-
1.
|
|
49
|
-
2. Run `shadowclone
|
|
50
|
-
3. Run `shadowclone
|
|
51
|
-
4.
|
|
57
|
+
1. Stop the wizard process.
|
|
58
|
+
2. Run `shadowclone sync`.
|
|
59
|
+
3. Run `shadowclone doctor`. Fix each local failure that you can act on.
|
|
60
|
+
4. Run `shadowclone context --explain` in the current repository.
|
|
61
|
+
5. Tell the user the number of rules learned, the skills that are active, and each step that failed or that you skipped.
|
|
62
|
+
6. If learning stopped at its setup budget and background learning is off, tell the user that `shadowclone learn --deep` continues it for up to 5 minutes.
|
|
63
|
+
7. Tell the user to restart each open coding-agent session. This loads the plugin, the MCP server, and the native guidance.
|
|
52
64
|
|
|
53
|
-
Do not
|
|
65
|
+
Do not turn on a source, call a model, read sessions, or publish files without the matching consent. Keep command output that holds local paths or user content out of shared artifacts.
|
|
@@ -31,10 +31,12 @@ A pull request needs a review. Run `shadowclone review <number>` in the reposito
|
|
|
31
31
|
- Compatibility: public APIs, schemas, migrations, configuration, and data that older code reads.
|
|
32
32
|
- Standards: a rule in the standards of the packet that the change breaks.
|
|
33
33
|
3. Each signal rule hit and each new toolchain diagnostic is a candidate with an id, such as `S1` or `T1`. Check each candidate in the code. If it causes a real failure at the head, raise it in a finding and list its id in the candidates field. If not, put its id in dropped with the reason.
|
|
34
|
-
4.
|
|
35
|
-
5.
|
|
36
|
-
6.
|
|
37
|
-
7.
|
|
34
|
+
4. A risky pattern that the change adds is a failure at the head. Examples are open network access, an injection sink, a lock on a live table, and a privileged container. Drop it only when code in the repository makes it safe. A fact outside the code, such as the current network, the table size, or a token scope, does not make it safe.
|
|
35
|
+
5. When a claim depends on how a library, a framework, or a platform behaves, find its documentation for the version in the lockfile. Search the web and fetch the page. Quote the passage. Do not rely on memory for that behavior.
|
|
36
|
+
6. Give each candidate a fresh subagent with only the claim and its evidence. Tell it to refute the claim from the code and the documentation. If you cannot start a subagent, check the claim again in a new pass that starts from the code.
|
|
37
|
+
7. Keep a candidate only when the refuter could not refute it. Put the reason of the refuter in the refutation field.
|
|
38
|
+
8. Raise each defect in its own finding, even when two defects are in the same file or the same step. Put each finding on the changed line that adds the defect. When the failure shows in a caller, quote that caller as evidence.
|
|
39
|
+
9. Write each finding in short plain sentences, and return the findings as JSON. An empty list is a valid result.
|
|
38
40
|
|
|
39
41
|
Each evidence item has a source, a location, and an exact quote:
|
|
40
42
|
|
|
@@ -64,6 +66,7 @@ Write the text of each finding in Simplified Technical English. Use one idea in
|
|
|
64
66
|
- Report problems that this change introduces or makes reachable. Leave out problems that existed before the change.
|
|
65
67
|
- Leave out formatting, naming taste, missing comments, questions, praise, and suggestions without a failure.
|
|
66
68
|
- Do not repeat the certain findings in the packet, such as committed credentials or advisories for added dependencies. The command reports them.
|
|
69
|
+
- A linter problem in the certain findings does not replace your own finding. If the change causes a failure that a linter also flags, raise it with your evidence on the line that causes it.
|
|
67
70
|
- Rate severity by the mechanism and by how often a real flow reaches it. Check the defaults that limit the impact.
|
|
68
71
|
|
|
69
72
|
## Completion
|
|
@@ -4,14 +4,17 @@ description: 'Use when writing or editing prose that people read, such as docume
|
|
|
4
4
|
metadata:
|
|
5
5
|
shadowclone-category: writing
|
|
6
6
|
shadowclone-section: workflow
|
|
7
|
-
shadowclone-applies-when:
|
|
7
|
+
shadowclone-applies-when: before you write any text that a person reads
|
|
8
8
|
shadowclone-voice: "true"
|
|
9
|
+
shadowclone-always-on: "true"
|
|
9
10
|
---
|
|
10
11
|
# Write Plain English
|
|
11
12
|
|
|
12
13
|
## Use when
|
|
13
14
|
|
|
14
|
-
You write or edit text
|
|
15
|
+
You write or edit any text that a person reads. Examples are a document, a pull request, a commit message, a review comment, a chat reply, and a skill. This skill is always on, so load it before you write.
|
|
16
|
+
|
|
17
|
+
The rules come from ASD-STE100 Simplified Technical English, at about 80% strictness. Fix every checker error. Fix each warning, or keep it and give a reason. Clarity comes first. If a rule makes the text wrong or unclear, break the rule.
|
|
15
18
|
|
|
16
19
|
## Gates
|
|
17
20
|
|
|
@@ -19,7 +22,7 @@ You write or edit text for people: a document, a pull request, a commit message,
|
|
|
19
22
|
2. Is each instruction in the active voice, with the condition before the action?
|
|
20
23
|
3. Do you use one term for one thing, every time?
|
|
21
24
|
4. Is the text free of em dashes and en dashes?
|
|
22
|
-
5. Did you run `scripts/check-ste.mjs` on the text, and fix or explain each
|
|
25
|
+
5. Did you run `scripts/check-ste.mjs` on the text, fix every error, and fix or explain each warning?
|
|
23
26
|
6. Are code, commands, paths, and product names exactly as they were?
|
|
24
27
|
|
|
25
28
|
## Process
|
|
@@ -33,7 +36,15 @@ Write in the user's voice. Before you write, read `~/.agents/voice.md`. If it do
|
|
|
33
36
|
5. Put a condition before its instruction: "If the test fails, read the first error."
|
|
34
37
|
6. Replace each dash with a comma, a period, parentheses, or two sentences. For a range, write "to", as in "2 to 5".
|
|
35
38
|
7. Save the text to a file, and run `node scripts/check-ste.mjs <file>`. If Node is not available, run the script with `bun`. If neither one runs, say that the check did not run.
|
|
36
|
-
8. Fix
|
|
39
|
+
8. Fix every error. For each warning, fix it, or keep it and say why the rule makes the text worse.
|
|
40
|
+
|
|
41
|
+
For a document, also follow these rules:
|
|
42
|
+
|
|
43
|
+
- Lead with the result. Put the reason and the detail after it.
|
|
44
|
+
- Write one topic in each paragraph.
|
|
45
|
+
- Name each heading for the task or the answer that the reader needs.
|
|
46
|
+
- Use a table to compare options. Use a numbered list for steps.
|
|
47
|
+
- Link to the text that already exists. Do not repeat it.
|
|
37
48
|
|
|
38
49
|
## Example
|
|
39
50
|
|