Agent skill

Ditto Workflow

by LeoYeAI in LeoYeAI/openclaw-master-skills

Creates, configures, and deploys on-chain automation workflows using the Ditto Network SDK.

MITAuto-check: notesBackend & APIs

Install Ditto Workflow

skills CLI
$ npx skills add LeoYeAI/openclaw-master-skills --skill ditto-workflow -a claude-code

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

GitHub CLI
$ gh skill install LeoYeAI/openclaw-master-skills ditto-workflow --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/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/workflow-automation-evm-wallets .claude/skills/ditto-workflow && 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
ditto-workflow
GitHub stars
2.2k
Token cost
~4.4k tokens
SKILL.md length
1,315 words
Files
2
Skills in repo
972
Repo updated
First seen
Licence
MIT

At a glance

Creates, configures, and deploys on-chain automation workflows using the Ditto Network SDK.

  • Works in 4 steps: Gather Requirements → Write the Workflow Script → Fund the Smart Account → …
  • The user asks to create a workflow
  • SKILL.md covers Architecture: Owner vs Executor, Critical: Before You Start, Environment Setup and Instructions, plus 10 more sections
  • Calls npx and npm; reaches ipfs-service.dittonetwork.io; needs PRIVATE_KEY

What it does

Ditto Workflow is an agent skill from LeoYeAI/openclaw-master-skills. Creates, configures, and deploys on-chain automation workflows using the Ditto Network SDK. Use when the user asks to "create a workflow", "automate on-chain", "schedule transactions", "deploy a workflow", "set up recurring transfers", "swap tokens on a schedule", "automate DeFi", "create a cron job on-chain", "trigger on event", or mentions "Ditto Network". Handles workflow building, IPFS upload, on-chain registration, simulation, and cancellation. Do NOT use for general smart contract development unrelated to…

Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `_meta.json`).

It sits in Backend & APIs, covering Smart contracts, Workflow automation and Scheduled and recurring tasks. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.

When your agent uses it

  • The user asks to create a workflow
  • Automate on-chain
  • Schedule transactions
  • Deploy a workflow

Example prompts

  • “create a workflow”
  • “automate on-chain”
  • “schedule transactions”
  • “/ditto-workflow”

Requirements

  • Node.js
  • A credential in PRIVATE_KEY

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Gather Requirements
  2. Write the Workflow Script
  3. Fund the Smart Account
  4. Run and Verify

What it can do on your machine

Read from SKILL.md and the folder at commit e5199b5. 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

    Shell commands in SKILL.md call:

    • npx
    • npm

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • ipfs-service.dittonetwork.io

    Also links to:

    • github.com

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

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • PRIVATE_KEY

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

Context cost

Ditto Workflow loads about 4.4k tokens when it runs. Until then it costs about 137 tokens; SKILL.md has 1,315 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:32
    2. Check that a `.env` file exists with required keys (see Environment Setup below)
  • NoteMentions a .env fileSKILL.md:37
    The `.env` file MUST contain:
  • NoteMentions a .env fileSKILL.md:53
    e key in source files. Always load from `.env` via `dotenv`.
  • NoteMentions a .env fileSKILL.md:396
    - `.env` has `PRIVATE_KEY` and `IPFS_SERVICE_URL`
  • NoteMentions a .env fileSKILL.md:401
    Cause: `.env` file missing or incomplete.
  • NoteMentions a .env fileSKILL.md:402
    toExecutorAddress()` — do NOT add it to `.env`.

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 LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,315 words, ~4,440 tokens.

Download SKILL.mdSave it as .claude/skills/ditto-workflow/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
ditto-workflow
description
Creates, configures, and deploys on-chain automation workflows using the Ditto Network SDK. Use when the user asks to "create a workflow", "automate on-chain", "schedule transactions", "deploy a workflow", "set up recurring transfers", "swap tokens on a schedule", "automate DeFi", "create a cron job on-chain", "trigger on event", or mentions "Ditto Network". Handles workflow building, IPFS upload, on-chain registration, simulation, and cancellation. Do NOT use for general smart contract development unrelated to Ditto workflows.
license
MIT
metadata.author
Ditto Network
metadata.version
1.0.0
metadata.category
web3-automation
metadata.tags
blockchain, defi, automation, workflows, smart-accounts

Ditto Workflow SDK Skill

Build and deploy declarative on-chain automation workflows using @ditto/workflow-sdk. Workflows define triggers (cron, event, onchain state) and jobs (batched contract calls) that execute via ZeroDev smart accounts with session keys.

SDK source: github.com/dittonetwork/ditto-workflow-sdk (branch: skill-integration)

Architecture: Owner vs Executor

Understanding these two roles is critical:

  • Owner (the client/user): Holds a private key, creates and signs workflows. This is the only key the user provides.
  • Executor (Ditto Network): A decentralized network of operators that runs workflows. The client only needs the executor's public address, never its private key.

submitWorkflow takes executorAddress (a public 0x... address) — NOT a private key. The session key system grants scoped permissions to this address so the network can execute on behalf of the owner's smart account.

Critical: Before You Start

BEFORE writing any workflow code, verify the project setup:

  1. Check that @ditto/workflow-sdk is installed: look for it in package.json
  2. Check that a .env file exists with required keys (see Environment Setup below)
  3. If the SDK is not installed, run: npm install @ditto/workflow-sdk

Environment Setup

The .env file MUST contain:

PRIVATE_KEY=0x...          # Owner's private key (the user's wallet — used to sign and deploy)
IPFS_SERVICE_URL=https://ipfs-service.dittonetwork.io

Optional (only needed for cancellation):

WORKFLOW_CONTRACT_ADDRESS=0x... # DittoWFRegistry address

The executor address is embedded in the SDK — use getDittoExecutorAddress() from @ditto/workflow-sdk. Do NOT ask the user for an executor address or private key.

CRITICAL:

  • Never ask the user for an executor private key or address. The SDK provides the executor address via getDittoExecutorAddress().
  • Never hardcode the owner's private key in source files. Always load from .env via dotenv.

Instructions

Step 1: Gather Requirements

Ask the user for:

  • What action? (transfer ETH, swap tokens, call a contract function)
  • On which chain? (see Supported Chains below)
  • When/how often? (cron schedule, on event, or when a condition is met)
  • How many times? (execution limit)
  • Target contract address and function signature (if calling a contract)

If the user is vague, suggest a concrete workflow and confirm before proceeding.

Step 2: Write the Workflow Script

Create a TypeScript file that:

  1. Loads environment variables with dotenv
  2. Creates the owner account with privateKeyToAccount
  3. Builds the workflow using WorkflowBuilder and JobBuilder
  4. Submits with submitWorkflow, passing the executor's public address

Key pattern: WorkflowBuilder.create() takes an Account (address only, no signing capability). Use addressToEmptyAccount(owner.address) for this. The actual Signer (full private key account from privateKeyToAccount) is passed separately to submitWorkflow for signing session keys and transactions.

Minimal template:

typescript
import {
  WorkflowBuilder, JobBuilder, ChainId,
  submitWorkflow, IpfsStorage, getDittoExecutorAddress
} from '@ditto/workflow-sdk';
import { privateKeyToAccount } from 'viem/accounts';
import { addressToEmptyAccount } from '@zerodev/sdk';
import * as dotenv from 'dotenv';

dotenv.config();

async function main() {
  // Owner: full Signer (signs the workflow and session keys)
  const owner = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);

  // Executor address is provided by the SDK — no user configuration needed
  const executorAddress = getDittoExecutorAddress();

  const storage = new IpfsStorage(process.env.IPFS_SERVICE_URL!);

  // WorkflowBuilder gets Account (address only), not Signer
  const workflow = WorkflowBuilder.create(addressToEmptyAccount(owner.address))
    .addCronTrigger('0 */6 * * *')  // Every 6 hours
    .setCount(10)                    // Max 10 executions
    .setValidUntil(Date.now() + 30 * 24 * 60 * 60 * 1000) // 30 days
    .addJob(
      JobBuilder.create('my-job')
        .setChainId(ChainId.BASE_SEPOLIA)
        .addStep({
          target: '0xRecipientAddress',
          abi: '',           // Empty ABI = raw ETH transfer
          args: [],
          value: BigInt(1e15) // 0.001 ETH in wei
        })
        .build()
    )
    .build();

  const { ipfsHash, userOpHashes } = await submitWorkflow(
    workflow,
    executorAddress,               // Public address, not a key
    storage,
    owner,                         // Owner signs here
    false,                         // prodContract: false = testnet
    process.env.IPFS_SERVICE_URL!,
  );

  console.log('Deployed! IPFS hash:', ipfsHash);
  console.log('Transaction receipts:', userOpHashes);
}

main().catch(console.error);
Step 3: Fund the Smart Account

IMPORTANT: The Ditto SDK uses ZeroDev smart accounts (account abstraction). The smart account address is different from the owner's EOA wallet address. It is deterministically derived from the owner's private key by the ZeroDev kernel.

When submitWorkflow runs, it registers the workflow on-chain from this smart account. The smart account must have ETH on the target chain to pay for gas.

How to find the smart account address: Run the workflow script — if underfunded, the error message will include the smart account address (e.g., AA21 didn't pay prefund). Alternatively, add this before submitWorkflow:

typescript
import { signerToEcdsaValidator } from '@zerodev/ecdsa-validator';
import { createKernelAccount } from '@zerodev/sdk';
import { createPublicClient, http } from 'viem';
import { getChainConfig } from '@ditto/workflow-sdk';

const chainConfig = getChainConfig(process.env.IPFS_SERVICE_URL!);
const chain = chainConfig[ChainId.BASE_SEPOLIA]; // use your target chain
const publicClient = createPublicClient({ chain: chain.chain, transport: http(chain.rpcUrl) });
const ecdsaValidator = await signerToEcdsaValidator(publicClient, { signer: owner, entryPoint: { address: '0x0000000071727De22E5E9d8BAf0edAc6f37da032', version: '0.7' } });
const kernelAccount = await createKernelAccount(publicClient, { plugins: { sudo: ecdsaValidator }, entryPoint: { address: '0x0000000071727De22E5E9d8BAf0edAc6f37da032', version: '0.7' } });
console.log('Smart account address (fund this):', kernelAccount.address);

Funding:

  • Testnet: Use a faucet (e.g., Sepolia faucet, Base Sepolia faucet) to send test ETH to the smart account address
  • Production: Send real ETH (0.005–0.01 ETH is typically enough for gas) to the smart account address on the target chain

CRITICAL: Always recommend testnet first. Only proceed to production chains after the user has verified the workflow works on testnet.

Step 4: Run and Verify
bash
npx ts-node your-workflow-script.ts

Expected output: IPFS hash and transaction receipt(s). The Ditto Network will now automatically execute this workflow according to the triggers. If submission fails, check the Troubleshooting section.

Supported Chains

Testnet (use for development):

ChainChainId EnumID
Ethereum SepoliaChainId.SEPOLIA11155111
Base SepoliaChainId.BASE_SEPOLIA84532

Production:

ChainChainId EnumID
BaseChainId.BASE8453
ArbitrumChainId.ARBITRUM42161
PolygonChainId.POLYGON137
OptimismChainId.OPTIMISM10
Ethereum MainnetChainId.MAINNET1

Note: ChainId.HOLESKY (17000) exists in the enum but is deprecated and should not be used for new workflows.

CRITICAL: NEVER deploy to production chains (Base, Arbitrum, Polygon, Optimism, Mainnet) without explicit user confirmation. Always default to testnet. When deploying to production, set prodContract: true in submitWorkflow.

Trigger Types

Cron Trigger (time-based)
typescript
.addCronTrigger('*/5 * * * *')  // Every 5 minutes (UTC)
Event Trigger (log-based)
typescript
.addEventTrigger({
  chainId: ChainId.SEPOLIA,
  contractAddress: '0xTokenAddress',
  signature: 'Transfer(address,address,uint256)',
  filter: { from: '0xSpecificSender' }  // Optional: filter indexed params
})
Onchain Trigger (state-based)
typescript
import { OnchainConditionOperator } from '@ditto/workflow-sdk';

.addOnchainTrigger({
  chainId: ChainId.BASE,
  target: '0xOracleAddress',
  abi: 'latestAnswer() view returns (int256)',
  args: [],
  onchainCondition: {
    condition: OnchainConditionOperator.GREATER_THAN,
    value: 200000000000n  // e.g., ETH > $2000 (8 decimals)
  }
})

Multiple triggers are AND-ed: all must be satisfied for execution.

OnchainConditionOperator values: EQUAL (0), GREATER_THAN (1), LESS_THAN (2), GREATER_THAN_OR_EQUAL (3), LESS_THAN_OR_EQUAL (4), NOT_EQUAL (5), ONE_OF (6).

Key Operations

Simulate (dry run)

Simulation is typically performed by the Ditto Network operators, not by clients. If you need to simulate locally for debugging, use executeFromIpfs with simulate: true — but note this requires an executor account with signing capability (for local testing only).

Cancel a Workflow
typescript
import { WorkflowContract } from '@ditto/workflow-sdk';

const wfContract = new WorkflowContract(process.env.WORKFLOW_CONTRACT_ADDRESS as `0x${string}`);
await wfContract.cancelWorkflow(ipfsHash, ownerAccount, chainId, process.env.IPFS_SERVICE_URL!);
Show full SKILL.md (567 more words)Show less
Check Workflow Status & Execution History

Use the Ditto Network API (base URL: https://ipfs-service.dittonetwork.io) to monitor deployed workflows. All endpoints use the IPFS hash returned by submitWorkflow. No authentication required.

1. Workflow status — check if the workflow is active, paused, or cancelled:

typescript
const ipfsHash = 'QmYourWorkflowHash';
const res = await fetch(`https://ipfs-service.dittonetwork.io/workflow/status/${ipfsHash}`);
const status = await res.json();
console.log('Workflow status:', status);

2. Execution logs (USE THIS to check last executions) — returns the actual execution history with results, timestamps, and transaction details:

typescript
const res = await fetch(`https://ipfs-service.dittonetwork.io/workflow/logs/${ipfsHash}?limit=20`);
const logs = await res.json();
console.log('Execution logs:', logs);

This is the primary endpoint for checking whether a workflow has run, when it ran, and whether executions succeeded or failed.

3. Execution reports (advanced — NOT for checking execution history) — these are internal simulation reports sent by all network operator nodes participating in the workflow. Each operator independently simulates the workflow, so you'll see multiple reports per execution (one per node). This is useful for debugging network-level issues but NOT for checking whether your workflow actually executed:

typescript
const res = await fetch(`https://ipfs-service.dittonetwork.io/get-reports?ipfsHash=${ipfsHash}&page=1&limit=100`);
const reports = await res.json();
console.log('Node simulation reports:', reports);

IMPORTANT: When the user asks to "check last executions" or "see execution history", always use the execution logs endpoint (/workflow/logs/), NOT the reports endpoint. Reports show per-node simulation data, not actual execution outcomes.

Data References (read contract state at execution time)
typescript
import { dataRef } from '@ditto/workflow-sdk';

const ethPrice = dataRef({
  target: '0xChainlinkOracleAddress',
  abi: 'latestRoundData() returns (uint80, int256, uint256, uint256, uint80)',
  chainId: ChainId.SEPOLIA,
  resultIndex: 1,  // int256 price is the 2nd return value
});

// Use in a step arg - resolved dynamically at execution time by the network
.addStep({
  target: '0xSwapRouter',
  abi: 'swap(uint256)',
  args: [ethPrice],
})

Workflow Limits

MethodPurposeExample
.setCount(n)Max total executions.setCount(100)
.setInterval(sec)Min seconds between runs.setInterval(300)
.setValidAfter(date)Start time (Date or ms).setValidAfter(Date.now())
.setValidUntil(date)Expiration (Date or ms).setValidUntil(Date.now() + 86400000)

Step Interface

typescript
interface Step {
  target: string;              // Contract address (0x-prefixed)
  abi: string;                 // Function signature, e.g. "transfer(address,uint256)"
                               // Empty string "" for raw ETH transfer
  args: readonly any[];        // Function arguments (can include dataRef strings)
  value?: bigint | string;     // ETH value in wei
}

Key Function Signatures

submitWorkflow
typescript
async function submitWorkflow(
  workflow: Workflow,
  executorAddress: `0x${string}`, // Public address of the Ditto Network executor
  storage: IWorkflowStorage,
  owner: Signer,                  // Owner signs (from privateKeyToAccount)
  prodContract: boolean,          // true = mainnet registry, false = testnet
  ipfsServiceUrl: string,
  usePaymaster?: boolean,         // Default: false
  switchChain?: (chainId: number) => Promise<void>,
  accessToken?: string,
): Promise<{ ipfsHash: string; userOpHashes: UserOperationReceipt[] }>;
executeFromIpfs (used by network operators, not clients)
typescript
async function executeFromIpfs(
  ipfsHash: string,
  storage: IWorkflowStorage,
  executorAccount: Signer,    // Executor's Signer — held by network operators only
  prodContract: boolean,
  ipfsServiceUrl: string,
  simulate?: boolean,
  usePaymaster?: boolean,
  accessToken?: string,
): Promise<{ success: boolean; results: any[] }>;

Multi-Chain Workflows

A workflow can have multiple jobs on different chains:

typescript
.addJob(
  JobBuilder.create('job-sepolia')
    .setChainId(ChainId.SEPOLIA)
    .addStep({ /* ... */ })
    .build()
)
.addJob(
  JobBuilder.create('job-base')
    .setChainId(ChainId.BASE)
    .addStep({ /* ... */ })
    .build()
)

Each job gets its own session key and on-chain registration.

Multi-Step Job (Approve + Swap)

Steps within a single job execute atomically:

typescript
JobBuilder.create('weekly-dca')
  .setChainId(ChainId.BASE)
  .addStep({
    target: tokenAddress,
    abi: 'approve(address,uint256)',
    args: [routerAddress, amount],
  })
  .addStep({
    target: routerAddress,
    abi: 'swapExactTokensForETH(uint256,uint256,address[],address,uint256)',
    args: [amount, 0, [tokenAddress, wethAddress], owner.address, deadline],
  })
  .build()

Note: Time-dependent args like deadline are computed at script build time, not execution time. For workflows that may execute later, use generous deadlines or dataRef for on-chain timestamps.

Validation Checklist

BEFORE calling submitWorkflow, verify:

  • Every step has a valid target address (0x-prefixed, 42 chars)
  • abi is a valid Solidity function signature or empty string for raw ETH transfer
  • chainId is from the supported chains list
  • At least one trigger is defined
  • count is > 0 if set
  • validUntil is in the future
  • .env has PRIVATE_KEY and IPFS_SERVICE_URL

Troubleshooting

Error: "Missing required environment variables"

Cause: .env file missing or incomplete. Solution: Ensure PRIVATE_KEY and IPFS_SERVICE_URL are set. The executor address is provided by the SDK via getDittoExecutorAddress() — do NOT add it to .env.

Error: "Chain ID must be greater than 0"

Cause: setChainId() not called on JobBuilder. Solution: Add .setChainId(ChainId.BASE_SEPOLIA) before .build().

Error: "Job must have at least one step"

Cause: No steps added to a job. Solution: Add at least one .addStep({...}) call.

Error: "Expiration time must be in the future"

Cause: setValidUntil was given a past timestamp. Solution: Use Date.now() + duration_in_ms.

Error: "AA21 didn't pay prefund"

Cause: The ZeroDev smart account doesn't have enough ETH to pay for gas. The smart account address is different from the owner's EOA — it's derived deterministically from the owner's private key. Solution: Send ETH to the smart account address shown in the error on the target chain. See "Step 3: Fund the Smart Account" above. For testnet, use a faucet. For production, 0.005–0.01 ETH is typically enough.

Transaction fails / reverts

Causes:

  • Smart account has insufficient ETH for the step values
  • Target contract function reverts (wrong args, permissions)
  • Session key expired or misconfigured

Solution: Ensure the owner's smart account is funded on the target chain. Verify contract args are correct.

IPFS upload fails

Cause: IPFS_SERVICE_URL unreachable or invalid. Solution: Verify the URL is correct and accessible. Default: https://ipfs-service.dittonetwork.io

© LeoYeAI, MIT. 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 skills/workflow-automation-evm-wallets of LeoYeAI/openclaw-master-skills.

  • SKILL.md
  • _meta.json

Open the folder on GitHubat commit e5199b5

Compare with similar skills

Ditto Workflow 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.

Ditto Workflow compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ditto Workflow this skillLeoYeAI/openclaw-master-skills2.2k—~4.4kAutomated safety check: NotesMIT
AI Automation WorkflowsNeverSight/learn-skills.dev2161 repos~2.6kAutomated safety check: PassNone
MetaBot Schedulerxvirobotics/metabot991—~1kAutomated safety check: PassMIT
Superset Automatesuperset-sh/superset15k—~1.4kAutomated safety check: PassCustom licence
Aeon Agent Setup and Managementaeonfun/aeon767—~9kAutomated safety check: WarnMIT
N8n Workflowsvibeeval/vibecosystem531—~3.3kAutomated safety check: PassMIT

Similar skills

  • AI Automation Workflows

    NeverSight/learn-skills.dev

    Build automated AI workflows combining multiple models and services.

    216 GitHub starsUsed in 1 repo~2.6k tokens
    Productivity & AutomationAuto-check passed
  • MetaBot Scheduler

    xvirobotics/metabot

    Schedules persistent cron and one-shot tasks on the MetaBot server that survive Claude session restarts and can be managed by other bots.

    991 GitHub stars~1k tokensUpdated 23 days ago
    Productivity & AutomationAuto-check passed
  • Superset Automate

    superset-sh/superset

    Turns a recurring chore into a scheduled or event-triggered Superset agent, drafting its prompt, picking a target and trigger, and reviewing the first run.

    15k GitHub stars~1.4k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Sets up and manages an Aeon agent instance that runs skills on a schedule through GitHub Actions: starting, rescheduling, debugging, editing skills and mining chat history.

    767 GitHub stars~9k tokensUpdated today
    Productivity & AutomationAuto-check: warnings
  • N8n Workflows

    vibeeval/vibecosystem

    n8n otomasyon workflow'lari. An agent skill from vibeeval/vibecosystem.

    531 GitHub stars~3.3k tokensUpdated 2 mo ago
    Productivity & AutomationAuto-check passed
  • Frappe Impl Serverscripts

    Impertio-Studio/Frappe_Claude_Skill_Package

    A skill your agent uses when implementing server-side features via Setup Server Script: document validation, auto-fill, API endpoints, scheduled tasks, permission queries.

    187 GitHub stars~2.6k tokensUpdated 21 days ago
    Productivity & AutomationAuto-check passed

More from LeoYeAI/openclaw-master-skills

All 972 skills in this repo
  • DevOps Pipeline Management

    LeoYeAI/openclaw-master-skills

    Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.

    2.2k GitHub stars~4.2k tokensUpdated 2 mo ago
    Auto-check: notes
  • Feishu Document Collaboration

    LeoYeAI/openclaw-master-skills

    Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.

    2.2k GitHub stars~2k tokensUpdated 2 mo ago
    Auto-check passed
  • Files Memory System

    LeoYeAI/openclaw-master-skills

    Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.

    2.2k GitHub stars~3.8k tokensUpdated 2 mo ago
    Auto-check passed
  • GEO-Claw AI Visibility Agent

    LeoYeAI/openclaw-master-skills

    Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.

    2.2k GitHub stars~4.7k tokensUpdated 2 mo ago
    Auto-check passed
  • Google Workspace CLI

    LeoYeAI/openclaw-master-skills

    Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.

    2.2k GitHub stars~2.6k tokensUpdated 2 mo ago
    Auto-check: notes
  • HealthFit Health Advisors

    LeoYeAI/openclaw-master-skills

    Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.

    2.2k GitHub stars~4.4k tokensUpdated 2 mo ago
    Auto-check passed

Questions about Ditto Workflow

What does Ditto Workflow do?

Creates, configures, and deploys on-chain automation workflows using the Ditto Network SDK. Ditto Workflow is an agent skill from LeoYeAI/openclaw-master-skills. Creates, configures, and deploys on-chain automation workflows using the Ditto Network SDK.

When should I use Ditto Workflow?

Ditto Workflow fits situations like: the user asks to create a workflow; automate on-chain; schedule transactions; deploy a workflow.

How do I install Ditto Workflow in Claude Code?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill ditto-workflow -a claude-code`. Or copy the skill folder (skills/workflow-automation-evm-wallets in LeoYeAI/openclaw-master-skills) into .claude/skills/ditto-workflow in your project. Claude Code loads it when a task matches its description.

How do I install Ditto Workflow in Codex?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill ditto-workflow -a codex`. Or copy the skill folder (skills/workflow-automation-evm-wallets in LeoYeAI/openclaw-master-skills) into .agents/skills/ditto-workflow in your project. Codex loads it when a task matches its description.

Can I use Ditto Workflow 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 LeoYeAI/openclaw-master-skills --skill ditto-workflow -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ditto-workflow, .gemini/skills/ditto-workflow, .github/skills/ditto-workflow and .opencode/skills/ditto-workflow in your project.

What does Ditto Workflow need to run?

Going by SKILL.md and its folder, Ditto Workflow needs the command-line tools its instructions call (npx and npm) and credentials named PRIVATE_KEY. Our summary lists: Node.js; A credential in PRIVATE_KEY.

Does Ditto Workflow access the network?

SKILL.md names 2 domains. In commands or code: ipfs-service.dittonetwork.io; the agent is likely to contact it when it follows the instructions. As links in the text: github.com. This is read from the text; nothing was executed.

Is Ditto Workflow safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Ditto Workflow use?

Ditto Workflow is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ditto Workflow use?

About 4.4k tokens (SKILL.md is roughly 18k 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 Ditto Workflow?

Skills that share tags, products or a category with Ditto Workflow: AI Automation Workflows (NeverSight/learn-skills.dev, 216 stars), MetaBot Scheduler (xvirobotics/metabot, 991 stars), Superset Automate (superset-sh/superset, 15k stars) and Aeon Agent Setup and Management (aeonfun/aeon, 767 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ditto Workflow?

LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,159 GitHub stars. The repository holds 972 skills in this directory. The repository was last updated on July 20, 2026.

Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.