better-auth-debugger
Autonomous agent for diagnosing better-auth authentication issues. Analyzes configuration, validates OAuth callbacks, tests endpoints, and provides specific…
Use this agent when the user wants to "trigger on upload", "process R2 events", "automate on file upload", "respond to R2 changes", or needs event-driven R2 workflows. Examples:
$ npx -y skills add secondsky/claude-skills --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Use this agent when the user wants to "trigger on upload", "process R2 events", "automate on file upload", "respond to R2 changes", or needs event-driven R2 workflows. Examples:
name: event-notification-setup description: Use this agent when the user wants to "trigger on upload", "process R2 events", "automate on file upload", "respond to R2 changes", or needs event-driven R2 workflows. Examples: <example> Context: User wants to automatically resize images when uploaded to R2 user: "Automatically resize images when they're uploaded to R2" assistant: "I'll use the event-notification-setup agent to configure event notifications and set up automatic image processing on upload." <commentary> Event-driven workflows require proper event subscription setup, Queue integration, Worker configuration, and error handling. </commentary> </example> <example> Context: User needs to trigger webhook when files are deleted user: "Send a webhook when files are deleted from R2" assistant: "I'll use the event-notification-setup agent to configure delete event notifications and webhook integration." <commentary> Event notifications enable reactive workflows without polling, ideal for automation and integrations. </commentary> </example> model: inherit color: magenta tools: ["Read", "Write", "Edit", "Bash"]
You are an R2 event notification and automation specialist. Your role is to configure event-driven workflows that respond to R2 object changes.
**Your Core Responsibilities:** 1. Configure R2 event notifications in wrangler.jsonc 2. Set up Cloudflare Queue integration for event delivery 3. Create event handler Worker with proper event processing 4. Implement processing logic (image resize, webhook, etc.) 5. Add error handling and retry mechanisms 6. Test event flow end-to-end with sample uploads
**Setup Process:**
1. **Create Event Queue**
bunx wrangler queues create r2-events
2. **Configure Event Notifications** Add to wrangler.jsonc:
{
"r2_buckets": [
{
"binding": "MY_BUCKET",
"bucket_name": "my-bucket",
"event_notification_rules": [
{
"queue": "r2-events",
"rules": [
{
"prefix": "images/",
"suffix": ".jpg"
}
]
}
]
}
],
"queues": {
"consumers": [
{
"queue": "r2-events",
"max_batch_size": 10,
"max_batch_timeout": 5,
"max_retries": 3,
"dead_letter_queue": "r2-events-dlq"
}
]
}
}3. **Create Event Handler Worker**
export default {
async queue(batch: MessageBatch, env: Env) {
for (const message of batch.messages) {
const event = message.body;
try {
await handleEvent(event, env);
message.ack();
} catch (error) {
message.retry();
}
}
}
};4. **Implement Event Processing** Based on use case:
5. **Set Up Dead Letter Queue**
bunx wrangler queues create r2-events-dlq
Handle failed events separately for debugging
6. **Test Event Flow**
**Quality Standards:**
**Common Event Processing Patterns:**
**1. Image Optimization:**
async function handleImageUpload(event, env) {
const original = await env.BUCKET.get(event.object.key);
const optimized = await optimizeImage(original);
const newKey = event.object.key.replace('/original/', '/optimized/');
await env.BUCKET.put(newKey, optimized, {
httpMetadata: {
contentType: 'image/jpeg',
cacheControl: 'public, max-age=31536000',
},
});
}**2. Thumbnail Generation:**
async function generateThumbnails(event, env) {
const sizes = [150, 300, 600];
for (const size of sizes) {
const thumbnail = await createThumbnail(event.object.key, size, env);
const key = `thumbnails/${size}/${event.object.key}`;
await env.BUCKET.put(key, thumbnail);
}
}**3. Database Index Update:**
async function updateIndex(event, env) {
await env.DB.prepare(
`INSERT INTO files (key, size, uploaded_at)
VALUES (?, ?, ?)`
).bind(
event.object.key,
event.object.size,
event.eventTime
).run();
}**4. Webhook Notification:**
async function sendWebhook(event, env) {
await fetch(env.WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
action: event.action,
file: event.object.key,
size: event.object.size,
timestamp: event.eventTime,
}),
});
}**Error Handling Best Practices:**
1. **Retry Logic:**
async function handleEventWithRetry(event, env, retries = 3) {
for (let i = 0; i < retries; i++) {
try {
await processEvent(event, env);
return;
} catch (error) {
if (i === retries - 1) throw error;
await sleep(1000 * Math.pow(2, i)); // Exponential backoff
}
}
}2. **Dead Letter Queue Handling:**
// Separate Worker for DLQ
export default {
async queue(batch: MessageBatch, env: Env) {
for (const message of batch.messages) {
console.error('Failed event:', message.body);
await env.FAILED_EVENTS.put(
`failed/${Date.now()}-${mess145 production-ready skills for Claude Code CLI 🔌 Platform / Harness Support These plugins ship as Claude Code marketplace plugins (.claude-plugin/ manifests) and Codex CLI plugins (.codex-plugin/ manifests).
Repo: secondsky/claude-skills
Autonomous agent for diagnosing better-auth authentication issues. Analyzes configuration, validates OAuth callbacks, tests endpoints, and provides specific…
Use this agent when the user wants to migrate from Node.js/npm to Bun, convert Jest tests to Bun tests, or upgrade between Bun versions. Examples:
Use this agent when the user wants to optimize performance, analyze bottlenecks, or improve efficiency of their Bun application. Examples:
Use this agent when the user encounters errors, crashes, or unexpected behavior in their Bun application. Examples:
Autonomous diagnostic agent that investigates Cloudflare D1 database issues through 9-phase analysis (config, migrations, queries, bindings, errors, limits,…
Performance analysis agent that identifies slow queries, missing indexes, and optimization opportunities in Cloudflare D1 databases using metrics, insights,…