@uluops/setup 0.2.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 +109 -89
- package/assets/auto-tracker-save.mjs +142 -0
- package/assets/claude-code/agents/anxiety-reader-agent.md +464 -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/claude-code/commands/agents/anxiety-reader.md +157 -0
- package/assets/{commands → claude-code/commands}/agents/api-contract.md +156 -135
- package/assets/{commands → claude-code/commands}/agents/architect.md +156 -135
- 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 -6
- package/assets/{commands → claude-code/commands}/agents/audit.md +156 -136
- package/assets/{commands → claude-code/commands}/agents/docs-validate.md +156 -133
- package/assets/{commands → claude-code/commands}/agents/frontend.md +156 -135
- package/assets/{commands → claude-code/commands}/agents/mcp-validate.md +156 -136
- package/assets/{commands → claude-code/commands}/agents/optimize.md +156 -133
- package/assets/{commands → claude-code/commands}/agents/pattern-analyzer.md +150 -126
- package/assets/{commands → claude-code/commands}/agents/prompt-quality.md +155 -134
- package/assets/claude-code/commands/agents/prompt-validate.md +155 -0
- package/assets/{commands → claude-code/commands}/agents/public-interface.md +156 -134
- package/assets/{commands → claude-code/commands}/agents/release.md +156 -135
- package/assets/{commands → claude-code/commands}/agents/security.md +156 -137
- package/assets/{commands → claude-code/commands}/agents/test-review.md +156 -136
- package/assets/{commands → claude-code/commands}/agents/type-safety.md +156 -135
- package/assets/{commands → claude-code/commands}/agents/validate.md +156 -134
- package/assets/claude-code/commands/agents/workflow-synthesis.md +157 -0
- package/assets/claude-code/commands/pipelines/aristotle.md +143 -0
- package/assets/claude-code/commands/pipelines/ship.md +188 -0
- package/assets/claude-code/commands/workflows/post-implementation.md +60 -0
- package/assets/claude-code/commands/workflows/pre-implementation.md +46 -0
- package/assets/claude-code/commands/workflows/prompt-audit.md +44 -0
- 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 +22 -380
- 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 +8 -0
- package/dist/harnesses/claude-code.js +74 -0
- package/dist/harnesses/codex.d.ts +15 -0
- package/dist/harnesses/codex.js +54 -0
- package/dist/harnesses/gemini-cli.d.ts +12 -0
- package/dist/harnesses/gemini-cli.js +80 -0
- package/dist/harnesses/index.d.ts +27 -0
- package/dist/harnesses/index.js +54 -0
- package/dist/harnesses/opencode.d.ts +14 -0
- package/dist/harnesses/opencode.js +139 -0
- package/dist/harnesses/types.d.ts +106 -0
- package/dist/harnesses/types.js +26 -0
- package/dist/lib/agent-transform.d.ts +12 -0
- package/dist/lib/agent-transform.js +129 -0
- package/dist/lib/asset-catalog.d.ts +9 -0
- package/dist/lib/asset-catalog.js +56 -0
- package/dist/lib/atomic-write.d.ts +11 -0
- package/dist/lib/atomic-write.js +28 -0
- package/dist/lib/config-merger.d.ts +9 -2
- package/dist/lib/config-merger.js +44 -7
- package/dist/lib/display.d.ts +14 -0
- package/dist/lib/display.js +66 -0
- package/dist/lib/file-ops.d.ts +11 -0
- package/dist/lib/file-ops.js +40 -4
- package/dist/lib/hash.d.ts +1 -0
- package/dist/lib/hash.js +2 -1
- package/dist/lib/health.d.ts +2 -0
- package/dist/lib/health.js +10 -0
- package/dist/lib/manifest.d.ts +51 -5
- package/dist/lib/manifest.js +146 -13
- package/dist/lib/paths.d.ts +30 -3
- package/dist/lib/paths.js +98 -12
- package/dist/lib/settings-merger.d.ts +31 -8
- package/dist/lib/settings-merger.js +87 -24
- package/dist/lib/version.d.ts +2 -0
- package/dist/lib/version.js +10 -0
- package/dist/steps/agents.d.ts +4 -1
- package/dist/steps/agents.js +48 -9
- package/dist/steps/auth.js +26 -10
- package/dist/steps/cli.d.ts +53 -0
- package/dist/steps/cli.js +90 -0
- package/dist/steps/commands.d.ts +6 -1
- package/dist/steps/commands.js +36 -9
- package/dist/steps/detect.d.ts +3 -0
- package/dist/steps/detect.js +11 -0
- package/dist/steps/mcp.d.ts +6 -2
- package/dist/steps/mcp.js +39 -22
- package/dist/steps/metrics.d.ts +26 -10
- package/dist/steps/metrics.js +108 -108
- package/dist/steps/shell.d.ts +2 -0
- package/dist/steps/shell.js +26 -9
- package/dist/steps/signup.d.ts +7 -4
- package/dist/steps/signup.js +29 -20
- package/dist/steps/verify.d.ts +2 -2
- package/dist/steps/verify.js +118 -112
- package/package.json +40 -14
- 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 -115
- package/assets/commands/agents/aristotle-explorer.md +0 -92
- package/assets/commands/agents/aristotle-forecaster.md +0 -114
- package/assets/commands/agents/aristotle-validator.md +0 -114
- package/assets/commands/agents/prompt-validate.md +0 -135
- package/assets/commands/agents/workflow-synthesis.md +0 -101
- package/assets/commands/workflows/aristotle.md +0 -543
- package/assets/commands/workflows/post-implementation.md +0 -577
- package/assets/commands/workflows/pre-implementation.md +0 -670
- package/assets/commands/workflows/prompt-audit.md +0 -754
- package/assets/commands/workflows/ship.md +0 -721
- package/dist/test/auth.test.d.ts +0 -1
- package/dist/test/auth.test.js +0 -43
- package/dist/test/config-io.test.d.ts +0 -1
- package/dist/test/config-io.test.js +0 -56
- package/dist/test/config-merger.test.d.ts +0 -1
- package/dist/test/config-merger.test.js +0 -94
- package/dist/test/detect.test.d.ts +0 -1
- package/dist/test/detect.test.js +0 -25
- package/dist/test/file-ops.test.d.ts +0 -1
- package/dist/test/file-ops.test.js +0 -100
- package/dist/test/hash.test.d.ts +0 -1
- package/dist/test/hash.test.js +0 -14
- package/dist/test/manifest.test.d.ts +0 -1
- package/dist/test/manifest.test.js +0 -78
- package/dist/test/paths.test.d.ts +0 -1
- package/dist/test/paths.test.js +0 -30
- package/dist/test/settings-merger.test.d.ts +0 -1
- package/dist/test/settings-merger.test.js +0 -167
- package/dist/test/shell-profile.test.d.ts +0 -1
- package/dist/test/shell-profile.test.js +0 -40
- package/dist/test/shell.test.d.ts +0 -1
- package/dist/test/shell.test.js +0 -71
- package/dist/test/signup.test.d.ts +0 -1
- package/dist/test/signup.test.js +0 -83
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
|
@@ -4,21 +4,57 @@
|
|
|
4
4
|
|
|
5
5
|
# @uluops/setup
|
|
6
6
|
|
|
7
|
-
Zero-friction installer for [UluOps](https://uluops.ai)
|
|
7
|
+
Zero-friction installer for [UluOps](https://uluops.ai) agentic harnesses. One command sets up MCP servers, agents, and slash commands for Claude Code, OpenCode, and more.
|
|
8
8
|
|
|
9
9
|
```
|
|
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
|
+
|
|
15
|
+
## Supported harnesses
|
|
16
|
+
|
|
17
|
+
| Harness | Status | Alias | Config |
|
|
18
|
+
|---------|--------|-------|--------|
|
|
19
|
+
| Claude Code | Fully supported (default) | `claude` | `~/.claude.json` |
|
|
20
|
+
| OpenCode | Fully supported | `oc` | `~/.config/opencode/opencode.json` |
|
|
21
|
+
| Gemini CLI | Fully supported | `gemini` | `~/.gemini/settings.json` |
|
|
22
|
+
| Codex | Coming soon | — | `~/.codex/config.toml` |
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Install for Claude Code (default)
|
|
26
|
+
npx @uluops/setup
|
|
27
|
+
|
|
28
|
+
# Install for OpenCode
|
|
29
|
+
npx @uluops/setup --harness opencode
|
|
30
|
+
|
|
31
|
+
# Install for Gemini CLI
|
|
32
|
+
npx @uluops/setup --harness gemini-cli
|
|
33
|
+
```
|
|
34
|
+
|
|
13
35
|
## What it does
|
|
14
36
|
|
|
15
|
-
| Artifact | Count | Destination |
|
|
16
|
-
|
|
37
|
+
| Artifact | Count | Destination (Claude Code) |
|
|
38
|
+
|----------|-------|---------------------------|
|
|
17
39
|
| MCP servers | 2 | `~/.claude.json` |
|
|
18
|
-
| Agent definitions |
|
|
19
|
-
|
|
|
40
|
+
| Agent definitions | 23 | `~/.claude/agents/` |
|
|
41
|
+
| Agent commands | 23 | `~/.claude/commands/agents/` |
|
|
42
|
+
| Workflow commands | 3 | `~/.claude/commands/workflows/` |
|
|
43
|
+
| Pipeline commands | 2 | `~/.claude/commands/pipelines/` |
|
|
44
|
+
| Agent metrics hook | 1 | `~/.claude/tools/agent-metrics/` |
|
|
20
45
|
|
|
21
|
-
|
|
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.
|
|
47
|
+
|
|
48
|
+
The installer runs these steps in sequence:
|
|
49
|
+
|
|
50
|
+
1. **Authenticate** — Validates your API key (or creates an account with `--signup`)
|
|
51
|
+
2. **MCP config** — Writes tracker and registry server entries to the harness config
|
|
52
|
+
3. **Definitions** — Copies pre-rendered agent definition files
|
|
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.
|
|
22
58
|
|
|
23
59
|
## Usage
|
|
24
60
|
|
|
@@ -26,7 +62,7 @@ The installer validates your API key, writes MCP config for the tracker and regi
|
|
|
26
62
|
npx @uluops/setup
|
|
27
63
|
```
|
|
28
64
|
|
|
29
|
-
You'll be prompted for your API key (get one at [app.uluops.ai/settings/api-keys](https://app.uluops.ai/settings/api-keys)). Everything else uses smart defaults — no other prompts.
|
|
65
|
+
You'll be prompted for your API key (get one at [app.uluops.ai/settings/api-keys](https://app.uluops.ai/settings/api-keys)). Everything else uses smart defaults — no other prompts. See [What it does](#what-it-does) for the full list of changes made.
|
|
30
66
|
|
|
31
67
|
**New to UluOps?** Create an account without leaving the terminal:
|
|
32
68
|
|
|
@@ -36,16 +72,7 @@ npx @uluops/setup --signup
|
|
|
36
72
|
|
|
37
73
|
You'll be prompted for email and password. Account + API key are created automatically.
|
|
38
74
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
### API key resolution
|
|
42
|
-
|
|
43
|
-
The installer checks these sources in order:
|
|
44
|
-
|
|
45
|
-
1. `--api-key <key>` flag
|
|
46
|
-
2. `ULUOPS_API_KEY` environment variable
|
|
47
|
-
3. `~/.uluops/credentials.json` (existing CLI auth)
|
|
48
|
-
4. Interactive prompt
|
|
75
|
+
> **🛑 IMPORTANT:** You must restart your harness (e.g., restart Claude Code) after setup to load the new agents and commands.
|
|
49
76
|
|
|
50
77
|
### Options
|
|
51
78
|
|
|
@@ -53,24 +80,67 @@ The installer checks these sources in order:
|
|
|
53
80
|
npx @uluops/setup [options]
|
|
54
81
|
|
|
55
82
|
--api-key <key> API key (skip prompt)
|
|
83
|
+
--harness <name> Target harness: claude-code, opencode, gemini-cli, codex
|
|
84
|
+
Aliases: claude, oc, gemini (default: claude-code)
|
|
56
85
|
--signup Create account from terminal (email + password)
|
|
57
86
|
--scope <mode> MCP config scope: "global" or "local" (default: global)
|
|
58
|
-
--local-defs Save definitions to ./uluops/
|
|
87
|
+
--local-defs Save definitions to ./uluops/ for review
|
|
59
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)
|
|
60
91
|
--skip-validation Accept API key without server verification
|
|
61
92
|
--list Show available agents and workflows without installing
|
|
62
|
-
--verify Check
|
|
93
|
+
--verify Check installation health: manifest, files, MCP config, API connectivity (no changes)
|
|
63
94
|
--uninstall Remove all UluOps-managed artifacts
|
|
64
95
|
--dry-run Show what would happen without making changes
|
|
65
96
|
-y, --yes Skip confirmations
|
|
66
97
|
```
|
|
67
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
|
+
|
|
68
135
|
### Examples
|
|
69
136
|
|
|
70
137
|
```bash
|
|
71
138
|
# New user — create account + install in one shot
|
|
72
139
|
npx @uluops/setup --signup
|
|
73
140
|
|
|
141
|
+
# Install for OpenCode
|
|
142
|
+
npx @uluops/setup --harness opencode
|
|
143
|
+
|
|
74
144
|
# Non-interactive (CI/automation)
|
|
75
145
|
npx @uluops/setup --api-key ulr_abc123 -y
|
|
76
146
|
|
|
@@ -83,64 +153,13 @@ npx @uluops/setup --dry-run --api-key ulr_abc123
|
|
|
83
153
|
# Persist API key in shell profile (~/.zshrc, ~/.bashrc, etc.)
|
|
84
154
|
npx @uluops/setup --shell
|
|
85
155
|
|
|
86
|
-
#
|
|
87
|
-
npx @uluops/setup --
|
|
156
|
+
# Install the ulu CLI globally alongside harness setup
|
|
157
|
+
npx @uluops/setup --with-cli
|
|
88
158
|
|
|
89
|
-
#
|
|
90
|
-
npx @uluops/setup --
|
|
91
|
-
|
|
92
|
-
# Clean removal
|
|
93
|
-
npx @uluops/setup --uninstall
|
|
159
|
+
# Skip the CLI prompt entirely (interactive runs default to asking)
|
|
160
|
+
npx @uluops/setup --no-cli
|
|
94
161
|
```
|
|
95
162
|
|
|
96
|
-
## What's included
|
|
97
|
-
|
|
98
|
-
### Workflows
|
|
99
|
-
|
|
100
|
-
| Command | Description |
|
|
101
|
-
|---------|-------------|
|
|
102
|
-
| `/workflows:pre-implementation` | Design review before coding |
|
|
103
|
-
| `/workflows:post-implementation` | Iterative validation loop |
|
|
104
|
-
| `/workflows:ship` | Final gate before shipping |
|
|
105
|
-
| `/workflows:prompt-audit` | Audit agent prompts |
|
|
106
|
-
| `/workflows:aristotle` | Four-phase Aristotelian analysis |
|
|
107
|
-
|
|
108
|
-
### Agents
|
|
109
|
-
|
|
110
|
-
| Command | Focus | Model |
|
|
111
|
-
|---------|-------|-------|
|
|
112
|
-
| `/agents:validate` | Code quality | sonnet |
|
|
113
|
-
| `/agents:type-safety` | TypeScript | sonnet |
|
|
114
|
-
| `/agents:test-review` | Test quality | sonnet |
|
|
115
|
-
| `/agents:optimize` | Performance | sonnet |
|
|
116
|
-
| `/agents:frontend` | React/a11y | sonnet |
|
|
117
|
-
| `/agents:mcp-validate` | MCP compliance | sonnet |
|
|
118
|
-
| `/agents:architect` | Design review | sonnet |
|
|
119
|
-
| `/agents:audit` | Runtime bugs | opus |
|
|
120
|
-
| `/agents:security` | OWASP | sonnet |
|
|
121
|
-
| `/agents:api-contract` | API alignment | sonnet |
|
|
122
|
-
| `/agents:release` | Publish ready | sonnet |
|
|
123
|
-
| `/agents:public-interface` | README/exports | sonnet |
|
|
124
|
-
| `/agents:docs-validate` | Documentation | sonnet |
|
|
125
|
-
| `/agents:prompt-validate` | Prompt review | sonnet |
|
|
126
|
-
| `/agents:prompt-quality` | Prompt quality | sonnet |
|
|
127
|
-
| `/agents:pattern-analyzer` | Patterns | sonnet |
|
|
128
|
-
| `/agents:aristotle-explorer` | Categories | opus |
|
|
129
|
-
| `/agents:aristotle-analyst` | Four causes | opus |
|
|
130
|
-
| `/agents:aristotle-validator` | Teleology | opus |
|
|
131
|
-
| `/agents:aristotle-forecaster` | Potentiality | opus |
|
|
132
|
-
| `/agents:assumption-excavator` | Assumptions | sonnet |
|
|
133
|
-
| `/agents:workflow-synthesis` | Cross-agent synthesis | opus |
|
|
134
|
-
|
|
135
|
-
> This is the starter set. Browse 135+ agents at [registry.uluops.ai](https://registry.uluops.ai).
|
|
136
|
-
|
|
137
|
-
### MCP servers
|
|
138
|
-
|
|
139
|
-
Both servers use `npx -y` so there's no global install required:
|
|
140
|
-
|
|
141
|
-
- **uluops-tracker** — Validation run tracking, issue management, analytics
|
|
142
|
-
- **uluops-registry** — Agent definition registry, versioning, rendering
|
|
143
|
-
|
|
144
163
|
## How updates work
|
|
145
164
|
|
|
146
165
|
Re-running `npx @uluops/setup` is safe and idempotent:
|
|
@@ -150,7 +169,15 @@ Re-running `npx @uluops/setup` is safe and idempotent:
|
|
|
150
169
|
- Removed definitions are cleaned up
|
|
151
170
|
- Your custom agents and non-UluOps MCP servers are never touched
|
|
152
171
|
|
|
153
|
-
A manifest at `~/.
|
|
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.
|
|
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**.
|
|
154
181
|
|
|
155
182
|
## Uninstall
|
|
156
183
|
|
|
@@ -158,21 +185,14 @@ A manifest at `~/.claude/uluops-manifest.json` tracks what was installed.
|
|
|
158
185
|
npx @uluops/setup --uninstall
|
|
159
186
|
```
|
|
160
187
|
|
|
161
|
-
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.
|
|
162
189
|
|
|
163
190
|
## Requirements
|
|
164
191
|
|
|
165
|
-
- Node.js >=
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
|
|
169
|
-
> **Global install:** If you install globally with `npm i -g @uluops/setup`, the binary is `uluops-setup`.
|
|
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))
|
|
170
196
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
| Platform | Status |
|
|
174
|
-
|----------|--------|
|
|
175
|
-
| Linux | Supported |
|
|
176
|
-
| macOS | Supported |
|
|
177
|
-
| WSL2 | Supported |
|
|
178
|
-
| 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();
|