Claude-skill-registry lindy-cost-tuning

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/lindy-cost-tuning" ~/.claude/skills/majiayu000-claude-skill-registry-lindy-cost-tuning-46f736 && rm -rf "$T"
manifest: skills/data/lindy-cost-tuning/SKILL.md
source content

Lindy Cost Tuning

Overview

Optimize Lindy AI costs while maintaining service quality.

Prerequisites

  • Access to Lindy billing dashboard
  • Usage data available
  • Understanding of pricing tiers

Instructions

Step 1: Analyze Current Usage

import { Lindy } from '@lindy-ai/sdk';

async function analyzeUsage() {
  const lindy = new Lindy({ apiKey: process.env.LINDY_API_KEY });

  const usage = await lindy.usage.monthly({
    startDate: '2025-01-01',
    endDate: '2025-01-31',
  });

  const analysis = {
    totalRuns: usage.agentRuns.total,
    totalCost: usage.billing.total,
    costPerRun: usage.billing.total / usage.agentRuns.total,
    topAgents: usage.byAgent
      .sort((a: any, b: any) => b.cost - a.cost)
      .slice(0, 5),
    peakHours: usage.byHour
      .sort((a: any, b: any) => b.runs - a.runs)
      .slice(0, 5),
  };

  console.log('Usage Analysis:', analysis);
  return analysis;
}

Step 2: Implement Usage Budgets

interface Budget {
  monthly: number;
  daily: number;
  perAgent: number;
}

const budget: Budget = {
  monthly: 500, // $500/month
  daily: 20,    // $20/day
  perAgent: 50, // $50/agent/month
};

async function checkBudget(): Promise<boolean> {
  const lindy = new Lindy({ apiKey: process.env.LINDY_API_KEY });

  const usage = await lindy.usage.current();

  if (usage.billing.monthly >= budget.monthly) {
    console.error('Monthly budget exceeded!');
    await sendAlert('Budget exceeded', { usage, budget });
    return false;
  }

  if (usage.billing.today >= budget.daily) {
    console.warn('Daily budget exceeded');
    return false;
  }

  return true;
}

Step 3: Optimize Agent Costs

// Cost-optimized agent configuration
const optimizedAgent = {
  name: 'Cost-Efficient Agent',
  instructions: 'Be brief. Answer in 1-2 sentences.',
  config: {
    model: 'gpt-3.5-turbo', // Cheaper model
    maxTokens: 100,         // Limit output
    temperature: 0.3,       // Less creative = fewer tokens
  },
};

// Route simple queries to cheaper agents
async function routeQuery(input: string) {
  const isSimple = input.length < 100 && !input.includes('analyze');

  const agentId = isSimple
    ? 'agt_cheap_simple'
    : 'agt_expensive_complex';

  return lindy.agents.run(agentId, { input });
}

Step 4: Implement Caching to Reduce Calls

import NodeCache from 'node-cache';

const cache = new NodeCache({ stdTTL: 3600 }); // 1 hour cache

async function cachedRun(agentId: string, input: string) {
  const cacheKey = `${agentId}:${input}`;

  // Check cache first (free!)
  const cached = cache.get(cacheKey);
  if (cached) {
    console.log('Cache hit - $0');
    return cached;
  }

  // Only call API if cache miss
  const result = await lindy.agents.run(agentId, { input });
  cache.set(cacheKey, result);

  console.log('Cache miss - API call made');
  return result;
}

Step 5: Set Up Cost Alerts

async function setupCostAlerts() {
  const lindy = new Lindy({ apiKey: process.env.LINDY_API_KEY });

  // Alert at 80% of budget
  await lindy.billing.alerts.create({
    threshold: 400, // $400 of $500 budget
    type: 'monthly',
    channels: ['email', 'slack'],
    message: 'Approaching monthly budget limit',
  });

  // Daily anomaly detection
  await lindy.billing.alerts.create({
    threshold: 50, // 50% above average
    type: 'anomaly',
    channels: ['slack'],
    message: 'Unusual spending detected',
  });
}

Cost Optimization Checklist

[ ] Usage analysis completed
[ ] Budget limits defined
[ ] Cost alerts configured
[ ] Caching implemented
[ ] Cheaper models for simple tasks
[ ] Max tokens configured
[ ] Unused agents identified and disabled
[ ] Peak usage patterns analyzed

Output

  • Usage analysis report
  • Budget enforcement
  • Cost-optimized agents
  • Caching for reduced API calls
  • Alert system

Error Handling

IssueCauseSolution
Budget exceededHigh usageThrottle or pause
Cost spikeAnomalyInvestigate and alert
Cache ineffectiveLow hit rateTune TTL

Examples

Monthly Cost Report

async function generateCostReport() {
  const usage = await analyzeUsage();

  const report = `
# Lindy Cost Report - ${new Date().toISOString().slice(0, 7)}

## Summary
- Total Runs: ${usage.totalRuns}
- Total Cost: $${usage.totalCost.toFixed(2)}
- Cost per Run: $${usage.costPerRun.toFixed(4)}

## Top Agents by Cost
${usage.topAgents.map((a: any) => `- ${a.name}: $${a.cost.toFixed(2)}`).join('\n')}

## Recommendations
${usage.costPerRun > 0.05 ? '- Consider cheaper models for simple tasks' : ''}
${usage.cacheHitRate < 0.3 ? '- Improve caching strategy' : ''}
  `;

  return report;
}

Resources

Next Steps

Proceed to

lindy-reference-architecture
for architecture patterns.