@olegkoval/agent-skills 1.38.3 → 1.40.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.
Files changed (29) hide show
  1. package/.github/copilot-instructions.md +1 -0
  2. package/.github/prompts/veto-routing.prompt.md +65 -0
  3. package/.kiro/steering/veto-routing.md +64 -0
  4. package/.windsurf/rules/veto-routing.md +63 -0
  5. package/README.md +3 -2
  6. package/adapters/claude/olko-skill-meta/skills/veto-routing/SKILL.md +76 -0
  7. package/adapters/codex/olko-skill-meta/README.md +1 -0
  8. package/adapters/cursor/olko-skill-meta/skills/veto-routing/SKILL.md +76 -0
  9. package/adapters/grok/olko-skill-meta/skills/veto-routing/SKILL.md +76 -0
  10. package/catalog/skills.json +23 -0
  11. package/package.json +1 -1
  12. package/plugins/olko-apple-kit/.claude-plugin/plugin.json +1 -1
  13. package/plugins/olko-creative/.claude-plugin/plugin.json +1 -1
  14. package/plugins/olko-garmin-kit/.claude-plugin/plugin.json +1 -1
  15. package/plugins/olko-git-tools/.claude-plugin/plugin.json +1 -1
  16. package/plugins/olko-github-pr/.claude-plugin/plugin.json +1 -1
  17. package/plugins/olko-obsidian/.claude-plugin/plugin.json +1 -1
  18. package/plugins/olko-product/.claude-plugin/plugin.json +1 -1
  19. package/plugins/olko-reflection/.claude-plugin/plugin.json +1 -1
  20. package/plugins/olko-release/.claude-plugin/plugin.json +1 -1
  21. package/plugins/olko-skill-meta/.claude-plugin/plugin.json +1 -1
  22. package/plugins/olko-skill-meta/skills/veto-routing/SKILL.md +75 -0
  23. package/plugins/olko-web-ops/.claude-plugin/plugin.json +1 -1
  24. package/scripts/lib/catalog.mjs +1 -1
  25. package/site/assets/catalog.css +1064 -0
  26. package/site/assets/catalog.js +232 -0
  27. package/site/build.mjs +218 -166
  28. package/site/assets/paperbag.css +0 -707
  29. package/site/assets/paperbag.js +0 -218
@@ -36,6 +36,7 @@ Available reusable prompt files:
36
36
  - context-repo: .github/prompts/context-repo.prompt.md
37
37
  - add-to-my-skills: .github/prompts/add-to-my-skills.prompt.md
38
38
  - promptctl: .github/prompts/promptctl.prompt.md
39
+ - veto-routing: .github/prompts/veto-routing.prompt.md
39
40
  - ai-tools-setup: .github/prompts/ai-tools-setup.prompt.md
40
41
  - self-critique: .github/prompts/self-critique.prompt.md
41
42
  - review-past-performance: .github/prompts/review-past-performance.prompt.md
@@ -0,0 +1,65 @@
1
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
2
+
3
+ ---
4
+ description: "Use Veto to route or execute AI tasks across configured providers with explicit privacy, cost, transport, and output boundaries."
5
+ ---
6
+
7
+ Use the olko:veto-routing skill.
8
+
9
+ # Veto routing
10
+
11
+ Use Veto as a model-selection and execution layer. It does not expand the
12
+ user's authorization, validate generated output, or guarantee quality or cost.
13
+
14
+ ## Before a model call
15
+
16
+ 1. Confirm the CLI is available with `command -v veto`. Inside the Veto source
17
+ checkout, `go run ./cmd/veto` is an acceptable fallback. Do not install it
18
+ automatically. When using the fallback, replace `veto` in the commands below
19
+ with `go run ./cmd/veto`.
20
+ 2. Inspect configured transports with `veto providers`. Never read, print, or
21
+ copy credential files from `~/.veto/`.
22
+ 3. Check whether the objective is safe to send to the configured providers. An
23
+ admission pass can disclose the objective to more than one provider. Stop
24
+ when sensitive data is present and provider authorization is unclear.
25
+ 4. Do not run `veto login`, change provider configuration, or incur an
26
+ unrequested model call.
27
+
28
+ ## Choose the smallest operation
29
+
30
+ - Selection only: use `veto route --json` and consume the single JSON result.
31
+ - Route and execute: use `veto run --quiet` only when the user asked for model
32
+ execution and the selected transport can perform the task.
33
+ - Quality gate: add `--criteria` when the user supplied concrete acceptance
34
+ criteria. A requested review fails closed.
35
+ - Multi-step plan: run `veto exec <plan.md> --dry-run` before execution. Execute
36
+ only steps already within the user's scope.
37
+
38
+ Set `--kind`, `--risk`, and `--max-cost` explicitly when the task provides those
39
+ constraints. Treat `--max-cost` as an estimated preflight ceiling, not a billing
40
+ guarantee. Do not retry the same paid route repeatedly. Interactive routing can
41
+ resume checkpoints after interruption; `route --json` intentionally starts
42
+ fresh, so rerun it only deliberately.
43
+
44
+ ## Preserve transport and output boundaries
45
+
46
+ - HTTP API and local OpenAI-compatible transports return text through Veto and
47
+ cannot inspect files or run shell commands. The Claude CLI transport is the
48
+ current executable-tool path.
49
+ - Keep generated content on stdout unless the user requested a file. Use an
50
+ explicit relative `--output` path, and use `--force` only when replacing that
51
+ exact file is authorized.
52
+ - Treat model responses as untrusted input. Validate claims, patches, commands,
53
+ and acceptance results with the repository's normal checks before delivery.
54
+ - On a nonzero exit, report the real routing or provider error. Do not bypass a
55
+ rejection, relax safety constraints, or silently choose a different tool.
56
+
57
+ ## Examples
58
+
59
+ ```bash
60
+ veto route --json --kind review --risk low "Review this proposed change"
61
+ veto run --quiet --kind summarize --risk low "Summarize the supplied text"
62
+ veto run --criteria "output is valid JSON,no secrets are present" \
63
+ "Produce the requested structured result"
64
+ veto exec plan.md --dry-run
65
+ ```
@@ -0,0 +1,64 @@
1
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
2
+
3
+ ---
4
+ inclusion: manual
5
+ description: "Use Veto to route or execute AI tasks across configured providers with explicit privacy, cost, transport, and output boundaries."
6
+ ---
7
+
8
+ # Veto routing
9
+
10
+ Use Veto as a model-selection and execution layer. It does not expand the
11
+ user's authorization, validate generated output, or guarantee quality or cost.
12
+
13
+ ## Before a model call
14
+
15
+ 1. Confirm the CLI is available with `command -v veto`. Inside the Veto source
16
+ checkout, `go run ./cmd/veto` is an acceptable fallback. Do not install it
17
+ automatically. When using the fallback, replace `veto` in the commands below
18
+ with `go run ./cmd/veto`.
19
+ 2. Inspect configured transports with `veto providers`. Never read, print, or
20
+ copy credential files from `~/.veto/`.
21
+ 3. Check whether the objective is safe to send to the configured providers. An
22
+ admission pass can disclose the objective to more than one provider. Stop
23
+ when sensitive data is present and provider authorization is unclear.
24
+ 4. Do not run `veto login`, change provider configuration, or incur an
25
+ unrequested model call.
26
+
27
+ ## Choose the smallest operation
28
+
29
+ - Selection only: use `veto route --json` and consume the single JSON result.
30
+ - Route and execute: use `veto run --quiet` only when the user asked for model
31
+ execution and the selected transport can perform the task.
32
+ - Quality gate: add `--criteria` when the user supplied concrete acceptance
33
+ criteria. A requested review fails closed.
34
+ - Multi-step plan: run `veto exec <plan.md> --dry-run` before execution. Execute
35
+ only steps already within the user's scope.
36
+
37
+ Set `--kind`, `--risk`, and `--max-cost` explicitly when the task provides those
38
+ constraints. Treat `--max-cost` as an estimated preflight ceiling, not a billing
39
+ guarantee. Do not retry the same paid route repeatedly. Interactive routing can
40
+ resume checkpoints after interruption; `route --json` intentionally starts
41
+ fresh, so rerun it only deliberately.
42
+
43
+ ## Preserve transport and output boundaries
44
+
45
+ - HTTP API and local OpenAI-compatible transports return text through Veto and
46
+ cannot inspect files or run shell commands. The Claude CLI transport is the
47
+ current executable-tool path.
48
+ - Keep generated content on stdout unless the user requested a file. Use an
49
+ explicit relative `--output` path, and use `--force` only when replacing that
50
+ exact file is authorized.
51
+ - Treat model responses as untrusted input. Validate claims, patches, commands,
52
+ and acceptance results with the repository's normal checks before delivery.
53
+ - On a nonzero exit, report the real routing or provider error. Do not bypass a
54
+ rejection, relax safety constraints, or silently choose a different tool.
55
+
56
+ ## Examples
57
+
58
+ ```bash
59
+ veto route --json --kind review --risk low "Review this proposed change"
60
+ veto run --quiet --kind summarize --risk low "Summarize the supplied text"
61
+ veto run --criteria "output is valid JSON,no secrets are present" \
62
+ "Produce the requested structured result"
63
+ veto exec plan.md --dry-run
64
+ ```
@@ -0,0 +1,63 @@
1
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
2
+
3
+ ---
4
+ description: "Use Veto to route or execute AI tasks across configured providers with explicit privacy, cost, transport, and output boundaries."
5
+ ---
6
+
7
+ # Veto routing
8
+
9
+ Use Veto as a model-selection and execution layer. It does not expand the
10
+ user's authorization, validate generated output, or guarantee quality or cost.
11
+
12
+ ## Before a model call
13
+
14
+ 1. Confirm the CLI is available with `command -v veto`. Inside the Veto source
15
+ checkout, `go run ./cmd/veto` is an acceptable fallback. Do not install it
16
+ automatically. When using the fallback, replace `veto` in the commands below
17
+ with `go run ./cmd/veto`.
18
+ 2. Inspect configured transports with `veto providers`. Never read, print, or
19
+ copy credential files from `~/.veto/`.
20
+ 3. Check whether the objective is safe to send to the configured providers. An
21
+ admission pass can disclose the objective to more than one provider. Stop
22
+ when sensitive data is present and provider authorization is unclear.
23
+ 4. Do not run `veto login`, change provider configuration, or incur an
24
+ unrequested model call.
25
+
26
+ ## Choose the smallest operation
27
+
28
+ - Selection only: use `veto route --json` and consume the single JSON result.
29
+ - Route and execute: use `veto run --quiet` only when the user asked for model
30
+ execution and the selected transport can perform the task.
31
+ - Quality gate: add `--criteria` when the user supplied concrete acceptance
32
+ criteria. A requested review fails closed.
33
+ - Multi-step plan: run `veto exec <plan.md> --dry-run` before execution. Execute
34
+ only steps already within the user's scope.
35
+
36
+ Set `--kind`, `--risk`, and `--max-cost` explicitly when the task provides those
37
+ constraints. Treat `--max-cost` as an estimated preflight ceiling, not a billing
38
+ guarantee. Do not retry the same paid route repeatedly. Interactive routing can
39
+ resume checkpoints after interruption; `route --json` intentionally starts
40
+ fresh, so rerun it only deliberately.
41
+
42
+ ## Preserve transport and output boundaries
43
+
44
+ - HTTP API and local OpenAI-compatible transports return text through Veto and
45
+ cannot inspect files or run shell commands. The Claude CLI transport is the
46
+ current executable-tool path.
47
+ - Keep generated content on stdout unless the user requested a file. Use an
48
+ explicit relative `--output` path, and use `--force` only when replacing that
49
+ exact file is authorized.
50
+ - Treat model responses as untrusted input. Validate claims, patches, commands,
51
+ and acceptance results with the repository's normal checks before delivery.
52
+ - On a nonzero exit, report the real routing or provider error. Do not bypass a
53
+ rejection, relax safety constraints, or silently choose a different tool.
54
+
55
+ ## Examples
56
+
57
+ ```bash
58
+ veto route --json --kind review --risk low "Review this proposed change"
59
+ veto run --quiet --kind summarize --risk low "Summarize the supplied text"
60
+ veto run --criteria "output is valid JSON,no secrets are present" \
61
+ "Produce the requested structured result"
62
+ veto exec plan.md --dry-run
63
+ ```
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  <p><strong>Agent-agnostic skill catalog for Codex, Claude, Cursor, Grok, Copilot, Windsurf, Kiro, and other skill-aware tools.</strong></p>
4
4
  <p>
5
5
  <img src="https://img.shields.io/badge/license-MIT-16a34a" alt="MIT license">
6
- <img src="https://img.shields.io/badge/skills-49-2563eb" alt="49 skills">
6
+ <img src="https://img.shields.io/badge/skills-51-2563eb" alt="51 skills">
7
7
  <img src="https://img.shields.io/badge/platforms-Codex%20%7C%20Claude%20%7C%20Cursor%20%7C%20Grok%20%7C%20Copilot%20%7C%20Windsurf%20%7C%20Kiro-111827" alt="Codex Claude Cursor Grok Copilot Windsurf Kiro">
8
8
  <img src="https://img.shields.io/badge/status-public%20catalog-16a34a" alt="Public catalog">
9
9
  </p>
@@ -229,7 +229,7 @@ Take a product idea to a shippable build: MVP passes, full-stack scaffolds, laun
229
229
  | [starter-rules](plugins/olko-product/skills/starter-rules/SKILL.md) | Loads and enforces hard rules for every oleg-koval/* starter | Ensuring 300-line files, E2E tests, pre-commit hooks, Vertical Slice architecture, and KISS/DRY/SOLID |
230
230
  | [viral-launch](plugins/olko-product/skills/viral-launch/SKILL.md) | Sets up a project repository and launch plan for shareable marketing, public launch readiness, and growth loops | Preparing a repo, product, open-source package, or creator tool for public launch |
231
231
 
232
- ### olko-skill-meta (7)
232
+ ### olko-skill-meta (8)
233
233
 
234
234
  Author and maintain agent skills and the AI toolchain itself.
235
235
 
@@ -239,6 +239,7 @@ Author and maintain agent skills and the AI toolchain itself.
239
239
  | [add-to-my-skills](plugins/olko-skill-meta/skills/add-to-my-skills/SKILL.md) | Copies a newly created skill from another repo into this catalog, refreshes the README and generated manifests, then commits and pushes | Adding a skill you wrote elsewhere into this catalog |
240
240
  | [skill-budget-audit](plugins/olko-skill-meta/skills/skill-budget-audit/SKILL.md) | Diagnoses and fixes Claude Code's skill context budget overflow, identifies heavy plugin bundles that exceed the 2% budget | Skills failing to load or Claude hitting context limits from plugin bundles |
241
241
  | [promptctl](plugins/olko-skill-meta/skills/promptctl/SKILL.md) | Uses `promptctl` for reusable prompt templates, scoring, and workflow automation | A project needs prompt conventions, review, scoring, or reusable prompt workflows |
242
+ | [veto-routing](plugins/olko-skill-meta/skills/veto-routing/SKILL.md) | Routes or executes AI tasks through Veto across configured providers while preserving privacy, cost, transport, and output boundaries | A task needs cost-aware multi-provider model selection, execution, fallback, or a machine-readable routing decision |
242
243
  | [ai-tools-setup](plugins/olko-skill-meta/skills/ai-tools-setup/SKILL.md) | Sets up, repairs, and reports on the RTK + ICM + Vox AI development toolkit, installs missing tools, fixes broken hooks and MCP config | Bootstrapping AI dev tools on a new machine or diagnosing broken integrations |
243
244
  | [relay](plugins/olko-skill-meta/skills/relay/SKILL.md) | Uses `claude-relay` to run long or rate-limit-prone tasks autonomously across subscription accounts | A task will outlive one session or hit rate limits partway through |
244
245
  | [shared-knowledge-artifact](plugins/olko-skill-meta/skills/shared-knowledge-artifact/SKILL.md) | Builds a shared, self-persisting knowledge ledger as a Claude Artifact, a private page that stores its own data, renders itself from it, and publishes new versions of itself so several agents read the same lessons and append to them | Giving multiple agents one place to learn from each other instead of repeating the same mistakes |
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: veto-routing
3
+ description: Use the Veto CLI to select or execute AI models when a task needs multi-provider routing, structured accept or reject decisions, cost-aware dispatch, provider fallback, or Veto plan execution. Do not use for ordinary repository commands or generic model advice.
4
+ license: MIT
5
+ allowed-tools: Bash, Read
6
+ compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires Veto to be installed or run from its source checkout.
7
+ metadata:
8
+ targets: [_source-only]
9
+ author: Oleg Koval
10
+ tags:
11
+ - veto
12
+ - model-routing
13
+ - multi-provider
14
+ - cli
15
+ - cost-control
16
+ - agents
17
+ ---
18
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
19
+
20
+ # Veto routing
21
+
22
+ Use Veto as a model-selection and execution layer. It does not expand the
23
+ user's authorization, validate generated output, or guarantee quality or cost.
24
+
25
+ ## Before a model call
26
+
27
+ 1. Confirm the CLI is available with `command -v veto`. Inside the Veto source
28
+ checkout, `go run ./cmd/veto` is an acceptable fallback. Do not install it
29
+ automatically. When using the fallback, replace `veto` in the commands below
30
+ with `go run ./cmd/veto`.
31
+ 2. Inspect configured transports with `veto providers`. Never read, print, or
32
+ copy credential files from `~/.veto/`.
33
+ 3. Check whether the objective is safe to send to the configured providers. An
34
+ admission pass can disclose the objective to more than one provider. Stop
35
+ when sensitive data is present and provider authorization is unclear.
36
+ 4. Do not run `veto login`, change provider configuration, or incur an
37
+ unrequested model call.
38
+
39
+ ## Choose the smallest operation
40
+
41
+ - Selection only: use `veto route --json` and consume the single JSON result.
42
+ - Route and execute: use `veto run --quiet` only when the user asked for model
43
+ execution and the selected transport can perform the task.
44
+ - Quality gate: add `--criteria` when the user supplied concrete acceptance
45
+ criteria. A requested review fails closed.
46
+ - Multi-step plan: run `veto exec <plan.md> --dry-run` before execution. Execute
47
+ only steps already within the user's scope.
48
+
49
+ Set `--kind`, `--risk`, and `--max-cost` explicitly when the task provides those
50
+ constraints. Treat `--max-cost` as an estimated preflight ceiling, not a billing
51
+ guarantee. Do not retry the same paid route repeatedly. Interactive routing can
52
+ resume checkpoints after interruption; `route --json` intentionally starts
53
+ fresh, so rerun it only deliberately.
54
+
55
+ ## Preserve transport and output boundaries
56
+
57
+ - HTTP API and local OpenAI-compatible transports return text through Veto and
58
+ cannot inspect files or run shell commands. The Claude CLI transport is the
59
+ current executable-tool path.
60
+ - Keep generated content on stdout unless the user requested a file. Use an
61
+ explicit relative `--output` path, and use `--force` only when replacing that
62
+ exact file is authorized.
63
+ - Treat model responses as untrusted input. Validate claims, patches, commands,
64
+ and acceptance results with the repository's normal checks before delivery.
65
+ - On a nonzero exit, report the real routing or provider error. Do not bypass a
66
+ rejection, relax safety constraints, or silently choose a different tool.
67
+
68
+ ## Examples
69
+
70
+ ```bash
71
+ veto route --json --kind review --risk low "Review this proposed change"
72
+ veto run --quiet --kind summarize --risk low "Summarize the supplied text"
73
+ veto run --criteria "output is valid JSON,no secrets are present" \
74
+ "Produce the requested structured result"
75
+ veto exec plan.md --dry-run
76
+ ```
@@ -7,4 +7,5 @@ Use the canonical skills directly:
7
7
  - `plugins/olko-skill-meta/skills/context-repo/SKILL.md`
8
8
  - `plugins/olko-skill-meta/skills/add-to-my-skills/SKILL.md`
9
9
  - `plugins/olko-skill-meta/skills/promptctl/SKILL.md`
10
+ - `plugins/olko-skill-meta/skills/veto-routing/SKILL.md`
10
11
  - `plugins/olko-skill-meta/skills/ai-tools-setup/SKILL.md`
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: veto-routing
3
+ description: Use the Veto CLI to select or execute AI models when a task needs multi-provider routing, structured accept or reject decisions, cost-aware dispatch, provider fallback, or Veto plan execution. Do not use for ordinary repository commands or generic model advice.
4
+ license: MIT
5
+ allowed-tools: Bash, Read
6
+ compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires Veto to be installed or run from its source checkout.
7
+ metadata:
8
+ targets: [_source-only]
9
+ author: Oleg Koval
10
+ tags:
11
+ - veto
12
+ - model-routing
13
+ - multi-provider
14
+ - cli
15
+ - cost-control
16
+ - agents
17
+ ---
18
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
19
+
20
+ # Veto routing
21
+
22
+ Use Veto as a model-selection and execution layer. It does not expand the
23
+ user's authorization, validate generated output, or guarantee quality or cost.
24
+
25
+ ## Before a model call
26
+
27
+ 1. Confirm the CLI is available with `command -v veto`. Inside the Veto source
28
+ checkout, `go run ./cmd/veto` is an acceptable fallback. Do not install it
29
+ automatically. When using the fallback, replace `veto` in the commands below
30
+ with `go run ./cmd/veto`.
31
+ 2. Inspect configured transports with `veto providers`. Never read, print, or
32
+ copy credential files from `~/.veto/`.
33
+ 3. Check whether the objective is safe to send to the configured providers. An
34
+ admission pass can disclose the objective to more than one provider. Stop
35
+ when sensitive data is present and provider authorization is unclear.
36
+ 4. Do not run `veto login`, change provider configuration, or incur an
37
+ unrequested model call.
38
+
39
+ ## Choose the smallest operation
40
+
41
+ - Selection only: use `veto route --json` and consume the single JSON result.
42
+ - Route and execute: use `veto run --quiet` only when the user asked for model
43
+ execution and the selected transport can perform the task.
44
+ - Quality gate: add `--criteria` when the user supplied concrete acceptance
45
+ criteria. A requested review fails closed.
46
+ - Multi-step plan: run `veto exec <plan.md> --dry-run` before execution. Execute
47
+ only steps already within the user's scope.
48
+
49
+ Set `--kind`, `--risk`, and `--max-cost` explicitly when the task provides those
50
+ constraints. Treat `--max-cost` as an estimated preflight ceiling, not a billing
51
+ guarantee. Do not retry the same paid route repeatedly. Interactive routing can
52
+ resume checkpoints after interruption; `route --json` intentionally starts
53
+ fresh, so rerun it only deliberately.
54
+
55
+ ## Preserve transport and output boundaries
56
+
57
+ - HTTP API and local OpenAI-compatible transports return text through Veto and
58
+ cannot inspect files or run shell commands. The Claude CLI transport is the
59
+ current executable-tool path.
60
+ - Keep generated content on stdout unless the user requested a file. Use an
61
+ explicit relative `--output` path, and use `--force` only when replacing that
62
+ exact file is authorized.
63
+ - Treat model responses as untrusted input. Validate claims, patches, commands,
64
+ and acceptance results with the repository's normal checks before delivery.
65
+ - On a nonzero exit, report the real routing or provider error. Do not bypass a
66
+ rejection, relax safety constraints, or silently choose a different tool.
67
+
68
+ ## Examples
69
+
70
+ ```bash
71
+ veto route --json --kind review --risk low "Review this proposed change"
72
+ veto run --quiet --kind summarize --risk low "Summarize the supplied text"
73
+ veto run --criteria "output is valid JSON,no secrets are present" \
74
+ "Produce the requested structured result"
75
+ veto exec plan.md --dry-run
76
+ ```
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: veto-routing
3
+ description: Use the Veto CLI to select or execute AI models when a task needs multi-provider routing, structured accept or reject decisions, cost-aware dispatch, provider fallback, or Veto plan execution. Do not use for ordinary repository commands or generic model advice.
4
+ license: MIT
5
+ allowed-tools: Bash, Read
6
+ compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires Veto to be installed or run from its source checkout.
7
+ metadata:
8
+ targets: [_source-only]
9
+ author: Oleg Koval
10
+ tags:
11
+ - veto
12
+ - model-routing
13
+ - multi-provider
14
+ - cli
15
+ - cost-control
16
+ - agents
17
+ ---
18
+ <!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
19
+
20
+ # Veto routing
21
+
22
+ Use Veto as a model-selection and execution layer. It does not expand the
23
+ user's authorization, validate generated output, or guarantee quality or cost.
24
+
25
+ ## Before a model call
26
+
27
+ 1. Confirm the CLI is available with `command -v veto`. Inside the Veto source
28
+ checkout, `go run ./cmd/veto` is an acceptable fallback. Do not install it
29
+ automatically. When using the fallback, replace `veto` in the commands below
30
+ with `go run ./cmd/veto`.
31
+ 2. Inspect configured transports with `veto providers`. Never read, print, or
32
+ copy credential files from `~/.veto/`.
33
+ 3. Check whether the objective is safe to send to the configured providers. An
34
+ admission pass can disclose the objective to more than one provider. Stop
35
+ when sensitive data is present and provider authorization is unclear.
36
+ 4. Do not run `veto login`, change provider configuration, or incur an
37
+ unrequested model call.
38
+
39
+ ## Choose the smallest operation
40
+
41
+ - Selection only: use `veto route --json` and consume the single JSON result.
42
+ - Route and execute: use `veto run --quiet` only when the user asked for model
43
+ execution and the selected transport can perform the task.
44
+ - Quality gate: add `--criteria` when the user supplied concrete acceptance
45
+ criteria. A requested review fails closed.
46
+ - Multi-step plan: run `veto exec <plan.md> --dry-run` before execution. Execute
47
+ only steps already within the user's scope.
48
+
49
+ Set `--kind`, `--risk`, and `--max-cost` explicitly when the task provides those
50
+ constraints. Treat `--max-cost` as an estimated preflight ceiling, not a billing
51
+ guarantee. Do not retry the same paid route repeatedly. Interactive routing can
52
+ resume checkpoints after interruption; `route --json` intentionally starts
53
+ fresh, so rerun it only deliberately.
54
+
55
+ ## Preserve transport and output boundaries
56
+
57
+ - HTTP API and local OpenAI-compatible transports return text through Veto and
58
+ cannot inspect files or run shell commands. The Claude CLI transport is the
59
+ current executable-tool path.
60
+ - Keep generated content on stdout unless the user requested a file. Use an
61
+ explicit relative `--output` path, and use `--force` only when replacing that
62
+ exact file is authorized.
63
+ - Treat model responses as untrusted input. Validate claims, patches, commands,
64
+ and acceptance results with the repository's normal checks before delivery.
65
+ - On a nonzero exit, report the real routing or provider error. Do not bypass a
66
+ rejection, relax safety constraints, or silently choose a different tool.
67
+
68
+ ## Examples
69
+
70
+ ```bash
71
+ veto route --json --kind review --risk low "Review this proposed change"
72
+ veto run --quiet --kind summarize --risk low "Summarize the supplied text"
73
+ veto run --criteria "output is valid JSON,no secrets are present" \
74
+ "Produce the requested structured result"
75
+ veto exec plan.md --dry-run
76
+ ```
@@ -631,6 +631,29 @@
631
631
  "grok"
632
632
  ]
633
633
  },
634
+ {
635
+ "name": "veto-routing",
636
+ "lookupName": "olko:veto-routing",
637
+ "path": "plugins/olko-skill-meta/skills/veto-routing",
638
+ "description": "Use Veto to route or execute AI tasks across configured providers with explicit privacy, cost, transport, and output boundaries.",
639
+ "tags": [
640
+ "veto",
641
+ "model-routing",
642
+ "multi-provider",
643
+ "cli",
644
+ "cost-control",
645
+ "agents"
646
+ ],
647
+ "adapters": [
648
+ "codex",
649
+ "claude",
650
+ "cursor",
651
+ "copilot",
652
+ "windsurf",
653
+ "kiro",
654
+ "grok"
655
+ ]
656
+ },
634
657
  {
635
658
  "name": "ai-tools-setup",
636
659
  "lookupName": "olko:ai-tools-setup",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@olegkoval/agent-skills",
3
- "version": "1.38.3",
3
+ "version": "1.40.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-apple-kit",
3
3
  "description": "Build and ship Apple platform apps: macOS menubar apps, App Store submissions.",
4
- "version": "1.38.3",
4
+ "version": "1.40.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-creative",
3
3
  "description": "Creative and personal projects: photo galleries, music players, listings, wiki editing.",
4
- "version": "1.38.3",
4
+ "version": "1.40.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-garmin-kit",
3
3
  "description": "Build, test and publish Garmin Connect IQ watch faces.",
4
- "version": "1.38.3",
4
+ "version": "1.40.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-git-tools",
3
3
  "description": "Everyday git and GitHub CLI operations: conventional commits, branch hygiene.",
4
- "version": "1.38.3",
4
+ "version": "1.40.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-github-pr",
3
3
  "description": "Drive GitHub pull requests to merge-ready: review-bot loops, CI fixes, descriptions, dependency triage.",
4
- "version": "1.38.3",
4
+ "version": "1.40.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-obsidian",
3
3
  "description": "Keep an Obsidian vault in sync with work: PR sync, task rollover, morning routine.",
4
- "version": "1.38.3",
4
+ "version": "1.40.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-product",
3
3
  "description": "Take a product idea to a shippable build: MVP passes, full-stack scaffolds, launch plans.",
4
- "version": "1.38.3",
4
+ "version": "1.40.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-reflection",
3
3
  "description": "Look back and improve: self-critique, retrospectives, performance review, rapid learning.",
4
- "version": "1.38.3",
4
+ "version": "1.40.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-release",
3
3
  "description": "Ship a release: semantic-release setup, changelogs, store listing copy, release-day routine.",
4
- "version": "1.38.3",
4
+ "version": "1.40.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-skill-meta",
3
3
  "description": "Author and maintain agent skills and the AI toolchain itself.",
4
- "version": "1.38.3",
4
+ "version": "1.40.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },