acc-create-rate-limiter
Generates Rate Limiter pattern for PHP 8.5. Creates request throttling with token bucket, sliding window, and fixed window algorithms. Includes unit tests.
Best use case
acc-create-rate-limiter is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Generates Rate Limiter pattern for PHP 8.5. Creates request throttling with token bucket, sliding window, and fixed window algorithms. Includes unit tests.
Teams using acc-create-rate-limiter should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/acc-create-rate-limiter/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How acc-create-rate-limiter Compares
| Feature / Agent | acc-create-rate-limiter | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Generates Rate Limiter pattern for PHP 8.5. Creates request throttling with token bucket, sliding window, and fixed window algorithms. Includes unit tests.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Rate Limiter Generator
Creates Rate Limiter pattern infrastructure for request throttling and API protection.
## When to Use
| Scenario | Example |
|----------|---------|
| API protection | Prevent abuse |
| Resource throttling | Database connection limits |
| Fair usage | Per-user request limits |
| Burst protection | Spike handling |
## Component Characteristics
### RateLimiterInterface
- Common interface for all algorithms
- Check and consume methods
- Remaining capacity queries
### Algorithms
- **Token Bucket**: Smooth rate limiting with burst capacity
- **Sliding Window**: Time-based with sliding window log
- **Fixed Window**: Simple time-based counter
### RateLimitResult
- Contains allowed/denied status
- Provides retry-after information
- Generates HTTP headers
---
## Generation Process
### Step 1: Generate Core Components
**Path:** `src/Infrastructure/Resilience/RateLimiter/`
1. `RateLimiterInterface.php` — Common interface
2. `RateLimitResult.php` — Result value object with headers
3. `RateLimitExceededException.php` — Exception with retry info
4. `StorageInterface.php` — Storage abstraction
### Step 2: Choose and Generate Algorithm
Choose based on use case:
1. `TokenBucketRateLimiter.php` — For APIs with burst allowance
2. `SlidingWindowRateLimiter.php` — For strict per-time limits
3. `FixedWindowRateLimiter.php` — For simple rate limiting
### Step 3: Generate Storage
1. `RedisStorage.php` — Production storage with TTL
### Step 4: Generate Tests
1. `{Algorithm}RateLimiterTest.php` — Algorithm tests
2. `RateLimitResultTest.php` — Result value object tests
---
## File Placement
| Component | Path |
|-----------|------|
| All Classes | `src/Infrastructure/Resilience/RateLimiter/` |
| Unit Tests | `tests/Unit/Infrastructure/Resilience/RateLimiter/` |
---
## Naming Conventions
| Component | Pattern | Example |
|-----------|---------|---------|
| Interface | `RateLimiterInterface` | `RateLimiterInterface` |
| Token Bucket | `TokenBucketRateLimiter` | `TokenBucketRateLimiter` |
| Sliding Window | `SlidingWindowRateLimiter` | `SlidingWindowRateLimiter` |
| Fixed Window | `FixedWindowRateLimiter` | `FixedWindowRateLimiter` |
| Result | `RateLimitResult` | `RateLimitResult` |
| Exception | `RateLimitExceededException` | `RateLimitExceededException` |
| Test | `{ClassName}Test` | `TokenBucketRateLimiterTest` |
---
## Quick Template Reference
### RateLimiterInterface
```php
interface RateLimiterInterface
{
public function attempt(string $key, int $tokens = 1): RateLimitResult;
public function getRemainingTokens(string $key): int;
public function getRetryAfter(string $key): ?int;
public function reset(string $key): void;
}
```
### RateLimitResult
```php
final readonly class RateLimitResult
{
public static function allowed(int $remaining, int $limit, \DateTimeImmutable $resetsAt): self;
public static function denied(int $limit, int $retryAfter, \DateTimeImmutable $resetsAt): self;
public function isAllowed(): bool;
public function isDenied(): bool;
public function toHeaders(): array; // X-RateLimit-* headers
}
```
---
## Usage Example
```php
// Create limiter
$limiter = new TokenBucketRateLimiter(
capacity: 100,
refillRate: 10.0, // 10 tokens per second
clock: $clock,
storage: new RedisStorage($redis)
);
// Check limit
$result = $limiter->attempt('user:123');
if ($result->isDenied()) {
throw new RateLimitExceededException(
key: 'user:123',
limit: $result->limit,
retryAfterSeconds: $result->retryAfterSeconds
);
}
// Add headers to response
foreach ($result->toHeaders() as $name => $value) {
$response = $response->withHeader($name, (string) $value);
}
```
---
## Algorithm Comparison
| Algorithm | Burst Handling | Memory | Precision | Use Case |
|-----------|----------------|--------|-----------|----------|
| Token Bucket | Good (configurable) | Low | Medium | APIs with burst allowance |
| Sliding Window | Limited | High | High | Strict per-time limits |
| Fixed Window | Poor (boundary issues) | Low | Low | Simple rate limiting |
---
## Anti-patterns to Avoid
| Anti-pattern | Problem | Solution |
|--------------|---------|----------|
| No Redis/Shared Storage | Per-instance limits | Use shared storage |
| Missing Headers | Client can't adapt | Return X-RateLimit-* headers |
| Single Algorithm | Doesn't fit all cases | Choose per use case |
| No Retry-After | Client spams | Always return retry timing |
| Synchronous Blocking | Thread blocking | Use non-blocking check |
---
## References
For complete PHP templates and examples, see:
- `references/templates.md` — All algorithm implementations
- `references/examples.md` — Middleware example and testsRelated Skills
advanced-memoization-strategies
Apply principled memoization techniques to reduce re-rendering without introducing correctness bugs.
advanced-caching-strategies
Multi-layer caching strategies across CDN, browser, server, and database. PROACTIVELY activate for: (1) HTTP caching headers, (2) CDN configuration, (3) Server-side caching with Redis, (4) Cache invalidation strategies, (5) ETag implementation. Triggers: "caching", "cache strategy", "CDN", "browser cache", "server cache", "redis", "cache invalidation", "ETag", "Cache-Control"
add-rate-limiting
Configure rate limiting policies for API endpoints with sliding window limits
Adaptive Bitrate Streaming
Automatically adjusting video quality based on network conditions using HLS, DASH protocols and player implementation for smooth playback and optimal user experience.
huggingface-accelerate
Simplest distributed training API. 4 lines to add distributed support to any PyTorch script. Unified API for DeepSpeed/FSDP/Megatron/DDP. Automatic device placement, mixed precision (FP16/BF16/FP8). Interactive config, single launch command. HuggingFace ecosystem standard.
acc-create-value-object
Generates DDD Value Objects for PHP 8.5. Creates immutable, self-validating objects with equality comparison. Includes unit tests.
acc-create-use-case
Generates Application Use Cases for PHP 8.5. Creates orchestration services that coordinate domain objects, handle transactions, and dispatch events. Includes unit tests.
acc-create-unit-test
Generates PHPUnit unit tests for PHP 8.5. Creates isolated tests with AAA pattern, proper naming, attributes, and one behavior per test. Supports Value Objects, Entities, Services.
acc-create-test-double
Generates test doubles (Mocks, Stubs, Fakes, Spies) for PHP 8.5. Creates appropriate double type based on testing needs with PHPUnit MockBuilder patterns.
acc-create-test-builder
Generates Test Data Builder and Object Mother patterns for PHP 8.5. Creates fluent builders with sensible defaults and factory methods for test data creation.
acc-create-strategy
Generates Strategy pattern for PHP 8.5. Creates interchangeable algorithm families with context class, strategy interface, and concrete implementations. Includes unit tests.
acc-create-state
Generates State pattern for PHP 8.5. Creates state machines with context, state interface, and concrete states for behavior changes. Includes unit tests.