Orca CLI
stablyai/orca
Operate Orca-managed worktrees, folder contexts, terminals, repos, automations, artifacts, skill sharing, worktree comments, and Orca's embedded browser…
Build autonomous multi-agent pipelines with Mastra (agents only) and Trigger.dev (all workflows and tasks).
$ npx skills add LeoYeAI/openclaw-master-skills --skill durable-agents -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills durable-agents --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/durable-agents .claude/skills/durable-agents && 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 "durable-agents" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/durable-agents into .claude/skills/durable-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "durable-agents", 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/durable-agentsType 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 durable-agents -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills durable-agents --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/durable-agents .agents/skills/durable-agents && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "durable-agents" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/durable-agents into .agents/skills/durable-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "durable-agents", 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 durable-agents -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills durable-agents --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/durable-agents .cursor/skills/durable-agents && 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 "durable-agents" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/durable-agents into .cursor/skills/durable-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "durable-agents", 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/durable-agents--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 durable-agents -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills durable-agents --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/durable-agents .gemini/skills/durable-agents && 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 "durable-agents" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/durable-agents into .gemini/skills/durable-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "durable-agents", 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 durable-agentsInstalls 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 durable-agents -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/durable-agents .github/skills/durable-agents && 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 "durable-agents" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/durable-agents into .github/skills/durable-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "durable-agents", 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 durable-agents -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 durable-agents --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/durable-agents .opencode/skills/durable-agents && 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 "durable-agents" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/durable-agents into .opencode/skills/durable-agents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "durable-agents", 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.
durable-agentsBuild autonomous multi-agent pipelines with Mastra (agents only) and Trigger.dev (all workflows and tasks).
Durable Agents is an agent skill from LeoYeAI/openclaw-master-skills. Build autonomous multi-agent pipelines with Mastra (agents only) and Trigger.dev (all workflows and tasks). Use when creating AI agents, designing multi-stage pipelines, defining permissioned tools, structuring agent handoffs, storing agentic outputs to a database, or building durable task chains with retries and fan-out.
Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `_meta.json` and `setupSkill.md`).
It sits in Agent Workflows, covering Multi-agent orchestration. It works with Mastra. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.
8 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript and markdown).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Durable Agents loads about 5k tokens when it runs. Until then it costs about 85 tokens; SKILL.md has 1,642 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 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.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,642 words, ~5,011 tokens.
.claude/skills/durable-agents/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.FIRST INSTALL: Read and follow
setupSKILL.mdbefore using this skill. After setup is complete and verified (health check + example pipeline + smoke tests pass), delete this block.
Mastra (AI agent framework) + Trigger.dev (durable task execution with retries, timeouts, fan-out). Build autonomous multi-agent pipelines where each agent owns a single stage, hands off structured output to the next stage through Trigger.dev, and never holds the full context of a pipeline it doesn't own.
AGENT.md, not in code. The .ts file is boilerplate wiring. Writing logic in the agent's TypeScript file is wrong.{ success, errorMessage? } on failure. Throwing inside a tool crashes the task. Returning an error lets the agent reason about it.src/agents/{name}/
AGENT.md
{name}.tsAGENT.md# AGENT: {Name}
## Role
Who this agent is. One sentence.
## Tools
What tools it has and when to use each one. Be explicit — "Use `sqlQuery` to
check if a table exists before referencing it" not just "Has sqlQuery tool."
## Inputs
What payload it receives. Describe the shape and what each field means.
## Goal
What it must achieve. Describe the outcome, not the steps. The agent decides
how to get there. "Produce a deployment plan for the given architecture" not
"First read the architecture, then list the services, then..."
## Output Contract
Exact shape it must return. If structured output is needed, specify the JSON
schema here. Example:
{ "plan": string, "steps": string[], "risks": string[] }
## Quality Standards
What makes output good vs bad. Be specific. "Each step must be independently
executable" not "Steps should be good."
## Guardrails
What it must NOT do. "Never modify database schema directly." "Never assume
the API is authenticated unless payload says so."
## Self-Validation
Checklist the agent must verify before returning:
- Does output match the Output Contract?
- Are all required fields present?
- Does it satisfy the Quality Standards?.ts filePure boilerplate. No logic here.
import fs from "fs";
import path from "path";
import { fileURLToPath } from "url";
import { Agent } from "@mastra/core/agent";
import { model } from "../../config/model.js";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const instructions = fs.readFileSync(path.join(__dirname, "AGENT.md"), "utf8");
export const myAgent = new Agent({
id: "my-agent",
name: "My Agent",
instructions,
model,
});To give the agent tools:
import { myTool } from "../../tools/myTool.js";
export const myAgent = new Agent({
id: "my-agent",
name: "My Agent",
instructions,
model,
tools: { myTool },
});In src/mastra/index.ts:
import { myAgent } from "../agents/my-agent/my-agent.js";
export const mastra = new Mastra({
agents: { plannerAgent, reviewerAgent, myAgent },
});import { createTool } from "@mastra/core/tools";
import { z } from "zod";
export const myTool = createTool({
id: "my-tool",
description: "What it does and WHEN to use it",
inputSchema: z.object({
query: z.string().describe("The search query"),
}),
outputSchema: z.object({
success: z.boolean(),
data: z.any().optional(),
errorMessage: z.string().optional(),
}),
execute: async ({ query }) => {
try {
const result = await doSomething(query);
return { success: true, data: result };
} catch (error: any) {
return { success: false, errorMessage: error.message };
}
},
});outputSchema. The agent uses it to understand what the tool returns.execute. Return { success: false, errorMessage } instead. Throwing crashes the Trigger.dev task..describe() on Zod fields to tell the agent what to pass.AGENT.md guardrails.src/tools/{name}.tssrc/agents/{agentName}/tools/{name}.tsRegister shared tools in src/mastra/index.ts. Agent-specific tools import directly in the agent file.
Any tool that touches a real system — posting to an API, publishing content, sending a message, charging a user, deleting data, triggering a webhook — must be permission-gated. Agents must not be able to fire these actions without explicit intent confirmation.
Before building a tool that has real-world side effects, ask the user:
Build the answer into the tool's permission layer, not just the agent's AGENT.md guardrails. Guardrails are instructions; permission layers are enforcement.
For any action that can't be undone or that has cost/visibility consequences, the tool must receive an explicit confirmed: true in its input before it proceeds. The agent must call a read/preview tool first, then call the action tool only when it has verified the result and received confirmed: true from the calling context.
export const publishPostTool = createTool({
id: "publish-post",
description: "Publishes a post to the platform. Only call this after previewing with `previewPostTool` and receiving confirmed: true from the task payload.",
inputSchema: z.object({
postId: z.string().describe("ID of the post record to publish"),
confirmed: z.boolean().describe("Must be true. Do not set this yourself — it must come from the task payload."),
}),
outputSchema: z.object({
success: z.boolean(),
publishedUrl: z.string().optional(),
errorMessage: z.string().optional(),
}),
execute: async ({ postId, confirmed }) => {
if (!confirmed) {
return { success: false, errorMessage: "Publish requires confirmed: true in payload." };
}
try {
const url = await publishPost(postId);
return { success: true, publishedUrl: url };
} catch (error: any) {
return { success: false, errorMessage: error.message };
}
},
});Destructive or write tools must operate on a specific record ID — never on a query, a filter, or an implicit "current item." The agent must always pass the exact ID of the record it's acting on. This prevents the tool from accidentally operating on the wrong item.
inputSchema: z.object({
recordId: z.string().describe("Exact DB ID of the record to act on. Do not pass a search query."),
})AGENT.md Guardrails vs in the tool| Concern | Where it lives |
|---|---|
| "Don't publish unless quality score > 0.8" | AGENT.md Guardrails |
| "Don't call this without confirmed: true" | Tool input schema + execute guard |
| "Only act on records in status: draft" | Tool execute guard (check DB before acting) |
| "Never delete more than one record per run" | Tool execute guard (enforce the count) |
Pipelines chain Trigger.dev tasks. Each task calls one agent and passes its output to the next. No single agent holds the full pipeline context — each stage receives only what it needs.
src/pipelines/tasks/import { task, logger } from "@trigger.dev/sdk/v3";
import { mastra } from "../../mastra/index.js";
export const planTask = task({
id: "plan-task",
retry: { maxAttempts: 3, minTimeoutInMs: 1000, factor: 2 },
run: async (payload: { prompt: string }) => {
logger.info("Running planner", { promptLength: payload.prompt.length });
const agent = mastra.getAgent("plannerAgent");
const response = await agent.generate(JSON.stringify(payload));
return response.text;
},
});In src/pipelines/{name}.ts, chain tasks using triggerAndWait:
import { planTask } from "./tasks/plan-task.js";
import { reviewTask } from "./tasks/review-task.js";
export async function runMyPipeline(input: string) {
const planResult = await planTask.triggerAndWait({ prompt: input });
if (!planResult.ok) throw new Error("Plan task failed");
const reviewResult = await reviewTask.triggerAndWait({ plan: planResult.output });
if (!reviewResult.ok) throw new Error("Review task failed");
return { plan: planResult.output, review: reviewResult.output };
}In src/trigger/index.ts:
export * from "../pipelines/tasks/plan-task.js";
export * from "../pipelines/tasks/review-task.js";Every task must be exported here or the Trigger.dev worker won't discover it.
In src/app/index.ts:
app.post("/my-pipeline", async (req, res) => {
const { input } = req.body;
const result = await runMyPipeline(input);
res.json({ success: true, ...result });
});Not every pipeline stage needs an agent. Use agents where judgment is required. Use scripts (plain TypeScript functions or Trigger.dev tasks with no agent) where the action is deterministic.
[Director Agent] — generates ideas, writes scripts, validates against criteria
↓
[Media Selector Agent] — selects or processes media assets based on the script
↓
[Overlay Task] — no agent; deterministic script that composites text onto video and stores resultThe overlay stage has no reasoning to do. It receives exact inputs, executes a fixed operation, and stores the output. Putting an agent here adds latency and cost for no benefit.
Use an agent when the stage requires:
Use a plain task (no agent) when the stage is:
Split at the boundary where a different capability is needed — not to artificially divide one agent's work. A director agent that generates ideas, writes a script, and validates it against criteria is doing one coherent job. That's one agent, one task. The media selection is a different capability — that's the split.
import { tasks } from "@trigger.dev/sdk/v3";
const handles = await tasks.batchTrigger("process-item",
items.map(item => ({ payload: { item } }))
);Each sub-task runs independently with its own retries.
Insert a review stage between pipeline steps. Three modes:
| Mode | Behavior |
|---|---|
"none" | Auto-approve. Trigger next stage immediately. |
"agent" | Call a reviewer agent. If approved, continue. If rejected, feed feedback back to the previous stage for revision. |
"human" | Set a status in the DB to pending. Return. A human reviews externally. Resume the pipeline via an API callback. |
Every task must have explicit retry config. LLM calls are flaky — the default (no retries) means one transient API error kills the pipeline.
retry: {
maxAttempts: 3,
minTimeoutInMs: 1000,
factor: 2,
}Every agent input, output, and intermediate result must be persisted to the database before the next stage runs. This is not optional. Agents operate on DB records — they do not pass raw data through in-memory pipelines.
Every task writes its output to the DB and returns the record ID. The next task receives the ID, reads from the DB, and operates on the record.
// Stage 1: director agent writes its output
export const scriptTask = task({
id: "script-task",
retry: { maxAttempts: 3, minTimeoutInMs: 1000, factor: 2 },
run: async (payload: { projectId: string }) => {
const existing = await db.script.findFirst({ where: { projectId: payload.projectId } });
if (existing) return { scriptId: existing.id }; // already done, skip
const agent = mastra.getAgent("directorAgent");
const response = await agent.generate(JSON.stringify(payload));
const output = ScriptOutputSchema.parse(JSON.parse(response.text));
const record = await db.script.create({
data: { projectId: payload.projectId, content: output.script, status: "draft" },
});
return { scriptId: record.id };
},
});
// Stage 2: next agent reads by ID
export const mediaTask = task({
id: "media-task",
retry: { maxAttempts: 3, minTimeoutInMs: 1000, factor: 2 },
run: async (payload: { scriptId: string }) => {
const script = await db.script.findUniqueOrThrow({ where: { id: payload.scriptId } });
const agent = mastra.getAgent("mediaSelectorAgent");
const response = await agent.generate(JSON.stringify({ script: script.content }));
const output = MediaOutputSchema.parse(JSON.parse(response.text));
const record = await db.mediaSelection.create({
data: { scriptId: payload.scriptId, assetIds: output.assetIds, status: "selected" },
});
return { mediaSelectionId: record.id };
},
});Store a status field on every record. Use it to gate pipeline stages and drive human review checkpoints.
| Status | Meaning |
|---|---|
pending | Created, not yet processed |
processing | Task is running |
draft | Agent output produced, not reviewed |
approved | Passed review (agent or human) |
rejected | Failed review, needs revision |
published | Final action taken |
failed | Unrecoverable error |
await db.script.update({
where: { id: scriptId },
data: { status: "processing" },
});
// ... agent call ...
await db.script.update({
where: { id: scriptId },
data: { status: "draft", content: output.script },
});Define the destination and the quality bar. Don't specify how to get there.
Wrong — micromanaging the agent:
1. Read the input
2. Extract the requirements
3. For each requirement, write a task
4. Format the tasks as a numbered list
5. Return the listRight — defining the outcome:
## Goal
Produce a technical implementation plan for the given objective.
## Output Contract
{ "tasks": [{ "title": string, "description": string, "dependencies": string[] }] }
## Quality Standards
- Each task must be independently executable by a developer
- Dependencies must reference other tasks by title
- No task should take more than 4 hours of workAlways type the run function parameter:
run: async (payload: { prompt: string; maxTokens?: number }) => {Define the exact schema in the AGENT.md Output Contract section, then validate with Zod on receipt:
const OutputSchema = z.object({
tasks: z.array(z.object({
title: z.string(),
description: z.string(),
dependencies: z.array(z.string()),
})),
});
const response = await agent.generate(JSON.stringify(payload));
const parsed = OutputSchema.parse(JSON.parse(response.text));If parsing fails, the task throws, Trigger.dev retries with the same input, and the agent produces output again.
Always define both inputSchema and outputSchema on tools. The agent uses these to understand what arguments to pass and what it will receive back.
AGENT.md, not in code.ts files are boilerplate wiring only — no logic{ success, errorMessage } on failure — never throwAGENT.md is mandatory for structured output agentsretry configsrc/trigger/index.tssrc/config/model.tstriggerAndWait for sequential, batchTrigger for parallelresult.ok after every triggerAndWait — don't assume successconfirmed: true in the input and must verify it before executing© 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 2 other files in skills/durable-agents of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Durable Agents 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 |
|---|---|---|---|---|---|---|
| Durable Agents this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~5k | Automated safety check: Pass | MIT | |
| Orca CLIstablyai/orca | 87k | 2 repos | ~593 | Automated safety check: Pass | MIT | |
| Paseo Advisor Second Opiniongetpaseo/paseo | 20k | 1 repos | ~756 | Automated safety check: Pass | Custom licence | |
| O2 Review Loopopenobserve/openobserve | 22k | — | ~3.7k | Automated safety check: Pass | AGPL-3.0 | |
| Paseo Committeegetpaseo/paseo | 20k | 1 repos | ~496 | Automated safety check: Pass | Custom licence | |
| Mission Control Agent APIbuilderz-labs/mission-control | 6.3k | — | ~2.1k | Automated safety check: Pass | MIT |
stablyai/orca
Operate Orca-managed worktrees, folder contexts, terminals, repos, automations, artifacts, skill sharing, worktree comments, and Orca's embedded browser…
getpaseo/paseo
Launches one separate agent through Paseo to give a second opinion on the current task, with a self-contained briefing and no permission to edit files.
openobserve/openobserve
Splits a change into planner, coder and independent reviewer roles: you confirm a spec, a subagent implements it, and a separate reviewer checks each round's local WIP commit.
getpaseo/paseo
Forms a two-agent committee with contrasting profiles to analyze a stuck problem in parallel, reconcile their views and return a consensus plan without editing files.
builderz-labs/mission-control
Teaches an agent to use the Mission Control dashboard API: register, send heartbeats, fetch assigned tasks, report progress and disconnect, with API key auth.
getpaseo/paseo
Hands off the current task, including context, decisions and failed attempts, to a fresh agent through Paseo by writing a self-contained briefing prompt and launching that agent.
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.
Works with
Categories
Build autonomous multi-agent pipelines with Mastra (agents only) and Trigger.dev (all workflows and tasks). Durable Agents is an agent skill from LeoYeAI/openclaw-master-skills.dev (all workflows and tasks).
Durable Agents fits situations like: creating AI agents; designing multi-stage pipelines; defining permissioned tools; structuring agent handoffs.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill durable-agents -a claude-code`. Or copy the skill folder (skills/durable-agents in LeoYeAI/openclaw-master-skills) into .claude/skills/durable-agents in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill durable-agents -a codex`. Or copy the skill folder (skills/durable-agents in LeoYeAI/openclaw-master-skills) into .agents/skills/durable-agents 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 durable-agents -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/durable-agents, .gemini/skills/durable-agents, .github/skills/durable-agents and .opencode/skills/durable-agents in your project.
SKILL.md names no scripts, command-line tools or credentials: Durable Agents is instructions for the agent only.
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.
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.
Durable Agents is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5k tokens (SKILL.md is roughly 20k 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 Durable Agents: Orca CLI (stablyai/orca, 87k stars), Paseo Advisor Second Opinion (getpaseo/paseo, 20k stars), O2 Review Loop (openobserve/openobserve, 22k stars) and Paseo Committee (getpaseo/paseo, 20k 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.