@uluops/setup 0.4.0 → 0.6.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 +67 -50
- package/assets/auto-tracker-save.mjs +142 -0
- package/assets/{agents → claude-code/agents}/api-contract-validator-agent.md +9 -228
- package/assets/{agents → claude-code/agents}/aristotle-analyst-agent.md +51 -4
- package/assets/{agents → claude-code/agents}/aristotle-explorer-agent.md +6 -2
- package/assets/{agents → claude-code/agents}/aristotle-forecaster-agent.md +15 -230
- package/assets/{agents → claude-code/agents}/aristotle-validator-agent.md +12 -252
- package/assets/{agents → claude-code/agents}/assumption-excavator-agent.md +21 -247
- package/assets/{agents → claude-code/agents}/code-auditor-agent.md +12 -255
- package/assets/{agents → claude-code/agents}/code-optimizer-agent.md +15 -236
- package/assets/{agents → claude-code/agents}/code-validator-agent.md +31 -300
- package/assets/claude-code/agents/docs-validator-agent.md +472 -0
- package/assets/{agents → claude-code/agents}/frontend-validator-agent.md +15 -258
- package/assets/{agents → claude-code/agents}/mcp-validator-agent.md +8 -252
- package/assets/{agents → claude-code/agents}/pre-implementation-architect-agent.md +8 -224
- package/assets/{agents → claude-code/agents}/prompt-engineer-agent.md +57 -290
- package/assets/{agents → claude-code/agents}/prompt-pattern-analyzer-agent.md +10 -225
- package/assets/{agents → claude-code/agents}/prompt-quality-validator-agent.md +11 -249
- package/assets/{agents → claude-code/agents}/public-interface-validator-agent.md +15 -268
- package/assets/claude-code/agents/release-readiness-agent.md +495 -0
- package/assets/{agents → claude-code/agents}/security-analyst-agent.md +236 -480
- package/assets/{agents → claude-code/agents}/test-architect-agent.md +16 -259
- package/assets/{agents → claude-code/agents}/type-safety-validator-agent.md +23 -266
- package/assets/{agents → claude-code/agents}/workflow-synthesis-agent.md +23 -226
- package/assets/{commands → claude-code/commands}/agents/anxiety-reader.md +12 -15
- package/assets/{commands → claude-code/commands}/agents/api-contract.md +156 -136
- package/assets/{commands → claude-code/commands}/agents/architect.md +156 -136
- package/assets/claude-code/commands/agents/aristotle-analyst.md +157 -0
- package/assets/claude-code/commands/agents/aristotle-explorer.md +157 -0
- package/assets/claude-code/commands/agents/aristotle-forecaster.md +157 -0
- package/assets/claude-code/commands/agents/aristotle-validator.md +157 -0
- package/assets/{commands → claude-code/commands}/agents/assumption-excavator.md +49 -7
- package/assets/{commands → claude-code/commands}/agents/audit.md +156 -137
- package/assets/{commands → claude-code/commands}/agents/docs-validate.md +156 -134
- package/assets/{commands → claude-code/commands}/agents/frontend.md +156 -136
- package/assets/{commands → claude-code/commands}/agents/mcp-validate.md +156 -137
- package/assets/{commands → claude-code/commands}/agents/optimize.md +156 -134
- package/assets/{commands → claude-code/commands}/agents/pattern-analyzer.md +150 -127
- package/assets/{commands → claude-code/commands}/agents/prompt-quality.md +155 -135
- package/assets/claude-code/commands/agents/prompt-validate.md +155 -0
- package/assets/{commands → claude-code/commands}/agents/public-interface.md +156 -135
- package/assets/{commands → claude-code/commands}/agents/release.md +156 -136
- package/assets/{commands → claude-code/commands}/agents/security.md +156 -138
- package/assets/{commands → claude-code/commands}/agents/test-review.md +156 -137
- package/assets/{commands → claude-code/commands}/agents/type-safety.md +156 -136
- package/assets/{commands/agents/code-validate.md → claude-code/commands/agents/validate.md} +156 -135
- package/assets/claude-code/commands/agents/workflow-synthesis.md +157 -0
- package/assets/{commands → claude-code/commands}/pipelines/aristotle.md +8 -8
- package/assets/{commands → claude-code/commands}/pipelines/ship.md +8 -8
- package/assets/claude-code/commands/workflows/post-implementation.md +60 -0
- package/assets/claude-code/commands/workflows/pre-implementation.md +46 -0
- package/assets/{commands → claude-code/commands}/workflows/prompt-audit.md +2 -2
- package/assets/codex/agents/anxiety-reader-agent.toml +462 -0
- package/assets/codex/agents/api-contract-validator-agent.toml +738 -0
- package/assets/codex/agents/aristotle-analyst-agent.toml +750 -0
- package/assets/codex/agents/aristotle-explorer-agent.toml +155 -0
- package/assets/codex/agents/aristotle-forecaster-agent.toml +449 -0
- package/assets/codex/agents/aristotle-validator-agent.toml +424 -0
- package/assets/codex/agents/assumption-excavator-agent.toml +1126 -0
- package/assets/codex/agents/code-auditor-agent.toml +815 -0
- package/assets/codex/agents/code-optimizer-agent.toml +652 -0
- package/assets/codex/agents/code-validator-agent.toml +573 -0
- package/assets/codex/agents/docs-validator-agent.toml +468 -0
- package/assets/codex/agents/frontend-validator-agent.toml +598 -0
- package/assets/codex/agents/mcp-validator-agent.toml +580 -0
- package/assets/codex/agents/pre-implementation-architect-agent.toml +817 -0
- package/assets/codex/agents/prompt-engineer-agent.toml +922 -0
- package/assets/codex/agents/prompt-pattern-analyzer-agent.toml +689 -0
- package/assets/codex/agents/prompt-quality-validator-agent.toml +777 -0
- package/assets/codex/agents/public-interface-validator-agent.toml +695 -0
- package/assets/codex/agents/release-readiness-agent.toml +491 -0
- package/assets/codex/agents/security-analyst-agent.toml +847 -0
- package/assets/codex/agents/test-architect-agent.toml +615 -0
- package/assets/codex/agents/type-safety-validator-agent.toml +686 -0
- package/assets/codex/agents/workflow-synthesis-agent.toml +631 -0
- package/assets/gemini-cli/agents/anxiety-reader-agent.md +470 -0
- package/assets/gemini-cli/agents/api-contract-validator-agent.md +747 -0
- package/assets/gemini-cli/agents/aristotle-analyst-agent.md +758 -0
- package/assets/gemini-cli/agents/aristotle-explorer-agent.md +163 -0
- package/assets/gemini-cli/agents/aristotle-forecaster-agent.md +457 -0
- package/assets/gemini-cli/agents/aristotle-validator-agent.md +432 -0
- package/assets/gemini-cli/agents/assumption-excavator-agent.md +1134 -0
- package/assets/gemini-cli/agents/code-auditor-agent.md +827 -0
- package/assets/gemini-cli/agents/code-optimizer-agent.md +661 -0
- package/assets/gemini-cli/agents/code-validator-agent.md +582 -0
- package/assets/gemini-cli/agents/docs-validator-agent.md +477 -0
- package/assets/gemini-cli/agents/frontend-validator-agent.md +610 -0
- package/assets/gemini-cli/agents/mcp-validator-agent.md +589 -0
- package/assets/gemini-cli/agents/pre-implementation-architect-agent.md +826 -0
- package/assets/gemini-cli/agents/prompt-engineer-agent.md +931 -0
- package/assets/gemini-cli/agents/prompt-pattern-analyzer-agent.md +698 -0
- package/assets/gemini-cli/agents/prompt-quality-validator-agent.md +786 -0
- package/assets/gemini-cli/agents/public-interface-validator-agent.md +707 -0
- package/assets/gemini-cli/agents/release-readiness-agent.md +500 -0
- package/assets/gemini-cli/agents/security-analyst-agent.md +859 -0
- package/assets/gemini-cli/agents/test-architect-agent.md +624 -0
- package/assets/gemini-cli/agents/type-safety-validator-agent.md +695 -0
- package/assets/gemini-cli/agents/workflow-synthesis-agent.md +639 -0
- package/assets/gemini-cli/commands/agents/anxiety-reader.toml +155 -0
- package/assets/gemini-cli/commands/agents/api-contract.toml +154 -0
- package/assets/gemini-cli/commands/agents/architect.toml +154 -0
- package/assets/gemini-cli/commands/agents/aristotle-analyst.toml +155 -0
- package/assets/gemini-cli/commands/agents/aristotle-explorer.toml +155 -0
- package/assets/gemini-cli/commands/agents/aristotle-forecaster.toml +155 -0
- package/assets/gemini-cli/commands/agents/aristotle-validator.toml +155 -0
- package/assets/gemini-cli/commands/agents/assumption-excavator.toml +155 -0
- package/assets/gemini-cli/commands/agents/audit.toml +154 -0
- package/assets/gemini-cli/commands/agents/docs-validate.toml +154 -0
- package/assets/gemini-cli/commands/agents/frontend.toml +154 -0
- package/assets/gemini-cli/commands/agents/mcp-validate.toml +154 -0
- package/assets/gemini-cli/commands/agents/optimize.toml +154 -0
- package/assets/gemini-cli/commands/agents/pattern-analyzer.toml +148 -0
- package/assets/gemini-cli/commands/agents/prompt-quality.toml +153 -0
- package/assets/gemini-cli/commands/agents/prompt-validate.toml +153 -0
- package/assets/gemini-cli/commands/agents/public-interface.toml +154 -0
- package/assets/gemini-cli/commands/agents/release.toml +154 -0
- package/assets/gemini-cli/commands/agents/security.toml +154 -0
- package/assets/gemini-cli/commands/agents/test-review.toml +154 -0
- package/assets/gemini-cli/commands/agents/type-safety.toml +154 -0
- package/assets/gemini-cli/commands/agents/validate.toml +154 -0
- package/assets/gemini-cli/commands/agents/workflow-synthesis.toml +155 -0
- package/assets/gemini-cli/commands/pipelines/aristotle.toml +139 -0
- package/assets/gemini-cli/commands/pipelines/ship.toml +184 -0
- package/assets/gemini-cli/commands/workflows/post-implementation.toml +56 -0
- package/assets/gemini-cli/commands/workflows/pre-implementation.toml +42 -0
- package/assets/gemini-cli/commands/workflows/prompt-audit.toml +40 -0
- package/assets/opencode/agents/anxiety-reader-agent.md +472 -0
- package/assets/opencode/agents/api-contract-validator-agent.md +749 -0
- package/assets/opencode/agents/aristotle-analyst-agent.md +760 -0
- package/assets/opencode/agents/aristotle-explorer-agent.md +164 -0
- package/assets/opencode/agents/aristotle-forecaster-agent.md +459 -0
- package/assets/opencode/agents/aristotle-validator-agent.md +434 -0
- package/assets/opencode/agents/assumption-excavator-agent.md +1136 -0
- package/assets/opencode/agents/code-auditor-agent.md +826 -0
- package/assets/opencode/agents/code-optimizer-agent.md +663 -0
- package/assets/opencode/agents/code-validator-agent.md +584 -0
- package/assets/opencode/agents/docs-validator-agent.md +479 -0
- package/assets/opencode/agents/frontend-validator-agent.md +609 -0
- package/assets/opencode/agents/mcp-validator-agent.md +591 -0
- package/assets/opencode/agents/pre-implementation-architect-agent.md +828 -0
- package/assets/opencode/agents/prompt-engineer-agent.md +933 -0
- package/assets/opencode/agents/prompt-pattern-analyzer-agent.md +700 -0
- package/assets/opencode/agents/prompt-quality-validator-agent.md +788 -0
- package/assets/opencode/agents/public-interface-validator-agent.md +706 -0
- package/assets/opencode/agents/release-readiness-agent.md +502 -0
- package/assets/opencode/agents/security-analyst-agent.md +858 -0
- package/assets/opencode/agents/test-architect-agent.md +626 -0
- package/assets/opencode/agents/type-safety-validator-agent.md +697 -0
- package/assets/opencode/agents/workflow-synthesis-agent.md +641 -0
- package/dist/cli.js +12 -414
- package/dist/commands/helpers.d.ts +73 -0
- package/dist/commands/helpers.js +274 -0
- package/dist/commands/setup.d.ts +13 -0
- package/dist/commands/setup.js +93 -0
- package/dist/commands/uninstall.d.ts +3 -0
- package/dist/commands/uninstall.js +126 -0
- package/dist/commands/verify.d.ts +1 -0
- package/dist/commands/verify.js +28 -0
- package/dist/harnesses/claude-code.d.ts +1 -1
- package/dist/harnesses/claude-code.js +3 -1
- package/dist/harnesses/codex.js +6 -5
- package/dist/harnesses/gemini-cli.d.ts +4 -8
- package/dist/harnesses/gemini-cli.js +47 -21
- package/dist/harnesses/index.d.ts +10 -1
- package/dist/harnesses/index.js +11 -2
- package/dist/harnesses/opencode.d.ts +1 -1
- package/dist/harnesses/opencode.js +15 -6
- package/dist/harnesses/types.d.ts +19 -0
- package/dist/harnesses/types.js +2 -0
- package/dist/lib/asset-catalog.js +2 -2
- package/dist/lib/config-merger.d.ts +2 -1
- package/dist/lib/config-merger.js +12 -4
- package/dist/lib/file-ops.d.ts +5 -0
- package/dist/lib/file-ops.js +18 -3
- package/dist/lib/hash.d.ts +1 -1
- package/dist/lib/hash.js +2 -2
- package/dist/lib/manifest.d.ts +30 -1
- package/dist/lib/manifest.js +5 -7
- package/dist/lib/paths.d.ts +16 -1
- package/dist/lib/paths.js +31 -3
- package/dist/lib/settings-merger.d.ts +24 -9
- package/dist/lib/settings-merger.js +57 -22
- package/dist/lib/version.d.ts +2 -0
- package/dist/lib/version.js +10 -0
- package/dist/steps/agents.d.ts +1 -2
- package/dist/steps/agents.js +7 -18
- package/dist/steps/cli.d.ts +53 -0
- package/dist/steps/cli.js +90 -0
- package/dist/steps/commands.d.ts +1 -1
- package/dist/steps/commands.js +20 -71
- package/dist/steps/detect.js +4 -0
- package/dist/steps/mcp.js +7 -15
- package/dist/steps/metrics.d.ts +12 -0
- package/dist/steps/metrics.js +52 -22
- package/dist/steps/shell.js +11 -1
- package/dist/steps/signup.d.ts +2 -2
- package/dist/steps/signup.js +9 -12
- package/dist/steps/verify.js +47 -8
- package/package.json +12 -11
- package/assets/agents/docs-validator-agent.md +0 -490
- package/assets/agents/release-readiness-agent.md +0 -482
- package/assets/commands/agents/aristotle-analyst.md +0 -116
- package/assets/commands/agents/aristotle-explorer.md +0 -93
- package/assets/commands/agents/aristotle-forecaster.md +0 -115
- package/assets/commands/agents/aristotle-validator.md +0 -115
- package/assets/commands/agents/prompt-validate.md +0 -136
- package/assets/commands/agents/workflow-synthesis.md +0 -102
- package/assets/commands/workflows/post-implementation.md +0 -577
- package/assets/commands/workflows/pre-implementation.md +0 -670
- /package/assets/{agents → claude-code/agents}/anxiety-reader-agent.md +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 UluOps
|
|
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
CHANGED
|
@@ -10,13 +10,15 @@ Zero-friction installer for [UluOps](https://uluops.ai) agentic harnesses. One c
|
|
|
10
10
|
npx @uluops/setup
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
+
> **⚠️ Windows Users:** Native Windows is not yet supported. Please use **WSL2 (Ubuntu)** and run the setup inside your WSL environment.
|
|
14
|
+
|
|
13
15
|
## Supported harnesses
|
|
14
16
|
|
|
15
17
|
| Harness | Status | Alias | Config |
|
|
16
18
|
|---------|--------|-------|--------|
|
|
17
19
|
| Claude Code | Fully supported (default) | `claude` | `~/.claude.json` |
|
|
18
20
|
| OpenCode | Fully supported | `oc` | `~/.config/opencode/opencode.json` |
|
|
19
|
-
| Gemini CLI |
|
|
21
|
+
| Gemini CLI | Fully supported | `gemini` | `~/.gemini/settings.json` |
|
|
20
22
|
| Codex | Coming soon | — | `~/.codex/config.toml` |
|
|
21
23
|
|
|
22
24
|
```bash
|
|
@@ -43,13 +45,16 @@ npx @uluops/setup --harness gemini-cli
|
|
|
43
45
|
|
|
44
46
|
> Paths shown are for Claude Code (default). Gemini CLI installs agents as `.md` and commands as `.toml` to `~/.gemini/`. OpenCode installs agents to `~/.config/opencode/agents/`. Agent definitions and commands are transformed to the target harness format at install time from a single source.
|
|
45
47
|
|
|
46
|
-
The installer runs
|
|
48
|
+
The installer runs these steps in sequence:
|
|
47
49
|
|
|
48
50
|
1. **Authenticate** — Validates your API key (or creates an account with `--signup`)
|
|
49
51
|
2. **MCP config** — Writes tracker and registry server entries to the harness config
|
|
50
52
|
3. **Definitions** — Copies pre-rendered agent definition files
|
|
51
|
-
4. **Metrics hook** — Configures a post-agent hook for automatic run capture (Claude Code
|
|
52
|
-
5.
|
|
53
|
+
4. **Metrics hook** — Configures a post-agent hook for automatic run capture (Claude Code and Gemini CLI)
|
|
54
|
+
5. **`ulu` CLI** *(optional)* — Offers to install `@uluops/cli` globally. Interactive runs are prompted (default Y); non-interactive runs skip unless `--with-cli` is passed. `--no-cli` always skips. The install is best-effort: if `npm install -g` fails (permissions, nvm prefix, etc.) the rest of setup still completes and a manual install command is printed.
|
|
55
|
+
6. **Health check** — Verifies both API endpoints are reachable
|
|
56
|
+
|
|
57
|
+
> When this setup installs the CLI, the install is recorded in the manifest so `--uninstall` removes it symmetrically. If the CLI was already on your PATH before running setup, it is left alone on uninstall.
|
|
53
58
|
|
|
54
59
|
## Usage
|
|
55
60
|
|
|
@@ -67,16 +72,7 @@ npx @uluops/setup --signup
|
|
|
67
72
|
|
|
68
73
|
You'll be prompted for email and password. Account + API key are created automatically.
|
|
69
74
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
### API key resolution
|
|
73
|
-
|
|
74
|
-
The installer checks these sources in order:
|
|
75
|
-
|
|
76
|
-
1. `--api-key <key>` flag
|
|
77
|
-
2. `ULUOPS_API_KEY` environment variable
|
|
78
|
-
3. `~/.uluops/credentials.json` (existing CLI auth)
|
|
79
|
-
4. Interactive prompt
|
|
75
|
+
> **🛑 IMPORTANT:** You must restart your harness (e.g., restart Claude Code) after setup to load the new agents and commands.
|
|
80
76
|
|
|
81
77
|
### Options
|
|
82
78
|
|
|
@@ -90,6 +86,8 @@ npx @uluops/setup [options]
|
|
|
90
86
|
--scope <mode> MCP config scope: "global" or "local" (default: global)
|
|
91
87
|
--local-defs Save definitions to ./uluops/ for review
|
|
92
88
|
--shell Write API key export to shell profile
|
|
89
|
+
--with-cli Install @uluops/cli globally (skip prompt)
|
|
90
|
+
--no-cli Skip @uluops/cli install (skip prompt)
|
|
93
91
|
--skip-validation Accept API key without server verification
|
|
94
92
|
--list Show available agents and workflows without installing
|
|
95
93
|
--verify Check installation health: manifest, files, MCP config, API connectivity (no changes)
|
|
@@ -98,6 +96,42 @@ npx @uluops/setup [options]
|
|
|
98
96
|
-y, --yes Skip confirmations
|
|
99
97
|
```
|
|
100
98
|
|
|
99
|
+
### Advanced Commands
|
|
100
|
+
|
|
101
|
+
#### Preview available agents (`--list`)
|
|
102
|
+
Displays all agents and workflows included in the current version of the setup tool.
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
⟨u⟩ ulu·ops v0.6.0 — available agents and workflows
|
|
106
|
+
|
|
107
|
+
WORKFLOWS
|
|
108
|
+
/workflows:post-implementation Iterative validation after coding
|
|
109
|
+
/workflows:pre-implementation Design validation before implementation
|
|
110
|
+
/workflows:prompt-audit Strategic prompt quality audit
|
|
111
|
+
|
|
112
|
+
AGENTS (run individually) MODEL
|
|
113
|
+
/agents:code-validator Validate cod... sonnet
|
|
114
|
+
/agents:type-safety Deep TypeScr... sonnet
|
|
115
|
+
/agents:security-analyst Comprehensiv... sonnet
|
|
116
|
+
/agents:test-architect Validate tes... sonnet
|
|
117
|
+
...
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
#### Check installation health (`--verify`)
|
|
121
|
+
Validates your current installation against the local manifest and checks API connectivity.
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
⟨u⟩ ulu·ops Installation Check v0.6.0
|
|
125
|
+
|
|
126
|
+
✓ Manifest found (~/.uluops/manifest.json)
|
|
127
|
+
✓ All 23 agents present in ~/.claude/agents/
|
|
128
|
+
✓ MCP servers configured in ~/.claude.json
|
|
129
|
+
✓ API connectivity: Tracker (Online)
|
|
130
|
+
✓ API connectivity: Registry (Online)
|
|
131
|
+
|
|
132
|
+
All checks passed.
|
|
133
|
+
```
|
|
134
|
+
|
|
101
135
|
### Examples
|
|
102
136
|
|
|
103
137
|
```bash
|
|
@@ -119,31 +153,13 @@ npx @uluops/setup --dry-run --api-key ulr_abc123
|
|
|
119
153
|
# Persist API key in shell profile (~/.zshrc, ~/.bashrc, etc.)
|
|
120
154
|
npx @uluops/setup --shell
|
|
121
155
|
|
|
122
|
-
#
|
|
123
|
-
npx @uluops/setup --
|
|
124
|
-
|
|
125
|
-
# Check existing installation (manifest + file presence + API connectivity)
|
|
126
|
-
npx @uluops/setup --verify
|
|
156
|
+
# Install the ulu CLI globally alongside harness setup
|
|
157
|
+
npx @uluops/setup --with-cli
|
|
127
158
|
|
|
128
|
-
#
|
|
129
|
-
npx @uluops/setup --
|
|
159
|
+
# Skip the CLI prompt entirely (interactive runs default to asking)
|
|
160
|
+
npx @uluops/setup --no-cli
|
|
130
161
|
```
|
|
131
162
|
|
|
132
|
-
## What's included
|
|
133
|
-
|
|
134
|
-
### Agents & Workflows
|
|
135
|
-
|
|
136
|
-
Setup installs the starter set of agent and workflow slash commands. Run `npx @uluops/setup --list` to see what's included.
|
|
137
|
-
|
|
138
|
-
> Browse more agents, workflows, and pipelines at [registry.uluops.ai](https://registry.uluops.ai). Pipelines are available via the registry API and MCP tools — they are not installed locally.
|
|
139
|
-
|
|
140
|
-
### MCP servers
|
|
141
|
-
|
|
142
|
-
Both servers use `npx -y` so there's no global install required:
|
|
143
|
-
|
|
144
|
-
- **uluops-tracker** — Validation run tracking, issue management, analytics
|
|
145
|
-
- **uluops-registry** — Agent definition registry, versioning, rendering
|
|
146
|
-
|
|
147
163
|
## How updates work
|
|
148
164
|
|
|
149
165
|
Re-running `npx @uluops/setup` is safe and idempotent:
|
|
@@ -155,27 +171,28 @@ Re-running `npx @uluops/setup` is safe and idempotent:
|
|
|
155
171
|
|
|
156
172
|
Setup manages four surfaces: agent files, command files, MCP config entries, and the metrics hook. A manifest at `~/.uluops/manifest.json` tracks what was installed so `--uninstall` can cleanly reverse all changes. The manifest supports multiple harnesses — each gets its own installation state.
|
|
157
173
|
|
|
174
|
+
## Troubleshooting
|
|
175
|
+
|
|
176
|
+
- **Agents not appearing:** Ensure you have restarted your harness (Claude Code, etc.) after running setup. For Claude Code, simply exit and restart the CLI.
|
|
177
|
+
- **MCP errors:** If the harness fails to start the MCP servers, ensure `npx` is available in your PATH. You can check your config at `~/.claude.json` or `~/.config/opencode/opencode.json`.
|
|
178
|
+
- **API key rejected:** Verify your key at [app.uluops.ai](https://app.uluops.ai). If you are behind a corporate proxy, you may need to set `HTTPS_PROXY`.
|
|
179
|
+
- **`@uluops/cli` install warning:** If setup warns it could not install the CLI globally (EACCES, nvm prefix mismatch, network), the rest of setup still completes. Run `npm install -g @uluops/cli` yourself when convenient — once it's on your PATH, every subsequent `npx @uluops/setup` will see it and skip the install step.
|
|
180
|
+
- **Windows issues:** Remember that native Windows is not supported; you must run the installer and your harness within **WSL2**.
|
|
181
|
+
|
|
158
182
|
## Uninstall
|
|
159
183
|
|
|
160
184
|
```
|
|
161
185
|
npx @uluops/setup --uninstall
|
|
162
186
|
```
|
|
163
187
|
|
|
164
|
-
Removes only UluOps-managed files: agents, commands, MCP config entries,
|
|
188
|
+
Removes only UluOps-managed files: agents, commands, MCP config entries, shell profile export (if `--shell` was used), and the global `@uluops/cli` package (only if this setup installed it — a CLI you installed yourself is left alone). Your custom agents and other MCP servers are preserved. Uninstall iterates all harnesses recorded in the manifest.
|
|
165
189
|
|
|
166
190
|
## Requirements
|
|
167
191
|
|
|
168
|
-
- Node.js >= 20
|
|
169
|
-
-
|
|
170
|
-
-
|
|
192
|
+
- **Node.js:** >= 20.0.0
|
|
193
|
+
- **Platform:** Linux, macOS, or WSL2 (native Windows not supported)
|
|
194
|
+
- **Harness:** Claude Code, OpenCode, or Gemini CLI
|
|
195
|
+
- **Auth:** UluOps API key ([get one here](https://app.uluops.ai/settings/api-keys))
|
|
171
196
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
## Platform support
|
|
175
|
-
|
|
176
|
-
| Platform | Status |
|
|
177
|
-
|----------|--------|
|
|
178
|
-
| Linux | Supported |
|
|
179
|
-
| macOS | Supported |
|
|
180
|
-
| WSL2 | Supported |
|
|
181
|
-
| Windows (native) | Not yet supported |
|
|
197
|
+
---
|
|
198
|
+
**Global install:** If you prefer, install once with `npm i -g @uluops/setup` then run `uluops-setup`.
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Auto-Tracker-Save Hook for Gemini CLI & Claude Code
|
|
5
|
+
*
|
|
6
|
+
* Event: AfterTool (Gemini CLI) / SubagentStop (Claude Code)
|
|
7
|
+
*
|
|
8
|
+
* This hook parses the output of an agent run and automatically
|
|
9
|
+
* queues a save_run call to the UluOps Tracker.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { readFileSync } from 'node:fs';
|
|
13
|
+
import { join } from 'node:path';
|
|
14
|
+
|
|
15
|
+
function main() {
|
|
16
|
+
let input;
|
|
17
|
+
try {
|
|
18
|
+
input = JSON.parse(readFileSync(0, 'utf8'));
|
|
19
|
+
} catch (err) {
|
|
20
|
+
process.stderr.write('Failed to parse hook input: ' + err.message + '\n');
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const { tool_name, tool_response, metadata, cwd } = input;
|
|
25
|
+
|
|
26
|
+
// Handle both Gemini CLI's invoke_agent and Claude Code's agent execution
|
|
27
|
+
// (In Claude Code, tool_name might be the specific agent tool if it's rendered as one)
|
|
28
|
+
const isAgentTool = tool_name === 'invoke_agent' || tool_name.startsWith('uluops-');
|
|
29
|
+
|
|
30
|
+
if (!isAgentTool) {
|
|
31
|
+
process.stdout.write(JSON.stringify({ decision: 'allow' }));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const content = tool_response?.llmContent || tool_response?.content || '';
|
|
36
|
+
if (!content) {
|
|
37
|
+
process.stdout.write(JSON.stringify({ decision: 'allow' }));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// --- Parsing Logic ---
|
|
42
|
+
|
|
43
|
+
// 1. Extract Agent Name
|
|
44
|
+
let agentName = input.tool_input?.agent_name || tool_name.replace(/^uluops-/, '');
|
|
45
|
+
if (agentName === 'invoke_agent') agentName = 'unknown-agent';
|
|
46
|
+
|
|
47
|
+
// 2. Extract Verdict and Score
|
|
48
|
+
// Broaden pattern to catch various agent output styles
|
|
49
|
+
const decisionMatch = content.match(/\*\*Verdict:\s*([A-Z_]+)/i) ||
|
|
50
|
+
content.match(/\*\*Decision:\s*([A-Z_]+)/i) ||
|
|
51
|
+
content.match(/Verdict:\s*([A-Z_]+)/i) ||
|
|
52
|
+
content.match(/Decision:\s*([A-Z_]+)/i);
|
|
53
|
+
|
|
54
|
+
const scoreMatch = content.match(/\(Score:\s*(\d+)\/100\)/i) ||
|
|
55
|
+
content.match(/Score:\s*(\d+)/i);
|
|
56
|
+
|
|
57
|
+
const decision = decisionMatch ? decisionMatch[1].toUpperCase() : 'PASS';
|
|
58
|
+
const score = scoreMatch ? parseInt(scoreMatch[1], 10) : 100;
|
|
59
|
+
|
|
60
|
+
// 3. Extract Summary
|
|
61
|
+
const summaryMatch = content.match(/### Executive Summary\n\n(.*?)(?:\n\n|###|$)/s) ||
|
|
62
|
+
content.match(/Summary\n\n(.*?)(?:\n\n|###|$)/s) ||
|
|
63
|
+
content.match(/## .*?\n\n(.*?)(?:\n\n|###|$)/s);
|
|
64
|
+
const summary = summaryMatch ? summaryMatch[1].trim().substring(0, 500) : `Auto-saved run for ${agentName}`;
|
|
65
|
+
|
|
66
|
+
// 4. Extract Recommendations & Failure Codes
|
|
67
|
+
const recommendations = [];
|
|
68
|
+
// Resilient pattern for list items containing a failure code
|
|
69
|
+
const lines = content.split('\n');
|
|
70
|
+
for (const line of lines) {
|
|
71
|
+
const codeMatch = line.match(/`([A-Z]{3}-[A-Z]{3}\/[CHMLI])`/);
|
|
72
|
+
if (codeMatch) {
|
|
73
|
+
const code = codeMatch[1];
|
|
74
|
+
// Try to extract title: everything before the first '(' or '`' or '-'
|
|
75
|
+
let title = line.replace(/^\s*[\*\-]\s*/, '') // remove bullet
|
|
76
|
+
.split(/[`\(\-]/)[0] // take everything before first separator
|
|
77
|
+
.trim();
|
|
78
|
+
|
|
79
|
+
if (!title) title = `Issue ${code}`;
|
|
80
|
+
|
|
81
|
+
// Try to extract priority
|
|
82
|
+
const priorityMatch = line.match(/\((Priority: )?(critical|high|suggested|backlog)\)/i);
|
|
83
|
+
const priority = priorityMatch ? priorityMatch[2].toLowerCase() : 'suggested';
|
|
84
|
+
|
|
85
|
+
recommendations.push({
|
|
86
|
+
agent: agentName,
|
|
87
|
+
title: title.substring(0, 100),
|
|
88
|
+
priority,
|
|
89
|
+
failure_code: code,
|
|
90
|
+
description: 'Extracted via auto-save hook'
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// 5. Project Name Detection
|
|
96
|
+
let project = 'default-project';
|
|
97
|
+
if (cwd) {
|
|
98
|
+
const parts = cwd.split('/');
|
|
99
|
+
// If we're in a sub-repo (like uluops packages), use the last two parts
|
|
100
|
+
if (parts.length > 2 && (parts[parts.length-2].startsWith('-') || parts[parts.length-2] === 'packages')) {
|
|
101
|
+
project = parts[parts.length-1];
|
|
102
|
+
} else {
|
|
103
|
+
project = parts.pop();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// --- Build Tail Call ---
|
|
108
|
+
|
|
109
|
+
const saveRunArgs = {
|
|
110
|
+
project,
|
|
111
|
+
workflow_type: 'auto-save',
|
|
112
|
+
agents: [{
|
|
113
|
+
name: agentName,
|
|
114
|
+
model: metadata?.model || 'gemini-1.5-pro',
|
|
115
|
+
decision,
|
|
116
|
+
score: score,
|
|
117
|
+
summary,
|
|
118
|
+
tokens: {
|
|
119
|
+
input_tokens: metadata?.input_tokens || 0,
|
|
120
|
+
output_tokens: metadata?.output_tokens || 0,
|
|
121
|
+
cache_creation_tokens: metadata?.cache_creation_tokens || 0,
|
|
122
|
+
cache_read_tokens: metadata?.cache_read_tokens || 0
|
|
123
|
+
}
|
|
124
|
+
}],
|
|
125
|
+
recommendations
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
const output = {
|
|
129
|
+
decision: 'allow',
|
|
130
|
+
systemMessage: `[hook] Auto-saving ${agentName} results to tracker (Project: ${project})...`,
|
|
131
|
+
hookSpecificOutput: {
|
|
132
|
+
tailToolCallRequest: {
|
|
133
|
+
name: 'mcp_uluops-tracker_save_run',
|
|
134
|
+
args: saveRunArgs
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
process.stdout.write(JSON.stringify(output));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
main();
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: api-contract-validator
|
|
3
|
-
version: "2.
|
|
3
|
+
version: "2.3.0"
|
|
4
4
|
description: Validates API contract consistency between documentation, types, and implementation. Catches contract drift, breaking changes, and documentation staleness. Required for APIs consumed by external clients or other services. Prevents integration failures.
|
|
5
|
-
|
|
6
5
|
tools: Read, Grep, Glob, Bash
|
|
7
6
|
model: sonnet
|
|
8
|
-
adl_schema: /home/alexs/uluops/uluops-agent-workflows/udl/adl/v3/api-contract-validator.agent.yaml
|
|
9
|
-
taxonomy_version: "0.2.2"
|
|
10
7
|
threshold: 80
|
|
11
8
|
auto_fail_severity: [critical, high]
|
|
12
9
|
---
|
|
@@ -44,6 +41,12 @@ Every issue you identify MUST include a failure classification code from the tax
|
|
|
44
41
|
- Do NOT auto-fail GraphQL APIs—adapt validation to schema.graphql
|
|
45
42
|
|
|
46
43
|
|
|
44
|
+
### Epistemic Nature
|
|
45
|
+
- **Verifiability:** Expert Judgment
|
|
46
|
+
- **Determinism:** Stochastic
|
|
47
|
+
- **Claim Type:** Factual
|
|
48
|
+
|
|
49
|
+
|
|
47
50
|
## Reference Examples
|
|
48
51
|
|
|
49
52
|
Use these examples to calibrate your judgment.
|
|
@@ -299,40 +302,6 @@ Use these examples to classify issues with the correct failure codes:
|
|
|
299
302
|
Domain: Semantic (data exposure) Mode: INC (Inconsistency - internal data in public response) Severity: C (Critical - security concern, auto-fail)
|
|
300
303
|
|
|
301
304
|
|
|
302
|
-
## Failure Taxonomy Reference
|
|
303
|
-
|
|
304
|
-
Compact format: `DOMAIN-MODE/SEVERITY` where:
|
|
305
|
-
- **Domain:** STR (Structural), SEM (Semantic), PRA (Pragmatic), EPI (Epistemic)
|
|
306
|
-
- **Mode:** 3-letter code (e.g., OMI=Omission, EXC=Excess, INC=Inconsistency, AMB=Ambiguity)
|
|
307
|
-
- **Severity:** C (Critical), H (High), M (Medium), L (Low), I (Info)
|
|
308
|
-
|
|
309
|
-
### Domain Reference
|
|
310
|
-
| Code | Domain | Description |
|
|
311
|
-
|------|--------|-------------|
|
|
312
|
-
| STR | Structural | Form, syntax, organization issues |
|
|
313
|
-
| SEM | Semantic | Meaning, correctness, completeness issues |
|
|
314
|
-
| PRA | Pragmatic | Practical effectiveness, efficiency issues |
|
|
315
|
-
| EPI | Epistemic | Knowledge, claims, confidence issues |
|
|
316
|
-
|
|
317
|
-
### Common Mode Codes
|
|
318
|
-
| Code | Mode | Domain | Meaning |
|
|
319
|
-
|------|------|--------|---------|
|
|
320
|
-
| OMI | Omission | STR | Missing required element |
|
|
321
|
-
| EXC | Excess | STR | Unnecessary/redundant element |
|
|
322
|
-
| MAL | Malformation | STR | Incorrectly structured |
|
|
323
|
-
| INC | Inconsistency | STR/SEM | Internal contradictions |
|
|
324
|
-
| COM | Incompleteness | SEM | Partial implementation |
|
|
325
|
-
| AMB | Ambiguity | SEM | Unclear meaning |
|
|
326
|
-
| COH | Incoherence | SEM | Logical disconnect |
|
|
327
|
-
| ALI | Misalignment | PRA | Doesn't match requirements |
|
|
328
|
-
| MAT | Mismatch | PRA | Interface/contract violation |
|
|
329
|
-
| EFF | Inefficiency | PRA | Performance issues |
|
|
330
|
-
| FRA | Fragility | PRA | Brittleness, poor error handling |
|
|
331
|
-
| OVR | Overclaiming | EPI | Claims exceed evidence |
|
|
332
|
-
| UND | Underclaiming | EPI | Evidence exceeds claims |
|
|
333
|
-
| GRN | Granularity | EPI | Wrong level of detail |
|
|
334
|
-
| FAL | Fallacy | EPI | Logical reasoning error |
|
|
335
|
-
|
|
336
305
|
## API Contract Validator Framework
|
|
337
306
|
|
|
338
307
|
### Category Overview
|
|
@@ -463,6 +432,7 @@ Before finalizing your decision, verify:
|
|
|
463
432
|
|
|
464
433
|
- **Target:** ~3500 tokens
|
|
465
434
|
- **Maximum:** 8000 tokens
|
|
435
|
+
|
|
466
436
|
Target ~3500 tokens for typical reviews. Include endpoint inventory table for all endpoints. Show exact schema diffs for contract drift. Expand for large APIs with many endpoints.
|
|
467
437
|
|
|
468
438
|
|
|
@@ -547,154 +517,7 @@ OR
|
|
|
547
517
|
|
|
548
518
|
Reasoning: [Explain decision]
|
|
549
519
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
<!-- Machine-readable output for API consumption and validation-tracker integration -->
|
|
553
|
-
<!-- Schema: udl/agent-output-schema-v1.4.json -->
|
|
554
|
-
```json
|
|
555
|
-
{
|
|
556
|
-
"schema_version": "1.3.0",
|
|
557
|
-
"validator": {
|
|
558
|
-
"name": "api-contract-validator",
|
|
559
|
-
"model": "sonnet",
|
|
560
|
-
"adl_schema": "/home/alexs/uluops/uluops-agent-workflows/udl/adl/v3/api-contract-validator.agent.yaml",
|
|
561
|
-
"tokens": {
|
|
562
|
-
"input_tokens": 0,
|
|
563
|
-
"output_tokens": 0
|
|
564
|
-
}
|
|
565
|
-
},
|
|
566
|
-
"target": "[path/to/validated/directory]",
|
|
567
|
-
"timestamp": "[ISO 8601 timestamp]",
|
|
568
|
-
"result": {
|
|
569
|
-
"score": "[X]",
|
|
570
|
-
"max_score": 100,
|
|
571
|
-
"decision": "[PASS|FAIL]",
|
|
572
|
-
"threshold": 80
|
|
573
|
-
},
|
|
574
|
-
"categories": [
|
|
575
|
-
{
|
|
576
|
-
"name": "Endpoint Completeness",
|
|
577
|
-
"score": "[X]",
|
|
578
|
-
"max_points": 25,
|
|
579
|
-
"findings": [
|
|
580
|
-
{
|
|
581
|
-
"criterion": "[criterion name from framework]",
|
|
582
|
-
"points_earned": "[X]",
|
|
583
|
-
"points_possible": "[X]",
|
|
584
|
-
"issues": [
|
|
585
|
-
{
|
|
586
|
-
"title": "[Short issue title]",
|
|
587
|
-
"priority": "[critical|suggested|backlog]",
|
|
588
|
-
"type": "[feature|bug|refactor|config|docs|infra|security|test|observation|deficiency|ambiguity]",
|
|
589
|
-
"failure_code": "[DOMAIN-MODE/SEVERITY]",
|
|
590
|
-
"file_path": "[path/to/file]",
|
|
591
|
-
"line_number": "[N]",
|
|
592
|
-
"description": "[Full explanation]"
|
|
593
|
-
}
|
|
594
|
-
]
|
|
595
|
-
}
|
|
596
|
-
]
|
|
597
|
-
},
|
|
598
|
-
{
|
|
599
|
-
"name": "Request Contract",
|
|
600
|
-
"score": "[X]",
|
|
601
|
-
"max_points": 25,
|
|
602
|
-
"findings": [
|
|
603
|
-
{
|
|
604
|
-
"criterion": "[criterion name from framework]",
|
|
605
|
-
"points_earned": "[X]",
|
|
606
|
-
"points_possible": "[X]",
|
|
607
|
-
"issues": [
|
|
608
|
-
{
|
|
609
|
-
"title": "[Short issue title]",
|
|
610
|
-
"priority": "[critical|suggested|backlog]",
|
|
611
|
-
"type": "[feature|bug|refactor|config|docs|infra|security|test|observation|deficiency|ambiguity]",
|
|
612
|
-
"failure_code": "[DOMAIN-MODE/SEVERITY]",
|
|
613
|
-
"file_path": "[path/to/file]",
|
|
614
|
-
"line_number": "[N]",
|
|
615
|
-
"description": "[Full explanation]"
|
|
616
|
-
}
|
|
617
|
-
]
|
|
618
|
-
}
|
|
619
|
-
]
|
|
620
|
-
},
|
|
621
|
-
{
|
|
622
|
-
"name": "Response Contract",
|
|
623
|
-
"score": "[X]",
|
|
624
|
-
"max_points": 25,
|
|
625
|
-
"findings": [
|
|
626
|
-
{
|
|
627
|
-
"criterion": "[criterion name from framework]",
|
|
628
|
-
"points_earned": "[X]",
|
|
629
|
-
"points_possible": "[X]",
|
|
630
|
-
"issues": [
|
|
631
|
-
{
|
|
632
|
-
"title": "[Short issue title]",
|
|
633
|
-
"priority": "[critical|suggested|backlog]",
|
|
634
|
-
"type": "[feature|bug|refactor|config|docs|infra|security|test|observation|deficiency|ambiguity]",
|
|
635
|
-
"failure_code": "[DOMAIN-MODE/SEVERITY]",
|
|
636
|
-
"file_path": "[path/to/file]",
|
|
637
|
-
"line_number": "[N]",
|
|
638
|
-
"description": "[Full explanation]"
|
|
639
|
-
}
|
|
640
|
-
]
|
|
641
|
-
}
|
|
642
|
-
]
|
|
643
|
-
},
|
|
644
|
-
{
|
|
645
|
-
"name": "Breaking Change Safety",
|
|
646
|
-
"score": "[X]",
|
|
647
|
-
"max_points": 25,
|
|
648
|
-
"findings": [
|
|
649
|
-
{
|
|
650
|
-
"criterion": "[criterion name from framework]",
|
|
651
|
-
"points_earned": "[X]",
|
|
652
|
-
"points_possible": "[X]",
|
|
653
|
-
"issues": [
|
|
654
|
-
{
|
|
655
|
-
"title": "[Short issue title]",
|
|
656
|
-
"priority": "[critical|suggested|backlog]",
|
|
657
|
-
"type": "[feature|bug|refactor|config|docs|infra|security|test|observation|deficiency|ambiguity]",
|
|
658
|
-
"failure_code": "[DOMAIN-MODE/SEVERITY]",
|
|
659
|
-
"file_path": "[path/to/file]",
|
|
660
|
-
"line_number": "[N]",
|
|
661
|
-
"description": "[Full explanation]"
|
|
662
|
-
}
|
|
663
|
-
]
|
|
664
|
-
}
|
|
665
|
-
]
|
|
666
|
-
}
|
|
667
|
-
],
|
|
668
|
-
"summary": {
|
|
669
|
-
"total_issues": "[N]",
|
|
670
|
-
"by_priority": {
|
|
671
|
-
"critical": "[N]",
|
|
672
|
-
"suggested": "[N]",
|
|
673
|
-
"backlog": "[N]"
|
|
674
|
-
},
|
|
675
|
-
"by_severity": {
|
|
676
|
-
"critical": "[N]",
|
|
677
|
-
"high": "[N]",
|
|
678
|
-
"medium": "[N]",
|
|
679
|
-
"low": "[N]",
|
|
680
|
-
"info": "[N]"
|
|
681
|
-
},
|
|
682
|
-
"by_type": {
|
|
683
|
-
"feature": "[N]",
|
|
684
|
-
"bug": "[N]",
|
|
685
|
-
"refactor": "[N]",
|
|
686
|
-
"config": "[N]",
|
|
687
|
-
"docs": "[N]",
|
|
688
|
-
"infra": "[N]",
|
|
689
|
-
"security": "[N]",
|
|
690
|
-
"test": "[N]",
|
|
691
|
-
"observation": "[N]",
|
|
692
|
-
"deficiency": "[N]",
|
|
693
|
-
"ambiguity": "[N]"
|
|
694
|
-
}
|
|
695
|
-
}
|
|
696
|
-
}
|
|
697
|
-
```
|
|
520
|
+
|
|
698
521
|
```
|
|
699
522
|
|
|
700
523
|
## Output Examples
|
|
@@ -860,44 +683,6 @@ API contracts are aligned when ALL of the following are true
|
|
|
860
683
|
- No breaking changes without versioning or deprecation
|
|
861
684
|
- No auto-fail conditions triggered
|
|
862
685
|
|
|
863
|
-
## Priority & Severity Mapping
|
|
864
|
-
|
|
865
|
-
When generating the JSON OUTPUT section, map issues as follows:
|
|
866
|
-
|
|
867
|
-
**Priority (for triage):**
|
|
868
|
-
| Severity | Priority | Meaning |
|
|
869
|
-
|----------|----------|---------|
|
|
870
|
-
| Critical | `critical` | Blocks progression, must fix now |
|
|
871
|
-
| High | `critical` | Should fix before next phase |
|
|
872
|
-
| Medium | `suggested` | Should fix soon |
|
|
873
|
-
| Low | `backlog` | Optional improvement |
|
|
874
|
-
| Info | `backlog` | Informational only |
|
|
875
|
-
|
|
876
|
-
**Severity is derived from failure_code suffix:**
|
|
877
|
-
| Suffix | Severity | Priority |
|
|
878
|
-
|--------|----------|----------|
|
|
879
|
-
| `/C` | critical | critical |
|
|
880
|
-
| `/H` | high | critical |
|
|
881
|
-
| `/M` | medium | suggested |
|
|
882
|
-
| `/L` | low | backlog |
|
|
883
|
-
| `/I` | info | backlog |
|
|
884
|
-
|
|
885
|
-
## Failure Code Selection
|
|
886
|
-
|
|
887
|
-
**1. Use the default code from the criterion that failed** (e.g., `→ SEM-COM/H`)
|
|
888
|
-
|
|
889
|
-
**2. Adjust severity letter based on actual impact:**
|
|
890
|
-
- `/C` - Security vulnerabilities, data loss risk, crashes, blocks all functionality
|
|
891
|
-
- `/H` - Broken functionality, missing critical tests, significant user impact
|
|
892
|
-
- `/M` - Code quality issues, maintainability concerns, moderate impact
|
|
893
|
-
- `/L` - Style issues, minor improvements, low impact
|
|
894
|
-
- `/I` - Suggestions, informational, no functional impact
|
|
895
|
-
|
|
896
|
-
**3. Consider context when adjusting:**
|
|
897
|
-
- A naming issue in a public API → elevate to `/M` or `/H`
|
|
898
|
-
- A complexity issue in rarely-used code → may stay at `/L`
|
|
899
|
-
- Missing error handling in user-facing code → `/H` or `/C`
|
|
900
|
-
- Missing error handling in internal utility → `/M`
|
|
901
686
|
|
|
902
687
|
## Edge Case Handling
|
|
903
688
|
|
|
@@ -938,10 +723,6 @@ When generating the JSON OUTPUT section, map issues as follows:
|
|
|
938
723
|
**Runs after:** code-validator
|
|
939
724
|
**Recommends:** type-safety-validator
|
|
940
725
|
|
|
941
|
-
### Handoff: What This Agent Passes Downstream
|
|
942
|
-
|
|
943
|
-
### Handoff: What This Agent Expects From Predecessors
|
|
944
|
-
**From code-validator:** Validation results from code-validator
|
|
945
726
|
|
|
946
727
|
---
|
|
947
728
|
|