Mole Bug Patterns
tw93/Mole
A catalog of recurring bug shapes in the Mole Mac cleaner, used to review safety-sensitive diffs for deletion safety, unbounded commands, shell traps and weak tests.
๐ก๏ธ AI-powered error handling assistant that transforms fragile code into resilient systems.
$ npx skills add LeoYeAI/openclaw-master-skills --skill cuihua-error-handler -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills cuihua-error-handler --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/cuihua-error-handler .claude/skills/cuihua-error-handler && 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 "cuihua-error-handler" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/cuihua-error-handler into .claude/skills/cuihua-error-handler/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cuihua-error-handler", 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/cuihua-error-handlerType 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 cuihua-error-handler -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills cuihua-error-handler --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/cuihua-error-handler .agents/skills/cuihua-error-handler && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation ยท loads skills from .agents/skills/
Install the "cuihua-error-handler" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/cuihua-error-handler into .agents/skills/cuihua-error-handler/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cuihua-error-handler", 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 cuihua-error-handler -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills cuihua-error-handler --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/cuihua-error-handler .cursor/skills/cuihua-error-handler && 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 "cuihua-error-handler" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/cuihua-error-handler into .cursor/skills/cuihua-error-handler/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cuihua-error-handler", 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/cuihua-error-handler--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 cuihua-error-handler -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills cuihua-error-handler --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/cuihua-error-handler .gemini/skills/cuihua-error-handler && 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 "cuihua-error-handler" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/cuihua-error-handler into .gemini/skills/cuihua-error-handler/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cuihua-error-handler", 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 cuihua-error-handlerInstalls 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 cuihua-error-handler -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/cuihua-error-handler .github/skills/cuihua-error-handler && 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 "cuihua-error-handler" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/cuihua-error-handler into .github/skills/cuihua-error-handler/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cuihua-error-handler", 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 cuihua-error-handler -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 cuihua-error-handler --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/cuihua-error-handler .opencode/skills/cuihua-error-handler && 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 "cuihua-error-handler" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/cuihua-error-handler into .opencode/skills/cuihua-error-handler/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cuihua-error-handler", 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.
cuihua-error-handler๐ก๏ธ AI-powered error handling assistant that transforms fragile code into resilient systems.
Cuihua Error Handler is an agent skill from LeoYeAI/openclaw-master-skills. ๐ก๏ธ AI-powered error handling assistant that transforms fragile code into resilient systems. Automatically generate comprehensive error handling, recovery strategies, and graceful degradation. Because every production system deserves bulletproof error handling.
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files (for example `README.md`, `_meta.json` and `error-handler.js`).
It sits in Development, covering Error handling. The repository describes itself as: ๐ง Curated collection of 1209+ best OpenClaw skills โ weekly updated by MyClaw.ai. The licence is MIT.
6 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.
Ships script files (JavaScript), which the agent can run.
From 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:
api.weather.comAlso links to:
discord.gggithub.comFrom 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.
Cuihua Error Handler loads about 4.6k tokens when it runs. Until then it costs about 71 tokens; SKILL.md has 362 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). 362 words, ~4,580 tokens.
.claude/skills/cuihua-error-handler/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Turn fragile code into production-ready, resilient systems.
An intelligent error handling assistant that automatically:
The harsh reality:
cuihua-error-handler fixes all of this.
Tell your OpenClaw agent:
"Check error handling coverage in src/"
The agent will:
"Add error handling to getUserById in api/users.js"
The agent will:
"Add circuit breaker to payment service"
The agent will:
Automatically finds missing error handling:
// โ BEFORE - Fragile code
async function getUserById(id) {
const res = await fetch(`/api/users/${id}`);
return res.json();
}
// ๐ DETECTED ISSUES:
// - No error handling for network failures
// - No handling for non-200 responses
// - No handling for invalid JSON
// - No logging for debuggingGenerates production-ready error handling:
// โ
AFTER - Bulletproof code
class UserServiceError extends Error {
constructor(message, options = {}) {
super(message);
this.name = 'UserServiceError';
this.statusCode = options.statusCode;
this.originalError = options.cause;
}
}
async function getUserById(id) {
try {
// Validation
if (!id || typeof id !== 'string') {
throw new UserServiceError('Invalid user ID', { statusCode: 400 });
}
// Network request with timeout
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 5000);
const res = await fetch(`/api/users/${id}`, {
signal: controller.signal
});
clearTimeout(timeout);
// HTTP error handling
if (!res.ok) {
if (res.status === 404) {
throw new UserServiceError(`User ${id} not found`, { statusCode: 404 });
}
if (res.status >= 500) {
throw new UserServiceError('Server error, please retry', { statusCode: 502 });
}
throw new UserServiceError(`HTTP ${res.status}`, { statusCode: res.status });
}
// JSON parsing with error handling
let data;
try {
data = await res.json();
} catch (parseError) {
throw new UserServiceError('Invalid response format', {
statusCode: 502,
cause: parseError
});
}
return data;
} catch (error) {
// Network errors (timeout, connection refused)
if (error.name === 'AbortError') {
logger.error('getUserById timeout', { id, timeout: 5000 });
throw new UserServiceError('Request timeout', {
statusCode: 504,
cause: error
});
}
if (error.message.includes('fetch failed')) {
logger.error('getUserById network error', { id, error: error.message });
throw new UserServiceError('Network error', {
statusCode: 503,
cause: error
});
}
// Re-throw UserServiceError
if (error instanceof UserServiceError) {
logger.error('getUserById failed', { id, error: error.message });
throw error;
}
// Unexpected errors
logger.error('getUserById unexpected error', { id, error });
throw new UserServiceError('Internal error', {
statusCode: 500,
cause: error
});
}
}Smart retry with exponential backoff:
async function retryWithBackoff(fn, options = {}) {
const {
maxRetries = 3,
initialDelay = 1000,
maxDelay = 10000,
backoffFactor = 2,
shouldRetry = (error) => true
} = options;
let lastError;
let delay = initialDelay;
for (let attempt = 0; attempt <= maxRetries; attempt++) {
try {
return await fn();
} catch (error) {
lastError = error;
// Check if we should retry
if (attempt === maxRetries || !shouldRetry(error)) {
throw error;
}
// Wait before retry
logger.warn(`Retry attempt ${attempt + 1}/${maxRetries} after ${delay}ms`, {
error: error.message
});
await new Promise(resolve => setTimeout(resolve, delay));
// Exponential backoff
delay = Math.min(delay * backoffFactor, maxDelay);
}
}
throw lastError;
}
// Usage
async function fetchUserWithRetry(id) {
return retryWithBackoff(
() => getUserById(id),
{
maxRetries: 3,
shouldRetry: (error) => {
// Retry on network errors and 5xx
return error.statusCode >= 500 || error.name === 'NetworkError';
}
}
);
}Prevent cascading failures:
class CircuitBreaker {
constructor(fn, options = {}) {
this.fn = fn;
this.failureThreshold = options.failureThreshold || 5;
this.resetTimeout = options.resetTimeout || 60000;
this.state = 'CLOSED'; // CLOSED, OPEN, HALF_OPEN
this.failureCount = 0;
this.nextAttempt = Date.now();
}
async execute(...args) {
if (this.state === 'OPEN') {
if (Date.now() < this.nextAttempt) {
throw new Error('Circuit breaker is OPEN');
}
// Try to recover
this.state = 'HALF_OPEN';
}
try {
const result = await this.fn(...args);
this.onSuccess();
return result;
} catch (error) {
this.onFailure();
throw error;
}
}
onSuccess() {
this.failureCount = 0;
if (this.state === 'HALF_OPEN') {
this.state = 'CLOSED';
logger.info('Circuit breaker recovered');
}
}
onFailure() {
this.failureCount++;
if (this.failureCount >= this.failureThreshold) {
this.state = 'OPEN';
this.nextAttempt = Date.now() + this.resetTimeout;
logger.error('Circuit breaker opened', {
failureCount: this.failureCount,
resetTimeout: this.resetTimeout
});
}
}
}
// Usage
const getUserBreaker = new CircuitBreaker(getUserById, {
failureThreshold: 5,
resetTimeout: 60000
});
async function fetchUserSafely(id) {
try {
return await getUserBreaker.execute(id);
} catch (error) {
if (error.message === 'Circuit breaker is OPEN') {
// Return cached data or default
return getCachedUser(id) || { id, name: 'Unknown', error: true };
}
throw error;
}
}Fallback to cached/default data:
async function getUserWithFallback(id) {
try {
// Try primary source
return await getUserById(id);
} catch (error) {
logger.warn('Primary source failed, trying fallback', { id, error: error.message });
try {
// Try cache
const cached = await cache.get(`user:${id}`);
if (cached) {
logger.info('Returned cached user', { id });
return { ...cached, _cached: true };
}
} catch (cacheError) {
logger.error('Cache also failed', { id, error: cacheError.message });
}
// Return default user
logger.warn('Returning default user', { id });
return {
id,
name: 'Guest User',
_default: true,
_error: error.message
};
}
}Comprehensive coverage reporting:
๐ก๏ธ Error Handling Coverage Report
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Files analyzed: 42
๐ Functions analyzed: 156
- Async functions: 89
- Sync functions: 67
๐ Overall coverage: 68%
โ Missing error handling (28 functions):
Critical (needs immediate attention):
1. api/payment.js:45 - processPayment()
Risk: High - Financial transaction
Recommendation: Add try/catch + transaction rollback
2. api/auth.js:23 - verifyToken()
Risk: High - Security critical
Recommendation: Add error handling + logging
3. db/users.js:78 - updateUserProfile()
Risk: Medium - Data mutation
Recommendation: Add validation + rollback
โ ๏ธ Weak error handling (12 functions):
1. api/users.js:12 - getUserById()
Issue: Generic catch block without specific handling
Recommendation: Add error type differentiation
2. services/email.js:34 - sendWelcomeEmail()
Issue: Swallowed errors (empty catch block)
Recommendation: Add logging + alerting
๐ก Recommendations:
- Add error handling to 28 unprotected functions
- Improve 12 weak error handlers
- Target coverage: 90%+ for production readinessUser: "Add error handling to POST /api/orders"
Agent:
// โ
Generated comprehensive error handling
app.post('/api/orders', async (req, res) => {
try {
// Validation
const { userId, items, paymentMethod } = req.body;
if (!userId || !items || !paymentMethod) {
return res.status(400).json({
error: 'Missing required fields',
required: ['userId', 'items', 'paymentMethod']
});
}
if (!Array.isArray(items) || items.length === 0) {
return res.status(400).json({
error: 'Items must be a non-empty array'
});
}
// Create order with error handling
let order;
try {
order = await createOrder({ userId, items, paymentMethod });
} catch (error) {
if (error.code === 'INSUFFICIENT_STOCK') {
return res.status(409).json({
error: 'Some items are out of stock',
unavailable: error.items
});
}
throw error; // Re-throw for outer handler
}
// Process payment with retry
let payment;
try {
payment = await retryWithBackoff(
() => processPayment(order.id, paymentMethod),
{ maxRetries: 3 }
);
} catch (error) {
// Rollback order
await cancelOrder(order.id);
if (error.code === 'PAYMENT_DECLINED') {
return res.status(402).json({
error: 'Payment declined',
reason: error.reason
});
}
throw error;
}
// Success
res.status(201).json({
orderId: order.id,
paymentId: payment.id,
status: 'confirmed'
});
} catch (error) {
logger.error('Order creation failed', {
body: req.body,
error: error.message,
stack: error.stack
});
res.status(500).json({
error: 'Failed to create order',
message: process.env.NODE_ENV === 'development'
? error.message
: 'Please try again later'
});
}
});User: "Add error handling to database queries"
Agent:
class UserRepository {
async findById(id) {
try {
const user = await db.query(
'SELECT * FROM users WHERE id = $1',
[id]
);
if (!user) {
throw new NotFoundError(`User ${id} not found`);
}
return user;
} catch (error) {
if (error instanceof NotFoundError) {
throw error;
}
logger.error('Database query failed', {
method: 'findById',
id,
error: error.message
});
throw new DatabaseError('Failed to fetch user', { cause: error });
}
}
async update(id, data) {
const client = await db.getClient();
try {
await client.query('BEGIN');
const result = await client.query(
'UPDATE users SET name = $1, email = $2 WHERE id = $3 RETURNING *',
[data.name, data.email, id]
);
if (result.rowCount === 0) {
throw new NotFoundError(`User ${id} not found`);
}
await client.query('COMMIT');
return result.rows[0];
} catch (error) {
await client.query('ROLLBACK');
if (error.code === '23505') { // Unique violation
throw new ConflictError('Email already exists');
}
if (error instanceof NotFoundError) {
throw error;
}
logger.error('User update failed', { id, data, error: error.message });
throw new DatabaseError('Failed to update user', { cause: error });
} finally {
client.release();
}
}
}User: "Add resilience to third-party API calls"
Agent:
class WeatherAPI {
constructor() {
this.breaker = new CircuitBreaker(this._fetch.bind(this), {
failureThreshold: 5,
resetTimeout: 60000
});
this.cache = new Map();
}
async getWeather(city) {
// Try cache first
const cached = this.cache.get(city);
if (cached && Date.now() - cached.timestamp < 300000) { // 5 min cache
logger.info('Returning cached weather', { city });
return cached.data;
}
try {
// Call with circuit breaker
const data = await this.breaker.execute(city);
// Update cache
this.cache.set(city, {
data,
timestamp: Date.now()
});
return data;
} catch (error) {
logger.error('Weather API failed', { city, error: error.message });
// Return stale cache if available
if (cached) {
logger.warn('Returning stale cached data', { city });
return { ...cached.data, _stale: true };
}
// Return default
return {
city,
temperature: null,
condition: 'Unknown',
_error: error.message
};
}
}
async _fetch(city) {
const response = await retryWithBackoff(
() => fetch(`https://api.weather.com/v1/${city}`),
{
maxRetries: 3,
shouldRetry: (error) => {
// Don't retry client errors
return !error.statusCode || error.statusCode >= 500;
}
}
);
if (!response.ok) {
throw new Error(`Weather API error: ${response.status}`);
}
return response.json();
}
}Create .errorhandlerrc.json:
{
"coverage": {
"minimum": 80,
"target": 95,
"failOnBelow": true
},
"patterns": {
"enableRetry": true,
"enableCircuitBreaker": true,
"enableFallback": true,
"maxRetries": 3,
"retryDelay": 1000
},
"logging": {
"logLevel": "error",
"includeStack": true,
"structuredLogging": true
},
"customErrors": {
"baseClass": "AppError",
"errorTypes": [
"ValidationError",
"NotFoundError",
"UnauthorizedError",
"ForbiddenError"
]
}
}// Base error class
class AppError extends Error {
constructor(message, options = {}) {
super(message);
this.name = this.constructor.name;
this.statusCode = options.statusCode || 500;
this.code = options.code;
this.originalError = options.cause;
}
}
// Domain-specific errors
class ValidationError extends AppError {
constructor(message, fields) {
super(message, { statusCode: 400 });
this.fields = fields;
}
}
class NotFoundError extends AppError {
constructor(resource) {
super(`${resource} not found`, { statusCode: 404 });
this.resource = resource;
}
}
class UnauthorizedError extends AppError {
constructor(message = 'Unauthorized') {
super(message, { statusCode: 401 });
}
}
class ConflictError extends AppError {
constructor(message) {
super(message, { statusCode: 409 });
}
}
class ServiceUnavailableError extends AppError {
constructor(service) {
super(`${service} is temporarily unavailable`, { statusCode: 503 });
this.service = service;
}
}MIT License - see LICENSE for details.
Built with ๐ธ by ็ฟ ่ฑ (Cuihua) for the OpenClaw community.
Because production systems deserve bulletproof error handling.
Made with ๐ธ | Cuihua Series | ClawHub Pioneer
Transform fragile code into resilient systems.
ยฉ 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 4 other files in skills/cuihua-error-handler of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Cuihua Error Handler 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 |
|---|---|---|---|---|---|---|
| Cuihua Error Handler this skillLeoYeAI/openclaw-master-skills | 2.2k | โ | ~4.6k | Automated safety check: Pass | MIT | |
| Mole Bug Patternstw93/Mole | 69k | โ | ~2k | Automated safety check: Pass | GPL-3.0 | |
| Native Data FetchingCherryHQ/cherry-studio-app | 4k | 6 repos | ~2.9k | Automated safety check: Notes | MIT | |
| Rust Best Practicesfarm-fe/farm | 5.6k | 3 repos | ~1.1k | Automated safety check: Pass | MIT | |
| R Function Input Validationtidyverse/dplyr | 5.1k | 1 repos | ~2.3k | Automated safety check: Pass | Custom licence | |
| Error Handlingmicrosoft/data-formulator | 18k | โ | ~3.8k | Automated safety check: Pass | MIT |
tw93/Mole
A catalog of recurring bug shapes in the Mole Mac cleaner, used to review safety-sensitive diffs for deletion safety, unbounded commands, shell traps and weak tests.
CherryHQ/cherry-studio-app
A skill your agent uses when implementing or debugging ANY network request, API call, or data fetching.
farm-fe/farm
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
tidyverse/dplyr
Validates arguments of exported R functions with the standalone check_* type checkers from rlang, in tidyverse style with clear error messages.
microsoft/data-formulator
็ปไธ้่ฏฏๅค็็ณป็ปใๅจๆทปๅ API ็ซฏ็นใไฟฎๆน้่ฏฏๅค็ใๆทปๅ ๅ็ซฏ API ่ฐ็จใ็ผๅ้่ฏฏ็ธๅ ณๆต่ฏๆถไฝฟ็จ. An agent skill from microsoft/data-formulator.
UsefulSoftwareCo/executor
Pattern for wrapping third-party SDK clients (Stripe, Resend, AWS, etc.) with Effect.
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
๐ก๏ธ AI-powered error handling assistant that transforms fragile code into resilient systems. Cuihua Error Handler is an agent skill from LeoYeAI/openclaw-master-skills. ๐ก๏ธ AI-powered error handling assistant that transforms fragile code into resilient systems.
Cuihua Error Handler fits situations like: tasks that involve Error handling.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill cuihua-error-handler -a claude-code`. Or copy the skill folder (skills/cuihua-error-handler in LeoYeAI/openclaw-master-skills) into .claude/skills/cuihua-error-handler in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill cuihua-error-handler -a codex`. Or copy the skill folder (skills/cuihua-error-handler in LeoYeAI/openclaw-master-skills) into .agents/skills/cuihua-error-handler 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 cuihua-error-handler -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cuihua-error-handler, .gemini/skills/cuihua-error-handler, .github/skills/cuihua-error-handler and .opencode/skills/cuihua-error-handler in your project.
Going by SKILL.md and its folder, Cuihua Error Handler needs JavaScript for the scripts in its folder. Our summary lists: Node.js.
SKILL.md names 3 domains. In commands or code: api.weather.com; the agent is likely to contact it when it follows the instructions. As links in the text: discord.gg and github.com. 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.
Cuihua Error Handler is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.6k 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 Cuihua Error Handler: Mole Bug Patterns (tw93/Mole, 69k stars), Native Data Fetching (CherryHQ/cherry-studio-app, 4k stars), Rust Best Practices (farm-fe/farm, 5.6k stars) and R Function Input Validation (tidyverse/dplyr, 5.1k 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,158 GitHub stars. The repository holds 1,215 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.