AI Automation Workflows
NeverSight/learn-skills.dev
Build automated AI workflows combining multiple models and services.
Creates, configures, and deploys on-chain automation workflows using the Ditto Network SDK.
$ npx skills add LeoYeAI/openclaw-master-skills --skill ditto-workflow -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills ditto-workflow --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "ditto-workflow" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/workflow-automation-evm-wallets into .claude/skills/ditto-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ditto-workflow", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/workflow-automation-evm-walletsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill ditto-workflow -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills ditto-workflow --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/workflow-automation-evm-wallets .agents/skills/ditto-workflow && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ditto-workflow" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/workflow-automation-evm-wallets into .agents/skills/ditto-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ditto-workflow", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill ditto-workflow -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills ditto-workflow --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/workflow-automation-evm-wallets .cursor/skills/ditto-workflow && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ditto-workflow" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/workflow-automation-evm-wallets into .cursor/skills/ditto-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ditto-workflow", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/workflow-automation-evm-wallets--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill ditto-workflow -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills ditto-workflow --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/workflow-automation-evm-wallets .gemini/skills/ditto-workflow && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ditto-workflow" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/workflow-automation-evm-wallets into .gemini/skills/ditto-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ditto-workflow", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills ditto-workflowInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill ditto-workflow -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/workflow-automation-evm-wallets .github/skills/ditto-workflow && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ditto-workflow" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/workflow-automation-evm-wallets into .github/skills/ditto-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ditto-workflow", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill ditto-workflow -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills ditto-workflow --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/workflow-automation-evm-wallets .opencode/skills/ditto-workflow && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ditto-workflow" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/workflow-automation-evm-wallets into .opencode/skills/ditto-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ditto-workflow", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ditto-workflowCreates, 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. 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.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
npxnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
ipfs-service.dittonetwork.ioAlso links to:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
PRIVATE_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
2. Check that a `.env` file exists with required keys (see Environment Setup below)The `.env` file MUST contain:e key in source files. Always load from `.env` via `dotenv`.- `.env` has `PRIVATE_KEY` and `IPFS_SERVICE_URL`Cause: `.env` file missing or incomplete.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.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,315 words, ~4,440 tokens.
.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.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)
Understanding these two roles is critical:
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.
BEFORE writing any workflow code, verify the project setup:
@ditto/workflow-sdk is installed: look for it in package.json.env file exists with required keys (see Environment Setup below)npm install @ditto/workflow-sdkThe .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.ioOptional (only needed for cancellation):
WORKFLOW_CONTRACT_ADDRESS=0x... # DittoWFRegistry addressThe 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:
getDittoExecutorAddress()..env via dotenv.Ask the user for:
If the user is vague, suggest a concrete workflow and confirm before proceeding.
Create a TypeScript file that:
dotenvprivateKeyToAccountWorkflowBuilder and JobBuildersubmitWorkflow, passing the executor's public addressKey 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:
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);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:
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:
CRITICAL: Always recommend testnet first. Only proceed to production chains after the user has verified the workflow works on testnet.
npx ts-node your-workflow-script.tsExpected 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.
Testnet (use for development):
| Chain | ChainId Enum | ID |
|---|---|---|
| Ethereum Sepolia | ChainId.SEPOLIA | 11155111 |
| Base Sepolia | ChainId.BASE_SEPOLIA | 84532 |
Production:
| Chain | ChainId Enum | ID |
|---|---|---|
| Base | ChainId.BASE | 8453 |
| Arbitrum | ChainId.ARBITRUM | 42161 |
| Polygon | ChainId.POLYGON | 137 |
| Optimism | ChainId.OPTIMISM | 10 |
| Ethereum Mainnet | ChainId.MAINNET | 1 |
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.
.addCronTrigger('*/5 * * * *') // Every 5 minutes (UTC).addEventTrigger({
chainId: ChainId.SEPOLIA,
contractAddress: '0xTokenAddress',
signature: 'Transfer(address,address,uint256)',
filter: { from: '0xSpecificSender' } // Optional: filter indexed params
})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).
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).
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!);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:
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:
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:
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.
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],
})| Method | Purpose | Example |
|---|---|---|
.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) |
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
}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[] }>;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[] }>;A workflow can have multiple jobs on different chains:
.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.
Steps within a single job execute atomically:
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.
BEFORE calling submitWorkflow, verify:
target address (0x-prefixed, 42 chars)abi is a valid Solidity function signature or empty string for raw ETH transferchainId is from the supported chains listcount is > 0 if setvalidUntil is in the future.env has PRIVATE_KEY and IPFS_SERVICE_URLCause: .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.
Cause: setChainId() not called on JobBuilder.
Solution: Add .setChainId(ChainId.BASE_SEPOLIA) before .build().
Cause: No steps added to a job.
Solution: Add at least one .addStep({...}) call.
Cause: setValidUntil was given a past timestamp.
Solution: Use Date.now() + duration_in_ms.
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.
Causes:
Solution: Ensure the owner's smart account is funded on the target chain. Verify contract args are correct.
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
SKILL.md and 1 other file in skills/workflow-automation-evm-wallets of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ditto Workflow this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.4k | Automated safety check: Notes | MIT | |
| AI Automation WorkflowsNeverSight/learn-skills.dev | 216 | 1 repos | ~2.6k | Automated safety check: Pass | None | |
| MetaBot Schedulerxvirobotics/metabot | 991 | — | ~1k | Automated safety check: Pass | MIT | |
| Superset Automatesuperset-sh/superset | 15k | — | ~1.4k | Automated safety check: Pass | Custom licence | |
| Aeon Agent Setup and Managementaeonfun/aeon | 767 | — | ~9k | Automated safety check: Warn | MIT | |
| N8n Workflowsvibeeval/vibecosystem | 531 | — | ~3.3k | Automated safety check: Pass | MIT |
NeverSight/learn-skills.dev
Build automated AI workflows combining multiple models and services.
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.
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.
aeonfun/aeon
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.
vibeeval/vibecosystem
n8n otomasyon workflow'lari. An agent skill from vibeeval/vibecosystem.
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.
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.
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.
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.
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.
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.
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.
Categories
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.
Ditto Workflow fits situations like: the user asks to create a workflow; automate on-chain; schedule transactions; deploy a workflow.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.