Workflows
A workflow capability declares a reusable pattern. It lists which skills, tools, and hooks should be installed together to support a specific workflow (e.g., “test-first Rust development”).
Workflows don’t execute anything. They are declarative bundles that surface a checklist of required capabilities. The harness (Codex, Claude, etc.) reads the workflow definition and activates the listed capabilities together.
Manifest
Section titled “Manifest”id = "release-prep"version = "1.0.0"type = "workflow"description = "Pre-release checks and validation steps before cutting a release."
[[workflow.requires]]id = "python-uv-default"type = "skill"
[[workflow.requires]]id = "security-review"type = "tool"
[[workflow.requires]]id = "pre-commit-lint"type = "hook"| Field | Required | Description |
|---|---|---|
id | Yes | Stable identifier |
version | Yes | Semantic version |
type | Yes | Must be "workflow" |
description | Yes | What this workflow enables |
[[workflow.requires]] | Yes | At least one required capability |
Each [[workflow.requires]] entry must have:
| Field | Required | Description |
|---|---|---|
id | Yes | The capability to depend on. Cannot be the workflow’s own id. |
type | Yes | "skill", "tool", or "hook" |
Installing a workflow
Section titled “Installing a workflow”$ tuff add workflow ./release-prep --agent open-agentsnote: workflow 'release-prep' requires 3 capabilities: - python-uv-default (skill) - security-review (tool) - pre-commit-lint (hook)installed release-prep (open-agents) -> .agents/workflows/release-prep/workflow.tomlWorkflows install themselves but do not auto-install dependencies. Install the required
capabilities separately, or use tuff add <capability-type> <path> --agent <agent> if they already exist in your
project.
Validation
Section titled “Validation”At install time, Tuff validates:
requireshas at least one entry- No duplicate requirement ids
- No self-reference (workflow cannot require itself)
- All requirement ids are non-empty
Where files go
Section titled “Where files go”| Target | Workflow directory |
|---|---|
open-agents | .agents/workflows/<id>/workflow.toml |
claude | .claude/workflows/<id>/workflow.toml |
tuff status for workflows
Section titled “tuff status for workflows”Shows the workflow and each required capability with its drift status:
release-prep project clean ├─ python-uv-default skill clean ├─ security-review tool modified └─ pre-commit-lint hook missingCapabilities that aren’t installed show missing. Installed capabilities show
their actual drift status (clean, modified).
Lifecycle
Section titled “Lifecycle”Workflows participate in the full Tuff lifecycle: tuff list, tuff diff,
tuff check, tuff delete, tuff untrack, and tuff outdated all work.
Example: feature-build workflow
Section titled “Example: feature-build workflow”# 1. Create the workflowmkdir feature-buildcat > feature-build/tuff.toml << 'EOF'id = "feature-build"version = "1.0.0"type = "workflow"description = "Full feature development cycle with testing, linting, and security review."
[[workflow.requires]]id = "rust-implement"type = "skill"
[[workflow.requires]]id = "rust-write-tests"type = "skill"
[[workflow.requires]]id = "pre-commit-lint"type = "hook"
[[workflow.requires]]id = "security-review"type = "tool"EOF
# 2. Install the workflowtuff add workflow ./feature-build --agent open-agents
# 3. Install the required capabilitiestuff add skill https://github.com/pproenca/dot-skills rust-implement --agent open-agentstuff add skill https://github.com/pproenca/dot-skills rust-write-tests --agent open-agentstuff add hook examples/hooks/pre-commit-lint --agent open-agentstuff add tool examples/tools/security-review --agent open-agents
# 4. Check statustuff status