From genesis-tools
Use for saving and replaying multi-step GenesisTools CLI workflows as named presets. Triggers when the user wants to bundle a sequence of `tools` commands into a reusable automation they can run with one command — for example: chaining tools like `collect-files-for-ai`, `github`, `azure-devops`, or `json` into a repeatable workflow. Also triggers when running a previously saved preset by name (e.g. "run the db-backup preset"). Does NOT trigger for: browser automation, bash scripting, Makefile/CI setup, or general task scheduling.
How this skill is triggered — by the user, by Claude, or both
Slash command
/genesis-tools:automateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create and run reusable automation presets that chain GenesisTools commands.
Create and run reusable automation presets that chain GenesisTools commands.
| Task | Command |
|---|---|
| Run a preset | tools automate run <name-or-path> |
| Run with overrides | tools automate run <name> --var startDate=2026-02-01 |
| Dry run (preview) | tools automate run <name> --dry-run |
| List presets | tools automate list |
| Show preset details | tools automate show <name> |
| Create interactively | tools automate create |
When a user wants to create an automation, help them build the JSON preset:
~/.genesis-tools/automate/presets/<name>.json{
"$schema": "genesis-tools-preset-v1",
"name": "Preset Name",
"description": "What this preset does",
"trigger": { "type": "manual" },
"vars": {
"varName": {
"type": "string",
"description": "Human description",
"default": "value",
"required": true
}
},
"steps": [
{
"id": "unique-step-id",
"name": "Human-readable name",
"action": "github search",
"params": {
"query": "search term",
"--repo": "owner/repo",
"--format": "json"
},
"output": "resultVar",
"onError": "stop",
"interactive": false
}
]
}
"string" -- text values"number" -- numeric values"boolean" -- true/falseonError)"stop" (default) -- halt execution on failure"continue" -- log error and proceed to next step"skip" -- silently skip and proceedExpressions use {{ }} delimiters and are resolved at runtime:
| Expression | Purpose | Example |
|---|---|---|
{{ vars.name }} | Reference a preset variable | {{ vars.startDate }} |
{{ steps.id.output }} | Previous step's full output | {{ steps.search.output }} |
{{ steps.id.output.field }} | Nested output field | {{ steps.search.output.count }} |
{{ env.HOME }} | Environment variable | {{ env.USER }} |
{{ expr > 0 }} | Boolean expression | {{ steps.x.output.count > 0 }} |
When the entire value is a single expression, the raw type is preserved (boolean, number, object). When expressions are embedded in a larger string, they are interpolated as strings.
| Action | Purpose | Key Params |
|---|---|---|
if | Conditional branch | condition (required), then, else (step IDs to jump to) |
log | Print a message | message |
prompt | Ask user for input | message, default |
shell | Run a raw shell command | command (required), cwd (optional) |
set | Set variables in context | Any key=value pairs in params |
The action field maps directly to tools <action>:
"action": "github search" => runs tools github search"action": "collect-files-for-ai" => runs tools collect-files-for-ai"action": "azure-devops workitem" => runs tools azure-devops workitem-- or - become CLI flagstrue includes the flag, false omits it{
"$schema": "genesis-tools-preset-v1",
"name": "Hello Automate",
"trigger": { "type": "manual" },
"vars": {
"name": { "type": "string", "description": "Your name", "default": "World" }
},
"steps": [
{ "id": "greet", "name": "Say hello", "action": "log", "params": { "message": "Hello, {{ vars.name }}!" } },
{ "id": "date", "name": "Get date", "action": "shell", "params": { "command": "date '+%Y-%m-%d'" }, "output": "currentDate" },
{ "id": "done", "name": "Summary", "action": "log", "params": { "message": "Done at {{ steps.date.output }}" } }
]
}
{
"$schema": "genesis-tools-preset-v1",
"name": "Monthly Invoice Search",
"trigger": { "type": "manual" },
"vars": {
"startDate": { "type": "string", "description": "Start date", "default": "2026-01-01" }
},
"steps": [
{ "id": "search", "name": "Search Mail", "action": "macos-mail search", "params": { "query": "invoice", "--from": "{{ vars.startDate }}", "--format": "json" }, "output": "results" },
{ "id": "check", "name": "Has results?", "action": "if", "condition": "{{ steps.search.output.count > 0 }}", "then": "download", "else": "empty" },
{ "id": "download", "name": "Download", "action": "macos-mail download", "params": { "--ids": "{{ steps.search.output.ids }}" } },
{ "id": "empty", "name": "No results", "action": "log", "params": { "message": "Nothing found." } }
]
}
# By name (looks in ~/.genesis-tools/automate/presets/)
tools automate run monthly-invoice-search
# By file path
tools automate run ./my-preset.json
# With variable overrides
tools automate run monthly-invoice-search --var startDate=2026-02-01 --var outputDir=/tmp/invoices
# Dry run (shows what would execute without running)
tools automate run monthly-invoice-search --dry-run
~/.genesis-tools/automate/presets/*.json~/.genesis-tools/automate/config.jsonnpx claudepluginhub genesiscz/genesistools --plugin genesis-toolsAutomates tasks with cron jobs, webhooks, GitHub Actions, Makefiles, Taskfiles, scripts, and CI/CD pipelines. Adds error handling, locks, idempotency, dry-runs, and logging to existing or new setups.
Lists, views, executes, and customizes .flow workflow templates from project, global, and built-in locations for TDD, debugging, UI refinement, and other automation scenarios.
Interactive wizard that generates or updates the Automation Config block in CLAUDE.md, with template support for popular stacks and version-aware migration.