@nail00749/agent-gvozd 0.1.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/LICENSE +21 -0
- package/README.md +233 -0
- package/defaults/agents/back-deep.jsonc +20 -0
- package/defaults/agents/back-fast.jsonc +15 -0
- package/defaults/agents/debugger.jsonc +37 -0
- package/defaults/agents/devops.jsonc +42 -0
- package/defaults/agents/docs.jsonc +22 -0
- package/defaults/agents/explorer.jsonc +23 -0
- package/defaults/agents/front-deep.jsonc +34 -0
- package/defaults/agents/front-fast.jsonc +29 -0
- package/defaults/agents/git.jsonc +50 -0
- package/defaults/agents/master.jsonc +30 -0
- package/defaults/agents/planner.jsonc +24 -0
- package/defaults/agents/researcher.jsonc +17 -0
- package/defaults/agents/review-deep.jsonc +33 -0
- package/defaults/agents/review-fast.jsonc +29 -0
- package/defaults/agents/security.jsonc +46 -0
- package/defaults/agents/verifier.jsonc +35 -0
- package/defaults/default.jsonc +5 -0
- package/defaults/prompts/back-deep.md +7 -0
- package/defaults/prompts/back-fast.md +5 -0
- package/defaults/prompts/debugger.md +5 -0
- package/defaults/prompts/devops.md +7 -0
- package/defaults/prompts/docs.md +5 -0
- package/defaults/prompts/explorer.md +5 -0
- package/defaults/prompts/front-deep.md +7 -0
- package/defaults/prompts/front-fast.md +7 -0
- package/defaults/prompts/git.md +5 -0
- package/defaults/prompts/master.md +21 -0
- package/defaults/prompts/planner.md +1 -0
- package/defaults/prompts/researcher.md +3 -0
- package/defaults/prompts/review-deep.md +5 -0
- package/defaults/prompts/review-fast.md +5 -0
- package/defaults/prompts/security.md +5 -0
- package/defaults/prompts/verifier.md +5 -0
- package/defaults/schema.json +65 -0
- package/dist/cli.js +7705 -0
- package/dist/index.js +6320 -0
- package/package.json +54 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 nail00749
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# Gvozd for OpenCode V2
|
|
2
|
+
|
|
3
|
+
Gvozd installs one permission-aware agent team globally, so every OpenCode
|
|
4
|
+
project can use it without copying plugin or agent files into the repository.
|
|
5
|
+
The first release targets OpenCode V2 `0.0.0-beta-19425` exactly.
|
|
6
|
+
|
|
7
|
+
## Global setup
|
|
8
|
+
|
|
9
|
+
Run the guided setup once:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx @nail00749/agent-gvozd setup
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Or with Bun:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
bunx @nail00749/agent-gvozd setup
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The wizard discovers `opencode2` (then `opencode`), reads the live model
|
|
22
|
+
catalog, asks for fast and deep preferences, registers the plugin through
|
|
23
|
+
OpenCode, writes marker-owned global agents, restarts the service, and runs a
|
|
24
|
+
read-only doctor. It does not configure provider credentials. Authenticate with
|
|
25
|
+
OpenCode first if the desired provider is absent from `opencode models`.
|
|
26
|
+
|
|
27
|
+
For a deterministic unattended rerun, use `gvozd setup --yes`. It retains a
|
|
28
|
+
valid existing profile, or selects the built-in OpenAI preset only when Luna,
|
|
29
|
+
Sol, and Codex Spark are all available. Rerunning setup is the supported v0.1
|
|
30
|
+
upgrade path.
|
|
31
|
+
|
|
32
|
+
Inspect an installation at any time:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
gvozd doctor
|
|
36
|
+
gvozd doctor --json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Setup owns `<OpenCode config>/gvozd/config.jsonc`, its generated schema, and
|
|
40
|
+
the Gvozd Markdown files under `<OpenCode config>/agents`. It refuses to
|
|
41
|
+
overwrite unmanaged agent or schema files and preserves unrelated JSONC fields
|
|
42
|
+
and comments. Project overrides under `docs/.gvozd` still take precedence.
|
|
43
|
+
|
|
44
|
+
The installed team contains:
|
|
45
|
+
|
|
46
|
+
- `master` — primary coordinator
|
|
47
|
+
- `planner` — read-only planning subagent
|
|
48
|
+
- `back-fast` / `back-deep` — fast and deep backend implementation tiers
|
|
49
|
+
- `front-fast` / `front-deep` — fast and deep frontend implementation tiers
|
|
50
|
+
- `review-fast` / `review-deep` — fast and deep read-only review tiers
|
|
51
|
+
- `researcher` — source-backed internet research
|
|
52
|
+
- `explorer` — read-only local file and execution-path discovery
|
|
53
|
+
- `git` — focused Git inspection and explicitly authorized operations
|
|
54
|
+
- `docs` — documentation, examples, and migration notes
|
|
55
|
+
- `verifier` — independent build, runtime, and manual scenario verification
|
|
56
|
+
- `debugger` — read-only root-cause investigation
|
|
57
|
+
- `security` — read-only security and trust-boundary review
|
|
58
|
+
- `devops` — CI, Docker, infrastructure, deployment, and release configuration
|
|
59
|
+
|
|
60
|
+
## Development setup
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
bun install
|
|
64
|
+
bun run sync
|
|
65
|
+
opencode2 service restart
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`bun run sync` materializes the resolved configuration as native
|
|
69
|
+
`.opencode/agents/*.md` files and installs the local plugin entrypoint at
|
|
70
|
+
`.opencode/plugins/agent-gvozd/index.ts`. OpenCode V2 discovers that entrypoint
|
|
71
|
+
automatically.
|
|
72
|
+
|
|
73
|
+
Run `bun run sync --check` to report drift without changing files. The command
|
|
74
|
+
prints a diff before replacing or removing an existing generated agent and
|
|
75
|
+
never overwrites an agent file it does not own.
|
|
76
|
+
|
|
77
|
+
Run `bun test`, `bun run typecheck`, and `bun run build` for local verification.
|
|
78
|
+
|
|
79
|
+
## Configuration layers
|
|
80
|
+
|
|
81
|
+
Configuration is merged in this order:
|
|
82
|
+
|
|
83
|
+
1. package defaults in `defaults/default.jsonc` and `defaults/agents/*.jsonc`
|
|
84
|
+
2. global overrides under the platform/XDG OpenCode config root in `gvozd/config.jsonc`
|
|
85
|
+
3. project overrides in `<project>/docs/.gvozd/config.jsonc` and its `agents/` directory
|
|
86
|
+
|
|
87
|
+
Later scalar values replace earlier values. Arrays such as `models`, `skills`,
|
|
88
|
+
`mcp`, and `permissions` replace the complete earlier array.
|
|
89
|
+
|
|
90
|
+
## Cooperative file leases
|
|
91
|
+
|
|
92
|
+
Writer agents coordinate exact project files before editing them. The default
|
|
93
|
+
roles are:
|
|
94
|
+
|
|
95
|
+
- `master`: `coordinator`
|
|
96
|
+
- backend, frontend, Docs, and DevOps agents: `writer`
|
|
97
|
+
- planning, exploration, review, research, Git, verification, debugging, and
|
|
98
|
+
security agents: `readonly`
|
|
99
|
+
|
|
100
|
+
Custom agents default to `readonly`. Set `fileLease` explicitly when a custom
|
|
101
|
+
agent must write:
|
|
102
|
+
|
|
103
|
+
```jsonc
|
|
104
|
+
{
|
|
105
|
+
"agents": {
|
|
106
|
+
"custom-writer": {
|
|
107
|
+
"fileLease": "writer"
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Before parallel writer delegation, Master asks Explorer for the exact existing
|
|
114
|
+
and planned files in each independent work package. Master reserves each set
|
|
115
|
+
with `gvozd_lease` and passes the returned `leaseId` to the matching writer.
|
|
116
|
+
The writer calls `gvozd_claim` before its first mutation. Overlapping
|
|
117
|
+
reservations fail immediately, and `edit`, `write`, or `apply_patch` targets
|
|
118
|
+
outside the claimed lease are denied.
|
|
119
|
+
|
|
120
|
+
Writer and coordinator agents cannot use arbitrary shell commands because
|
|
121
|
+
shell writes cannot be safely inferred from command text. Verifier runs builds
|
|
122
|
+
and tests only after active writer leases are released. If a writer discovers
|
|
123
|
+
another required file, it reports the exact path to Master, which can extend
|
|
124
|
+
the lease after a conflict check or serialize the work.
|
|
125
|
+
|
|
126
|
+
Leases are in-memory and protect child sessions within one OpenCode server
|
|
127
|
+
process. Unclaimed reservations expire after five minutes; active leases expire
|
|
128
|
+
after thirty minutes without tool activity and are released on terminal session
|
|
129
|
+
events. Separate OpenCode processes and remote hosts are not coordinated.
|
|
130
|
+
|
|
131
|
+
An agent override can be inline:
|
|
132
|
+
|
|
133
|
+
```jsonc
|
|
134
|
+
{
|
|
135
|
+
"$schema": "./schema.json",
|
|
136
|
+
"defaultAgent": "master",
|
|
137
|
+
"agents": {
|
|
138
|
+
"review-deep": {
|
|
139
|
+
"models": [
|
|
140
|
+
"openai/gpt-5.6-sol",
|
|
141
|
+
"openai/gpt-5.6-luna"
|
|
142
|
+
],
|
|
143
|
+
"skills": ["code-review"],
|
|
144
|
+
"mcp": ["gitlab"]
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Or it can live in `docs/.gvozd/agents/review-deep.jsonc`. Relative prompt paths
|
|
151
|
+
are resolved from the file that declares them. Prompt files and a custom
|
|
152
|
+
`agentsDirectory` must remain inside the configuration layer that owns them;
|
|
153
|
+
sync rejects symlinked output directories and files.
|
|
154
|
+
|
|
155
|
+
`skills` contains exact skill IDs. `mcp` contains MCP server names; the plugin
|
|
156
|
+
converts them to the V2 `<server>_*` permission action. Use explicit
|
|
157
|
+
`permissions` with a matching normalized action (for example,
|
|
158
|
+
`gitlab_get_issue`) when an agent should receive only selected tools from a
|
|
159
|
+
server. If an MCP action can match more than one normalized server prefix,
|
|
160
|
+
access to that ambiguous action is denied.
|
|
161
|
+
|
|
162
|
+
## Default capabilities
|
|
163
|
+
|
|
164
|
+
The built-in team uses exact skill IDs and tool-level MCP permissions from the
|
|
165
|
+
current OpenCode setup. Server-wide `mcp` grants remain empty by default because
|
|
166
|
+
GitLab, GitNexus, and Playwright each expose actions that are too broad for at
|
|
167
|
+
least one receiving role.
|
|
168
|
+
|
|
169
|
+
| Agents | Skills | MCP access |
|
|
170
|
+
| --- | --- | --- |
|
|
171
|
+
| `planner` | verification planning, ASCII UI review, GitNexus impact | GitNexus read-only |
|
|
172
|
+
| `back-deep` | GitNexus impact and refactoring | GitNexus except group sync |
|
|
173
|
+
| `front-fast` | modern web and interface polish | Playwright observation; interactions ask |
|
|
174
|
+
| `front-deep` | frontend/layout skills plus GitNexus impact/refactoring | GitNexus except group sync; Playwright interactions ask |
|
|
175
|
+
| `review-fast` | code review | read-only GitLab without CI variables |
|
|
176
|
+
| `review-deep` | code review and GitNexus review/impact | read-only GitLab and GitNexus |
|
|
177
|
+
| `explorer` | GitNexus exploration | GitNexus read-only |
|
|
178
|
+
| `git` | none | GitLab reads; mutations ask; CI variables denied |
|
|
179
|
+
| `verifier` | verification before completion | read-only GitNexus; Playwright interactions ask |
|
|
180
|
+
| `debugger` | systematic debugging and GitNexus debugging/PDG | read-only GitNexus; Playwright interactions ask |
|
|
181
|
+
| `security` | code review and GitNexus taint/PDG | read-only GitLab/GitNexus; Playwright interactions ask |
|
|
182
|
+
| `devops` | verification before completion | GitLab reads and CI validation; mutations ask; CI variables denied |
|
|
183
|
+
|
|
184
|
+
`master`, `back-fast`, `researcher`, and `docs` intentionally keep their
|
|
185
|
+
existing narrow capability sets. TDD skills are not enabled implicitly.
|
|
186
|
+
|
|
187
|
+
## Model order
|
|
188
|
+
|
|
189
|
+
`models` is an ordered preference list. During plugin activation, agent-gvozd
|
|
190
|
+
selects the first enabled model and variant present in the OpenCode catalog. If
|
|
191
|
+
none is currently catalogued, it preserves the first configured model so that
|
|
192
|
+
OpenCode can report the underlying availability problem.
|
|
193
|
+
|
|
194
|
+
OpenCode V2 currently exposes only one model on an agent and does not expose a
|
|
195
|
+
safe hook for replacing that model inside an already dispatched provider
|
|
196
|
+
request. The ordered list therefore handles activation-time availability; an
|
|
197
|
+
outage or rate limit after dispatch still follows OpenCode's own retry policy.
|
|
198
|
+
|
|
199
|
+
## Fast and deep routing
|
|
200
|
+
|
|
201
|
+
Fast workers and reviewers prefer `openai/gpt-5.6-luna` with
|
|
202
|
+
`openai/gpt-5.6-sol` as fallback. Deep agents use the reverse order. Master
|
|
203
|
+
selects the tier from task complexity and risk: localized, clear, low-risk
|
|
204
|
+
changes go to fast; ambiguous, cross-module, security-sensitive, migration,
|
|
205
|
+
concurrency, or otherwise material work goes to deep. Review depth is selected
|
|
206
|
+
independently from implementation depth.
|
|
207
|
+
|
|
208
|
+
Researcher, Git, and Docs prefer `openai/gpt-5.6-luna` with
|
|
209
|
+
`openai/gpt-5.6-sol` as fallback. Explorer prefers
|
|
210
|
+
`openai/gpt-5.3-codex-spark` with `openai/gpt-5.6-luna` as fallback. Researcher
|
|
211
|
+
is restricted to web search and fetch tools; Explorer is restricted to local
|
|
212
|
+
glob, grep, and read tools. Git allows common read-only Git commands and asks
|
|
213
|
+
for approval before diff/history inspection or any mutating Git command. Docs
|
|
214
|
+
can edit Markdown and files under `docs/`; edits elsewhere require approval,
|
|
215
|
+
and shell access is denied.
|
|
216
|
+
|
|
217
|
+
Verifier uses `openai/gpt-5.6-luna` with `openai/gpt-5.6-sol` as fallback.
|
|
218
|
+
Debugger, Security, and DevOps use the reverse order. Verifier, Debugger, and
|
|
219
|
+
Security are read-only and require approval for shell commands. DevOps can edit
|
|
220
|
+
common CI, Docker, and infrastructure paths; other edits and every shell or
|
|
221
|
+
external mutation require approval.
|
|
222
|
+
|
|
223
|
+
This pre-release change replaces the earlier single-tier agent IDs. Existing
|
|
224
|
+
global or project overrides must be split explicitly:
|
|
225
|
+
|
|
226
|
+
| Previous ID | New IDs |
|
|
227
|
+
| --- | --- |
|
|
228
|
+
| `backender` | `back-fast`, `back-deep` |
|
|
229
|
+
| `frontend` | `front-fast`, `front-deep` |
|
|
230
|
+
| `reviewer` | `review-fast`, `review-deep` |
|
|
231
|
+
|
|
232
|
+
There are no automatic aliases because copying one override to both tiers could
|
|
233
|
+
silently give them the same model order and defeat complexity-based routing.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Implements complex or high-risk backend, data, API, and integration changes.",
|
|
3
|
+
"mode": "subagent",
|
|
4
|
+
"fileLease": "writer",
|
|
5
|
+
"models": [
|
|
6
|
+
"openai/gpt-5.6-sol",
|
|
7
|
+
"openai/gpt-5.6-luna"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "../prompts/back-deep.md",
|
|
10
|
+
"skills": [
|
|
11
|
+
"gitnexus-impact-analysis",
|
|
12
|
+
"gitnexus-refactoring"
|
|
13
|
+
],
|
|
14
|
+
"mcp": [],
|
|
15
|
+
"permissions": [
|
|
16
|
+
{ "action": "subagent", "resource": "*", "effect": "deny" },
|
|
17
|
+
{ "action": "gitnexus_*", "resource": "*", "effect": "allow" },
|
|
18
|
+
{ "action": "gitnexus_group_sync", "resource": "*", "effect": "deny" }
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Implements small, clear, low-risk backend changes with minimal exploration.",
|
|
3
|
+
"mode": "subagent",
|
|
4
|
+
"fileLease": "writer",
|
|
5
|
+
"models": [
|
|
6
|
+
"openai/gpt-5.6-luna",
|
|
7
|
+
"openai/gpt-5.6-sol"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "../prompts/back-fast.md",
|
|
10
|
+
"skills": [],
|
|
11
|
+
"mcp": [],
|
|
12
|
+
"permissions": [
|
|
13
|
+
{ "action": "subagent", "resource": "*", "effect": "deny" }
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Diagnoses unclear failures and establishes a concrete root cause without modifying files.",
|
|
3
|
+
"mode": "subagent",
|
|
4
|
+
"fileLease": "readonly",
|
|
5
|
+
"models": [
|
|
6
|
+
"openai/gpt-5.6-sol",
|
|
7
|
+
"openai/gpt-5.6-luna"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "../prompts/debugger.md",
|
|
10
|
+
"skills": [
|
|
11
|
+
"systematic-debugging",
|
|
12
|
+
"gitnexus-debugging",
|
|
13
|
+
"gitnexus-pdg-query"
|
|
14
|
+
],
|
|
15
|
+
"mcp": [],
|
|
16
|
+
"permissions": [
|
|
17
|
+
{ "action": "*", "resource": "*", "effect": "deny" },
|
|
18
|
+
{ "action": "read", "resource": "*", "effect": "allow" },
|
|
19
|
+
{ "action": "glob", "resource": "*", "effect": "allow" },
|
|
20
|
+
{ "action": "grep", "resource": "*", "effect": "allow" },
|
|
21
|
+
{ "action": "shell", "resource": "*", "effect": "ask" },
|
|
22
|
+
{ "action": "gitnexus_*", "resource": "*", "effect": "allow" },
|
|
23
|
+
{ "action": "gitnexus_rename", "resource": "*", "effect": "deny" },
|
|
24
|
+
{ "action": "gitnexus_group_sync", "resource": "*", "effect": "deny" },
|
|
25
|
+
{ "action": "playwright_*", "resource": "*", "effect": "ask" },
|
|
26
|
+
{ "action": "playwright_browser_get_config", "resource": "*", "effect": "allow" },
|
|
27
|
+
{ "action": "playwright_browser_snapshot", "resource": "*", "effect": "allow" },
|
|
28
|
+
{ "action": "playwright_browser_take_screenshot", "resource": "*", "effect": "allow" },
|
|
29
|
+
{ "action": "playwright_browser_console_messages", "resource": "*", "effect": "allow" },
|
|
30
|
+
{ "action": "playwright_browser_network_requests", "resource": "*", "effect": "allow" },
|
|
31
|
+
{ "action": "playwright_browser_tabs", "resource": "*", "effect": "allow" },
|
|
32
|
+
{ "action": "playwright_browser_find", "resource": "*", "effect": "allow" },
|
|
33
|
+
{ "action": "playwright_browser_generate_locator", "resource": "*", "effect": "allow" },
|
|
34
|
+
{ "action": "playwright_browser_verify_*", "resource": "*", "effect": "allow" },
|
|
35
|
+
{ "action": "playwright_browser_run_code_unsafe", "resource": "*", "effect": "deny" }
|
|
36
|
+
]
|
|
37
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Implements focused CI, Docker, infrastructure, deployment, and release configuration changes.",
|
|
3
|
+
"mode": "subagent",
|
|
4
|
+
"fileLease": "writer",
|
|
5
|
+
"models": [
|
|
6
|
+
"openai/gpt-5.6-sol",
|
|
7
|
+
"openai/gpt-5.6-luna"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "../prompts/devops.md",
|
|
10
|
+
"skills": [
|
|
11
|
+
"verification-before-completion"
|
|
12
|
+
],
|
|
13
|
+
"mcp": [],
|
|
14
|
+
"permissions": [
|
|
15
|
+
{ "action": "*", "resource": "*", "effect": "deny" },
|
|
16
|
+
{ "action": "read", "resource": "*", "effect": "allow" },
|
|
17
|
+
{ "action": "glob", "resource": "*", "effect": "allow" },
|
|
18
|
+
{ "action": "grep", "resource": "*", "effect": "allow" },
|
|
19
|
+
{ "action": "edit", "resource": "*", "effect": "ask" },
|
|
20
|
+
{ "action": "edit", "resource": "Dockerfile", "effect": "allow" },
|
|
21
|
+
{ "action": "edit", "resource": "Dockerfile.*", "effect": "allow" },
|
|
22
|
+
{ "action": "edit", "resource": "docker-compose*.yml", "effect": "allow" },
|
|
23
|
+
{ "action": "edit", "resource": "docker-compose*.yaml", "effect": "allow" },
|
|
24
|
+
{ "action": "edit", "resource": ".github/workflows/*", "effect": "allow" },
|
|
25
|
+
{ "action": "edit", "resource": ".gitlab-ci.yml", "effect": "allow" },
|
|
26
|
+
{ "action": "edit", "resource": "deploy/*", "effect": "allow" },
|
|
27
|
+
{ "action": "edit", "resource": "infra/*", "effect": "allow" },
|
|
28
|
+
{ "action": "edit", "resource": "k8s/*", "effect": "allow" },
|
|
29
|
+
{ "action": "edit", "resource": "helm/*", "effect": "allow" },
|
|
30
|
+
{ "action": "shell", "resource": "*", "effect": "ask" },
|
|
31
|
+
{ "action": "gitlab_*", "resource": "*", "effect": "ask" },
|
|
32
|
+
{ "action": "gitlab_get_*", "resource": "*", "effect": "allow" },
|
|
33
|
+
{ "action": "gitlab_list_*", "resource": "*", "effect": "allow" },
|
|
34
|
+
{ "action": "gitlab_search_*", "resource": "*", "effect": "allow" },
|
|
35
|
+
{ "action": "gitlab_validate_*", "resource": "*", "effect": "allow" },
|
|
36
|
+
{ "action": "gitlab_health_check", "resource": "*", "effect": "allow" },
|
|
37
|
+
{ "action": "gitlab_get_project_variable", "resource": "*", "effect": "deny" },
|
|
38
|
+
{ "action": "gitlab_get_group_variable", "resource": "*", "effect": "deny" },
|
|
39
|
+
{ "action": "gitlab_list_project_variables", "resource": "*", "effect": "deny" },
|
|
40
|
+
{ "action": "gitlab_list_group_variables", "resource": "*", "effect": "deny" }
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Writes and updates focused project documentation, examples, and migration notes.",
|
|
3
|
+
"mode": "subagent",
|
|
4
|
+
"fileLease": "writer",
|
|
5
|
+
"models": [
|
|
6
|
+
"openai/gpt-5.6-luna",
|
|
7
|
+
"openai/gpt-5.6-sol"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "../prompts/docs.md",
|
|
10
|
+
"skills": [],
|
|
11
|
+
"mcp": [],
|
|
12
|
+
"permissions": [
|
|
13
|
+
{ "action": "*", "resource": "*", "effect": "deny" },
|
|
14
|
+
{ "action": "read", "resource": "*", "effect": "allow" },
|
|
15
|
+
{ "action": "glob", "resource": "*", "effect": "allow" },
|
|
16
|
+
{ "action": "grep", "resource": "*", "effect": "allow" },
|
|
17
|
+
{ "action": "edit", "resource": "*", "effect": "ask" },
|
|
18
|
+
{ "action": "edit", "resource": "*.md", "effect": "allow" },
|
|
19
|
+
{ "action": "edit", "resource": "*.mdx", "effect": "allow" },
|
|
20
|
+
{ "action": "edit", "resource": "docs/*", "effect": "allow" }
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Finds relevant files, symbols, and local execution paths without changing the workspace.",
|
|
3
|
+
"mode": "subagent",
|
|
4
|
+
"fileLease": "readonly",
|
|
5
|
+
"models": [
|
|
6
|
+
"openai/gpt-5.3-codex-spark",
|
|
7
|
+
"openai/gpt-5.6-luna"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "../prompts/explorer.md",
|
|
10
|
+
"skills": [
|
|
11
|
+
"gitnexus-exploring"
|
|
12
|
+
],
|
|
13
|
+
"mcp": [],
|
|
14
|
+
"permissions": [
|
|
15
|
+
{ "action": "*", "resource": "*", "effect": "deny" },
|
|
16
|
+
{ "action": "glob", "resource": "*", "effect": "allow" },
|
|
17
|
+
{ "action": "grep", "resource": "*", "effect": "allow" },
|
|
18
|
+
{ "action": "read", "resource": "*", "effect": "allow" },
|
|
19
|
+
{ "action": "gitnexus_*", "resource": "*", "effect": "allow" },
|
|
20
|
+
{ "action": "gitnexus_rename", "resource": "*", "effect": "deny" },
|
|
21
|
+
{ "action": "gitnexus_group_sync", "resource": "*", "effect": "deny" }
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Implements complex frontend architecture, state, UX, and accessibility changes.",
|
|
3
|
+
"mode": "subagent",
|
|
4
|
+
"fileLease": "writer",
|
|
5
|
+
"models": [
|
|
6
|
+
"openai/gpt-5.6-sol",
|
|
7
|
+
"openai/gpt-5.6-luna"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "../prompts/front-deep.md",
|
|
10
|
+
"skills": [
|
|
11
|
+
"modern-web-guidance",
|
|
12
|
+
"make-interfaces-feel-better",
|
|
13
|
+
"ascii-ui-review",
|
|
14
|
+
"gitnexus-impact-analysis",
|
|
15
|
+
"gitnexus-refactoring"
|
|
16
|
+
],
|
|
17
|
+
"mcp": [],
|
|
18
|
+
"permissions": [
|
|
19
|
+
{ "action": "subagent", "resource": "*", "effect": "deny" },
|
|
20
|
+
{ "action": "gitnexus_*", "resource": "*", "effect": "allow" },
|
|
21
|
+
{ "action": "gitnexus_group_sync", "resource": "*", "effect": "deny" },
|
|
22
|
+
{ "action": "playwright_*", "resource": "*", "effect": "ask" },
|
|
23
|
+
{ "action": "playwright_browser_get_config", "resource": "*", "effect": "allow" },
|
|
24
|
+
{ "action": "playwright_browser_snapshot", "resource": "*", "effect": "allow" },
|
|
25
|
+
{ "action": "playwright_browser_take_screenshot", "resource": "*", "effect": "allow" },
|
|
26
|
+
{ "action": "playwright_browser_console_messages", "resource": "*", "effect": "allow" },
|
|
27
|
+
{ "action": "playwright_browser_network_requests", "resource": "*", "effect": "allow" },
|
|
28
|
+
{ "action": "playwright_browser_tabs", "resource": "*", "effect": "allow" },
|
|
29
|
+
{ "action": "playwright_browser_find", "resource": "*", "effect": "allow" },
|
|
30
|
+
{ "action": "playwright_browser_generate_locator", "resource": "*", "effect": "allow" },
|
|
31
|
+
{ "action": "playwright_browser_verify_*", "resource": "*", "effect": "allow" },
|
|
32
|
+
{ "action": "playwright_browser_run_code_unsafe", "resource": "*", "effect": "deny" }
|
|
33
|
+
]
|
|
34
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Implements small, clear, low-risk frontend and styling changes with minimal exploration.",
|
|
3
|
+
"mode": "subagent",
|
|
4
|
+
"fileLease": "writer",
|
|
5
|
+
"models": [
|
|
6
|
+
"openai/gpt-5.6-luna",
|
|
7
|
+
"openai/gpt-5.6-sol"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "../prompts/front-fast.md",
|
|
10
|
+
"skills": [
|
|
11
|
+
"modern-web-guidance",
|
|
12
|
+
"make-interfaces-feel-better"
|
|
13
|
+
],
|
|
14
|
+
"mcp": [],
|
|
15
|
+
"permissions": [
|
|
16
|
+
{ "action": "subagent", "resource": "*", "effect": "deny" },
|
|
17
|
+
{ "action": "playwright_*", "resource": "*", "effect": "ask" },
|
|
18
|
+
{ "action": "playwright_browser_get_config", "resource": "*", "effect": "allow" },
|
|
19
|
+
{ "action": "playwright_browser_snapshot", "resource": "*", "effect": "allow" },
|
|
20
|
+
{ "action": "playwright_browser_take_screenshot", "resource": "*", "effect": "allow" },
|
|
21
|
+
{ "action": "playwright_browser_console_messages", "resource": "*", "effect": "allow" },
|
|
22
|
+
{ "action": "playwright_browser_network_requests", "resource": "*", "effect": "allow" },
|
|
23
|
+
{ "action": "playwright_browser_tabs", "resource": "*", "effect": "allow" },
|
|
24
|
+
{ "action": "playwright_browser_find", "resource": "*", "effect": "allow" },
|
|
25
|
+
{ "action": "playwright_browser_generate_locator", "resource": "*", "effect": "allow" },
|
|
26
|
+
{ "action": "playwright_browser_verify_*", "resource": "*", "effect": "allow" },
|
|
27
|
+
{ "action": "playwright_browser_run_code_unsafe", "resource": "*", "effect": "deny" }
|
|
28
|
+
]
|
|
29
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Handles focused Git inspection and explicitly authorized repository operations.",
|
|
3
|
+
"mode": "subagent",
|
|
4
|
+
"fileLease": "readonly",
|
|
5
|
+
"models": [
|
|
6
|
+
"openai/gpt-5.6-luna",
|
|
7
|
+
"openai/gpt-5.6-sol"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "../prompts/git.md",
|
|
10
|
+
"skills": [],
|
|
11
|
+
"mcp": [],
|
|
12
|
+
"permissions": [
|
|
13
|
+
{ "action": "*", "resource": "*", "effect": "deny" },
|
|
14
|
+
{ "action": "read", "resource": "*", "effect": "allow" },
|
|
15
|
+
{ "action": "glob", "resource": "*", "effect": "allow" },
|
|
16
|
+
{ "action": "grep", "resource": "*", "effect": "allow" },
|
|
17
|
+
{ "action": "shell", "resource": "git *", "effect": "ask" },
|
|
18
|
+
{ "action": "shell", "resource": "GIT_OPTIONAL_LOCKS=0 git *", "effect": "ask" },
|
|
19
|
+
{ "action": "shell", "resource": "git status", "effect": "allow" },
|
|
20
|
+
{ "action": "shell", "resource": "git status --short", "effect": "allow" },
|
|
21
|
+
{ "action": "shell", "resource": "git status --short --branch", "effect": "allow" },
|
|
22
|
+
{ "action": "shell", "resource": "git status --porcelain=v1 --branch", "effect": "allow" },
|
|
23
|
+
{ "action": "shell", "resource": "git rev-parse --show-toplevel", "effect": "allow" },
|
|
24
|
+
{ "action": "shell", "resource": "git rev-parse --git-dir", "effect": "allow" },
|
|
25
|
+
{ "action": "shell", "resource": "git remote -v", "effect": "allow" },
|
|
26
|
+
{ "action": "shell", "resource": "git branch --show-current", "effect": "allow" },
|
|
27
|
+
{ "action": "shell", "resource": "git stash list", "effect": "allow" },
|
|
28
|
+
{ "action": "shell", "resource": "GIT_OPTIONAL_LOCKS=0 git status", "effect": "allow" },
|
|
29
|
+
{ "action": "shell", "resource": "GIT_OPTIONAL_LOCKS=0 git status --short", "effect": "allow" },
|
|
30
|
+
{ "action": "shell", "resource": "GIT_OPTIONAL_LOCKS=0 git status --short --branch", "effect": "allow" },
|
|
31
|
+
{ "action": "shell", "resource": "GIT_OPTIONAL_LOCKS=0 git status --porcelain=v1 --branch", "effect": "allow" },
|
|
32
|
+
{ "action": "shell", "resource": "GIT_OPTIONAL_LOCKS=0 git rev-parse --show-toplevel", "effect": "allow" },
|
|
33
|
+
{ "action": "shell", "resource": "GIT_OPTIONAL_LOCKS=0 git rev-parse --git-dir", "effect": "allow" },
|
|
34
|
+
{ "action": "shell", "resource": "GIT_OPTIONAL_LOCKS=0 git remote -v", "effect": "allow" },
|
|
35
|
+
{ "action": "shell", "resource": "GIT_OPTIONAL_LOCKS=0 git branch --show-current", "effect": "allow" },
|
|
36
|
+
{ "action": "shell", "resource": "GIT_OPTIONAL_LOCKS=0 git stash list", "effect": "allow" },
|
|
37
|
+
{ "action": "gitlab_*", "resource": "*", "effect": "ask" },
|
|
38
|
+
{ "action": "gitlab_get_*", "resource": "*", "effect": "allow" },
|
|
39
|
+
{ "action": "gitlab_list_*", "resource": "*", "effect": "allow" },
|
|
40
|
+
{ "action": "gitlab_search_*", "resource": "*", "effect": "allow" },
|
|
41
|
+
{ "action": "gitlab_my_issues", "resource": "*", "effect": "allow" },
|
|
42
|
+
{ "action": "gitlab_mr_discussions", "resource": "*", "effect": "allow" },
|
|
43
|
+
{ "action": "gitlab_whoami", "resource": "*", "effect": "allow" },
|
|
44
|
+
{ "action": "gitlab_health_check", "resource": "*", "effect": "allow" },
|
|
45
|
+
{ "action": "gitlab_get_project_variable", "resource": "*", "effect": "deny" },
|
|
46
|
+
{ "action": "gitlab_get_group_variable", "resource": "*", "effect": "deny" },
|
|
47
|
+
{ "action": "gitlab_list_project_variables", "resource": "*", "effect": "deny" },
|
|
48
|
+
{ "action": "gitlab_list_group_variables", "resource": "*", "effect": "deny" }
|
|
49
|
+
]
|
|
50
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Coordinates planning, implementation, manual verification, and review.",
|
|
3
|
+
"mode": "primary",
|
|
4
|
+
"fileLease": "coordinator",
|
|
5
|
+
"models": [
|
|
6
|
+
"openai/gpt-5.6-sol",
|
|
7
|
+
"openai/gpt-5.6-luna"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "../prompts/master.md",
|
|
10
|
+
"skills": [],
|
|
11
|
+
"mcp": [],
|
|
12
|
+
"permissions": [
|
|
13
|
+
{ "action": "subagent", "resource": "*", "effect": "deny" },
|
|
14
|
+
{ "action": "subagent", "resource": "planner", "effect": "allow" },
|
|
15
|
+
{ "action": "subagent", "resource": "back-fast", "effect": "allow" },
|
|
16
|
+
{ "action": "subagent", "resource": "back-deep", "effect": "allow" },
|
|
17
|
+
{ "action": "subagent", "resource": "front-fast", "effect": "allow" },
|
|
18
|
+
{ "action": "subagent", "resource": "front-deep", "effect": "allow" },
|
|
19
|
+
{ "action": "subagent", "resource": "review-fast", "effect": "allow" },
|
|
20
|
+
{ "action": "subagent", "resource": "review-deep", "effect": "allow" },
|
|
21
|
+
{ "action": "subagent", "resource": "researcher", "effect": "allow" },
|
|
22
|
+
{ "action": "subagent", "resource": "explorer", "effect": "allow" },
|
|
23
|
+
{ "action": "subagent", "resource": "git", "effect": "allow" },
|
|
24
|
+
{ "action": "subagent", "resource": "docs", "effect": "allow" },
|
|
25
|
+
{ "action": "subagent", "resource": "verifier", "effect": "allow" },
|
|
26
|
+
{ "action": "subagent", "resource": "debugger", "effect": "allow" },
|
|
27
|
+
{ "action": "subagent", "resource": "security", "effect": "allow" },
|
|
28
|
+
{ "action": "subagent", "resource": "devops", "effect": "allow" }
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Inspects the task and produces a concise implementation plan.",
|
|
3
|
+
"mode": "subagent",
|
|
4
|
+
"fileLease": "readonly",
|
|
5
|
+
"models": [
|
|
6
|
+
"openai/gpt-5.6-sol",
|
|
7
|
+
"openai/gpt-5.6-luna"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "../prompts/planner.md",
|
|
10
|
+
"skills": [
|
|
11
|
+
"verification-planning",
|
|
12
|
+
"ascii-ui-review",
|
|
13
|
+
"gitnexus-impact-analysis"
|
|
14
|
+
],
|
|
15
|
+
"mcp": [],
|
|
16
|
+
"permissions": [
|
|
17
|
+
{ "action": "edit", "resource": "*", "effect": "deny" },
|
|
18
|
+
{ "action": "subagent", "resource": "*", "effect": "deny" },
|
|
19
|
+
{ "action": "shell", "resource": "*", "effect": "ask" },
|
|
20
|
+
{ "action": "gitnexus_*", "resource": "*", "effect": "allow" },
|
|
21
|
+
{ "action": "gitnexus_rename", "resource": "*", "effect": "deny" },
|
|
22
|
+
{ "action": "gitnexus_group_sync", "resource": "*", "effect": "deny" }
|
|
23
|
+
]
|
|
24
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Researches current external information on the internet and returns source-backed findings.",
|
|
3
|
+
"mode": "subagent",
|
|
4
|
+
"fileLease": "readonly",
|
|
5
|
+
"models": [
|
|
6
|
+
"openai/gpt-5.6-luna",
|
|
7
|
+
"openai/gpt-5.6-sol"
|
|
8
|
+
],
|
|
9
|
+
"prompt": "../prompts/researcher.md",
|
|
10
|
+
"skills": [],
|
|
11
|
+
"mcp": [],
|
|
12
|
+
"permissions": [
|
|
13
|
+
{ "action": "*", "resource": "*", "effect": "deny" },
|
|
14
|
+
{ "action": "websearch", "resource": "*", "effect": "allow" },
|
|
15
|
+
{ "action": "webfetch", "resource": "*", "effect": "allow" }
|
|
16
|
+
]
|
|
17
|
+
}
|