use-agentz 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/README.md +308 -0
- package/dist/authoring/define.js +132 -0
- package/dist/cli.js +26581 -0
- package/dist/config/define.js +36 -0
- package/dist/ui/web/index.html +16 -0
- package/dist/ui/web/logo.png +0 -0
- package/dist/ui/web/main.tsx +2406 -0
- package/dist/ui/web/styles.css +2338 -0
- package/package.json +54 -0
- package/registry/r/agent.analyst.json +44 -0
- package/registry/r/agent.designer.json +34 -0
- package/registry/r/agent.developer.json +31 -0
- package/registry/r/agent.expert-orchestrator.json +36 -0
- package/registry/r/agent.expert.json +33 -0
- package/registry/r/agent.orchestrator.json +39 -0
- package/registry/r/agent.quick.json +28 -0
- package/registry/r/agent.reviewer-anthropic.json +34 -0
- package/registry/r/agent.reviewer-gpt.json +34 -0
- package/registry/r/agent.scout.json +34 -0
- package/registry/r/command.caveman.json +20 -0
- package/registry/r/command.grill-me.json +20 -0
- package/registry/r/group.cli-bun.json +13 -0
- package/registry/r/group.cli-go.json +13 -0
- package/registry/r/group.database-design.json +12 -0
- package/registry/r/group.design.json +14 -0
- package/registry/r/group.documents.json +13 -0
- package/registry/r/group.engineering-process.json +18 -0
- package/registry/r/group.go.json +21 -0
- package/registry/r/group.python.json +10 -0
- package/registry/r/group.react.json +11 -0
- package/registry/r/group.typescript.json +10 -0
- package/registry/r/lsp.proto.json +41 -0
- package/registry/r/mcp.context7.json +13 -0
- package/registry/r/mcp.playwright.json +50 -0
- package/registry/r/pack.basic.json +78 -0
- package/registry/r/pack.gpt-5-6.json +78 -0
- package/registry/r/pack.optimized.json +78 -0
- package/registry/r/pack.opus-fable.json +78 -0
- package/registry/r/plugin.caveman-compress.json +20 -0
- package/registry/r/preset.caveman-only.json +13 -0
- package/registry/r/preset.cost-aware-trio.json +41 -0
- package/registry/r/preset.cross-model-review.json +34 -0
- package/registry/r/preset.design.json +39 -0
- package/registry/r/preset.fable-pack.json +41 -0
- package/registry/r/preset.full.json +67 -0
- package/registry/r/rule.always-cross-review.json +25 -0
- package/registry/r/rule.always-design.json +25 -0
- package/registry/r/rule.always-qa.json +25 -0
- package/registry/r/rule.always-test.json +25 -0
- package/registry/r/rule.caveman-ultra.json +23 -0
- package/registry/r/rule.never-cross-review.json +25 -0
- package/registry/r/rule.never-design.json +25 -0
- package/registry/r/rule.never-qa.json +25 -0
- package/registry/r/rule.never-test.json +25 -0
- package/registry/r/rule.routing.json +26 -0
- package/registry/r/rule.use-question-tool.json +20 -0
- package/registry/r/skill.bun-cli.json +20 -0
- package/registry/r/skill.bun-tui.json +20 -0
- package/registry/r/skill.caveman-compress.json +17 -0
- package/registry/r/skill.caveman.json +20 -0
- package/registry/r/skill.cli-design.json +15 -0
- package/registry/r/skill.code-review.json +18 -0
- package/registry/r/skill.cost-aware-orchestration.json +14 -0
- package/registry/r/skill.cross-model-review.json +14 -0
- package/registry/r/skill.db-schema-design.json +15 -0
- package/registry/r/skill.design-system.json +19 -0
- package/registry/r/skill.design-taste.json +116 -0
- package/registry/r/skill.diagnosing-bugs.json +23 -0
- package/registry/r/skill.diagrams.json +21 -0
- package/registry/r/skill.docx-create.json +20 -0
- package/registry/r/skill.domain-modeling.json +18 -0
- package/registry/r/skill.frontend-qa.json +19 -0
- package/registry/r/skill.go-architecture.json +21 -0
- package/registry/r/skill.go-ci.json +21 -0
- package/registry/r/skill.go-cli.json +20 -0
- package/registry/r/skill.go-data-structures.json +21 -0
- package/registry/r/skill.go-dependencies.json +21 -0
- package/registry/r/skill.go-dev.json +20 -0
- package/registry/r/skill.go-documentation.json +21 -0
- package/registry/r/skill.go-ecosystem.json +21 -0
- package/registry/r/skill.go-qa.json +21 -0
- package/registry/r/skill.go-quality.json +21 -0
- package/registry/r/skill.go-refactoring.json +21 -0
- package/registry/r/skill.go-tooling.json +21 -0
- package/registry/r/skill.go-tui.json +20 -0
- package/registry/r/skill.go-types.json +21 -0
- package/registry/r/skill.grilling.json +18 -0
- package/registry/r/skill.improve-architecture.json +18 -0
- package/registry/r/skill.pdf-create.json +23 -0
- package/registry/r/skill.pptx-create.json +23 -0
- package/registry/r/skill.product-ui.json +22 -0
- package/registry/r/skill.python-dev.json +20 -0
- package/registry/r/skill.react-dev.json +20 -0
- package/registry/r/skill.resolving-merge-conflicts.json +18 -0
- package/registry/r/skill.scratchpad.json +17 -0
- package/registry/r/skill.skill-authoring.json +17 -0
- package/registry/r/skill.software-design.json +28 -0
- package/registry/r/skill.sql-migrations.json +15 -0
- package/registry/r/skill.tdd.json +28 -0
- package/registry/r/skill.typescript-dev.json +20 -0
- package/registry/r/skill.visual-assets.json +17 -0
- package/registry/r/skill.wayfinder.json +18 -0
- package/registry/r/skill.xlsx-create.json +20 -0
- package/registry/r/tool.a11y-quick.json +24 -0
- package/registry/r/tool.contrast-check.json +24 -0
- package/registry/r/tool.design-lint.json +24 -0
- package/registry/r/tool.design-search.json +23 -0
- package/registry/r/tool.pdf-create.json +23 -0
- package/registry/r/tool.pptx-create.json +23 -0
- package/registry/r/tool.scratchpad.json +68 -0
- package/registry/r/tool.token-validate.json +24 -0
- package/registry/registry.json +676 -0
- package/schema/agentz.schema.json +330 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "proto",
|
|
4
|
+
"type": "lsp",
|
|
5
|
+
"title": "Proto (Buf) language server",
|
|
6
|
+
"description": "Protocol Buffers LSP served by the Buf CLI (buf lsp serve) — diagnostics, hover and navigation for .proto files.",
|
|
7
|
+
"config": {
|
|
8
|
+
"lsp": {
|
|
9
|
+
"server": "buf",
|
|
10
|
+
"command": [
|
|
11
|
+
"buf",
|
|
12
|
+
"lsp",
|
|
13
|
+
"serve"
|
|
14
|
+
],
|
|
15
|
+
"extensions": [
|
|
16
|
+
".proto"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"targets": [
|
|
21
|
+
"opencode"
|
|
22
|
+
],
|
|
23
|
+
"meta": {
|
|
24
|
+
"externalDeps": [
|
|
25
|
+
{
|
|
26
|
+
"id": "buf-cli",
|
|
27
|
+
"label": "Buf CLI",
|
|
28
|
+
"check": [
|
|
29
|
+
"buf",
|
|
30
|
+
"--version"
|
|
31
|
+
],
|
|
32
|
+
"install": [
|
|
33
|
+
"go",
|
|
34
|
+
"install",
|
|
35
|
+
"github.com/bufbuild/buf/cmd/buf@v1.71.0"
|
|
36
|
+
],
|
|
37
|
+
"note": "Buf CLI provides the Proto language server (buf lsp serve). Installed via `go install`; requires Go on PATH."
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "context7",
|
|
4
|
+
"type": "mcp",
|
|
5
|
+
"title": "Context7 (library docs)",
|
|
6
|
+
"description": "Up-to-date library documentation lookups — cheap context for scout.",
|
|
7
|
+
"config": {
|
|
8
|
+
"mcp": {
|
|
9
|
+
"transport": "http",
|
|
10
|
+
"url": "https://mcp.context7.com/mcp"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "playwright",
|
|
4
|
+
"type": "mcp",
|
|
5
|
+
"title": "Playwright (browser)",
|
|
6
|
+
"description": "Browser automation for the developer agent (E2E debugging).",
|
|
7
|
+
"config": {
|
|
8
|
+
"mcp": {
|
|
9
|
+
"transport": "stdio",
|
|
10
|
+
"command": "npx",
|
|
11
|
+
"args": [
|
|
12
|
+
"-y",
|
|
13
|
+
"@playwright/mcp@0.0.77",
|
|
14
|
+
"--browser",
|
|
15
|
+
"chromium"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"meta": {
|
|
20
|
+
"externalDeps": [
|
|
21
|
+
{
|
|
22
|
+
"id": "playwright-chromium",
|
|
23
|
+
"label": "Chromium browser for Playwright MCP",
|
|
24
|
+
"install": [
|
|
25
|
+
"npx",
|
|
26
|
+
"-y",
|
|
27
|
+
"--package=@playwright/mcp@0.0.77",
|
|
28
|
+
"playwright",
|
|
29
|
+
"install",
|
|
30
|
+
"chromium"
|
|
31
|
+
],
|
|
32
|
+
"checkPaths": [
|
|
33
|
+
"~/.cache/ms-playwright",
|
|
34
|
+
"~/Library/Caches/ms-playwright"
|
|
35
|
+
],
|
|
36
|
+
"note": "Downloads Chromium to Playwright's browser cache. On Linux, system libs may additionally be needed: npx playwright install-deps chromium (requires sudo)."
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"mcpOptions": [
|
|
40
|
+
{
|
|
41
|
+
"id": "headless",
|
|
42
|
+
"label": "Run browser headless",
|
|
43
|
+
"description": "Pass --headless to @playwright/mcp (no visible browser window).",
|
|
44
|
+
"args": [
|
|
45
|
+
"--headless"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "basic",
|
|
4
|
+
"type": "pack",
|
|
5
|
+
"title": "GPT on a Budget",
|
|
6
|
+
"description": "Lowest cost: Terra handles medium- and high-reasoning routine tiers; Sol appears only for high-reasoning expert work.",
|
|
7
|
+
"meta": {
|
|
8
|
+
"tiers": {
|
|
9
|
+
"cheap": {
|
|
10
|
+
"model": {
|
|
11
|
+
"opencode": "github-copilot/gpt-5.6-terra",
|
|
12
|
+
"copilot": "gpt-5.6-terra",
|
|
13
|
+
"claude": "haiku",
|
|
14
|
+
"codex": "gpt-5.6-terra",
|
|
15
|
+
"kilocode": "github-copilot/gpt-5.6-terra",
|
|
16
|
+
"hermes": "github-copilot/gpt-5.6-terra"
|
|
17
|
+
},
|
|
18
|
+
"thinking": {
|
|
19
|
+
"reasoningEffort": "medium"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"normal": {
|
|
23
|
+
"model": {
|
|
24
|
+
"opencode": "github-copilot/gpt-5.6-terra",
|
|
25
|
+
"copilot": "gpt-5.6-terra",
|
|
26
|
+
"claude": "haiku",
|
|
27
|
+
"codex": "gpt-5.6-terra",
|
|
28
|
+
"kilocode": "github-copilot/gpt-5.6-terra",
|
|
29
|
+
"hermes": "github-copilot/gpt-5.6-terra"
|
|
30
|
+
},
|
|
31
|
+
"thinking": {
|
|
32
|
+
"reasoningEffort": "high"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"expert": {
|
|
36
|
+
"model": {
|
|
37
|
+
"opencode": "github-copilot/gpt-5.6-sol",
|
|
38
|
+
"copilot": "gpt-5.6-sol",
|
|
39
|
+
"claude": "opus",
|
|
40
|
+
"codex": "gpt-5.6-sol",
|
|
41
|
+
"kilocode": "github-copilot/gpt-5.6-sol",
|
|
42
|
+
"hermes": "github-copilot/gpt-5.6-sol"
|
|
43
|
+
},
|
|
44
|
+
"thinking": {
|
|
45
|
+
"reasoningEffort": "high"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"agents": {
|
|
50
|
+
"reviewer-gpt": {
|
|
51
|
+
"model": {
|
|
52
|
+
"opencode": "github-copilot/gpt-5.6-sol",
|
|
53
|
+
"copilot": "gpt-5.6-sol",
|
|
54
|
+
"claude": "opus",
|
|
55
|
+
"codex": "gpt-5.6-sol",
|
|
56
|
+
"kilocode": "github-copilot/gpt-5.6-sol",
|
|
57
|
+
"hermes": "github-copilot/gpt-5.6-sol"
|
|
58
|
+
},
|
|
59
|
+
"thinking": {
|
|
60
|
+
"reasoningEffort": "xhigh"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"reviewer-anthropic": {
|
|
64
|
+
"model": {
|
|
65
|
+
"opencode": "github-copilot/claude-fable-5",
|
|
66
|
+
"copilot": "claude-fable-5",
|
|
67
|
+
"claude": "fable",
|
|
68
|
+
"codex": "claude-fable-5",
|
|
69
|
+
"kilocode": "github-copilot/claude-fable-5",
|
|
70
|
+
"hermes": "github-copilot/claude-fable-5"
|
|
71
|
+
},
|
|
72
|
+
"thinking": {
|
|
73
|
+
"reasoningEffort": "high"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "gpt-5-6",
|
|
4
|
+
"type": "pack",
|
|
5
|
+
"title": "One GPT 5.6 Family",
|
|
6
|
+
"description": "GPT 5.6 consistency: Terra scales from high to xhigh reasoning; Sol takes xhigh expert work.",
|
|
7
|
+
"meta": {
|
|
8
|
+
"tiers": {
|
|
9
|
+
"cheap": {
|
|
10
|
+
"model": {
|
|
11
|
+
"opencode": "github-copilot/gpt-5.6-terra",
|
|
12
|
+
"copilot": "gpt-5.6-terra",
|
|
13
|
+
"claude": "haiku",
|
|
14
|
+
"codex": "gpt-5.6-terra",
|
|
15
|
+
"kilocode": "github-copilot/gpt-5.6-terra",
|
|
16
|
+
"hermes": "github-copilot/gpt-5.6-terra"
|
|
17
|
+
},
|
|
18
|
+
"thinking": {
|
|
19
|
+
"reasoningEffort": "high"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"normal": {
|
|
23
|
+
"model": {
|
|
24
|
+
"opencode": "github-copilot/gpt-5.6-terra",
|
|
25
|
+
"copilot": "gpt-5.6-terra",
|
|
26
|
+
"claude": "haiku",
|
|
27
|
+
"codex": "gpt-5.6-terra",
|
|
28
|
+
"kilocode": "github-copilot/gpt-5.6-terra",
|
|
29
|
+
"hermes": "github-copilot/gpt-5.6-terra"
|
|
30
|
+
},
|
|
31
|
+
"thinking": {
|
|
32
|
+
"reasoningEffort": "xhigh"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"expert": {
|
|
36
|
+
"model": {
|
|
37
|
+
"opencode": "github-copilot/gpt-5.6-sol",
|
|
38
|
+
"copilot": "gpt-5.6-sol",
|
|
39
|
+
"claude": "opus",
|
|
40
|
+
"codex": "gpt-5.6-sol",
|
|
41
|
+
"kilocode": "github-copilot/gpt-5.6-sol",
|
|
42
|
+
"hermes": "github-copilot/gpt-5.6-sol"
|
|
43
|
+
},
|
|
44
|
+
"thinking": {
|
|
45
|
+
"reasoningEffort": "xhigh"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"agents": {
|
|
50
|
+
"reviewer-gpt": {
|
|
51
|
+
"model": {
|
|
52
|
+
"opencode": "github-copilot/gpt-5.6-sol",
|
|
53
|
+
"copilot": "gpt-5.6-sol",
|
|
54
|
+
"claude": "opus",
|
|
55
|
+
"codex": "gpt-5.6-sol",
|
|
56
|
+
"kilocode": "github-copilot/gpt-5.6-sol",
|
|
57
|
+
"hermes": "github-copilot/gpt-5.6-sol"
|
|
58
|
+
},
|
|
59
|
+
"thinking": {
|
|
60
|
+
"reasoningEffort": "xhigh"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"reviewer-anthropic": {
|
|
64
|
+
"model": {
|
|
65
|
+
"opencode": "github-copilot/claude-fable-5",
|
|
66
|
+
"copilot": "claude-fable-5",
|
|
67
|
+
"claude": "fable",
|
|
68
|
+
"codex": "claude-fable-5",
|
|
69
|
+
"kilocode": "github-copilot/claude-fable-5",
|
|
70
|
+
"hermes": "github-copilot/claude-fable-5"
|
|
71
|
+
},
|
|
72
|
+
"thinking": {
|
|
73
|
+
"reasoningEffort": "high"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "optimized",
|
|
4
|
+
"type": "pack",
|
|
5
|
+
"title": "Balanced by Default",
|
|
6
|
+
"description": "Balanced default: high-reasoning Terra covers fast work, xhigh Opus handles deeper normal tasks, and Fable takes expert calls.",
|
|
7
|
+
"meta": {
|
|
8
|
+
"tiers": {
|
|
9
|
+
"cheap": {
|
|
10
|
+
"model": {
|
|
11
|
+
"opencode": "github-copilot/gpt-5.6-terra",
|
|
12
|
+
"copilot": "gpt-5.6-terra",
|
|
13
|
+
"claude": "haiku",
|
|
14
|
+
"codex": "gpt-5.6-terra",
|
|
15
|
+
"kilocode": "github-copilot/gpt-5.6-terra",
|
|
16
|
+
"hermes": "github-copilot/gpt-5.6-terra"
|
|
17
|
+
},
|
|
18
|
+
"thinking": {
|
|
19
|
+
"reasoningEffort": "high"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"normal": {
|
|
23
|
+
"model": {
|
|
24
|
+
"opencode": "github-copilot/claude-opus-4.8",
|
|
25
|
+
"copilot": "claude-opus-4.8",
|
|
26
|
+
"claude": "opus",
|
|
27
|
+
"codex": "claude-opus-4.8",
|
|
28
|
+
"kilocode": "github-copilot/claude-opus-4.8",
|
|
29
|
+
"hermes": "github-copilot/claude-opus-4.8"
|
|
30
|
+
},
|
|
31
|
+
"thinking": {
|
|
32
|
+
"reasoningEffort": "xhigh"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"expert": {
|
|
36
|
+
"model": {
|
|
37
|
+
"opencode": "github-copilot/claude-fable-5",
|
|
38
|
+
"copilot": "claude-fable-5",
|
|
39
|
+
"claude": "fable",
|
|
40
|
+
"codex": "claude-fable-5",
|
|
41
|
+
"kilocode": "github-copilot/claude-fable-5",
|
|
42
|
+
"hermes": "github-copilot/claude-fable-5"
|
|
43
|
+
},
|
|
44
|
+
"thinking": {
|
|
45
|
+
"reasoningEffort": "high"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"agents": {
|
|
50
|
+
"reviewer-gpt": {
|
|
51
|
+
"model": {
|
|
52
|
+
"opencode": "github-copilot/gpt-5.6-sol",
|
|
53
|
+
"copilot": "gpt-5.6-sol",
|
|
54
|
+
"claude": "opus",
|
|
55
|
+
"codex": "gpt-5.6-sol",
|
|
56
|
+
"kilocode": "github-copilot/gpt-5.6-sol",
|
|
57
|
+
"hermes": "github-copilot/gpt-5.6-sol"
|
|
58
|
+
},
|
|
59
|
+
"thinking": {
|
|
60
|
+
"reasoningEffort": "xhigh"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"reviewer-anthropic": {
|
|
64
|
+
"model": {
|
|
65
|
+
"opencode": "github-copilot/claude-fable-5",
|
|
66
|
+
"copilot": "claude-fable-5",
|
|
67
|
+
"claude": "fable",
|
|
68
|
+
"codex": "claude-fable-5",
|
|
69
|
+
"kilocode": "github-copilot/claude-fable-5",
|
|
70
|
+
"hermes": "github-copilot/claude-fable-5"
|
|
71
|
+
},
|
|
72
|
+
"thinking": {
|
|
73
|
+
"reasoningEffort": "high"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "opus-fable",
|
|
4
|
+
"type": "pack",
|
|
5
|
+
"title": "Build with Opus",
|
|
6
|
+
"description": "Coding quality first: high-reasoning Opus runs implementation, while high-reasoning Fable is reserved for expert judgment.",
|
|
7
|
+
"meta": {
|
|
8
|
+
"tiers": {
|
|
9
|
+
"cheap": {
|
|
10
|
+
"model": {
|
|
11
|
+
"opencode": "github-copilot/gpt-5.6-terra",
|
|
12
|
+
"copilot": "gpt-5.6-terra",
|
|
13
|
+
"claude": "haiku",
|
|
14
|
+
"codex": "gpt-5.6-terra",
|
|
15
|
+
"kilocode": "github-copilot/gpt-5.6-terra",
|
|
16
|
+
"hermes": "github-copilot/gpt-5.6-terra"
|
|
17
|
+
},
|
|
18
|
+
"thinking": {
|
|
19
|
+
"reasoningEffort": "medium"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"normal": {
|
|
23
|
+
"model": {
|
|
24
|
+
"opencode": "github-copilot/claude-opus-4.8",
|
|
25
|
+
"copilot": "claude-opus-4.8",
|
|
26
|
+
"claude": "opus",
|
|
27
|
+
"codex": "claude-opus-4.8",
|
|
28
|
+
"kilocode": "github-copilot/claude-opus-4.8",
|
|
29
|
+
"hermes": "github-copilot/claude-opus-4.8"
|
|
30
|
+
},
|
|
31
|
+
"thinking": {
|
|
32
|
+
"reasoningEffort": "high"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"expert": {
|
|
36
|
+
"model": {
|
|
37
|
+
"opencode": "github-copilot/claude-fable-5",
|
|
38
|
+
"copilot": "claude-fable-5",
|
|
39
|
+
"claude": "fable",
|
|
40
|
+
"codex": "claude-fable-5",
|
|
41
|
+
"kilocode": "github-copilot/claude-fable-5",
|
|
42
|
+
"hermes": "github-copilot/claude-fable-5"
|
|
43
|
+
},
|
|
44
|
+
"thinking": {
|
|
45
|
+
"reasoningEffort": "high"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"agents": {
|
|
50
|
+
"reviewer-gpt": {
|
|
51
|
+
"model": {
|
|
52
|
+
"opencode": "github-copilot/gpt-5.6-sol",
|
|
53
|
+
"copilot": "gpt-5.6-sol",
|
|
54
|
+
"claude": "opus",
|
|
55
|
+
"codex": "gpt-5.6-sol",
|
|
56
|
+
"kilocode": "github-copilot/gpt-5.6-sol",
|
|
57
|
+
"hermes": "github-copilot/gpt-5.6-sol"
|
|
58
|
+
},
|
|
59
|
+
"thinking": {
|
|
60
|
+
"reasoningEffort": "xhigh"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"reviewer-anthropic": {
|
|
64
|
+
"model": {
|
|
65
|
+
"opencode": "github-copilot/claude-fable-5",
|
|
66
|
+
"copilot": "claude-fable-5",
|
|
67
|
+
"claude": "fable",
|
|
68
|
+
"codex": "claude-fable-5",
|
|
69
|
+
"kilocode": "github-copilot/claude-fable-5",
|
|
70
|
+
"hermes": "github-copilot/claude-fable-5"
|
|
71
|
+
},
|
|
72
|
+
"thinking": {
|
|
73
|
+
"reasoningEffort": "high"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "caveman-compress",
|
|
4
|
+
"type": "plugin",
|
|
5
|
+
"title": "caveman-compress (plugin)",
|
|
6
|
+
"description": "Model-driven prose-compression tool (caveman_compress): preview returns the file body + compression rules; commit runs a verified out-of-tree backup then overwrites. Transpiled from the upstream Claude-Code hook/CLI to the native opencode plugin tool API.",
|
|
7
|
+
"files": [
|
|
8
|
+
{
|
|
9
|
+
"path": "caveman-compress.ts",
|
|
10
|
+
"content": "// managed by AgentZ — edit freely; remove this line to stop AgentZ from updating this file\nimport { type Plugin, tool } from \"@opencode-ai/plugin\"\nimport { existsSync, mkdirSync, readFileSync, statSync, unlinkSync, writeFileSync } from \"node:fs\"\nimport { basename, extname, join, sep } from \"node:path\"\nimport { homedir } from \"node:os\"\n\n/**\n * caveman-compress — opencode plugin.\n *\n * Transpile of upstream caveman-compress (Claude Code hook/CLI +\n * caveman-shrink MCP) to the opencode plugin API. Exposes ONE tool,\n * `caveman_compress`, carrying the SAFE MECHANICS only; the compression\n * RULES live in the caveman-compress skill, which the model applies between\n * the two tool actions.\n *\n * Flow (model-driven, no in-plugin LLM call — opencode plugins cannot call\n * the model mid-execute):\n * 1. action=preview <file> → guard + detect + return frontmatter/body/rules.\n * Model compresses the returned body per the skill.\n * 2. action=commit <file> --compressed <text> → backup + read-back verify +\n * write `frontmatter + compressed`. Restore on any failure.\n *\n * Safety mirrors upstream compress.py: prose-only file-type gate, sensitive\n * denylist (contents ship to an LLM), 500KB cap, out-of-tree verified backup,\n * refuse empty / identical / pre-existing-backup.\n */\n\nconst COMPRESSIBLE_EXT = new Set([\".md\", \".txt\", \".markdown\", \".rst\", \".typ\", \".typst\", \".tex\"])\nconst SKIP_EXT = new Set([\n \".py\", \".js\", \".ts\", \".tsx\", \".jsx\", \".json\", \".yaml\", \".yml\", \".toml\", \".env\",\n \".lock\", \".css\", \".scss\", \".html\", \".xml\", \".sql\", \".sh\", \".bash\", \".zsh\", \".go\",\n \".rs\", \".java\", \".c\", \".cpp\", \".h\", \".hpp\", \".rb\", \".php\", \".swift\", \".kt\", \".lua\",\n \".csv\", \".ini\", \".cfg\",\n])\nconst KNOWN_CODE_FILENAMES = new Set([\n \"dockerfile\", \"makefile\", \"gnumakefile\", \"jenkinsfile\", \"vagrantfile\",\n \"rakefile\", \"gemfile\", \"justfile\", \"procfile\", \"brewfile\", \"cmakelists.txt\",\n])\nconst CODE_LINE = [\n /^\\s*(import |from .+ import |require\\(|const |let |var )/,\n /^\\s*(def |class |function |async function |export )/,\n /^\\s*(if\\s*\\(|for\\s*\\(|while\\s*\\(|switch\\s*\\(|try\\s*\\{)/,\n /^\\s*[\\}\\]\\);]+\\s*$/,\n /^\\s*@\\w+/,\n /^\\s*\"[^\"]+\"\\s*:\\s*/,\n]\n\nconst SENSITIVE_BASENAME =\n /^(\\.env(\\..+)?|\\.netrc|credentials(\\..+)?|secrets?(\\..+)?|passwords?(\\..+)?|id_(rsa|dsa|ecdsa|ed25519)(\\.pub)?|authorized_keys|known_hosts|.*\\.(pem|key|p12|pfx|crt|cer|jks|keystore|asc|gpg))$/i\nconst SENSITIVE_PATH = new Set([\".ssh\", \".aws\", \".gnupg\", \".kube\", \".docker\"])\nconst SENSITIVE_TOKENS = [\"secret\", \"credential\", \"password\", \"passwd\", \"apikey\", \"accesskey\", \"token\", \"privatekey\"]\n\nconst FRONTMATTER = /^(---\\r?\\n[\\s\\S]*?\\r?\\n---\\r?\\n)([\\s\\S]*)$/\nconst MAX_FILE_SIZE = 500_000\n\ntype FileType = \"natural_language\" | \"code\" | \"config\" | \"unknown\"\n\nfunction detectFileType(path: string, text: string): FileType {\n const name = basename(path).toLowerCase()\n if (KNOWN_CODE_FILENAMES.has(name)) return \"code\"\n const ext = extname(path).toLowerCase()\n if (COMPRESSIBLE_EXT.has(ext)) return \"natural_language\"\n if (SKIP_EXT.has(ext)) {\n return [\".json\", \".yaml\", \".yml\", \".toml\", \".ini\", \".cfg\", \".env\"].includes(ext) ? \"config\" : \"code\"\n }\n if (ext) return \"unknown\"\n // Extensionless: sniff content.\n if (text.startsWith(\"#!\")) return \"code\"\n try {\n JSON.parse(text.slice(0, 10000))\n return \"config\"\n } catch {}\n const lines = text.split(\"\\n\").slice(0, 50)\n const nonEmpty = lines.filter((l) => l.trim())\n if (nonEmpty.length) {\n const codeLines = nonEmpty.filter((l) => CODE_LINE.some((r) => r.test(l))).length\n if (codeLines / nonEmpty.length > 0.4) return \"code\"\n }\n return \"natural_language\"\n}\n\nfunction isSensitive(path: string): boolean {\n const name = basename(path)\n if (SENSITIVE_BASENAME.test(name)) return true\n for (const part of path.split(sep)) if (SENSITIVE_PATH.has(part.toLowerCase())) return true\n const flat = name.toLowerCase().replace(/[_\\-\\s.]/g, \"\")\n return SENSITIVE_TOKENS.some((t) => flat.includes(t))\n}\n\n/** Out-of-tree backup dir so skill/instruction auto-loaders stop re-ingesting the copy. */\nfunction backupDirFor(path: string): string {\n const base =\n process.env.XDG_DATA_HOME ?? join(homedir(), \".local\", \"share\")\n const parent = basename(join(path, \"..\")) || \"root\"\n return join(base, \"caveman-compress\", \"backups\", parent)\n}\n\nfunction backupPathFor(path: string): string {\n const stem = basename(path).replace(/\\.[^.]*$/, \"\")\n return join(backupDirFor(path), stem + \".original.md\")\n}\n\nfunction stripOuterFence(text: string): string {\n const m = /^\\s*(`{3,}|~{3,})[^\\n]*\\n([\\s\\S]*)\\n\\1\\s*$/.exec(text)\n return m?.[2] ?? text\n}\n\nconst RULES = [\n \"Compress the body below into caveman format. Apply the caveman-compress skill rules.\",\n \"Preserve EXACTLY (byte-for-byte): fenced/indented code blocks, inline `backticks`, URLs, file paths,\",\n \"CLI commands, technical/API/library names, proper nouns, dates, version numbers, all numerics, env vars,\",\n \"heading text, bullet nesting, list numbering, table structure.\",\n \"Drop articles/filler/pleasantries/hedging outside code regions only. Fragments OK.\",\n \"Then call caveman_compress action=commit with the compressed body verbatim (no outer ```fence).\",\n].join(\" \")\n\nfunction guard(path: string): { ok: false; msg: string } | { ok: true; text: string } {\n if (!existsSync(path)) return { ok: false, msg: `File not found: ${path}` }\n const st = statSync(path)\n if (!st.isFile()) return { ok: false, msg: `Not a file: ${path}` }\n if (st.size > MAX_FILE_SIZE) return { ok: false, msg: `File too large (max 500KB): ${path}` }\n if (basename(path).endsWith(\".original.md\")) return { ok: false, msg: \"Refusing to compress a backup file (*.original.md).\" }\n if (isSensitive(path))\n return {\n ok: false,\n msg: `Refusing to compress ${path}: filename looks sensitive (credentials/keys/secrets). Contents ship to an LLM API. Rename if false positive.`,\n }\n const text = readFileSync(path, \"utf8\")\n if (!text.trim()) return { ok: false, msg: \"Refusing to compress: file is empty.\" }\n const type = detectFileType(path, text)\n if (type !== \"natural_language\")\n return { ok: false, msg: `Skipping: file is ${type}, not natural language. Only prose files are compressed.` }\n return { ok: true, text }\n}\n\nexport const CavemanCompressPlugin: Plugin = async () => {\n return {\n tool: {\n caveman_compress: tool({\n description:\n \"Safely caveman-compress a PROSE file (CLAUDE.md, AGENTS.md, notes) to cut input tokens. \" +\n \"Two-step, model-driven: action=preview returns the frontmatter+body+rules to compress; \" +\n \"then action=commit with the compressed body backs up the original (verified) and overwrites. \" +\n \"Never touches code/config/data or sensitive files. Rules live in the caveman-compress skill.\",\n args: {\n action: tool.schema.enum([\"preview\", \"commit\"]).describe(\"preview = guard+return body to compress; commit = backup+write compressed\"),\n file: tool.schema.string().describe(\"Absolute path to the prose file\"),\n compressed: tool.schema.string().optional().describe(\"For commit: the compressed body (no outer code fence, no frontmatter)\"),\n },\n async execute(args) {\n const path = args.file\n const g = guard(path)\n if (!g.ok) return g.msg\n\n const fm = FRONTMATTER.exec(g.text)\n const frontmatter = fm?.[1] ?? \"\"\n const body = fm?.[2] ?? g.text\n if (!body.trim()) return \"Refusing to compress: body empty after frontmatter.\"\n\n if (args.action === \"preview\") {\n return [\n RULES,\n frontmatter ? `\\n[frontmatter — preserve verbatim, ${frontmatter.length} chars, do NOT compress]\\n${frontmatter}` : \"\",\n `\\n[body to compress]\\n${body}`,\n ].join(\"\\n\")\n }\n\n // commit\n if (args.compressed == null || !args.compressed.trim())\n return \"Refusing: commit needs a non-empty `compressed` body.\"\n const compressedBody = stripOuterFence(args.compressed).trim()\n if (compressedBody === body.trim())\n return \"Refusing: compressed output identical to input (likely refused or already caveman). Original untouched.\"\n\n const backupPath = backupPathFor(path)\n if (existsSync(backupPath))\n return `Backup already exists: ${backupPath}. Aborting to prevent data loss. Remove/rename it to proceed.`\n\n mkdirSync(backupDirFor(path), { recursive: true })\n writeFileSync(backupPath, g.text)\n if (readFileSync(backupPath, \"utf8\") !== g.text) {\n try { unlinkSync(backupPath) } catch {}\n return `Backup write verification failed: ${backupPath}. Input untouched.`\n }\n writeFileSync(path, frontmatter + compressedBody + \"\\n\")\n return `Compressed: ${path}\\nBackup: ${backupPath}`\n },\n }),\n },\n }\n}\n\nexport default CavemanCompressPlugin\n",
|
|
11
|
+
"kind": "raw"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"targets": [
|
|
15
|
+
"opencode"
|
|
16
|
+
],
|
|
17
|
+
"meta": {
|
|
18
|
+
"kind": "local"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "caveman-only",
|
|
4
|
+
"type": "preset",
|
|
5
|
+
"title": "Caveman only",
|
|
6
|
+
"description": "Just the caveman skill (ultra) and its AGENTS.md fragment.",
|
|
7
|
+
"dependencies": [
|
|
8
|
+
"skill:caveman"
|
|
9
|
+
],
|
|
10
|
+
"meta": {
|
|
11
|
+
"agentsMd": "lean"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "cost-aware-trio",
|
|
4
|
+
"type": "preset",
|
|
5
|
+
"title": "Cost-aware trio (recommended)",
|
|
6
|
+
"description": "Orchestrator + scout/developer, caveman ultra everywhere, AGENTS.md rules. Add the expert pack for the expensive tier.",
|
|
7
|
+
"dependencies": [
|
|
8
|
+
"agent:orchestrator",
|
|
9
|
+
"agent:quick",
|
|
10
|
+
"agent:scout",
|
|
11
|
+
"agent:developer",
|
|
12
|
+
"agent:analyst",
|
|
13
|
+
"skill:caveman",
|
|
14
|
+
"skill:cost-aware-orchestration",
|
|
15
|
+
"tool:scratchpad",
|
|
16
|
+
"rule:routing",
|
|
17
|
+
"rule:use-question-tool"
|
|
18
|
+
],
|
|
19
|
+
"meta": {
|
|
20
|
+
"agentsMd": "lean",
|
|
21
|
+
"disableDefaults": true,
|
|
22
|
+
"models": {
|
|
23
|
+
"cheap": {
|
|
24
|
+
"opencode": "github-copilot/gpt-5.6-luna",
|
|
25
|
+
"copilot": "gpt-5.6-luna",
|
|
26
|
+
"claude": "haiku",
|
|
27
|
+
"codex": "gpt-5.6-luna",
|
|
28
|
+
"kilocode": "github-copilot/gpt-5.6-luna",
|
|
29
|
+
"hermes": "github-copilot/gpt-5.6-luna"
|
|
30
|
+
},
|
|
31
|
+
"normal": {
|
|
32
|
+
"opencode": "github-copilot/claude-opus-4.8",
|
|
33
|
+
"copilot": "claude-opus-4.8",
|
|
34
|
+
"claude": "opus",
|
|
35
|
+
"codex": "claude-opus-4.8",
|
|
36
|
+
"kilocode": "github-copilot/claude-opus-4.8",
|
|
37
|
+
"hermes": "github-copilot/claude-opus-4.8"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "cross-model-review",
|
|
4
|
+
"type": "preset",
|
|
5
|
+
"title": "Cross-model review pack (opt-in)",
|
|
6
|
+
"description": "Cross-model reviewers (GPT + Anthropic) plus the routing skill. Add on top of any base preset or model pack; the active pack pins each reviewer to its fixed family.",
|
|
7
|
+
"dependencies": [
|
|
8
|
+
"agent:reviewer-gpt",
|
|
9
|
+
"agent:reviewer-anthropic",
|
|
10
|
+
"skill:cross-model-review",
|
|
11
|
+
"rule:use-question-tool"
|
|
12
|
+
],
|
|
13
|
+
"meta": {
|
|
14
|
+
"agentsMd": "lean",
|
|
15
|
+
"models": {
|
|
16
|
+
"normal": {
|
|
17
|
+
"opencode": "github-copilot/claude-opus-4.8",
|
|
18
|
+
"copilot": "claude-opus-4.8",
|
|
19
|
+
"claude": "opus",
|
|
20
|
+
"codex": "claude-opus-4.8",
|
|
21
|
+
"kilocode": "github-copilot/claude-opus-4.8",
|
|
22
|
+
"hermes": "github-copilot/claude-opus-4.8"
|
|
23
|
+
},
|
|
24
|
+
"expert": {
|
|
25
|
+
"opencode": "github-copilot/claude-fable-5",
|
|
26
|
+
"copilot": "claude-fable-5",
|
|
27
|
+
"claude": "fable",
|
|
28
|
+
"codex": "claude-fable-5",
|
|
29
|
+
"kilocode": "github-copilot/claude-fable-5",
|
|
30
|
+
"hermes": "github-copilot/claude-fable-5"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "design",
|
|
4
|
+
"type": "preset",
|
|
5
|
+
"title": "Design pack",
|
|
6
|
+
"description": "Designer agent plus the design skill group (taste, product UI, tokens, assets, frontend QA) and its validation tools. Caveman ultra and its AGENTS.md fragment.",
|
|
7
|
+
"dependencies": [
|
|
8
|
+
"agent:designer",
|
|
9
|
+
"skill:caveman",
|
|
10
|
+
"skill:design-system",
|
|
11
|
+
"skill:design-taste",
|
|
12
|
+
"skill:frontend-qa",
|
|
13
|
+
"skill:product-ui",
|
|
14
|
+
"skill:visual-assets",
|
|
15
|
+
"tool:a11y-quick",
|
|
16
|
+
"tool:contrast-check",
|
|
17
|
+
"tool:design-lint",
|
|
18
|
+
"tool:design-search",
|
|
19
|
+
"tool:scratchpad",
|
|
20
|
+
"tool:token-validate",
|
|
21
|
+
"rule:use-question-tool"
|
|
22
|
+
],
|
|
23
|
+
"meta": {
|
|
24
|
+
"agentsMd": "lean",
|
|
25
|
+
"models": {
|
|
26
|
+
"normal": {
|
|
27
|
+
"opencode": "github-copilot/claude-opus-4.8",
|
|
28
|
+
"copilot": "claude-opus-4.8",
|
|
29
|
+
"claude": "opus",
|
|
30
|
+
"codex": "claude-opus-4.8",
|
|
31
|
+
"kilocode": "github-copilot/claude-opus-4.8",
|
|
32
|
+
"hermes": "github-copilot/claude-opus-4.8"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"skillGroups": [
|
|
36
|
+
"design"
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "fable-pack",
|
|
4
|
+
"type": "preset",
|
|
5
|
+
"title": "Expert pack (opt-in)",
|
|
6
|
+
"description": "opt-in expert tier: expert-orchestrator (primary) + expert reviewer. Model set by the active model pack. VERY expensive.",
|
|
7
|
+
"dependencies": [
|
|
8
|
+
"agent:expert-orchestrator",
|
|
9
|
+
"agent:expert",
|
|
10
|
+
"rule:use-question-tool"
|
|
11
|
+
],
|
|
12
|
+
"meta": {
|
|
13
|
+
"agentsMd": "lean",
|
|
14
|
+
"models": {
|
|
15
|
+
"cheap": {
|
|
16
|
+
"opencode": "github-copilot/gpt-5.6-luna",
|
|
17
|
+
"copilot": "gpt-5.6-luna",
|
|
18
|
+
"claude": "haiku",
|
|
19
|
+
"codex": "gpt-5.6-luna",
|
|
20
|
+
"kilocode": "github-copilot/gpt-5.6-luna",
|
|
21
|
+
"hermes": "github-copilot/gpt-5.6-luna"
|
|
22
|
+
},
|
|
23
|
+
"normal": {
|
|
24
|
+
"opencode": "github-copilot/claude-opus-4.8",
|
|
25
|
+
"copilot": "claude-opus-4.8",
|
|
26
|
+
"claude": "opus",
|
|
27
|
+
"codex": "claude-opus-4.8",
|
|
28
|
+
"kilocode": "github-copilot/claude-opus-4.8",
|
|
29
|
+
"hermes": "github-copilot/claude-opus-4.8"
|
|
30
|
+
},
|
|
31
|
+
"expert": {
|
|
32
|
+
"opencode": "github-copilot/claude-fable-5",
|
|
33
|
+
"copilot": "claude-fable-5",
|
|
34
|
+
"claude": "fable",
|
|
35
|
+
"codex": "claude-fable-5",
|
|
36
|
+
"kilocode": "github-copilot/claude-fable-5",
|
|
37
|
+
"hermes": "github-copilot/claude-fable-5"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|