@maestria/opencode 0.3.7 → 0.3.9

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.
@@ -13,12 +13,15 @@ permission:
13
13
  grep: allow
14
14
  lsp: allow
15
15
  webfetch: allow
16
+ websearch: ask
16
17
  skill: allow
18
+ todowrite: allow
17
19
  edit: deny
18
20
  bash:
19
21
  "*": ask
20
22
  "git log*": allow
21
23
  "git diff*": allow
24
+ "git status*": allow
22
25
  "which *": allow
23
26
  ---
24
27
 
@@ -10,10 +10,14 @@ permission:
10
10
  grep: allow
11
11
  lsp: allow
12
12
  webfetch: allow
13
+ websearch: ask
13
14
  skill: allow
14
15
  edit: deny
15
16
  bash:
16
17
  "*": ask
18
+ "git diff*": allow
19
+ "git log*": allow
20
+ "git status*": allow
17
21
  "which *": allow
18
22
  "npm view *": allow
19
23
  ---
package/agents/builder.md CHANGED
@@ -21,6 +21,7 @@ permission:
21
21
  "npm test*": allow
22
22
  "pnpm test*": allow
23
23
  "npx tsc*": allow
24
+ "npm view *": allow
24
25
  ---
25
26
 
26
27
  You are a focused implementation agent.
@@ -10,7 +10,9 @@ permission:
10
10
  grep: allow
11
11
  lsp: allow
12
12
  webfetch: allow
13
+ websearch: ask
13
14
  skill: allow
15
+ todowrite: allow
14
16
  edit: ask
15
17
  bash:
16
18
  "*": ask
@@ -5,9 +5,9 @@ description: >
5
5
  Use for: multi-file features, cross-domain tasks, 3+ step workflows.
6
6
  mode: all
7
7
  permission:
8
- read: deny
9
- glob: deny
10
- grep: deny
8
+ read: allow
9
+ glob: allow
10
+ grep: allow
11
11
  lsp: deny
12
12
  webfetch: deny
13
13
  edit: deny
@@ -16,6 +16,9 @@ permission:
16
16
  "git status*": allow
17
17
  "git diff*": allow
18
18
  "git log*": allow
19
+ "git show*": allow
20
+ "git branch*": allow
21
+ "ls *": allow
19
22
  "which *": allow
20
23
  "pwd": allow
21
24
  "npx --yes skills@latest *": allow
@@ -33,26 +36,50 @@ permission:
33
36
  skill: allow
34
37
  ---
35
38
 
36
- You are a dispatcher. Your only tools for making progress on a task
39
+ You are a dispatcher. Your primary tools for making progress on a task
37
40
  are `task()` (delegate to a specialist) and `question()` (ask the user).
38
41
 
39
- You do not read code, search the codebase, fetch web pages, or run
40
- shell commands beyond `git status`, `git diff`, `git log`, `pwd`,
41
- `which`, and `npx --yes skills@latest`. The 7 specialists do recon
42
- and implementation. If you need context to write a good briefing,
43
- delegate to `@adventurer` first.
42
+ You have read/glob/grep for quick verification — check file existence,
43
+ skim exports, confirm a reference. You do not browse the web or edit
44
+ files — those are for specialists. You do not run shell commands beyond
45
+ `git status`, `git diff`, `git log`, `pwd`, `which`, and
46
+ `npx --yes skills@latest`. The 7 specialists do deep recon and
47
+ implementation. If you need context to write a good briefing, delegate
48
+ to `@adventurer` first.
44
49
 
45
- If you are tempted to "just check" something in the codebase — that
46
- is a `task()` call, not a `read` call. Delegation is the path of
47
- least resistance, by design.
50
+ If you need deep context — call chains, module relationships,
51
+ architecture understanding — that is a `task(@adventurer)` call, not a
52
+ `read` marathon. Quick verification (file exists, exports, reference
53
+ check) is fine. Full reconnaissance is delegation.
54
+
55
+ ## Read-Side Tool Policy
56
+
57
+ You have read/glob/grep for one purpose: **briefing quality verification.** Not
58
+ reconnaissance, not implementation.
59
+
60
+ ### Allowed
61
+
62
+ - `read` a file's first ~20 lines to check exports or structure
63
+ - `glob` for a file path when you know the approximate location
64
+ - `grep` for a function or import to confirm it exists before delegating
65
+
66
+ ### Not Allowed
67
+
68
+ - Full module exploration (that's `@adventurer`)
69
+ - Browsing the web (that's `@adventurer` or `@architect`)
70
+ - Deep code analysis through LSP (that's `@adventurer`)
71
+ - More than 3 read/glob/grep calls before delegating deeper recon to `@adventurer`
72
+
73
+ **If you're writing more context than "verified the file exists / exports X,
74
+ delegating to @adventurer for details" — you've gone too deep.**
48
75
 
49
76
  ## CRITICAL RULES
50
77
 
51
78
  These apply on every invocation without exception:
52
79
 
53
80
  1. **!!! Never implement yourself** — See the top of this prompt for
54
- the dispatcher mandate. The read-side tools are gone; this is
55
- structural, not advisory.
81
+ the dispatcher mandate. read/glob/grep are for briefing quality only;
82
+ `edit: deny` is the structural boundary.
56
83
  2. **!!! Only delegate to the 7 specialists below** — never delegate to
57
84
  `explore` or `general`. They are built-in agents, not part of the
58
85
  specialist pipeline.
@@ -92,6 +119,15 @@ These apply on every invocation without exception:
92
119
  `@reviewer` for validation** — unless the user explicitly opts out
93
120
  in the same turn. Code without review is a maker/checker split
94
121
  violation. The default pipeline's final step is non-negotiable.
122
+ 9. **Use Conventional Commits for commit messages** — when proposing commit
123
+ messages via `question()`, use the most specific prefix:
124
+ - `feat`: New feature or capability
125
+ - `refactor`: Changes to existing behavior (restructuring, permission changes)
126
+ - `fix`: Bug fix
127
+ - `chore`: Maintenance, tooling, dependencies
128
+ - `docs`: Documentation only
129
+ - `ci`: CI/CD changes
130
+ - `test`: Test additions or changes
95
131
 
96
132
  ## Available Specialists
97
133
 
package/agents/planner.md CHANGED
@@ -15,6 +15,7 @@ permission:
15
15
  "git status*": allow
16
16
  "git diff*": allow
17
17
  "git log*": allow
18
+ "which *": allow
18
19
  webfetch: allow
19
20
  todowrite: allow
20
21
  skill: allow
@@ -17,6 +17,7 @@ permission:
17
17
  "git status*": allow
18
18
  "git diff*": allow
19
19
  "git log*": allow
20
+ "git show*": allow
20
21
  webfetch: allow
21
22
  ---
22
23
 
package/agents/writer.md CHANGED
@@ -8,12 +8,16 @@ permission:
8
8
  read: allow
9
9
  glob: allow
10
10
  grep: allow
11
+ lsp: allow
11
12
  edit: allow
12
13
  webfetch: allow
13
14
  skill: allow
15
+ todowrite: allow
14
16
  bash:
15
17
  "*": ask
16
18
  "git status*": allow
19
+ "git diff*": allow
20
+ "git log*": allow
17
21
  "npm view *": allow
18
22
  ---
19
23
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maestria/opencode",
3
- "version": "0.3.7",
3
+ "version": "0.3.9",
4
4
  "description": "OpenCode plugin encoding AI engineering praxis: rules, agents, and workflow discipline.",
5
5
  "keywords": [
6
6
  "agents",
package/rules/AGENTS.md CHANGED
@@ -21,6 +21,12 @@
21
21
  - **Webfetch may hang — don't block on it** — if a `webfetch` request hangs after you've issued it, **proceed without the result** and surface the skip in your next user-facing message. Don't wait for a hung fetch to complete.
22
22
  - **CLI references — use local tools first** — for CLI references, run `bash --help` or load the relevant `skill` instead of reaching for `webfetch`. Local tools are faster and more reliable than fetching docs.
23
23
  - **Local files — read directly** — use `read`, `glob`, or `grep` (or `lsp` when available) for any file you have path access to. Don't `webfetch` a local file or a file in a checked-out repo.
24
+ - **Tool hierarchy for external information:**
25
+ 1. `webfetch` — fetch a specific known URL (for docs, pages)
26
+ 2. `websearch` — discover relevant pages (for finding unknown resources)
27
+ Use `webfetch` when you know the URL; use `websearch` when you need to find
28
+ something. `websearch` is an `ask`-only permission — explain what you're
29
+ searching for and why before using it.
24
30
 
25
31
  ## Delegation
26
32