@maestria/opencode 0.3.2 → 0.3.4
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 +39 -2
- package/agents/adventurer.md +5 -3
- package/agents/architect.md +8 -4
- package/agents/builder.md +14 -10
- package/agents/diagnose.md +6 -5
- package/agents/planner.md +4 -4
- package/agents/reviewer.md +7 -5
- package/agents/writer.md +11 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,12 +2,49 @@
|
|
|
2
2
|
|
|
3
3
|
An OpenCode plugin that encodes learned AI-engineering patterns into a portable, self-wiring configuration.
|
|
4
4
|
|
|
5
|
+
> This package is part of Maestria. See [VISION.md](../../VISION.md) for the project vision, motivation, and scope.
|
|
6
|
+
|
|
7
|
+
## Motivation
|
|
8
|
+
|
|
9
|
+
Raw LLMs are powerful but unreliable for production engineering work. They guess instead of verifying, implement instead of delegating, and produce plausible-sounding results that are subtly wrong. OpenCode's built-in agents give you a foundation, but they don't encode the methodology, discipline, and guardrails that turn a model into a reliable engineering partner.
|
|
10
|
+
|
|
11
|
+
This plugin exists to close that gap. It packages the harness — the rules, agents, and workflows — that makes AI engineering consistent and trustworthy. The principle is simple:
|
|
12
|
+
|
|
13
|
+
**Agent = Model + Harness**
|
|
14
|
+
|
|
15
|
+
The model provides capability. The harness provides reliability. Most agent failures are harness failures, not model failures.
|
|
16
|
+
|
|
17
|
+
The patterns in this plugin were extracted from months of daily AI-assisted engineering work. They represent configurations and workflows that survived repeated use — not theoretical best practices, but scar tissue from real failures. The orchestrator's delegation rules, the maker/checker split, the iteration limits, the `!!!` convention for non-negotiable rules — all of these came from specific failures that happened more than once.
|
|
18
|
+
|
|
19
|
+
This is not just another agent pack. Most agent packs focus on capability — giving agents more tools, more context, more autonomy. This plugin focuses on discipline: giving agents clear boundaries, explicit methodology, and structured handoffs. Capability is the default. Discipline is the differentiator.
|
|
20
|
+
|
|
21
|
+
To that end, the plugin is built on five design principles:
|
|
22
|
+
|
|
23
|
+
## Goals
|
|
24
|
+
|
|
25
|
+
- **Interoperability** — The methodology is harness-agnostic. Works with any LLM provider that OpenCode supports. No vendor lock-in, no model-specific prompt tricks.
|
|
26
|
+
- **Discipline** — Maker/checker split prevents self-approval. Iteration limits prevent infinite loops. Delegation chains prevent scope creep. These are first-class concepts, not afterthoughts.
|
|
27
|
+
- **Transparency** — Every agent is a markdown file with YAML frontmatter. Readable, editable, versionable. No TypeScript abstraction layer between you and the prompts. What you see is what the agent runs.
|
|
28
|
+
- **Evolvability** — Versioned releases encode new patterns as they're proven. The plugin improves by curation — patterns that survive repeated use get promoted; patterns that don't, don't.
|
|
29
|
+
- **Composability** — Agents are designed as pipeline stages. Adventurer discovers context, architect evaluates trade-offs, planner structures the work, builder implements, reviewer validates. The orchestrator chains them together. Each step produces a structured handoff for the next.
|
|
30
|
+
|
|
31
|
+
## Non-Goals
|
|
32
|
+
|
|
33
|
+
- **Does NOT bundle skills** — Skills (methodology packages for specific domains) are installed separately via the skills CLI. The plugin prescribes which skills to load and when, but does not include them.
|
|
34
|
+
- **Does NOT replace OpenCode's built-in agents** — `explore` and `general` remain available for unstructured work. The plugin's 8 subagents are specialists for structured workflows on top of that foundation.
|
|
35
|
+
- **Does NOT auto-extract patterns from sessions** — All rules and agent prompts are manually curated. No automated pattern extraction, no session mining, no implicit learning.
|
|
36
|
+
- **Does NOT require or provide a specific LLM provider** — Model selection is OpenCode configuration. No provider lock-in, no subscription or API key required. MIT-licensed, open source.
|
|
37
|
+
- **Does NOT work outside OpenCode** — This is an OpenCode plugin. Kimi Code and Hermes adaptations are in development as separate packages under the `@maestria` scope, each independently versioned and maintained.
|
|
38
|
+
- **Does NOT include telemetry, usage tracking, or external data collection** — No data leaves your machine. No analytics. No crash reporting. The plugin has zero network calls of its own.
|
|
39
|
+
- **Does NOT enforce rules programmatically** — Rules are guidance, not gates. The `!!!` convention signals non-negotiable rules, but the agent can still violate them. Enforcement happens through permissions and review, not runtime checks.
|
|
40
|
+
|
|
5
41
|
## What It Does
|
|
6
42
|
|
|
7
43
|
This plugin bundles a set of agents and rules that encode effective AI-engineering workflows:
|
|
8
44
|
|
|
9
|
-
- **Agents** —
|
|
45
|
+
- **Agents** — 8 specialized subagents for different phases of work:
|
|
10
46
|
- `@orchestrator` — Manager for complex multi-step tasks; restricted to delegating only to the 7 registered subagents via task permissions
|
|
47
|
+
- `@adventurer` — Codebase reconnaissance and deep code understanding before implementation
|
|
11
48
|
- `@architect` — Architecture decisions with decision matrices
|
|
12
49
|
- `@builder` — Focused implementation agent for atomic tasks
|
|
13
50
|
- `@diagnose` — Systematic 6-step regression tracing
|
|
@@ -34,7 +71,7 @@ If you want to pin a specific version, you can also keep a `package.json` in you
|
|
|
34
71
|
1. **Plugin loads** — OpenCode installs `@maestria/opencode` from npm
|
|
35
72
|
2. **Config hook** — The plugin reads bundled agent markdown files, parses their frontmatter, and registers them programmatically with OpenCode
|
|
36
73
|
3. **Rules injected** — `system.transform` hook appends rules to every session
|
|
37
|
-
4. **Agents available** — All
|
|
74
|
+
4. **Agents available** — All 8 agents are available as subagents via `@` mention
|
|
38
75
|
5. **State preserved** — `session.compacting` hook preserves task status across compaction events
|
|
39
76
|
|
|
40
77
|
### Design Philosophy
|
package/agents/adventurer.md
CHANGED
|
@@ -157,11 +157,13 @@ _(none — adventurer is read-only; skills load only on trigger)_
|
|
|
157
157
|
|
|
158
158
|
### Load on trigger
|
|
159
159
|
|
|
160
|
-
- `
|
|
161
|
-
- `opensrc` (`vercel-labs/opensrc`) — load when external library internals affect the answer
|
|
160
|
+
- `agent-browser` (`vercel-labs/agent-browser`) — load when exploring a running web app, visual references/links provided, or Electron apps need inspection (skip if backend-only)
|
|
162
161
|
- `c4-architecture` (`softaworks/agent-toolkit`) — load when output requires a context/container diagram
|
|
162
|
+
- `domain-modeling` (`mattpocock/skills`) — load when mapping domain concepts, terminology, and ubiquitous language during reconnaissance
|
|
163
163
|
- `mermaid-diagrams` (`softaworks/agent-toolkit`) — load when a sequence/flow/ER diagram is requested
|
|
164
|
-
- `
|
|
164
|
+
- `resolving-merge-conflicts` (`mattpocock/skills`) — load when investigating merge conflict history or understanding why a conflict occurred
|
|
165
|
+
- `opensrc` (`vercel-labs/opensrc`) — load when external library internals affect the answer
|
|
166
|
+
- `session-handoff` (`softaworks/agent-toolkit`) — load when creating a recon report or handoff document for another agent
|
|
165
167
|
|
|
166
168
|
### Defer to specialist
|
|
167
169
|
|
package/agents/architect.md
CHANGED
|
@@ -103,19 +103,23 @@ After the ADR is written, your handoff should cover:
|
|
|
103
103
|
|
|
104
104
|
### Always load
|
|
105
105
|
|
|
106
|
-
- `architecture-decision-records` (`
|
|
107
|
-
- `improve-codebase-architecture` (`mattpocock/skills`) — architect's home for codebase-deepen opportunities
|
|
106
|
+
- `architecture-decision-records` (`wshobson/agents`) — Phase 5 (Document as ADR) requires this skill
|
|
108
107
|
- `improve` (`shadcn/improve`) — survey codebase and produce prioritized implementation plans
|
|
109
108
|
|
|
110
109
|
### Load on trigger
|
|
111
110
|
|
|
111
|
+
- `api-design-principles` (`wshobson/agents`) — load when designing APIs, choosing REST vs GraphQL, or defining endpoint structures
|
|
112
|
+
- `architecture-decision-framework` (`agustinusnathaniel/skills`) — load when using decision matrices, weighted scoring, or comparing implementation approaches
|
|
113
|
+
- `architecture-decision-records` (`wshobson/agents`) — load when documenting an architecture decision as an ADR
|
|
112
114
|
- `c4-architecture` (`softaworks/agent-toolkit`) — load when output requires a container/component diagram
|
|
113
|
-
- `
|
|
115
|
+
- `codebase-design` (`mattpocock/skills`) — load when designing module boundaries, deciding where seams go, or improving codebase structure
|
|
116
|
+
- `domain-modeling` (`mattpocock/skills`) — load when building or sharpening the project's domain model and ubiquitous language
|
|
114
117
|
- `draw-io` (`softaworks/agent-toolkit`) — load when user asks for a `.drawio` file
|
|
115
118
|
- `excalidraw` (`softaworks/agent-toolkit`) — load when user asks for an `.excalidraw` file
|
|
116
119
|
- `grill-me` (`mattpocock/skills`) — load before recommending a final option
|
|
117
120
|
- `grill-with-docs` (`mattpocock/skills`) — load when validating against this project's ADR/CONTEXT.md
|
|
118
|
-
- `
|
|
121
|
+
- `improve-codebase-architecture` (`mattpocock/skills`) — load when surveying the codebase for architecture improvement opportunities
|
|
122
|
+
- `mermaid-diagrams` (`softaworks/agent-toolkit`) — load when a sequence/flow/ER diagram is needed
|
|
119
123
|
|
|
120
124
|
### Defer to specialist
|
|
121
125
|
|
package/agents/builder.md
CHANGED
|
@@ -81,22 +81,26 @@ This reveals what actually requires heavy tools vs. what's simple.
|
|
|
81
81
|
|
|
82
82
|
### Load on trigger
|
|
83
83
|
|
|
84
|
-
- `
|
|
84
|
+
- `agent-browser` (`vercel-labs/agent-browser`) — load when task involves UI verification, visual references, web app interaction, or Electron app automation (skip if backend-only)
|
|
85
|
+
- `ai-sdk` (`vercel/ai`) — load when task is AI SDK (skip if unrelated)
|
|
86
|
+
- `commit-work` (`softaworks/agent-toolkit`) — load when committing, staging changes, or crafting commit messages
|
|
87
|
+
- `codebase-design` (`mattpocock/skills`) — load when implementing a designed interface or building to match module boundary specifications
|
|
88
|
+
- `database-schema-designer` (`softaworks/agent-toolkit`) — load when designing database schemas, tables, or data models
|
|
89
|
+
- `frontend-design` (`anthropics/skills`) — load when task is UI/visual
|
|
85
90
|
- `karpathy-guidelines` (`multica-ai/andrej-karpathy-skills`) — load when writing non-trivial logic
|
|
91
|
+
- `mcp-builder` (`anthropics/skills`) — load when building or modifying MCP servers (skip if non-MCP work)
|
|
86
92
|
- `naming-analyzer` (`softaworks/agent-toolkit`) — load when introducing new identifiers
|
|
87
|
-
- `
|
|
88
|
-
- `
|
|
89
|
-
- `vercel-composition-patterns` (`vercel-labs/agent-skills`) — load when task involves React composition (skip if non-frontend)
|
|
93
|
+
- `opensrc` (`vercel-labs/opensrc`) — load when library internals are unclear
|
|
94
|
+
- `pnpm` (`antfu/skills`) — load when changing `package.json`/lockfile
|
|
90
95
|
- `react-dev` (`softaworks/agent-toolkit`) — load when task is React (skip if non-frontend)
|
|
91
96
|
- `react-useeffect` (`softaworks/agent-toolkit`) — load when modifying `useEffect` (skip if non-frontend)
|
|
92
|
-
- `
|
|
97
|
+
- `resolving-merge-conflicts` (`mattpocock/skills`) — load when resolving merge conflicts or rebase issues
|
|
93
98
|
- `tdd` (`mattpocock/skills`) — load when user explicitly requests TDD
|
|
94
|
-
- `
|
|
95
|
-
- `
|
|
96
|
-
- `vitest` (`antfu/skills`) — load when writing Vitest tests (skip if no tests)
|
|
99
|
+
- `vercel-composition-patterns` (`vercel-labs/agent-skills`) — load when task involves React composition (skip if non-frontend)
|
|
100
|
+
- `vercel-react-best-practices` (`vercel-labs/agent-skills`) — load when task involves React (skip if non-frontend)
|
|
97
101
|
- `vite` (`antfu/skills`) — load when modifying `vite.config` or build
|
|
98
|
-
- `
|
|
99
|
-
- `
|
|
102
|
+
- `vitest` (`antfu/skills`) — load when writing Vitest tests (skip if no tests)
|
|
103
|
+
- `webapp-testing` (`anthropics/skills`) — load when task needs browser-level test
|
|
100
104
|
- `writing-clearly-and-concisely` (`softaworks/agent-toolkit`) — load when writing a commit message
|
|
101
105
|
|
|
102
106
|
### Defer to specialist
|
package/agents/diagnose.md
CHANGED
|
@@ -96,17 +96,18 @@ Confirm it works:
|
|
|
96
96
|
|
|
97
97
|
### Always load
|
|
98
98
|
|
|
99
|
-
- `
|
|
99
|
+
- `diagnosing-bugs` (`mattpocock/skills`) — own skill, non-negotiable
|
|
100
100
|
|
|
101
101
|
### Load on trigger
|
|
102
102
|
|
|
103
|
-
- `
|
|
103
|
+
- `agent-browser` (`vercel-labs/agent-browser`) — load when bug involves UI behavior, network requests, performance profiling, or needs visual reproduction (skip if backend-only)
|
|
104
|
+
- `dependency-updater` (`softaworks/agent-toolkit`) — load when investigating dependency-related bugs, lockfile issues, or version conflicts
|
|
105
|
+
- `resolving-merge-conflicts` (`mattpocock/skills`) — load when debugging regressions introduced by a merge or rebase
|
|
106
|
+
- `diagnosing-bugs` (`mattpocock/skills`) — load when using the diagnose methodology for systematic debugging
|
|
104
107
|
- `karpathy-guidelines` (`multica-ai/andrej-karpathy-skills`) — load when investigating pattern-level bugs
|
|
108
|
+
- `logging-best-practices` (`boristane/agent-skills`) — load when bug surfaces in logs or you need to add logging
|
|
105
109
|
- `opensrc` (`vercel-labs/opensrc`) — load when root cause is in an external library
|
|
106
110
|
- `webapp-testing` (`anthropics/skills`) — load when UI reproduces the bug
|
|
107
|
-
- `agent-browser` (`vercel-labs/agent-browser`) — load when bug involves UI behavior, network requests, performance profiling, or needs visual reproduction (skip if backend-only)
|
|
108
|
-
- `dependency-updater` (`softaworks/agent-toolkit`) — load when investigating dependency-related bugs, lockfile issues, or version conflicts
|
|
109
|
-
- `zoom-out` (`mattpocock/skills`) — load when regression spans >1 module
|
|
110
111
|
|
|
111
112
|
### Defer to specialist
|
|
112
113
|
|
package/agents/planner.md
CHANGED
|
@@ -70,12 +70,12 @@ After the plan is written, your handoff should cover:
|
|
|
70
70
|
|
|
71
71
|
### Load on trigger
|
|
72
72
|
|
|
73
|
-
- `to-issues` (`mattpocock/skills`) — load when plan is approved and needs issue breakdown
|
|
74
|
-
- `to-prd` (`mattpocock/skills`) — load when plan becomes a PRD
|
|
75
|
-
- `grill-me` (`mattpocock/skills`) — load before finalising the plan
|
|
76
73
|
- `game-changing-features` (`softaworks/agent-toolkit`) — load when user asks for product strategy (skip on pure implementation plans)
|
|
74
|
+
- `domain-modeling` (`mattpocock/skills`) — load when planning around domain boundaries or aligning phases with domain contexts
|
|
75
|
+
- `grill-me` (`mattpocock/skills`) — load before finalising the plan
|
|
77
76
|
- `prototype` (`mattpocock/skills`) — load when plan needs runtime validation first
|
|
78
|
-
- `
|
|
77
|
+
- `to-issues` (`mattpocock/skills`) — load when plan is approved and needs issue breakdown
|
|
78
|
+
- `to-prd` (`mattpocock/skills`) — load when plan becomes a PRD
|
|
79
79
|
|
|
80
80
|
### Defer to specialist
|
|
81
81
|
|
package/agents/reviewer.md
CHANGED
|
@@ -138,16 +138,18 @@ You review code for quality.
|
|
|
138
138
|
|
|
139
139
|
### Load on trigger
|
|
140
140
|
|
|
141
|
-
- `
|
|
142
|
-
- `
|
|
141
|
+
- `agent-browser` (`vercel-labs/agent-browser`) — load when reviewing UI changes, verifying visual fidelity, or testing interactive flows (skip if backend-only)
|
|
142
|
+
- `baseline-ui` (`ibelick/ui-skills`) — load when reviewing UI (skip if non-UI)
|
|
143
143
|
- `fixing-accessibility` (`ibelick/ui-skills`) — load when reviewing accessibility (skip if non-UI)
|
|
144
144
|
- `fixing-metadata` (`ibelick/ui-skills`) — load when reviewing SEO/metadata (skip if non-UI)
|
|
145
145
|
- `fixing-motion-performance` (`ibelick/ui-skills`) — load when reviewing animation (skip if non-UI)
|
|
146
146
|
- `logging-best-practices` (`boristane/agent-skills`) — load when code adds/uses logs
|
|
147
|
-
- `
|
|
148
|
-
- `
|
|
149
|
-
- `
|
|
147
|
+
- `codebase-design` (`mattpocock/skills`) — load when reviewing module boundaries, seam placement, or interface design
|
|
148
|
+
- `review-logging-patterns` (`hugorcd/evlog`) — load when reviewing code that adds or modifies logging (skip if no logging changes)
|
|
149
|
+
- `skill-judge` (`softaworks/agent-toolkit`) — load when review target is a SKILL.md
|
|
150
150
|
- `userinterface-wiki` (`raphaelsalaja/userinterface-wiki`) — load when reviewing UI (skip if non-UI)
|
|
151
|
+
- `web-design-guidelines` (`antfu/skills`) — load when reviewing UI (skip if backend-only)
|
|
152
|
+
- `webapp-testing` (`anthropics/skills`) — load when reviewing tests
|
|
151
153
|
|
|
152
154
|
### Defer to specialist
|
|
153
155
|
|
package/agents/writer.md
CHANGED
|
@@ -83,22 +83,25 @@ You write documentation.
|
|
|
83
83
|
|
|
84
84
|
### Load on trigger
|
|
85
85
|
|
|
86
|
+
- `backend-to-frontend-handoff-docs` (`softaworks/agent-toolkit`) — load when documenting an API for frontend consumers
|
|
87
|
+
- `brand-guidelines` (`anthropics/skills`) — load when writing brand documentation, style guides, or tone-of-voice guidelines
|
|
88
|
+
- `copy-editing` (`coreyhaines31/marketingskills`) — load when user wants in-place edits of existing copy
|
|
89
|
+
- `crafting-effective-readmes` (`softaworks/agent-toolkit`) — load when output is a README
|
|
90
|
+
- `doc-coauthoring` (`anthropics/skills`) — load when user wants to co-write, not just receive a doc
|
|
86
91
|
- `docx` (`anthropics/skills`) — load when output must be `.docx`
|
|
92
|
+
- `domain-modeling` (`mattpocock/skills`) — load when documenting the domain glossary, ubiquitous language, or domain concepts
|
|
93
|
+
- `frontend-to-backend-requirements` (`softaworks/agent-toolkit`) — load when documenting frontend requirements for backend
|
|
87
94
|
- `pdf` (`anthropics/skills`) — load when output must be `.pdf`
|
|
88
|
-
- `xlsx` (`anthropics/skills`) — load when output is a spreadsheet
|
|
89
95
|
- `pptx` (`anthropics/skills`) — load when output is slides
|
|
90
|
-
- `
|
|
91
|
-
- `
|
|
92
|
-
- `backend-to-frontend-handoff-docs` (`softaworks/agent-toolkit`) — load when documenting an API for frontend consumers
|
|
93
|
-
- `frontend-to-backend-requirements` (`softaworks/agent-toolkit`) — load when documenting frontend requirements for backend
|
|
94
|
-
- `copy-editing` (`coreyhaines31/marketingskills`) — load when user wants in-place edits of existing copy
|
|
96
|
+
- `writing-great-skills` (`mattpocock/skills`) — load when creating or editing a SKILL.md file
|
|
97
|
+
- `xlsx` (`anthropics/skills`) — load when output is a spreadsheet
|
|
95
98
|
|
|
96
99
|
### Defer to specialist
|
|
97
100
|
|
|
98
101
|
- `internal-comms` (`anthropics/skills`) → out of scope — internal comms is not a code/ADRs/API docs task
|
|
99
102
|
- `professional-communication` (`softaworks/agent-toolkit`) → out of scope — emails/team messaging not in writer's role
|
|
100
|
-
- `template-skill` (`
|
|
101
|
-
- `skill-creator` (`
|
|
103
|
+
- `template-skill` (`anthropics/skills`) → out of scope — skill creation is a separate workflow
|
|
104
|
+
- `skill-creator` (`anthropics/skills`) → out of scope — same as above
|
|
102
105
|
- `copywriting` (`coreyhaines31/marketingskills`) → out of scope — marketing copy is not documentation
|
|
103
106
|
|
|
104
107
|
### Skip if
|