Agent skill

Tool Design Execution

by hashgraph-online in hashgraph-online/awesome-codex-plugins

Design how an agent tool runs: sync or async job, idempotency, timeouts, transactions, and compensation.

Apache-2.0Auto-check passed

Install Tool Design Execution

skills CLI
$ npx skills add hashgraph-online/awesome-codex-plugins --skill tool-design-execution -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install hashgraph-online/awesome-codex-plugins tool-design-execution --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/runtypelabs/skills/skills/tool-design-execution .claude/skills/tool-design-execution && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
tool-design-execution
GitHub stars
1.2k
Token cost
~2.7k tokens
SKILL.md length
1,468 words
Files
2
Skills in repo
686
Repo updated
First seen
Licence
Apache-2.0

At a glance

Design how an agent tool runs: sync or async job, idempotency, timeouts, transactions, and compensation.

  • Works in 6 steps: Measure or estimate the wall-clock time… → Pick the access pattern: synchronous for… → For every command tool, decide the retry… → …
  • Has side effects that a retry could duplicate
  • SKILL.md covers Procedure, Rules with examples, Anti-patterns and On Runtype
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Tool Design Execution is an agent skill from hashgraph-online/awesome-codex-plugins. Design how an agent tool runs: sync or async job, idempotency, timeouts, transactions, and compensation. Use when a tool is slow, has side effects that a retry could duplicate, or spans several systems.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).

The repository describes itself as: A curated list of awesome OpenAI Codex / ChatGPT plugins, skills, and resources. The 1 Codex Marketplace. See live plugins at: https://hol.org/plugins/best-codex-plugins. The licence is Apache-2.0.

When your agent uses it

  • Has side effects that a retry could duplicate
  • Spans several systems

Example prompts

  • “/tool-design-execution”

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Measure or estimate the wall-clock time of the operation: typical (p50) and
  2. Pick the access pattern: synchronous for bounded seconds, async job for minutes,
  3. For every command tool, decide the retry story: natural idempotency, an
  4. For every multi-step command, decide the consistency story: a real transaction
  5. Set the timeout and decide what a timeout returns.
  6. Verify: call the tool with a slow or failing input. Confirm that the timeout

What it can do on your machine

Read from SKILL.md and the folder at commit 78497e5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Tool Design Execution loads about 2.7k tokens when it runs. Until then it costs about 56 tokens; SKILL.md has 1,468 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~56
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from hashgraph-online/awesome-codex-plugins at commit 78497e5, republished under its Apache-2.0 licence (© hashgraph-online). 1,468 words, ~2,700 tokens.

Download SKILL.mdSave it as .claude/skills/tool-design-execution/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
tool-design-execution
description
Design how an agent tool runs: sync or async job, idempotency, timeouts, transactions, and compensation. Use when a tool is slow, has side effects that a retry could duplicate, or spans several systems.
user-invocable
true
argument-hint
[tool whose execution semantics to design]

Tool Execution Design

Agents retry. They retry on timeouts, on ambiguous errors, and sometimes on nothing at all. Execution design makes that safe: bounded time, safe repetition, and consistent state when a multi-step operation fails halfway.

Procedure

  1. Measure or estimate the wall-clock time of the operation: typical (p50) and worst case (p99).
  2. Pick the access pattern: synchronous for bounded seconds, async job for minutes, streaming when partial output is useful as it arrives, event-driven when the tool notifies rather than answers.
  3. For every command tool, decide the retry story: natural idempotency, an idempotency key, or a documented "not safe to retry" with a confirmation gate.
  4. For every multi-step command, decide the consistency story: a real transaction where one system owns all steps, or compensation where several systems do.
  5. Set the timeout and decide what a timeout returns.
  6. Verify: call the tool with a slow or failing input. Confirm that the timeout error names the limit and the async alternative, and that a second identical call changes nothing.

Rules with examples

Default to synchronous, and bound it (Synchronous Execution)

Most tools return in the same call within seconds. Set an explicit timeout in the tool definition, keep the description honest ("returns immediately"), and use the async pattern only when the operation takes minutes.

Long work returns a job handle (Async Job)

One tool starts the job and returns immediately. Sibling tools poll and fetch:

json
{
  "jobId": "job_42",
  "status": "queued",
  "estimatedMinutes": 5,
  "nextAction": { "tool": "check_job_status", "args": { "jobId": "job_42" }, "afterSeconds": 30 }
}
  • start_* returns the id, an estimate, and the names of the status and result tools.
  • check_job_status(jobId) returns queued | running | succeeded | failed plus progress when available.
  • get_job_result(jobId) returns the shaped result. Add cancel_job(jobId) when the work is cancellable.
  • The start tool's description says the operation is long and names the polling tool, so the agent does not wait on the first call.
Retries must be harmless (Idempotent Operation)

Query tools are idempotent by nature. Command tools need one of:

  • Natural key: create_order(orderId=...) where the caller's id makes the second call a no-op that returns the first result.
  • Idempotency key: an explicit idempotencyKey parameter. The tool stores the first result under that key for a documented window and returns it on repeat.
  • Deduplication: detect an equivalent recent call and return its result.

Document the guarantee in the description ("Safe to retry: repeated calls with the same idempotencyKey return the original payment"). Never let a retry create a second payment, message, or ticket.

All or nothing where one system owns the data (Transactional Boundary)

When every step touches one database, wrap them in a transaction. Keep the transaction short, and state in the description what is inside it ("Either both accounts are updated or neither is").

Undo in reverse where systems are separate (Compensation Handler)

Cross-system operations cannot roll back atomically. Track each completed step, define a compensating action for each, and run them in reverse order on failure:

text
create_account   -> compensate: delete_account
setup_billing    -> compensate: cancel_billing
grant_access     -> compensate: revoke_access

Log every compensation. Say which steps may not be fully reversible (a sent email is not un-sent) and surface that in the result. For slow undos, compensate asynchronously and return a job handle.

Time limits are explicit (Timeout Boundary)

Every tool that calls an external service has a maximum execution time. On timeout, clean up, return partial results if any exist, and return a retryable error (see the error classes in tool-design-errors) that names the limit and, when one exists, the async alternative. Log timeouts. A rising timeout rate is the signal to convert the tool to an async job.

Streaming and events

Streaming suits tools whose partial output is useful before completion (search results arriving, a document being generated). Event-driven tools push when something happens and belong behind a subscription tool plus a webhook or queue, not a blocking call. Both still need the timeout and idempotency decisions above.

Anti-patterns

  • A 45-second report generator exposed as a synchronous tool.
  • A create_* command with no idempotency story and no confirmation gate.
  • Multi-step provisioning that leaves the account created and billing missing with no compensation and no partial-success report.
  • A timeout that surfaces as a generic failure with no partial result and no "try the async variant" hint.
  • A polling tool with no nextAction and no interval, so the agent polls in a tight loop.
Show full SKILL.md (781 more words)Show less

On Runtype

  • Read the platform guides first. get_platform_documentation(topic="operational-design") covers retries, idempotency, and choosing an execution mode. topic="limits" lists every time budget, and topic="subagent-delegation" covers detached subagents.

  • Tool time limits. An external (HTTP) tool call is capped at 30 s. A custom tool defined inline in a dispatch request is rejected when its config.timeout is above 30000 ms. The Timeout (ms) field on a saved custom tool accepts up to 300000 ms. An MCP server timeout can be up to 300000 ms, but a call that holds the original request open is clamped to 30 s.

  • Run budgets. A flow step gets 5 minutes by default and a flow 15 minutes. options.stepTimeoutMs goes up to 10 minutes and options.flowTimeoutMs up to 15 minutes. For a flow started with async: true (Prefer: respond-async over REST), both go up to 30 minutes. An execute-agent step gets only 30 s unless you raise its config.timeout, and that value is nested inside the step budget. One agent turn gets 5 minutes, or 30 minutes on durable execution, and config.durability.maxBudgetMs raises it up to 24 hours.

  • Async job shape inside an agent. Use a subagent tool with config.execution.mode: "detached". The call returns a subagent_run handle (runId, status). notify sets what happens on completion: none only stores the result, and narrate (the default) posts a completion status into the parent conversation. narrate needs a saved parent agent and a conversationId. react (start a new parent turn) is rejected today, so use narrate or none. Bound the run with maxBudgetMs (up to 24 hours) and noProgressBudgetMs (a silence timeout that resets on progress). Runtype adds get_subagent_run, list_subagent_runs, and cancel_subagent_run automatically, so you do not write status or cancel tools. With narrate, completion arrives in the conversation, so the agent must not poll get_subagent_run in a loop. The dynamic spawn_subagent tool can run detached when config.tools.subagentConfig.executionModes includes "detached".

  • Async job shape from outside. Start a flow or agent with run_flow, dispatch, or execute_agent with async: true, then poll get_execution_status with the returned execution id. After a timeout, poll instead of starting the run again. When a saved agent runs on durable execution, send an Idempotency-Key header on POST /v1/agents/{id}/execute or dispatch so a repeated request does not start a second run. The header is ignored on other runs.

  • A flow tool is not async. The agent waits for the nested flow and gets its result, so the flow must finish inside the tool's budget.

  • Waiting on an external job inside a flow. Use a wait-until step with poll: { http, intervalMs, maxAttempts, success }. The flow pauses without holding a connection. On durable execution Runtype caps the attempts at 1,000, so raise intervalMs for a longer wait. Keep the worst-case wait under 30 days, or the flow is rejected when you save it. Set continueOnTimeout: true when a timeout must not fail the flow.

  • Idempotent records. Use upsert-record with recordType and a recordName built from a stable id that the caller supplies. A repeated call updates the same record instead of adding a duplicate.

  • Isolate side effects. Put each side-effecting step (send-email, upsert-record, an api-call that changes data) in its own step, never in a step that can retry. A retry re-runs the failed step, and a resume after wait-until, crawl, or an approval pause re-enters the flow. For an external POST, pass the provider's idempotency key and check status after an ambiguous timeout before you retry.

  • Platform retries. A tool-call step never retries a timeout, and it retries a tool that reports failure only when you set onError: "retry" or maxRetries (backoff up to 5 s between attempts). A step's errorHandling.fallbacks can also hold { "type": "retry", "delay": 2000 }. Turn either on only for a tool that is safe to retry.

  • Compensation in flows. Context steps take errorHandling: { "onError": "fail" | "continue" | "fallback", "fallbacks": [...] }. fail stops the flow, continue substitutes defaultValue, and fallback runs the fallbacks chain in order. A chain entry is a retry, a step, or a flow, so a compensating step or flow can be the undo path:

    json
    {
      "errorHandling": {
        "onError": "fallback",
        "fallbacks": [
          { "type": "flow", "flowId": "flow_refund_order", "inputs": { "orderId": "{{orderId}}" } }
        ]
      }
    }

    A tool-call step uses its own config.onError (default fail) instead. For the defaults when errorHandling is unset, see tool-design-errors. Flows have no cross-step transaction, so order the steps so the irreversible one runs last.

  • Confirmation gate. List command tools that are not safe to retry in config.tools.approval.require. The approval timeout defaults to 300000 ms. An approval authorizes the action but does not make a retry safe. See tool-design-security for the full approval contract.

  • Timeout errors from a tool reach the model as the tool's error. Name the async alternative in the tool description so the agent knows where to go.

© hashgraph-online, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in plugins/runtypelabs/skills/skills/tool-design-execution of hashgraph-online/awesome-codex-plugins.

  • SKILL.md
  • agents/openai.yaml

Open the folder on GitHubat commit 78497e5

Compare with similar skills

Tool Design Execution next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Tool Design Execution compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Tool Design Execution this skillhashgraph-online/awesome-codex-plugins1.2k—~2.7kAutomated safety check: PassApache-2.0
Async Jobs And Eventslatitude-dev/latitude-llm4.7k—~2.8kAutomated safety check: PassMIT
Technical Job Searchgithub/awesome-copilot40k—~1.2kAutomated safety check: PassMIT
Csharp Asyncgithub/awesome-copilot40k2 repos~466Automated safety check: PassMIT
Async Jobsyonatangross/orchestkit289—~2.4kAutomated safety check: PassMIT
Fix SyncClickHouse/ClickHouse50k—~2.8kAutomated safety check: PassApache-2.0

Similar skills

  • Async Jobs And Events

    latitude-dev/latitude-llm

    Queues and workers, domain event publishers, async notifications or projections, or not doing that work inside HTTP handlers.

    4.7k GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Technical Job Search

    github/awesome-copilot

    Official

    A skill your agent uses when a software engineer asks for help with job search tasks: parsing or analyzing a job description, tailoring a CV/resume, writing a cover letter, evaluating a job offer…

    40k GitHub stars~1.2k tokensUpdated today
    Business, Finance & HRAuto-check passed
  • Csharp Async

    github/awesome-copilot

    Official

    Get best practices for C async programming. An agent skill from github/awesome-copilot.

    40k GitHub starsUsed in 2 repos~466 tokens
    DevelopmentAuto-check passed
  • Async Jobs

    yonatangross/orchestkit

    Async job processing patterns for background tasks, Celery workflows, task scheduling, retry strategies, and distributed task execution.

    289 GitHub stars~2.4k tokensUpdated today
    Backend & APIsAuto-check passed
  • Fix Sync

    ClickHouse/ClickHouse

    Fix the "CH Inc sync" job in a pull request. An agent skill from ClickHouse/ClickHouse.

    50k GitHub stars~2.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Job Application Assistant

    MadsLorentzen/ai-job-search

    Evaluates job postings against your profile, then tailors a LaTeX CV and cover letter and prepares interview answers for the roles you pursue.

    45k GitHub starsUsed in 1 repo~1.2k tokens
    Business, Finance & HRAuto-check: notes

More from hashgraph-online/awesome-codex-plugins

All 686 skills in this repo
  • Anime Reaction Gif

    hashgraph-online/awesome-codex-plugins

    Create original anime-style reaction stickers as looping GIFs and MP4 previews, using generated character pose sheets and timed key poses.

    1.2k GitHub stars~922 tokensUpdated today
    Auto-check passed
  • Calibredb

    hashgraph-online/awesome-codex-plugins

    Manage and query Calibre libraries with the calibredb CLI (local paths or Calibre Content server URLs).

    1.2k GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Rust API Test Harness

    hashgraph-online/awesome-codex-plugins

    A skill your agent uses when adding, changing, testing, or debugging Rust HTTP APIs and services, especially when Codex needs black-box integration tests, random-port app startup, real database test…

    1.2k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Art

    hashgraph-online/awesome-codex-plugins

    Make a studio's game look like something at build time — a cover from a real frame of the game (free), painted covers, backdrops, textures and character plates from image models through the…

    1.2k GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Game Balance Economy

    hashgraph-online/awesome-codex-plugins

    Balance game difficulty, resources, rewards, probability, progression, economies, and dominant strategies.

    1.2k GitHub stars~618 tokensUpdated today
    Auto-check passed
  • Manuscript Engagement Analytics

    hashgraph-online/awesome-codex-plugins

    Analyze nonfiction manuscripts for reader engagement signals, including heading-level word counts, slow starts, long slogs, weak takeaway titles, value pacing, beta-reader comment dropoff, and…

    1.2k GitHub stars~875 tokensUpdated today
    Auto-check passed

Questions about Tool Design Execution

What does Tool Design Execution do?

Design how an agent tool runs: sync or async job, idempotency, timeouts, transactions, and compensation. Tool Design Execution is an agent skill from hashgraph-online/awesome-codex-plugins. Design how an agent tool runs: sync or async job, idempotency, timeouts, transactions, and compensation.

When should I use Tool Design Execution?

Tool Design Execution fits situations like: has side effects that a retry could duplicate; spans several systems.

How do I install Tool Design Execution in Claude Code?

Run `npx skills add hashgraph-online/awesome-codex-plugins --skill tool-design-execution -a claude-code`. Or copy the skill folder (plugins/runtypelabs/skills/skills/tool-design-execution in hashgraph-online/awesome-codex-plugins) into .claude/skills/tool-design-execution in your project. Claude Code loads it when a task matches its description.

How do I install Tool Design Execution in Codex?

Run `npx skills add hashgraph-online/awesome-codex-plugins --skill tool-design-execution -a codex`. Or copy the skill folder (plugins/runtypelabs/skills/skills/tool-design-execution in hashgraph-online/awesome-codex-plugins) into .agents/skills/tool-design-execution in your project. Codex loads it when a task matches its description.

Can I use Tool Design Execution in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hashgraph-online/awesome-codex-plugins --skill tool-design-execution -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tool-design-execution, .gemini/skills/tool-design-execution, .github/skills/tool-design-execution and .opencode/skills/tool-design-execution in your project.

What does Tool Design Execution need to run?

SKILL.md names no scripts, command-line tools or credentials: Tool Design Execution is instructions for the agent only.

Does Tool Design Execution access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Tool Design Execution safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Tool Design Execution use?

Tool Design Execution is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Tool Design Execution use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Tool Design Execution?

Skills that share tags, products or a category with Tool Design Execution: Async Jobs And Events (latitude-dev/latitude-llm, 4.7k stars), Technical Job Search (github/awesome-copilot, 40k stars), Csharp Async (github/awesome-copilot, 40k stars) and Async Jobs (yonatangross/orchestkit, 289 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Tool Design Execution?

hashgraph-online (a GitHub organization) maintains it in hashgraph-online/awesome-codex-plugins, which has 1,242 GitHub stars. The repository holds 686 skills in this directory. The repository was last updated on October 8, 2026.

Source: hashgraph-online/awesome-codex-plugins on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.