@kisev/skills-opencode 2.4.1 → 3.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 +6 -4
- package/README.ru.md +7 -7
- package/dist/assets/agents/manager.md +9 -7
- package/dist/assets/migration-inventory.json +16 -10
- package/dist/catalog.d.ts +3 -3
- package/dist/catalog.js +2 -4
- package/dist/cli-output.d.ts +2 -0
- package/dist/cli-output.js +22 -4
- package/dist/cli.js +153 -126
- package/dist/doctor.js +0 -1
- package/dist/index.d.ts +0 -136
- package/dist/index.js +1 -95
- package/dist/installer.d.ts +0 -1
- package/dist/installer.js +15 -11
- package/dist/lifecycle.d.ts +14 -1
- package/dist/lifecycle.js +67 -24
- package/dist/reconcile.d.ts +43 -5
- package/dist/reconcile.js +539 -71
- package/dist/registry.d.ts +2 -4
- package/dist/registry.js +5 -43
- package/package.json +1 -1
- package/dist/assets/commands/agent-profiles.md +0 -9
- package/dist/assets/commands/capabilities.md +0 -9
- package/dist/assets/commands/doctor.md +0 -9
- package/dist/assets/commands/doit.md +0 -10
- package/dist/assets/commands/lsp-report.md +0 -10
- package/dist/assets/commands/reconcile.md +0 -9
package/README.md
CHANGED
|
@@ -8,13 +8,15 @@ update, and removal lifecycle.
|
|
|
8
8
|
|
|
9
9
|
## What It Adds
|
|
10
10
|
|
|
11
|
-
- OpenCode slash-command adapters for installed portable skills
|
|
11
|
+
- OpenCode slash-command adapters for installed portable skills.
|
|
12
12
|
- Six fixed agents: `manager`, `architect`, `mapper`, `worker`, `review`, and
|
|
13
13
|
`critic`.
|
|
14
|
-
- Capability routing,
|
|
14
|
+
- Capability routing plus direct CLI diagnostics, reconciliation, and profiles.
|
|
15
15
|
- Optional `rules-injector`, `rtk`, and `zed-bell` plugin wrappers.
|
|
16
16
|
|
|
17
|
-
The package does not contain, install,
|
|
17
|
+
The package does not contain, install, or update portable skills. Confirmed
|
|
18
|
+
reconcile can invoke the pinned `skills` CLI directly to remove a marked retired
|
|
19
|
+
skill from OpenCode and Codex.
|
|
18
20
|
|
|
19
21
|
## Requirements
|
|
20
22
|
|
|
@@ -29,7 +31,7 @@ assets:
|
|
|
29
31
|
|
|
30
32
|
```shell
|
|
31
33
|
npm install --save-exact @kisev/skills-opencode
|
|
32
|
-
npx --yes @kisev/skills-opencode@latest install --
|
|
34
|
+
npx --yes @kisev/skills-opencode@latest install --dry-run
|
|
33
35
|
```
|
|
34
36
|
|
|
35
37
|
Run the exact confirmation command printed by the preview. If the selected
|
package/README.ru.md
CHANGED
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
|
|
9
9
|
## Что добавляет пакет
|
|
10
10
|
|
|
11
|
-
- Адаптеры слеш-команд OpenCode для установленных переносимых
|
|
12
|
-
инструментов пакета.
|
|
11
|
+
- Адаптеры слеш-команд OpenCode для установленных переносимых навыков.
|
|
13
12
|
- Шесть агентов с фиксированными ролями: `manager`, `architect`, `mapper`, `worker`,
|
|
14
13
|
`review` и `critic`.
|
|
15
|
-
- Маршрутизация по
|
|
16
|
-
агентов.
|
|
14
|
+
- Маршрутизация по возможностям и прямой CLI для `doctor`, `reconcile` и
|
|
15
|
+
управления профилями агентов.
|
|
17
16
|
- Необязательные обертки плагинов `rules-injector`, `rtk` и `zed-bell`.
|
|
18
17
|
|
|
19
|
-
Пакет не содержит, не
|
|
20
|
-
|
|
18
|
+
Пакет не содержит, не устанавливает и не обновляет переносимые навыки. После
|
|
19
|
+
подтверждения `reconcile` может напрямую вызвать закреплённую версию `skills` и
|
|
20
|
+
удалить помеченный устаревший навык из OpenCode и Codex.
|
|
21
21
|
|
|
22
22
|
## Требования
|
|
23
23
|
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
|
|
33
33
|
```shell
|
|
34
34
|
npm install --save-exact @kisev/skills-opencode
|
|
35
|
-
npx --yes @kisev/skills-opencode@latest install --
|
|
35
|
+
npx --yes @kisev/skills-opencode@latest install --dry-run
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Выполните точную команду подтверждения, которую выведет предварительный просмотр.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Coordinates bounded OpenCode routing and execution. Russian triggers: менеджер, координация.
|
|
3
3
|
mode: primary
|
|
4
4
|
steps: 12
|
|
5
5
|
permission:
|
|
@@ -16,15 +16,17 @@ permission:
|
|
|
16
16
|
|
|
17
17
|
# Manager
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
execution -> checks -> report.
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
Own the OpenCode lifecycle for routed work: evidence -> plan -> authorization ->
|
|
20
|
+
execution -> checks -> report. Preserve task state, confirmations, execution
|
|
21
|
+
cards, reports, and terminal outcomes. Do not infer completion from missing or
|
|
22
|
+
invalid subordinate evidence.
|
|
23
23
|
|
|
24
24
|
Use the package `route` tool for delegation. It resolves the host inventory and
|
|
25
25
|
selects one destination: exploration to `mapper`, architecture to `architect`,
|
|
26
26
|
implementation to `worker`, or review to `review` or exactly one selected critic.
|
|
27
|
-
|
|
27
|
+
Handle read-only quick requests directly when delegation is unnecessary. Route
|
|
28
|
+
write-capable documentation and other changes as implementation; do not invent a
|
|
29
|
+
separate destination.
|
|
28
30
|
Never pass caller-supplied agents, capabilities, tools, models, or availability
|
|
29
31
|
to routing. Unknown or user-owned profiles require an explicit trusted override.
|
|
30
32
|
|
|
@@ -32,5 +34,5 @@ Forward the original task, evidence, exact card, confirmation references, and
|
|
|
32
34
|
structured result unchanged. Validate machine contracts at each OpenCode Task
|
|
33
35
|
dispatch and result boundary. Resolve disagreements claim-by-claim against the
|
|
34
36
|
supplied evidence and record the evidence reference; unresolved conflicts remain
|
|
35
|
-
blocked and return to
|
|
37
|
+
blocked and return to the manager. Never vote between agents or start another worker or
|
|
36
38
|
critic from manager prose.
|
|
@@ -18,10 +18,8 @@
|
|
|
18
18
|
"commit-msg",
|
|
19
19
|
"docs-prepare",
|
|
20
20
|
"docs-review",
|
|
21
|
-
"doit",
|
|
22
21
|
"goal",
|
|
23
22
|
"humanize",
|
|
24
|
-
"lsp-report",
|
|
25
23
|
"mattermost",
|
|
26
24
|
"mr-prepare",
|
|
27
25
|
"release-prepare",
|
|
@@ -49,10 +47,8 @@
|
|
|
49
47
|
"commit-msg",
|
|
50
48
|
"docs-prepare",
|
|
51
49
|
"docs-review",
|
|
52
|
-
"doit",
|
|
53
50
|
"goal",
|
|
54
51
|
"humanize",
|
|
55
|
-
"lsp-report",
|
|
56
52
|
"mattermost",
|
|
57
53
|
"mr-prepare",
|
|
58
54
|
"release-prepare",
|
|
@@ -69,13 +65,9 @@
|
|
|
69
65
|
"team-retro",
|
|
70
66
|
"team-roadmap",
|
|
71
67
|
"team-sprint-close",
|
|
72
|
-
"team-sprint-start"
|
|
73
|
-
"capabilities",
|
|
74
|
-
"doctor",
|
|
75
|
-
"reconcile",
|
|
76
|
-
"agent-profiles"
|
|
68
|
+
"team-sprint-start"
|
|
77
69
|
],
|
|
78
|
-
"removed": ["attempt", "schedule", "usage", "overview"],
|
|
70
|
+
"removed": ["attempt", "schedule", "usage", "overview", "doit", "lsp-report"],
|
|
79
71
|
"removed_paths": [
|
|
80
72
|
"skills/attempt",
|
|
81
73
|
"skills/schedule",
|
|
@@ -85,6 +77,14 @@
|
|
|
85
77
|
"skills/skill-improver",
|
|
86
78
|
"skills/walkthrough",
|
|
87
79
|
"skills/team-workflow",
|
|
80
|
+
"skills/doit",
|
|
81
|
+
"skills/lsp-report",
|
|
82
|
+
"commands/agent-profiles.md",
|
|
83
|
+
"commands/capabilities.md",
|
|
84
|
+
"commands/doctor.md",
|
|
85
|
+
"commands/doit.md",
|
|
86
|
+
"commands/lsp-report.md",
|
|
87
|
+
"commands/reconcile.md",
|
|
88
88
|
"commands/route.md",
|
|
89
89
|
"commands/mr-review.md",
|
|
90
90
|
"commands/task-prepare-batch.md",
|
|
@@ -141,6 +141,11 @@
|
|
|
141
141
|
"commands/attempt-show.md": "e7948f593d2188d8bc240af28474383f9276fe14a0d8699770058ef3d7f24fd1",
|
|
142
142
|
"commands/critic-add.md": "08598adb4025b7f2c885bc37d11675971762f34edbe9be96b69deaa47b78a16b",
|
|
143
143
|
"commands/critic-remove.md": "cb3559ffeee8746d747c33ad6c2c7de0b1990319a4f7ec48dd39dbc4b2f82d38",
|
|
144
|
+
"commands/agent-profiles.md": "e04f4aef9a2e9cf9410279adc07301f654dc835d53c950ed8504ee369de49718",
|
|
145
|
+
"commands/capabilities.md": "a49820446cb9378bdaaa15cddb927aad53f65a8c37113c1e75791b27bfcc69f9",
|
|
146
|
+
"commands/doctor.md": "2005324ff1cc4d039ad803b8dedc94f0cceded794947c5641584cf2b3ced66a9",
|
|
147
|
+
"commands/doit.md": "af43f65e5035137b628647e724d5e49ed054d20e6be04d28f944834d9bb4ec0e",
|
|
148
|
+
"commands/lsp-report.md": "77c39db34d7fc01f67ba20d78d7e5745332c64f51b8f18967e3311c7e9a2ede7",
|
|
144
149
|
"commands/mr-review.md": "f9376224cc838b59f052aabc70d89750f64799b90cc89b4adf7d2abb4e8819c4",
|
|
145
150
|
"commands/multi-run-cancel.md": "f64a9e849ec4d7d11f61204d58cfd00b275fba79b4117802c53bbc2cab6094d4",
|
|
146
151
|
"commands/multi-run-compare.md": "e72131f94dfc2e4b8f071d063efb4ce800634969b00258e77b1a84d41ff74490",
|
|
@@ -149,6 +154,7 @@
|
|
|
149
154
|
"commands/multi-run-status.md": "dabe6530845097a7b0e43c24016ba380396074bb433de4c61370799ea81af977",
|
|
150
155
|
"commands/overview.md": "c0f2f62c12945daf375824c9c6117628686fb5ba053fc6f4db617a5e2b3be657",
|
|
151
156
|
"commands/route.md": "49c1def09a6ef86aa62e024b531ef7c66c01f4b2e34e629205bf9753f133b60a",
|
|
157
|
+
"commands/reconcile.md": "d92c2b9cef3586164a30b736b082b7b15be13b4cdc060612fa4307e0df60506a",
|
|
152
158
|
"commands/schedule-add.md": "aff7099cc5cc233e4d9373a02578d117cf3625d04e7db3c5cb93cd35a52d97f4",
|
|
153
159
|
"commands/schedule-disable.md": "ef638a710a1a8640d331aaa5b720ebe26448bcca812e3cd6560a386d608d0446",
|
|
154
160
|
"commands/schedule-enable.md": "f457bbfc1ac05afc76789e9d4c26517678f29acd33fcaade0a6412af6c2f2f13",
|
package/dist/catalog.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare const CATALOG: {
|
|
2
|
-
readonly skills: readonly ["agents-md", "askme", "ast-grep", "code-explain", "code-review", "commit-msg", "docs-prepare", "docs-review", "
|
|
2
|
+
readonly skills: readonly ["agents-md", "askme", "ast-grep", "code-explain", "code-review", "commit-msg", "docs-prepare", "docs-review", "goal", "humanize", "mattermost", "mr-prepare", "release-prepare", "release-review", "rtk", "skill-improve", "slides-prompts-prepare", "spec-manage", "stopit", "briefing", "task-prepare", "task-review", "task-triage", "team-retro", "team-roadmap", "team-sprint-close", "team-sprint-start"];
|
|
3
3
|
readonly plugins: readonly ["rules-injector", "rtk", "zed-bell"];
|
|
4
4
|
readonly agents: readonly ["manager", "architect", "mapper", "worker", "review", "critic"];
|
|
5
|
-
readonly package_commands: readonly [
|
|
6
|
-
readonly tools: readonly ["
|
|
5
|
+
readonly package_commands: readonly [];
|
|
6
|
+
readonly tools: readonly ["route"];
|
|
7
7
|
readonly version: string;
|
|
8
8
|
};
|
package/dist/catalog.js
CHANGED
|
@@ -9,10 +9,8 @@ export const CATALOG = {
|
|
|
9
9
|
"commit-msg",
|
|
10
10
|
"docs-prepare",
|
|
11
11
|
"docs-review",
|
|
12
|
-
"doit",
|
|
13
12
|
"goal",
|
|
14
13
|
"humanize",
|
|
15
|
-
"lsp-report",
|
|
16
14
|
"mattermost",
|
|
17
15
|
"mr-prepare",
|
|
18
16
|
"release-prepare",
|
|
@@ -33,7 +31,7 @@ export const CATALOG = {
|
|
|
33
31
|
],
|
|
34
32
|
plugins: ["rules-injector", "rtk", "zed-bell"],
|
|
35
33
|
agents: ["manager", "architect", "mapper", "worker", "review", "critic"],
|
|
36
|
-
package_commands: [
|
|
37
|
-
tools: ["
|
|
34
|
+
package_commands: [],
|
|
35
|
+
tools: ["route"],
|
|
38
36
|
version: requirePackageVersion(),
|
|
39
37
|
};
|
package/dist/cli-output.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { AgentInventory, AgentProfilePlan } from "./agent-profiles.js";
|
|
|
2
2
|
import type { Plan as InstallerPlan } from "./installer.js";
|
|
3
3
|
import type { ReconcilePlan } from "./reconcile.js";
|
|
4
4
|
import type { DoctorReport } from "./doctor.js";
|
|
5
|
+
import type { Scope } from "./lifecycle.js";
|
|
5
6
|
type DisplayPlan = InstallerPlan | AgentProfilePlan;
|
|
6
7
|
export declare function terminalSafe(value: string): string;
|
|
7
8
|
export declare function renderPlan(plan: DisplayPlan, options: {
|
|
@@ -10,6 +11,7 @@ export declare function renderPlan(plan: DisplayPlan, options: {
|
|
|
10
11
|
}): string;
|
|
11
12
|
export declare function renderInventory(inventory: AgentInventory): string;
|
|
12
13
|
export declare function shellCommand(arguments_: readonly string[]): string;
|
|
14
|
+
export declare function scopeArguments(scope: Scope): [] | ["--global"];
|
|
13
15
|
export declare function renderReconcile(plan: ReconcilePlan, options: {
|
|
14
16
|
applied: boolean;
|
|
15
17
|
confirmationCommand?: string;
|
package/dist/cli-output.js
CHANGED
|
@@ -165,10 +165,16 @@ export function renderInventory(inventory) {
|
|
|
165
165
|
].join("\n")}\n`;
|
|
166
166
|
}
|
|
167
167
|
export function shellCommand(arguments_) {
|
|
168
|
-
return ["npx", "--yes", `@kisev/skills-opencode@${CATALOG.version}`, ...arguments_]
|
|
168
|
+
return commandLine(["npx", "--yes", `@kisev/skills-opencode@${CATALOG.version}`, ...arguments_]);
|
|
169
|
+
}
|
|
170
|
+
function commandLine(arguments_) {
|
|
171
|
+
return arguments_
|
|
169
172
|
.map((value) => /^[A-Za-z0-9_./:@=-]+$/.test(value) ? value : `'${value.replaceAll("'", `'"'"'`)}'`)
|
|
170
173
|
.join(" ");
|
|
171
174
|
}
|
|
175
|
+
export function scopeArguments(scope) {
|
|
176
|
+
return scope === "global" ? ["--global"] : [];
|
|
177
|
+
}
|
|
172
178
|
export function renderReconcile(plan, options) {
|
|
173
179
|
const lines = [
|
|
174
180
|
`Reconcile (${plan.scope})`,
|
|
@@ -183,9 +189,18 @@ export function renderReconcile(plan, options) {
|
|
|
183
189
|
` unknown: ${plan.unknown.length}`,
|
|
184
190
|
` conflicts: ${plan.conflicts.length}`,
|
|
185
191
|
` diagnostic-state-only: ${plan.diagnostic_state_only.length}`,
|
|
192
|
+
` operations: ${plan.operations.length}`,
|
|
186
193
|
];
|
|
187
194
|
if (plan.retired.length)
|
|
188
195
|
lines.push("", "Retired:", ...plan.retired.slice(0, 20).map((entry) => ` ${terminalSafe(entry.path)}`));
|
|
196
|
+
if (plan.renamed.length)
|
|
197
|
+
lines.push("", "Renamed:", ...plan.renamed.map((entry) => ` ${terminalSafe(entry.path)} -> ${terminalSafe(entry.replacement ?? "unknown")}`));
|
|
198
|
+
if (plan.unknown.length)
|
|
199
|
+
lines.push("", "Unknown (preserved):", ...plan.unknown.map((entry) => ` ${terminalSafe(entry.path)} (${terminalSafe(entry.reason)})`));
|
|
200
|
+
if (plan.operations.length)
|
|
201
|
+
lines.push("", "Operations:", ...plan.operations.map((entry) => ` ${entry.operation}: ${terminalSafe(entry.path)}${entry.via ? ` via ${entry.via}` : ""}`));
|
|
202
|
+
if (plan.portable_cleanup)
|
|
203
|
+
lines.push("", "Direct portable cleanup after confirmation:", ` ${commandLine(plan.portable_cleanup.command)}`);
|
|
189
204
|
if (plan.conflicts.length)
|
|
190
205
|
lines.push("", "Conflicts:", ...plan.conflicts.map((entry) => ` ${terminalSafe(entry.path)} (${terminalSafe(entry.reason)})`));
|
|
191
206
|
if (plan.modified_managed.length)
|
|
@@ -195,10 +210,13 @@ export function renderReconcile(plan, options) {
|
|
|
195
210
|
if (blocked) {
|
|
196
211
|
lines.push("", "Blocked:");
|
|
197
212
|
if (plan.modified_managed.length)
|
|
198
|
-
lines.push(` Update managed assets first: ${shellCommand(["install",
|
|
213
|
+
lines.push(` Update managed assets first: ${shellCommand(["install", ...scopeArguments(plan.scope), "--dry-run"])}`, " Apply the exact confirmation command from that installer preview, then build a new reconcile preview.");
|
|
199
214
|
if (plan.conflicts.length)
|
|
200
215
|
lines.push(" Manually resolve every ownership conflict listed above before reconciling.");
|
|
201
216
|
}
|
|
217
|
+
else if (!plan.confirmable) {
|
|
218
|
+
lines.push("", "No reconciliation changes are required.");
|
|
219
|
+
}
|
|
202
220
|
else if (options.confirmationCommand) {
|
|
203
221
|
if (plan.superseded_plan)
|
|
204
222
|
lines.push("", "Superseded plan:", ` kind: ${terminalSafe(plan.superseded_plan.kind)}`, ` confirmation: ${terminalSafe(plan.superseded_plan.confirmation_digest)}`, ` created: ${terminalSafe(plan.superseded_plan.created_at)}`, ` expires: ${terminalSafe(plan.superseded_plan.expires_at)}`);
|
|
@@ -216,10 +234,10 @@ export function renderDoctor(report) {
|
|
|
216
234
|
const actionable = report.checks.filter((item) => item.status === "fail" || item.status === "warn");
|
|
217
235
|
const next = new Set(actionable.flatMap((item) => item.remediation ?? []));
|
|
218
236
|
if (report.conflicts.length) {
|
|
219
|
-
next.add(shellCommand(["reconcile",
|
|
237
|
+
next.add(shellCommand(["reconcile", ...scopeArguments(report.scope), "--dry-run"]));
|
|
220
238
|
}
|
|
221
239
|
if (actionable.some((item) => item.id.startsWith("assets."))) {
|
|
222
|
-
next.add(shellCommand(["install",
|
|
240
|
+
next.add(shellCommand(["install", ...scopeArguments(report.scope), "--dry-run"]));
|
|
223
241
|
}
|
|
224
242
|
const lines = [
|
|
225
243
|
`Doctor TLDR: ${report.status} (${report.scope})`,
|