@ikieaneh/opencode-kit 0.5.0 → 0.5.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/README.md CHANGED
@@ -28,6 +28,7 @@
28
28
  </p>
29
29
 
30
30
  <p>
31
+ <b>npm:</b> <code>@ikieaneh/opencode-kit</code> &middot;
31
32
  <b>macOS M-Series</b> — Apple Silicon (arm64)
32
33
  </p>
33
34
  </div>
@@ -123,14 +124,14 @@ git --version # any recent version
123
124
 
124
125
  ### Installation
125
126
 
126
- #### Option 1: Install as plugin (recommended v0.4+)
127
+ #### Option 1: Install as plugin (recommended)
127
128
 
128
129
  Add to your project's `opencode.json`:
129
130
 
130
131
  ```json
131
132
  {
132
133
  "plugin": [
133
- "opencode-kit", ← MUST be first
134
+ "@ikieaneh/opencode-kit", ← MUST be first
134
135
  "other-plugins..."
135
136
  ]
136
137
  }
@@ -139,10 +140,12 @@ Add to your project's `opencode.json`:
139
140
  Then install:
140
141
 
141
142
  ```sh
142
- npm install opencode-kit
143
+ npm install @ikieaneh/opencode-kit
143
144
  ```
144
145
 
145
- The plugin auto-loads on next session. Skills `orchestration-template`, `scoring-pipeline`, `adr-generator` become available. The orchestration contract is injected into every session automatically.
146
+ The plugin auto-loads on next session. All 8 skills become available. The orchestration contract is injected into every session automatically.
147
+
148
+ > **Plugin ordering**: opencode-kit MUST be first in the plugin array. Its system prompt transform is foundational — other plugins may add behavior, but opencode-kit enforces the workflow.
146
149
 
147
150
  > **Plugin ordering**: opencode-kit MUST be first in the plugin array. Its system prompt transform is foundational — other plugins may add behavior, but opencode-kit enforces the workflow.
148
151
 
@@ -370,10 +373,17 @@ After every subagent delegation, scoring runs automatically:
370
373
  - [x] Integration tests (7/7 passing)
371
374
  - [x] CI integration test job
372
375
 
373
- ### v0.6 — Publish & Polish (next)
374
- - [ ] npm publish
375
- - [ ] Test plugin end-to-end on clean macOS M-series machine
376
- - [ ] Web UI for contract overview
376
+ ### v0.6 — Polish
377
+ - [x] README updated for @ikieaneh/opencode-kit plugin mode
378
+ - [x] Updated agent config schema (fallback_models, explorer, librarian, architect)
379
+ - [x] End-to-end tests (9 tests, plugin lifecycle + auto-init)
380
+ - [x] Quickstart example (`docs/examples/QUICKSTART.md`)
381
+ - [x] npm published as `@ikieaneh/opencode-kit`
382
+ - [x] CI: integration + e2e test jobs
383
+
384
+ ### Future
385
+ - [ ] Web UI for contract overview (deferred — no current need)
386
+ - [ ] Plugin hardening: `experimental.chat.messages.transform` API is marked experimental — monitor OpenCode updates
377
387
 
378
388
  See the [open issues](https://github.com/RizkiRachman/opencode-kit/issues) for full list.
379
389
 
@@ -398,6 +408,12 @@ Distributed under the MIT License. See `LICENSE` for more information.
398
408
  <!-- CONTACT -->
399
409
  ## Contact
400
410
 
411
+ ## Known Limitations
412
+
413
+ - **Plugin hook API**: The `experimental.chat.messages.transform` hook is marked as experimental in the OpenCode plugin SDK. It may change in future versions. If it breaks, the plugin falls back to per-project agent .md files (`.opencode/agents/*.md`), which remain functional.
414
+ - **Package name**: Currently published as `@ikieaneh/opencode-kit` (scoped). Requires `npm install @ikieaneh/opencode-kit`.
415
+ - **Contract auto-init**: Requires a git repository. Non-git projects use absolute path as hash fallback.
416
+
401
417
  Rizki Rachman — [GitHub](https://github.com/RizkiRachman)
402
418
 
403
419
  Project Link: [https://github.com/RizkiRachman/opencode-kit](https://github.com/RizkiRachman/opencode-kit)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ikieaneh/opencode-kit",
3
- "version": "0.5.0",
4
- "description": "Standardized OpenCode orchestration framework \u2014 contract-based, rules-enforced, zero-touch agent workflow. Install as plugin.",
3
+ "version": "0.5.1",
4
+ "description": "Standardized OpenCode orchestration framework contract-based, rules-enforced, zero-touch agent workflow. Install as plugin.",
5
5
  "license": "MIT",
6
6
  "author": "RizkiRachman",
7
7
  "type": "module",
@@ -44,4 +44,4 @@
44
44
  "url": "https://github.com/RizkiRachman/opencode-kit/issues"
45
45
  },
46
46
  "homepage": "https://github.com/RizkiRachman/opencode-kit#readme"
47
- }
47
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft-07/schema#",
3
3
  "title": "opencode-kit Plugin Config",
4
- "description": "Configuration schema for opencode-kit plugin. Add to your opencode.json to enable orchestration agents.",
4
+ "description": "Configuration schema for @ikieaneh/opencode-kit plugin. Add to your opencode.json to enable orchestration agents.",
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "plugin": {
@@ -9,7 +9,7 @@
9
9
  "description": "opencode-kit MUST be listed FIRST in the plugin array to ensure its system prompt transform takes priority.",
10
10
  "items": {
11
11
  "type": "string",
12
- "examples": ["opencode-kit", "superpowers", "oh-my-opencode-slim"]
12
+ "examples": ["@ikieaneh/opencode-kit", "superpowers", "oh-my-opencode-slim"]
13
13
  },
14
14
  "minItems": 1
15
15
  },
@@ -23,11 +23,12 @@
23
23
  "properties": {
24
24
  "skills": {
25
25
  "type": "array",
26
- "description": "Recommended skills: orchestration-template, scoring-pipeline, adr-generator",
26
+ "description": "Recommended skills: orchestration-template, scoring-pipeline, adr-generator, verification-before-completion",
27
27
  "items": { "type": "string" },
28
28
  "default": ["orchestration-template", "scoring-pipeline", "verification-before-completion"]
29
29
  },
30
- "steps": { "type": "integer", "default": 50, "description": "Max agent steps" }
30
+ "steps": { "type": "integer", "default": 50, "description": "Max agent steps" },
31
+ "fallback_models": { "type": "array", "items": { "type": "string" }, "description": "Fallback models if primary fails" }
31
32
  }
32
33
  },
33
34
  "planner": {
@@ -40,7 +41,8 @@
40
41
  "items": { "type": "string" },
41
42
  "default": ["brainstorming", "writing-plans", "system-analyst"]
42
43
  },
43
- "steps": { "type": "integer", "default": 80 }
44
+ "steps": { "type": "integer", "default": 80 },
45
+ "fallback_models": { "type": "array", "items": { "type": "string" } }
44
46
  }
45
47
  },
46
48
  "task-manager": {
@@ -52,7 +54,8 @@
52
54
  "items": { "type": "string" },
53
55
  "default": ["subagent-driven-development", "executing-plans", "test-driven-development"]
54
56
  },
55
- "steps": { "type": "integer", "default": 100 }
57
+ "steps": { "type": "integer", "default": 100 },
58
+ "fallback_models": { "type": "array", "items": { "type": "string" } }
56
59
  }
57
60
  },
58
61
  "code-reviewer": {
@@ -64,16 +67,61 @@
64
67
  "items": { "type": "string" },
65
68
  "default": ["qa-expert", "security-expert", "devops-expert"]
66
69
  },
67
- "steps": { "type": "integer", "default": 80 }
70
+ "steps": { "type": "integer", "default": 80 },
71
+ "fallback_models": { "type": "array", "items": { "type": "string" } }
68
72
  }
69
73
  },
70
74
  "learner": {
71
75
  "type": "object",
72
76
  "description": "Post-execution learning. Extracts lessons, persists knowledge.",
73
- "skills": {
74
- "type": "array",
75
- "items": { "type": "string" },
76
- "default": ["verification-before-completion", "qa-expert"]
77
+ "properties": {
78
+ "skills": {
79
+ "type": "array",
80
+ "items": { "type": "string" },
81
+ "default": ["verification-before-completion", "qa-expert"]
82
+ },
83
+ "fallback_models": { "type": "array", "items": { "type": "string" } }
84
+ }
85
+ },
86
+ "explorer": {
87
+ "type": "object",
88
+ "description": "Fast codebase search specialist. Read-only — no edits.",
89
+ "properties": {
90
+ "skills": { "type": "array", "items": { "type": "string" }, "default": [] },
91
+ "steps": { "type": "integer", "default": 30 },
92
+ "tools": {
93
+ "type": "object",
94
+ "description": "Disable write-heavy tools: context7, memory, postgres",
95
+ "default": { "postgres_*": false, "memory_*": false, "context7_*": false }
96
+ },
97
+ "fallback_models": { "type": "array", "items": { "type": "string" } }
98
+ }
99
+ },
100
+ "librarian": {
101
+ "type": "object",
102
+ "description": "External docs and API references. Read-only — no edits.",
103
+ "properties": {
104
+ "skills": { "type": "array", "items": { "type": "string" }, "default": [] },
105
+ "steps": { "type": "integer", "default": 30 },
106
+ "tools": {
107
+ "type": "object",
108
+ "description": "Disable tools not needed for docs research",
109
+ "default": { "postgres_*": false, "memory_*": false, "graphify_*": false }
110
+ },
111
+ "fallback_models": { "type": "array", "items": { "type": "string" } }
112
+ }
113
+ },
114
+ "architect": {
115
+ "type": "object",
116
+ "description": "Strategic technical advisor. Architecture trade-offs, system-level debugging, simplification.",
117
+ "properties": {
118
+ "skills": {
119
+ "type": "array",
120
+ "items": { "type": "string" },
121
+ "default": ["simplify", "systematic-debugging", "system-analyst"]
122
+ },
123
+ "steps": { "type": "integer", "default": 60 },
124
+ "fallback_models": { "type": "array", "items": { "type": "string" } }
77
125
  }
78
126
  }
79
127
  }