opencode-ship 1.1.8 → 1.1.9-rc.1
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 +21 -0
- package/README.md +10 -10
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/assets/agents/ship-controller.md +50 -28
- package/assets/agents/ship-final-spec-reviewer.md +11 -11
- package/assets/agents/ship-final-standards-reviewer.md +11 -11
- package/assets/agents/ship-plan.md +24 -5
- package/assets/agents/ship-planner.md +46 -20
- package/assets/agents/{delivery-reviewer.md → ship-reviewer.md} +16 -16
- package/assets/agents/ship-task-builder.md +11 -11
- package/assets/agents/ship-task-reviewer.md +12 -12
- package/assets/agents/{delivery-verifier.md → ship-verifier.md} +13 -13
- package/assets/commands/setup-ship-workflow.md +6 -5
- package/assets/commands/ship-deliver.md +21 -9
- package/assets/defaults/workflow-models.history.json +7 -0
- package/assets/defaults/workflow-models.json +5 -0
- package/assets/skills/brainstorming/SKILL.md +10 -7
- package/assets/skills/dispatching-parallel-agents/SKILL.md +1 -1
- package/assets/skills/engineering-workflow/SKILL.md +10 -4
- package/assets/skills/executing-plans/SKILL.md +18 -63
- package/assets/skills/planning-research-checkpoint/SKILL.md +16 -13
- package/assets/skills/receiving-code-review/SKILL.md +1 -1
- package/assets/skills/requesting-code-review/SKILL.md +1 -1
- package/assets/skills/setup-ship-workflow/SKILL.md +27 -33
- package/assets/skills/{delivery-workflow → ship-workflow}/SKILL.md +37 -11
- package/assets/skills/skill-discovery/SKILL.md +17 -89
- package/assets/skills/subagent-driven-development/SKILL.md +6 -2
- package/assets/skills/systematic-debugging/SKILL.md +1 -1
- package/assets/skills/test-driven-development/SKILL.md +1 -1
- package/assets/skills/verification-before-completion/SKILL.md +1 -1
- package/assets/skills/wayfinder/SKILL.md +7 -1
- package/assets/skills/writing-plans/SKILL.md +31 -20
- package/dist/cli.js +1476 -174
- package/dist/core.js +99 -7
- package/dist/plugin.js +18510 -17921
- package/package.json +2 -1
- package/schema/project-adapter.example.json +2 -2
- package/schema/project-opencode-shim.json +2 -0
- package/schema/ship-lock.schema.json +23 -2
- package/tests/plugin/expected-tools.mjs +46 -5
- package/tests/plugin/plugin-load.test.mjs +27 -5
- package/vendor/sources.json +21 -21
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-ship",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.9-rc.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "npm-distributed OpenCode installer that materializes the delivery plugin, reviewer/verifier agents, skills, ship config and lock into any consumer repository.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"files": [
|
|
47
47
|
"dist",
|
|
48
48
|
"assets/agents",
|
|
49
|
+
"assets/defaults",
|
|
49
50
|
"assets/commands",
|
|
50
51
|
"assets/skills",
|
|
51
52
|
"schema",
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
"invalidateOnHeadChange": true
|
|
25
25
|
},
|
|
26
26
|
"review": {
|
|
27
|
-
"agent": "
|
|
27
|
+
"agent": "ship-reviewer",
|
|
28
28
|
"required": true,
|
|
29
29
|
"invalidateOnHeadChange": true
|
|
30
30
|
},
|
|
31
31
|
"ci": {
|
|
32
32
|
"driver": "github-status-checks",
|
|
33
|
-
"requiredChecks": ["
|
|
33
|
+
"requiredChecks": ["opencode-ship-verify"],
|
|
34
34
|
"wait": true,
|
|
35
35
|
"flakyRetry": 1
|
|
36
36
|
},
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
"required": ["contractVersion", "manager", "files", "integrity"],
|
|
7
7
|
"additionalProperties": false,
|
|
8
8
|
"properties": {
|
|
9
|
-
"contractVersion": { "enum": [1, 2, 3, 4] },
|
|
9
|
+
"contractVersion": { "enum": [1, 2, 3, 4, 5] },
|
|
10
10
|
"manager": {
|
|
11
11
|
"type": "object",
|
|
12
12
|
"required": ["schemaVersion", "name", "version", "appliedAt", "config"],
|
|
13
13
|
"additionalProperties": false,
|
|
14
14
|
"properties": {
|
|
15
|
-
"schemaVersion": { "enum": [1, 2, 3, 4] },
|
|
15
|
+
"schemaVersion": { "enum": [1, 2, 3, 4, 5] },
|
|
16
16
|
"name": { "type": "string", "pattern": "^opencode-ship$" },
|
|
17
17
|
"version": { "type": "string", "minLength": 1 },
|
|
18
18
|
"templateSet": { "type": "string", "minLength": 1 },
|
|
@@ -35,6 +35,16 @@
|
|
|
35
35
|
"existed": { "type": "boolean" }
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
|
+
"models": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"additionalProperties": false,
|
|
41
|
+
"required": ["planner", "builder", "finalReviewer"],
|
|
42
|
+
"properties": {
|
|
43
|
+
"planner": { "$ref": "#/$defs/modelProvenance" },
|
|
44
|
+
"builder": { "$ref": "#/$defs/modelProvenance" },
|
|
45
|
+
"finalReviewer": { "$ref": "#/$defs/modelProvenance" }
|
|
46
|
+
}
|
|
47
|
+
},
|
|
38
48
|
"rootDocuments": {
|
|
39
49
|
"type": "array",
|
|
40
50
|
"items": {
|
|
@@ -103,5 +113,16 @@
|
|
|
103
113
|
"coreVersion": { "type": "string" }
|
|
104
114
|
}
|
|
105
115
|
}
|
|
116
|
+
},
|
|
117
|
+
"$defs": {
|
|
118
|
+
"modelProvenance": {
|
|
119
|
+
"type": "object",
|
|
120
|
+
"additionalProperties": false,
|
|
121
|
+
"required": ["source", "applied"],
|
|
122
|
+
"properties": {
|
|
123
|
+
"source": { "enum": ["default", "override"] },
|
|
124
|
+
"applied": { "type": "string", "minLength": 1 }
|
|
125
|
+
}
|
|
126
|
+
}
|
|
106
127
|
}
|
|
107
128
|
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Canonical opencode-ship tool set.
|
|
3
3
|
*
|
|
4
|
-
* The bundled plugin registers
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* The bundled plugin registers 51 typed tools:
|
|
5
|
+
* - 17 canonical ship_* lifecycle tools
|
|
6
|
+
* - 17 delivery_* aliases (same runners; kept for one minor)
|
|
7
|
+
* - 17 already-canonical ship_* workflow tools
|
|
8
|
+
*
|
|
9
|
+
* This module is the single source of truth for the expected set so:
|
|
7
10
|
*
|
|
8
11
|
* - the in-process plugin-load test asserts the contract at the
|
|
9
12
|
* plugin boundary;
|
|
@@ -17,7 +20,7 @@
|
|
|
17
20
|
*/
|
|
18
21
|
|
|
19
22
|
export const EXPECTED_OPENCODE_SHIP_TOOLS = Object.freeze([
|
|
20
|
-
// 17
|
|
23
|
+
// 17 delivery_* aliases
|
|
21
24
|
"delivery_abandon",
|
|
22
25
|
"delivery_cleanup",
|
|
23
26
|
"delivery_github_read",
|
|
@@ -35,7 +38,25 @@ export const EXPECTED_OPENCODE_SHIP_TOOLS = Object.freeze([
|
|
|
35
38
|
"delivery_sync",
|
|
36
39
|
"delivery_verify",
|
|
37
40
|
"delivery_worktree",
|
|
38
|
-
// 17
|
|
41
|
+
// 17 canonical ship_* lifecycle tools
|
|
42
|
+
"ship_abandon",
|
|
43
|
+
"ship_cleanup",
|
|
44
|
+
"ship_github_read",
|
|
45
|
+
"ship_inspect",
|
|
46
|
+
"ship_issue",
|
|
47
|
+
"ship_issue_close",
|
|
48
|
+
"ship_issue_comment",
|
|
49
|
+
"ship_issue_labels",
|
|
50
|
+
"ship_issue_link",
|
|
51
|
+
"ship_merge",
|
|
52
|
+
"ship_pr",
|
|
53
|
+
"ship_publish",
|
|
54
|
+
"ship_ready",
|
|
55
|
+
"ship_review",
|
|
56
|
+
"ship_sync",
|
|
57
|
+
"ship_verify",
|
|
58
|
+
"ship_worktree",
|
|
59
|
+
// 17 already-canonical ship workflow tools
|
|
39
60
|
"ship_deliver",
|
|
40
61
|
"ship_final_review",
|
|
41
62
|
"ship_plan_approve",
|
|
@@ -64,3 +85,23 @@ export const EXPECTED_OPENCODE_SHIP_TOOL_IDS = Object.freeze(
|
|
|
64
85
|
);
|
|
65
86
|
|
|
66
87
|
export const OPENCODE_SHIP_TOOL_COUNT = EXPECTED_OPENCODE_SHIP_TOOLS.length;
|
|
88
|
+
|
|
89
|
+
export const LIFECYCLE_TOOL_ALIASES = Object.freeze([
|
|
90
|
+
["ship_inspect", "delivery_inspect"],
|
|
91
|
+
["ship_issue", "delivery_issue"],
|
|
92
|
+
["ship_worktree", "delivery_worktree"],
|
|
93
|
+
["ship_verify", "delivery_verify"],
|
|
94
|
+
["ship_review", "delivery_review"],
|
|
95
|
+
["ship_pr", "delivery_pr"],
|
|
96
|
+
["ship_ready", "delivery_ready"],
|
|
97
|
+
["ship_merge", "delivery_merge"],
|
|
98
|
+
["ship_cleanup", "delivery_cleanup"],
|
|
99
|
+
["ship_abandon", "delivery_abandon"],
|
|
100
|
+
["ship_github_read", "delivery_github_read"],
|
|
101
|
+
["ship_issue_comment", "delivery_issue_comment"],
|
|
102
|
+
["ship_issue_labels", "delivery_issue_labels"],
|
|
103
|
+
["ship_issue_link", "delivery_issue_link"],
|
|
104
|
+
["ship_issue_close", "delivery_issue_close"],
|
|
105
|
+
["ship_sync", "delivery_sync"],
|
|
106
|
+
["ship_publish", "delivery_publish"],
|
|
107
|
+
]);
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
* runtime types without booting OpenCode. It verifies:
|
|
6
6
|
* - the bundled plugin is the default-exported function
|
|
7
7
|
* - calling it returns an object with a `tool` key
|
|
8
|
-
* - the `tool` object exposes exactly the
|
|
9
|
-
* definitions (17 delivery + 17 workflow)
|
|
8
|
+
* - the `tool` object exposes exactly the canonical named tool
|
|
9
|
+
* definitions (17 ship lifecycle + 17 delivery aliases + 17 workflow)
|
|
10
10
|
*
|
|
11
|
-
* The canonical
|
|
11
|
+
* The canonical tool set is imported from
|
|
12
12
|
* `tests/plugin/expected-tools.mjs`, the single source of truth
|
|
13
13
|
* shared with the opencode-discovery smoke test.
|
|
14
14
|
*/
|
|
@@ -17,7 +17,7 @@ import test from "node:test";
|
|
|
17
17
|
import assert from "node:assert/strict";
|
|
18
18
|
import { pathToFileURL } from "node:url";
|
|
19
19
|
import { resolve } from "node:path";
|
|
20
|
-
import { EXPECTED_OPENCODE_SHIP_TOOL_IDS, OPENCODE_SHIP_TOOL_COUNT } from "./expected-tools.mjs";
|
|
20
|
+
import { EXPECTED_OPENCODE_SHIP_TOOL_IDS, OPENCODE_SHIP_TOOL_COUNT, LIFECYCLE_TOOL_ALIASES } from "./expected-tools.mjs";
|
|
21
21
|
|
|
22
22
|
const pluginPath = pathToFileURL(resolve("dist/plugin.js")).href;
|
|
23
23
|
|
|
@@ -34,7 +34,7 @@ test("plugin: bundle exports only plugin entry functions", async () => {
|
|
|
34
34
|
assert.deepEqual(Object.keys(mod).sort(), ["ShipPlugin", "default"]);
|
|
35
35
|
});
|
|
36
36
|
|
|
37
|
-
test("plugin: registers
|
|
37
|
+
test("plugin: registers the canonical tool set including delivery_* aliases", async () => {
|
|
38
38
|
const mod = await import(pluginPath);
|
|
39
39
|
const fakeCtx = {
|
|
40
40
|
worktree: process.cwd(),
|
|
@@ -68,3 +68,25 @@ test("plugin: every tool returns a contract-version-2 envelope", async () => {
|
|
|
68
68
|
assert.ok(typeof parsed.kind === "string", `${id} must include a kind`);
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
|
+
|
|
72
|
+
test("plugin: ship_issue and delivery_issue exist and share behavior", async () => {
|
|
73
|
+
const mod = await import(pluginPath);
|
|
74
|
+
const fakeCtx = {
|
|
75
|
+
worktree: process.cwd(),
|
|
76
|
+
project: { worktree: process.cwd() },
|
|
77
|
+
client: {},
|
|
78
|
+
directory: process.cwd(),
|
|
79
|
+
};
|
|
80
|
+
const result = await mod.default(fakeCtx);
|
|
81
|
+
for (const [canonical, alias] of LIFECYCLE_TOOL_ALIASES) {
|
|
82
|
+
assert.ok(result.tool[canonical], `missing canonical ${canonical}`);
|
|
83
|
+
assert.ok(result.tool[alias], `missing alias ${alias}`);
|
|
84
|
+
assert.equal(result.tool[canonical].description, result.tool[alias].description, `${canonical} and ${alias} must share description`);
|
|
85
|
+
const canonicalEnv = JSON.parse(await result.tool[canonical].execute({}, fakeCtx));
|
|
86
|
+
const aliasEnv = JSON.parse(await result.tool[alias].execute({}, fakeCtx));
|
|
87
|
+
assert.equal(canonicalEnv.ok, aliasEnv.ok, `${canonical} and ${alias} must share ok`);
|
|
88
|
+
const canonicalBody = canonicalEnv.data ?? canonicalEnv.details ?? canonicalEnv.message;
|
|
89
|
+
const aliasBody = aliasEnv.data ?? aliasEnv.details ?? aliasEnv.message;
|
|
90
|
+
assert.deepEqual(canonicalBody, aliasBody, `${canonical} and ${alias} must share payload`);
|
|
91
|
+
}
|
|
92
|
+
});
|
package/vendor/sources.json
CHANGED
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
"localFrozenPath": "vendor/upstreams/mattpocock/skills/engineering/wayfinder/SKILL.md",
|
|
178
178
|
"localFrozenSha256": "257e40665b28ae959ffdcb97d7a72b074360f4a3d201bd84786505308546e434",
|
|
179
179
|
"localTarget": "assets/skills/wayfinder/SKILL.md",
|
|
180
|
-
"localSha256": "
|
|
180
|
+
"localSha256": "8a918643fa69af6230f4425ab171eb29dcc1483e9ca2cef1e059057de005d257",
|
|
181
181
|
"reuseMode": "adapted",
|
|
182
182
|
"license": "MIT",
|
|
183
183
|
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. The strong planner child session is\nconfigured with `openai/gpt-5.6-sol` and the durable workflow\nstate lives under `<git-common-dir>/opencode-ship/`. All\nGitHub mutations go through Ship's typed tools; never use\n`gh api` or raw shell."
|
|
@@ -337,10 +337,10 @@
|
|
|
337
337
|
"localFrozenPath": "vendor/upstreams/obra/skills/brainstorming/SKILL.md",
|
|
338
338
|
"localFrozenSha256": "4a54a4858b99807f3155ed1614b2f116e35ea5c1b788e793f565dd837fd3891f",
|
|
339
339
|
"localTarget": "assets/skills/brainstorming/SKILL.md",
|
|
340
|
-
"localSha256": "
|
|
340
|
+
"localSha256": "bf41cd2c67a0df2a7b6ecf2a87eeabc4bcd3e9ff90830c32d459a30c407fafa1",
|
|
341
341
|
"reuseMode": "adapted",
|
|
342
342
|
"license": "MIT",
|
|
343
|
-
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`
|
|
343
|
+
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`ship_verify`, not by the model self-asserting completion."
|
|
344
344
|
},
|
|
345
345
|
{
|
|
346
346
|
"skill": "brainstorming",
|
|
@@ -385,10 +385,10 @@
|
|
|
385
385
|
"localFrozenPath": "vendor/upstreams/obra/skills/writing-plans/SKILL.md",
|
|
386
386
|
"localFrozenSha256": "72190c88b2b5a67a96b91d66aa72b9161913e10e8769da3f28a226f4cc7b99d0",
|
|
387
387
|
"localTarget": "assets/skills/writing-plans/SKILL.md",
|
|
388
|
-
"localSha256": "
|
|
388
|
+
"localSha256": "8fa16292dee603703729918e211ccc311d0e85592c5dd425bd2104dc408a229d",
|
|
389
389
|
"reuseMode": "adapted",
|
|
390
390
|
"license": "MIT",
|
|
391
|
-
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`
|
|
391
|
+
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`ship_verify`, not by the model self-asserting completion."
|
|
392
392
|
},
|
|
393
393
|
{
|
|
394
394
|
"skill": "writing-plans",
|
|
@@ -417,10 +417,10 @@
|
|
|
417
417
|
"localFrozenPath": "vendor/upstreams/obra/skills/executing-plans/SKILL.md",
|
|
418
418
|
"localFrozenSha256": "c4c3d8b628c51114cd165fb8246fe02744cd8be180032328391252e653028d9b",
|
|
419
419
|
"localTarget": "assets/skills/executing-plans/SKILL.md",
|
|
420
|
-
"localSha256": "
|
|
420
|
+
"localSha256": "8508289357f611997cba6a3fb2a6f4d2c5b420fbb181319df6535e7b0edeb943",
|
|
421
421
|
"reuseMode": "adapted",
|
|
422
422
|
"license": "MIT",
|
|
423
|
-
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`
|
|
423
|
+
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`ship_verify`, not by the model self-asserting completion."
|
|
424
424
|
},
|
|
425
425
|
{
|
|
426
426
|
"skill": "subagent-driven-development",
|
|
@@ -433,10 +433,10 @@
|
|
|
433
433
|
"localFrozenPath": "vendor/upstreams/obra/skills/subagent-driven-development/SKILL.md",
|
|
434
434
|
"localFrozenSha256": "349a08ad8b59b19b86c13a7d2f34a1a38719bf88257004a863eefefa8d9f9e40",
|
|
435
435
|
"localTarget": "assets/skills/subagent-driven-development/SKILL.md",
|
|
436
|
-
"localSha256": "
|
|
436
|
+
"localSha256": "4a9a0b66814a0213e0225a39bb1a88caf44b10297b3feae1f9f11618a2bac708",
|
|
437
437
|
"reuseMode": "adapted",
|
|
438
438
|
"license": "MIT",
|
|
439
|
-
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`
|
|
439
|
+
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`ship_verify`, not by the model self-asserting completion."
|
|
440
440
|
},
|
|
441
441
|
{
|
|
442
442
|
"skill": "subagent-driven-development",
|
|
@@ -497,10 +497,10 @@
|
|
|
497
497
|
"localFrozenPath": "vendor/upstreams/obra/skills/dispatching-parallel-agents/SKILL.md",
|
|
498
498
|
"localFrozenSha256": "1968923066f3b707eb01d1992cdf4c42284c3855f70253b9cd5000ff45fca13c",
|
|
499
499
|
"localTarget": "assets/skills/dispatching-parallel-agents/SKILL.md",
|
|
500
|
-
"localSha256": "
|
|
500
|
+
"localSha256": "44c29ba284855b57537e908ee0d16d56cc3be484553d1953276148d423de0397",
|
|
501
501
|
"reuseMode": "adapted",
|
|
502
502
|
"license": "MIT",
|
|
503
|
-
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`
|
|
503
|
+
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`ship_verify`, not by the model self-asserting completion."
|
|
504
504
|
},
|
|
505
505
|
{
|
|
506
506
|
"skill": "test-driven-development",
|
|
@@ -513,10 +513,10 @@
|
|
|
513
513
|
"localFrozenPath": "vendor/upstreams/obra/skills/test-driven-development/SKILL.md",
|
|
514
514
|
"localFrozenSha256": "bf1b8216e523851a411e91d429a7c1c2a173e79d88957bc78e348218d50edd54",
|
|
515
515
|
"localTarget": "assets/skills/test-driven-development/SKILL.md",
|
|
516
|
-
"localSha256": "
|
|
516
|
+
"localSha256": "da29c14a2e16b77cfcfc7b1a6c137e86b3f60458b27c64505df4404813e817dc",
|
|
517
517
|
"reuseMode": "adapted",
|
|
518
518
|
"license": "MIT",
|
|
519
|
-
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`
|
|
519
|
+
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`ship_verify`, not by the model self-asserting completion."
|
|
520
520
|
},
|
|
521
521
|
{
|
|
522
522
|
"skill": "test-driven-development",
|
|
@@ -561,10 +561,10 @@
|
|
|
561
561
|
"localFrozenPath": "vendor/upstreams/obra/skills/systematic-debugging/SKILL.md",
|
|
562
562
|
"localFrozenSha256": "808fc5717aa88ad65efff312b11c186294d3e6ee301afb584e2f86599b137787",
|
|
563
563
|
"localTarget": "assets/skills/systematic-debugging/SKILL.md",
|
|
564
|
-
"localSha256": "
|
|
564
|
+
"localSha256": "135f297fde873ff99de25d948003e14e90602de88ff75e59f2ee113854c74c6c",
|
|
565
565
|
"reuseMode": "adapted",
|
|
566
566
|
"license": "MIT",
|
|
567
|
-
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`
|
|
567
|
+
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`ship_verify`, not by the model self-asserting completion."
|
|
568
568
|
},
|
|
569
569
|
{
|
|
570
570
|
"skill": "systematic-debugging",
|
|
@@ -721,10 +721,10 @@
|
|
|
721
721
|
"localFrozenPath": "vendor/upstreams/obra/skills/verification-before-completion/SKILL.md",
|
|
722
722
|
"localFrozenSha256": "2befe7fc55bcadaa3d97dd9e8efeb633d2561c0ebe74c5a8b17c4d9e7e4520b3",
|
|
723
723
|
"localTarget": "assets/skills/verification-before-completion/SKILL.md",
|
|
724
|
-
"localSha256": "
|
|
724
|
+
"localSha256": "46b6d98d8a6349ce1c301ad88b84f31b865fecc06ee8f4e81087aacc41b703b6",
|
|
725
725
|
"reuseMode": "adapted",
|
|
726
726
|
"license": "MIT",
|
|
727
|
-
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`
|
|
727
|
+
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`ship_verify`, not by the model self-asserting completion."
|
|
728
728
|
},
|
|
729
729
|
{
|
|
730
730
|
"skill": "requesting-code-review",
|
|
@@ -737,10 +737,10 @@
|
|
|
737
737
|
"localFrozenPath": "vendor/upstreams/obra/skills/requesting-code-review/SKILL.md",
|
|
738
738
|
"localFrozenSha256": "d71cc01ba56d2325cf8af5f7c11837819b63ecd57de0bfdb812f7f3ff7751df8",
|
|
739
739
|
"localTarget": "assets/skills/requesting-code-review/SKILL.md",
|
|
740
|
-
"localSha256": "
|
|
740
|
+
"localSha256": "3eed2e41ba0b40cf6ecff658d4b5fc19dde1e615cfbea1d2a294c99e69dd6df3",
|
|
741
741
|
"reuseMode": "adapted",
|
|
742
742
|
"license": "MIT",
|
|
743
|
-
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`
|
|
743
|
+
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`ship_verify`, not by the model self-asserting completion."
|
|
744
744
|
},
|
|
745
745
|
{
|
|
746
746
|
"skill": "requesting-code-review",
|
|
@@ -769,10 +769,10 @@
|
|
|
769
769
|
"localFrozenPath": "vendor/upstreams/obra/skills/receiving-code-review/SKILL.md",
|
|
770
770
|
"localFrozenSha256": "091df1629510af1b92fc4abd6f96732ebedb4cb2c0f3457e8f2740b0504a2438",
|
|
771
771
|
"localTarget": "assets/skills/receiving-code-review/SKILL.md",
|
|
772
|
-
"localSha256": "
|
|
772
|
+
"localSha256": "a83b0aef63159f3f970bbd4276f2d3705642ed06cf6ec5463f56f1bad8509cbb",
|
|
773
773
|
"reuseMode": "adapted",
|
|
774
774
|
"license": "MIT",
|
|
775
|
-
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`
|
|
775
|
+
"adaptationNote": "## Ship integration\n\nThis skill is part of the engineering profile shipped by\n`opencode-ship@1.0`. Execution is driven by the deterministic\nShip controller; the cheap builder (`minimax/MiniMax-M3`) cannot\ncommit, push, mutate GitHub, mark Ready, or merge. The\nverification-before-completion rule is enforced by\n`ship_verify`, not by the model self-asserting completion."
|
|
776
776
|
}
|
|
777
777
|
]
|
|
778
778
|
}
|