Skillshub appfolio-rate-limits
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/appfolio-rate-limits" ~/.claude/skills/comeonoliver-skillshub-appfolio-rate-limits && rm -rf "$T"
manifest:
skills/jeremylongshore/claude-code-plugins-plus-skills/appfolio-rate-limits/SKILL.mdsource content
appfolio rate limits | sed 's/\b(.)/\u\1/g'
Overview
AppFolio API enforces rate limits per partner. Implement throttling to stay within limits.
Rate Limit Handler
import Bottleneck from "bottleneck"; const limiter = new Bottleneck({ maxConcurrent: 5, minTime: 200, // 5 requests/second max }); async function throttledRequest(client: any, path: string) { return limiter.schedule(() => client.http.get(path)); } // 429 retry async function withRetry(fn: () => Promise<any>, maxRetries = 3) { for (let i = 1; i <= maxRetries; i++) { try { return await fn(); } catch (err: any) { if (err.response?.status !== 429 || i === maxRetries) throw err; const delay = Math.min(1000 * Math.pow(2, i), 30000); await new Promise(r => setTimeout(r, delay)); } } }