opencode-swarm 7.89.0 → 7.90.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/.opencode/skills/commit-pr/SKILL.md +548 -0
- package/.opencode/skills/engineering-conventions/SKILL.md +57 -0
- package/.opencode/skills/phase-wrap/SKILL.md +1 -1
- package/.opencode/skills/running-tests/SKILL.md +282 -0
- package/.opencode/skills/writing-tests/SKILL.md +794 -0
- package/dist/cli/{guardrail-explain-hy0zz0p6.js → guardrail-explain-han9f51y.js} +2 -2
- package/dist/cli/{index-9w07ye9b.js → index-mz2z7jtn.js} +14 -5
- package/dist/cli/{index-6k31ysgd.js → index-prppjv2q.js} +1 -1
- package/dist/cli/{index-dprk5c5f.js → index-q3265fxa.js} +2 -2
- package/dist/cli/index.js +1 -1
- package/dist/config/bundled-skills.d.ts +1 -1
- package/dist/config/skill-mirrors.d.ts +87 -0
- package/dist/index.js +11 -2
- package/package.json +6 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
handleGuardrailExplain
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
4
|
+
} from "./index-prppjv2q.js";
|
|
5
|
+
import"./index-mz2z7jtn.js";
|
|
6
6
|
import"./index-6tnmt41c.js";
|
|
7
7
|
import"./index-bm4f0nme.js";
|
|
8
8
|
import"./index-1ccnwh54.js";
|
|
@@ -906,7 +906,7 @@ var init_executor = __esm(() => {
|
|
|
906
906
|
// package.json
|
|
907
907
|
var package_default = {
|
|
908
908
|
name: "opencode-swarm",
|
|
909
|
-
version: "7.
|
|
909
|
+
version: "7.90.0",
|
|
910
910
|
description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
911
911
|
main: "dist/index.js",
|
|
912
912
|
types: "dist/index.d.ts",
|
|
@@ -967,6 +967,10 @@ var package_default = {
|
|
|
967
967
|
".opencode/skills/execute",
|
|
968
968
|
".opencode/skills/phase-wrap",
|
|
969
969
|
".opencode/skills/loop",
|
|
970
|
+
".opencode/skills/writing-tests",
|
|
971
|
+
".opencode/skills/running-tests",
|
|
972
|
+
".opencode/skills/engineering-conventions",
|
|
973
|
+
".opencode/skills/commit-pr",
|
|
970
974
|
"tests/fixtures/memory-recall",
|
|
971
975
|
"README.md",
|
|
972
976
|
"LICENSE"
|
|
@@ -977,6 +981,7 @@ var package_default = {
|
|
|
977
981
|
typecheck: "tsc --noEmit",
|
|
978
982
|
test: "bun test",
|
|
979
983
|
lint: "biome lint .",
|
|
984
|
+
"drift:check": "bun run scripts/drift-check.ts",
|
|
980
985
|
format: "biome format . --write",
|
|
981
986
|
check: "biome check --write .",
|
|
982
987
|
dev: "bun run build && opencode",
|
|
@@ -1404,7 +1409,11 @@ var BUNDLED_PROJECT_SKILLS = [
|
|
|
1404
1409
|
"critic-gate",
|
|
1405
1410
|
"execute",
|
|
1406
1411
|
"phase-wrap",
|
|
1407
|
-
"loop"
|
|
1412
|
+
"loop",
|
|
1413
|
+
"writing-tests",
|
|
1414
|
+
"running-tests",
|
|
1415
|
+
"engineering-conventions",
|
|
1416
|
+
"commit-pr"
|
|
1408
1417
|
];
|
|
1409
1418
|
var MAX_SKILL_FILES = 64;
|
|
1410
1419
|
var MAX_SKILL_BYTES = 512000;
|
|
@@ -30378,7 +30387,7 @@ function buildDetailedHelp(commandName, entry) {
|
|
|
30378
30387
|
async function handleHelpCommand(ctx) {
|
|
30379
30388
|
const targetCommand = ctx.args.join(" ");
|
|
30380
30389
|
if (!targetCommand) {
|
|
30381
|
-
const { buildHelpText } = await import("./index-
|
|
30390
|
+
const { buildHelpText } = await import("./index-q3265fxa.js");
|
|
30382
30391
|
return buildHelpText();
|
|
30383
30392
|
}
|
|
30384
30393
|
const tokens = targetCommand.split(/\s+/);
|
|
@@ -30387,7 +30396,7 @@ async function handleHelpCommand(ctx) {
|
|
|
30387
30396
|
return _internals45.buildDetailedHelp(resolved.key, resolved.entry);
|
|
30388
30397
|
}
|
|
30389
30398
|
const similar = _internals45.findSimilarCommands(targetCommand);
|
|
30390
|
-
const { buildHelpText: fullHelp } = await import("./index-
|
|
30399
|
+
const { buildHelpText: fullHelp } = await import("./index-q3265fxa.js");
|
|
30391
30400
|
if (similar.length > 0) {
|
|
30392
30401
|
return `Command '/swarm ${targetCommand}' not found.
|
|
30393
30402
|
|
|
@@ -30520,7 +30529,7 @@ var COMMAND_REGISTRY = {
|
|
|
30520
30529
|
},
|
|
30521
30530
|
"guardrail explain": {
|
|
30522
30531
|
handler: async (ctx) => {
|
|
30523
|
-
const { handleGuardrailExplain } = await import("./guardrail-explain-
|
|
30532
|
+
const { handleGuardrailExplain } = await import("./guardrail-explain-han9f51y.js");
|
|
30524
30533
|
return handleGuardrailExplain(ctx.directory, ctx.args);
|
|
30525
30534
|
},
|
|
30526
30535
|
description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
handleGuardrailExplain
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-prppjv2q.js";
|
|
5
5
|
import {
|
|
6
6
|
handleGuardrailLog
|
|
7
7
|
} from "./index-gg589mfw.js";
|
|
@@ -78,7 +78,7 @@ import {
|
|
|
78
78
|
handleWriteRetroCommand,
|
|
79
79
|
normalizeSwarmCommandInput,
|
|
80
80
|
resolveCommand
|
|
81
|
-
} from "./index-
|
|
81
|
+
} from "./index-mz2z7jtn.js";
|
|
82
82
|
import"./index-6tnmt41c.js";
|
|
83
83
|
import"./index-bm4f0nme.js";
|
|
84
84
|
import"./index-1ccnwh54.js";
|
package/dist/cli/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const BUNDLED_PROJECT_SKILLS: readonly ["brainstorm", "specify", "clarify-spec", "resume", "clarify", "discover", "consult", "pre-phase-briefing", "council", "deep-dive", "deep-research", "codebase-review-swarm", "design-docs", "swarm-pr-review", "swarm-pr-feedback", "issue-ingest", "plan", "critic-gate", "execute", "phase-wrap", "loop"];
|
|
1
|
+
export declare const BUNDLED_PROJECT_SKILLS: readonly ["brainstorm", "specify", "clarify-spec", "resume", "clarify", "discover", "consult", "pre-phase-briefing", "council", "deep-dive", "deep-research", "codebase-review-swarm", "design-docs", "swarm-pr-review", "swarm-pr-feedback", "issue-ingest", "plan", "critic-gate", "execute", "phase-wrap", "loop", "writing-tests", "running-tests", "engineering-conventions", "commit-pr"];
|
|
2
2
|
interface CopyState {
|
|
3
3
|
files: number;
|
|
4
4
|
bytes: number;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for skill mirror contracts between the OpenCode-side
|
|
3
|
+
* (`.opencode/skills/`) and Claude-side (`.claude/skills/`) skill trees, plus
|
|
4
|
+
* Codex/GitHub adapter shims (`.agents/skills/`, `.github/skills/`).
|
|
5
|
+
*
|
|
6
|
+
* Consumed by:
|
|
7
|
+
* - tests/unit/skills/skill-mirrors.test.ts (architect MODE mirror regression)
|
|
8
|
+
* - scripts/drift-check.ts (issue #1497 CI drift detector)
|
|
9
|
+
*
|
|
10
|
+
* Keeping the lists here — rather than inline in the test — means the drift
|
|
11
|
+
* checker and the regression test cannot themselves drift apart.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Architect MODE skills whose `.opencode` and `.claude` mirrors must be
|
|
15
|
+
* byte-identical. `.opencode` is the operative protocol loaded by
|
|
16
|
+
* `src/agents/architect.ts` MODE stubs; the `.claude` mirror must match so
|
|
17
|
+
* Claude Code and OpenCode sessions cannot diverge silently. Tuple shape is
|
|
18
|
+
* `[slug, opencodePath, claudePath]`.
|
|
19
|
+
*/
|
|
20
|
+
export declare const MIRRORED_ARCHITECT_MODE_SKILLS: readonly [readonly ["brainstorm", ".opencode/skills/brainstorm/SKILL.md", ".claude/skills/brainstorm/SKILL.md"], readonly ["specify", ".opencode/skills/specify/SKILL.md", ".claude/skills/specify/SKILL.md"], readonly ["clarify-spec", ".opencode/skills/clarify-spec/SKILL.md", ".claude/skills/clarify-spec/SKILL.md"], readonly ["resume", ".opencode/skills/resume/SKILL.md", ".claude/skills/resume/SKILL.md"], readonly ["clarify", ".opencode/skills/clarify/SKILL.md", ".claude/skills/clarify/SKILL.md"], readonly ["discover", ".opencode/skills/discover/SKILL.md", ".claude/skills/discover/SKILL.md"], readonly ["consult", ".opencode/skills/consult/SKILL.md", ".claude/skills/consult/SKILL.md"], readonly ["pre-phase-briefing", ".opencode/skills/pre-phase-briefing/SKILL.md", ".claude/skills/pre-phase-briefing/SKILL.md"], readonly ["council", ".opencode/skills/council/SKILL.md", ".claude/skills/council/SKILL.md"], readonly ["deep-dive", ".opencode/skills/deep-dive/SKILL.md", ".claude/skills/deep-dive/SKILL.md"], readonly ["deep-research", ".opencode/skills/deep-research/SKILL.md", ".claude/skills/deep-research/SKILL.md"], readonly ["issue-ingest", ".opencode/skills/issue-ingest/SKILL.md", ".claude/skills/issue-ingest/SKILL.md"], readonly ["plan", ".opencode/skills/plan/SKILL.md", ".claude/skills/plan/SKILL.md"], readonly ["critic-gate", ".opencode/skills/critic-gate/SKILL.md", ".claude/skills/critic-gate/SKILL.md"], readonly ["execute", ".opencode/skills/execute/SKILL.md", ".claude/skills/execute/SKILL.md"], readonly ["phase-wrap", ".opencode/skills/phase-wrap/SKILL.md", ".claude/skills/phase-wrap/SKILL.md"], readonly ["design-docs", ".opencode/skills/design-docs/SKILL.md", ".claude/skills/design-docs/SKILL.md"]];
|
|
21
|
+
/**
|
|
22
|
+
* Architect MODE skills where `.opencode` is the full operative protocol and
|
|
23
|
+
* `.claude` is an intentionally different surface. Both must exist; byte
|
|
24
|
+
* identity is not required, but the divergence is documented here.
|
|
25
|
+
*/
|
|
26
|
+
export declare const DIVERGENT_ARCHITECT_MODE_SKILLS: Array<{
|
|
27
|
+
slug: string;
|
|
28
|
+
opencodePath: string;
|
|
29
|
+
claudePath: string;
|
|
30
|
+
reason: string;
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Architect MODE skills whose `.opencode` SKILL.md is canonical and whose
|
|
34
|
+
* `.claude`/`.agents` surfaces are thin adapter shims that delegate back to the
|
|
35
|
+
* canonical `.opencode` skill.
|
|
36
|
+
*
|
|
37
|
+
* `expectedCanonicalRef` is the relative path that each adapter SKILL.md must
|
|
38
|
+
* contain as a reference back to the canonical `.opencode` skill. All adapter
|
|
39
|
+
* shims live exactly three directory levels deep (`.{runtime}/skills/{slug}/`),
|
|
40
|
+
* so `../../../` always resolves to the repo root from any adapter path. If
|
|
41
|
+
* the directory structure changes (e.g., skills are reorganised to a flat
|
|
42
|
+
* layout), update `expectedCanonicalRef` entries accordingly.
|
|
43
|
+
*/
|
|
44
|
+
export declare const ADAPTER_ARCHITECT_MODE_SKILLS: Array<{
|
|
45
|
+
slug: string;
|
|
46
|
+
canonicalPath: string;
|
|
47
|
+
adapterPaths: string[];
|
|
48
|
+
expectedCanonicalRef: string;
|
|
49
|
+
}>;
|
|
50
|
+
/**
|
|
51
|
+
* Architect MODE skills whose `.opencode` protocol is intentionally NOT mirrored
|
|
52
|
+
* to `.claude` (e.g. a `.claude` mirror would shadow a Claude Code built-in
|
|
53
|
+
* skill of the same name, or the mode is only reachable through the OpenCode
|
|
54
|
+
* plugin runtime).
|
|
55
|
+
*/
|
|
56
|
+
export declare const OPENCODE_ONLY_ARCHITECT_MODE_SKILLS: Array<{
|
|
57
|
+
slug: string;
|
|
58
|
+
opencodePath: string;
|
|
59
|
+
reason: string;
|
|
60
|
+
}>;
|
|
61
|
+
/**
|
|
62
|
+
* Skill mirror contracts for skill pairs that are NOT architect MODE skills but
|
|
63
|
+
* still exist across the `.opencode`/`.claude` trees. The drift checker
|
|
64
|
+
* (scripts/drift-check.ts) classifies every cross-tree skill pair; without an
|
|
65
|
+
* entry here a both-tree pair is reported as "unclassified" so a human decides
|
|
66
|
+
* its contract. See issue #1497.
|
|
67
|
+
*
|
|
68
|
+
* `kind`:
|
|
69
|
+
* - `identical`: `.opencode` and `.claude` SKILL.md must be byte-identical.
|
|
70
|
+
* `canonical` records which side wins when they drift (fix direction only;
|
|
71
|
+
* detection is symmetric).
|
|
72
|
+
* - `divergent`: both must exist; content intentionally differs per runtime.
|
|
73
|
+
* - `opencode-only`: `.opencode` exists; no `.claude` mirror expected.
|
|
74
|
+
*/
|
|
75
|
+
export declare const ADDITIONAL_SKILL_MIRROR_CONTRACTS: Array<{
|
|
76
|
+
slug: string;
|
|
77
|
+
kind: 'identical' | 'divergent' | 'opencode-only';
|
|
78
|
+
canonical?: '.claude' | '.opencode';
|
|
79
|
+
reason: string;
|
|
80
|
+
}>;
|
|
81
|
+
/**
|
|
82
|
+
* Top-level entries under `.opencode/skills/` that are not bundled skills and
|
|
83
|
+
* must be ignored by the drift checker. `generated/` holds user-generated
|
|
84
|
+
* skills produced at runtime (src/services/skill-generator.ts) and has no
|
|
85
|
+
* direct SKILL.md.
|
|
86
|
+
*/
|
|
87
|
+
export declare const NON_SKILL_OPENCODE_DIRS: Set<string>;
|
package/dist/index.js
CHANGED
|
@@ -69,7 +69,7 @@ var package_default;
|
|
|
69
69
|
var init_package = __esm(() => {
|
|
70
70
|
package_default = {
|
|
71
71
|
name: "opencode-swarm",
|
|
72
|
-
version: "7.
|
|
72
|
+
version: "7.90.0",
|
|
73
73
|
description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
74
74
|
main: "dist/index.js",
|
|
75
75
|
types: "dist/index.d.ts",
|
|
@@ -130,6 +130,10 @@ var init_package = __esm(() => {
|
|
|
130
130
|
".opencode/skills/execute",
|
|
131
131
|
".opencode/skills/phase-wrap",
|
|
132
132
|
".opencode/skills/loop",
|
|
133
|
+
".opencode/skills/writing-tests",
|
|
134
|
+
".opencode/skills/running-tests",
|
|
135
|
+
".opencode/skills/engineering-conventions",
|
|
136
|
+
".opencode/skills/commit-pr",
|
|
133
137
|
"tests/fixtures/memory-recall",
|
|
134
138
|
"README.md",
|
|
135
139
|
"LICENSE"
|
|
@@ -140,6 +144,7 @@ var init_package = __esm(() => {
|
|
|
140
144
|
typecheck: "tsc --noEmit",
|
|
141
145
|
test: "bun test",
|
|
142
146
|
lint: "biome lint .",
|
|
147
|
+
"drift:check": "bun run scripts/drift-check.ts",
|
|
143
148
|
format: "biome format . --write",
|
|
144
149
|
check: "biome check --write .",
|
|
145
150
|
dev: "bun run build && opencode",
|
|
@@ -17419,7 +17424,11 @@ var init_bundled_skills = __esm(() => {
|
|
|
17419
17424
|
"critic-gate",
|
|
17420
17425
|
"execute",
|
|
17421
17426
|
"phase-wrap",
|
|
17422
|
-
"loop"
|
|
17427
|
+
"loop",
|
|
17428
|
+
"writing-tests",
|
|
17429
|
+
"running-tests",
|
|
17430
|
+
"engineering-conventions",
|
|
17431
|
+
"commit-pr"
|
|
17423
17432
|
];
|
|
17424
17433
|
syncedProjectSkillTargets = new Set;
|
|
17425
17434
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-swarm",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.90.0",
|
|
4
4
|
"description": "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -61,6 +61,10 @@
|
|
|
61
61
|
".opencode/skills/execute",
|
|
62
62
|
".opencode/skills/phase-wrap",
|
|
63
63
|
".opencode/skills/loop",
|
|
64
|
+
".opencode/skills/writing-tests",
|
|
65
|
+
".opencode/skills/running-tests",
|
|
66
|
+
".opencode/skills/engineering-conventions",
|
|
67
|
+
".opencode/skills/commit-pr",
|
|
64
68
|
"tests/fixtures/memory-recall",
|
|
65
69
|
"README.md",
|
|
66
70
|
"LICENSE"
|
|
@@ -71,6 +75,7 @@
|
|
|
71
75
|
"typecheck": "tsc --noEmit",
|
|
72
76
|
"test": "bun test",
|
|
73
77
|
"lint": "biome lint .",
|
|
78
|
+
"drift:check": "bun run scripts/drift-check.ts",
|
|
74
79
|
"format": "biome format . --write",
|
|
75
80
|
"check": "biome check --write .",
|
|
76
81
|
"dev": "bun run build && opencode",
|