@the-open-engine-company/zeroshot 11.0.0 → 12.0.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/README.md +19 -5
- package/bin/zeroshot.js +10 -2
- package/lib/skills.js +3 -1
- package/package.json +6 -3
- package/skills/zeroshot/SKILL.md +35 -3
- package/skills/zeroshot-plan/SKILL.md +34 -0
package/README.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# `@the-open-engine-company/zeroshot`
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
and
|
|
6
|
-
|
|
3
|
+
zeroshot is the open-source engine for autonomous software production. Its workflow engine
|
|
4
|
+
orchestrates coding agents through implementation, independent code review, testing, repair
|
|
5
|
+
and delivery. Define your team's development and QA process as a reusable multi-agent graph;
|
|
6
|
+
the engine enforces its transitions and retry limits. It works with Codex, Claude Code,
|
|
7
|
+
GitHub Copilot and Pi.
|
|
7
8
|
|
|
8
9
|
This package is the installer for the canonical `zeroshot` executable and agent skills. The package selects the release
|
|
9
10
|
archive for the current Node platform and architecture, verifies it against that release's
|
|
@@ -21,7 +22,20 @@ Claude Code at `${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/<name>/SKILL.md`. Rei
|
|
|
21
22
|
managed copy. A conflicting or edited skill is preserved; installation fails with the exact path so
|
|
22
23
|
the conflict cannot pass unnoticed.
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
Set `ZEROSHOT_SKIP_SKILLS=1` to install or update only the executables:
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
ZEROSHOT_SKIP_SKILLS=1 npm install --global @the-open-engine-company/zeroshot
|
|
29
|
+
ZEROSHOT_SKIP_SKILLS=1 zeroshot update
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Only the exact value `1` enables this opt-out. Export it in your shell configuration to keep later
|
|
33
|
+
installs and updates from recreating removed skills. Existing skills are left untouched, and skill
|
|
34
|
+
conflicts or unwritable destinations do not block executable installation. Unset it to restore
|
|
35
|
+
automatic skill installation.
|
|
36
|
+
|
|
37
|
+
With automatic skill installation enabled, `CLAUDE_CONFIG_DIR` must be absolute when set so the
|
|
38
|
+
managed skills have stable locations.
|
|
25
39
|
|
|
26
40
|
npm 7 and newer do not run uninstall lifecycle scripts. After uninstalling the package, remove the
|
|
27
41
|
managed skill directories above manually if their `SKILL.md` files are still unmodified managed copies.
|
package/bin/zeroshot.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
const fs = require('fs');
|
|
5
|
+
const os = require('os');
|
|
5
6
|
const path = require('path');
|
|
6
7
|
const { spawnSync } = require('child_process');
|
|
7
8
|
const { selectTarget } = require('../lib/install');
|
|
@@ -16,8 +17,15 @@ try {
|
|
|
16
17
|
}
|
|
17
18
|
const result = spawnSync(binary, process.argv.slice(2), { stdio: 'inherit' });
|
|
18
19
|
if (result.error) throw result.error;
|
|
19
|
-
if (result.signal)
|
|
20
|
-
|
|
20
|
+
if (result.signal) {
|
|
21
|
+
// Node ignores some signals, such as SIGPIPE and SIGXFSZ, so the re-raise can return.
|
|
22
|
+
// Then exit with the status a shell reports for that signal death.
|
|
23
|
+
const number = os.constants.signals[result.signal];
|
|
24
|
+
process.exitCode = number === undefined ? 1 : 128 + number;
|
|
25
|
+
process.kill(process.pid, result.signal);
|
|
26
|
+
} else {
|
|
27
|
+
process.exitCode = result.status === null ? 1 : result.status;
|
|
28
|
+
}
|
|
21
29
|
} catch (error) {
|
|
22
30
|
process.stderr.write(`zeroshot: ${error.message}\n`);
|
|
23
31
|
process.exitCode = 1;
|
package/lib/skills.js
CHANGED
|
@@ -137,9 +137,11 @@ function installAt(location, canonical, managed) {
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
function installSkills(options = {}) {
|
|
140
|
+
const environment = options.environment ?? process.env;
|
|
141
|
+
if (environment.ZEROSHOT_SKIP_SKILLS === '1') return [];
|
|
142
|
+
|
|
140
143
|
const packageRoot = options.packageRoot || path.resolve(__dirname, '..');
|
|
141
144
|
const homeDirectory = options.homeDirectory ?? os.homedir();
|
|
142
|
-
const environment = options.environment ?? process.env;
|
|
143
145
|
const uid = options.uid ?? (typeof process.getuid === 'function' ? process.getuid() : undefined);
|
|
144
146
|
const sources = SKILL_NAMES.map((skill) => {
|
|
145
147
|
const canonical = fs.readFileSync(path.join(packageRoot, 'skills', skill, 'SKILL.md'), 'utf8');
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@the-open-engine-company/zeroshot",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "12.0.0",
|
|
4
|
+
"description": "The open-source engine for autonomous software production. Orchestrate coding agents through implementation, code review, testing and repair.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|
|
7
7
|
"codex",
|
|
@@ -12,7 +12,10 @@
|
|
|
12
12
|
"agent-orchestration",
|
|
13
13
|
"code-review",
|
|
14
14
|
"verification",
|
|
15
|
-
"cli"
|
|
15
|
+
"cli",
|
|
16
|
+
"autonomous-software-production",
|
|
17
|
+
"workflow-engine",
|
|
18
|
+
"qa-automation"
|
|
16
19
|
],
|
|
17
20
|
"homepage": "https://zeroshot.sh",
|
|
18
21
|
"license": "MIT",
|
package/skills/zeroshot/SKILL.md
CHANGED
|
@@ -30,7 +30,8 @@ a plan file exists (`.zeroshot/plans/<id>.md`), use its Goal, Context, Acceptanc
|
|
|
30
30
|
Constraints, Decided approach and Decisions as the task. Criteria marked `Check (manual):` need a
|
|
31
31
|
person or another environment: tell the run to list them rather than verify them. If the plan lists
|
|
32
32
|
`depends_on`, confirm with the user that those plans are built and merged before starting it, and
|
|
33
|
-
include any constraints they share that the plan does not repeat
|
|
33
|
+
include any constraints they share that the plan does not repeat, or submit the dependent plans
|
|
34
|
+
together as a stack on Platform (see Submit a stack).
|
|
34
35
|
|
|
35
36
|
Never start a Zeroshot run merely because the skill is available. The user must ask to use Zeroshot.
|
|
36
37
|
A worker already executing inside a Zeroshot run should perform its assigned work directly, not start
|
|
@@ -112,9 +113,9 @@ When no saved profile fits and the user has not asked for Platform, run the buil
|
|
|
112
113
|
|
|
113
114
|
## Review an issue or pull request
|
|
114
115
|
|
|
115
|
-
The `pr-review` and `issue-review` templates post reports as comments by default.
|
|
116
|
+
The `pr-review`, `code-review` and `issue-review` templates post reports as comments by default.
|
|
116
117
|
PR review classifies whether reproduction is necessary, runs required full-stack checks (including
|
|
117
|
-
a browser for UI changes), then checks the diff and linked issue coverage. Its final report is concise. PR
|
|
118
|
+
a browser for UI changes), then checks the diff and linked issue coverage. Its final report is concise. `code-review` takes the same PR input and runs parallel specialist reviewers whose verified findings become one comment. Both PR templates use comment delivery; issue review also supports `--delivery none` for a report without publication. Supply an issue or PR URL through `--task-from`, which resolves
|
|
118
119
|
title/body and pins source before execution:
|
|
119
120
|
|
|
120
121
|
```console
|
|
@@ -251,6 +252,37 @@ Named targets receive the remote revision, not uncommitted files. Check dirty or
|
|
|
251
252
|
never push or omit it without authorization. Confirm the exact repository, branch, revision, target,
|
|
252
253
|
profile, and delivery intent reported for the run.
|
|
253
254
|
|
|
255
|
+
## Submit a stack
|
|
256
|
+
|
|
257
|
+
A stack submits several dependent tasks to Platform at once, for example the stack manifest the
|
|
258
|
+
`zeroshot-plan` skill writes as `.zeroshot/plans/<id>.stack.json`. It is atomic and immutable: every
|
|
259
|
+
run uses one repository, base branch and profile, and `needs` decides which runs must succeed before
|
|
260
|
+
another starts without passing output between them. Submit one only when the user asks. The
|
|
261
|
+
manifest's `delivery` is required; when it is still a placeholder, ask the user to choose:
|
|
262
|
+
|
|
263
|
+
- `merge`: each run merges into the base branch before the runs that need it start. The profile
|
|
264
|
+
needs exactly one Git merge delivery node, `merge@2` or `merge@3` (`--ship` templates use
|
|
265
|
+
`merge@3`).
|
|
266
|
+
- `stacked_pull_requests`: Zeroshot puts the runs in one line, in dependency order with ties broken
|
|
267
|
+
by run name, and each run opens a pull request against the branch of the run before it. Nothing
|
|
268
|
+
merges; the stack is done when every pull request is open. The profile needs exactly one `pr@2`
|
|
269
|
+
delivery node, the `software-change` default.
|
|
270
|
+
|
|
271
|
+
Agent bindings in the profile must not declare `GH_TOKEN`. Validate, show the user the printed order
|
|
272
|
+
for stacked pull requests, then submit with a stable key and follow it:
|
|
273
|
+
|
|
274
|
+
```console
|
|
275
|
+
zeroshot stack validate STACK.json
|
|
276
|
+
zeroshot stack submit STACK.json --target platform --submission-key KEY
|
|
277
|
+
zeroshot stack status STACK_ID --target platform
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
`zeroshot stack --help` documents the manifest. Stacked pull requests are reviewed and merged from
|
|
281
|
+
the bottom up. GitHub moves a child pull request onto the base branch when its merged parent's
|
|
282
|
+
branch is deleted; a squash-merged parent, or a parent changed during review, leaves the pull
|
|
283
|
+
requests above it to rebase by hand. `zeroshot stack force-stop` stops every unfinished run; use it
|
|
284
|
+
only when the user intends to stop the stack.
|
|
285
|
+
|
|
254
286
|
## Observe and troubleshoot
|
|
255
287
|
|
|
256
288
|
Keep the run ID and target:
|
|
@@ -212,3 +212,37 @@ prepares the edit you are about to make; this skill writes a plan file that outl
|
|
|
212
212
|
`zeroshot` skill with the plan's Goal, Context, Acceptance criteria, Constraints, Decided approach
|
|
213
213
|
and Decisions as the task, and start it only when the user asks. After the run, remind the user of
|
|
214
214
|
the manual checks it could not perform.
|
|
215
|
+
- **Stack:** when the plans you wrote are linked by `depends_on`, offer to also write a stack
|
|
216
|
+
manifest so Zeroshot Platform can build them in order from one submission. Write it only when the
|
|
217
|
+
user agrees, as `.zeroshot/plans/<id>.stack.json` beside the plans, where `<id>` is the plan the
|
|
218
|
+
others build on:
|
|
219
|
+
|
|
220
|
+
```json
|
|
221
|
+
{
|
|
222
|
+
"schema": "zeroshot.stack/v1",
|
|
223
|
+
"title": "<title of that plan>",
|
|
224
|
+
"delivery": "<merge or stacked_pull_requests>",
|
|
225
|
+
"source": { "repository": "<owner/name>", "branch": "<base branch>" },
|
|
226
|
+
"profile": "<org:NAME or user:NAME>",
|
|
227
|
+
"expiresAt": "<RFC 3339 time, at most seven days ahead>",
|
|
228
|
+
"runs": {
|
|
229
|
+
"<plan id>": {
|
|
230
|
+
"needs": ["<ids from the plan's depends_on>"],
|
|
231
|
+
"input": { "task": "<the plan's Goal through Decisions>" }
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Add one run per plan, named by its id. Its task is one string holding the plan's Goal, Context,
|
|
238
|
+
Acceptance criteria, Constraints, Decided approach and Decisions sections as written, the task a
|
|
239
|
+
single run would get; use the profile's own input field if it has no `task`. `needs` lists the
|
|
240
|
+
`depends_on` ids that are in this stack and is omitted when there are none; a dependency outside
|
|
241
|
+
the stack must be built and merged before the stack is submitted. Take the repository and base
|
|
242
|
+
branch from the checkout and ask for the Platform profile and deadline. Leave `delivery` to the
|
|
243
|
+
user and keep the placeholder until they choose: `merge` merges each plan into the base branch
|
|
244
|
+
before the plans that need it start; `stacked_pull_requests` builds the plans in one line, in
|
|
245
|
+
dependency order with ties broken by id, and opens one pull request per plan against the branch of
|
|
246
|
+
the plan before it, merging nothing. Check the file with `zeroshot stack validate` when the CLI is
|
|
247
|
+
installed (the placeholder fails until `delivery` is chosen) and leave submission to the
|
|
248
|
+
`zeroshot` skill.
|