# Vault Action TOML Schema This document defines the schema for vault action TOML files used in the PR-based approval workflow (issue #74). ## File Location Vault actions are stored in `vault/actions/.toml` on the ops repo. ## Schema Definition ```toml # Required id = "publish-skill-20260331" formula = "clawhub-publish" context = "SKILL.md bumped to 0.3.0" # Required secrets to inject secrets = ["CLAWHUB_TOKEN"] # Optional model = "sonnet" tools = ["clawhub"] timeout_minutes = 30 ``` ## Field Specifications ### Required Fields | Field | Type | Description | |-------|------|-------------| | `id` | string | Unique identifier for the vault action. Format: `-` (e.g., `publish-skill-20260331`) | | `formula` | string | Formula name from `formulas/` directory that defines the operational task to execute | | `context` | string | Human-readable explanation of why this action is needed. Used in PR description | | `secrets` | array of strings | List of secret names to inject into the execution environment. Only these secrets are passed to the container | ### Optional Fields | Field | Type | Default | Description | |-------|------|---------|-------------| | `model` | string | `sonnet` | Override the default Claude model for this action | | `tools` | array of strings | `[]` | MCP tools to enable during execution | | `timeout_minutes` | integer | `60` | Maximum execution time in minutes | ## Secret Names Secret names must be defined in `.env.vault.enc` on the ops repo. The vault validates that requested secrets exist in the allowlist before execution. Common secret names: - `CLAWHUB_TOKEN` - Token for ClawHub skill publishing - `GITHUB_TOKEN` - GitHub API token for repository operations - `DEPLOY_KEY` - Infrastructure deployment key ## Validation Rules 1. **Required fields**: `id`, `formula`, `context`, and `secrets` must be present 2. **Formula validation**: The formula must exist in the `formulas/` directory 3. **Secret validation**: All secrets in the `secrets` array must be in the allowlist 4. **No unknown fields**: The TOML must not contain fields outside the schema 5. **ID uniqueness**: The `id` must be unique across all vault actions ## Example Files See `vault/examples/` for complete examples: - `webhook-call.toml` - Example of calling an external webhook - `promote.toml` - Example of promoting a build/artifact - `publish.toml` - Example of publishing a skill to ClawHub ## Usage Validate a vault action file: ```bash ./vault/validate.sh vault/actions/.toml ``` The validator will check: - All required fields are present - Secret names are in the allowlist - No unknown fields are present - Formula exists in the formulas directory