acc-create-retry-pattern
Generates Retry pattern for PHP 8.5. Creates resilience component with exponential backoff, jitter, and configurable retry strategies. Includes unit tests.
Best use case
acc-create-retry-pattern is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Generates Retry pattern for PHP 8.5. Creates resilience component with exponential backoff, jitter, and configurable retry strategies. Includes unit tests.
Teams using acc-create-retry-pattern 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-retry-pattern/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How acc-create-retry-pattern Compares
| Feature / Agent | acc-create-retry-pattern | 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 Retry pattern for PHP 8.5. Creates resilience component with exponential backoff, jitter, and configurable retry strategies. 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
# Retry Pattern Generator
Creates Retry pattern infrastructure for handling transient failures.
## When to Use
| Scenario | Example |
|----------|---------|
| Transient failures | Network timeouts, temporary unavailability |
| External API calls | HTTP requests to third-party services |
| Database operations | Deadlock recovery, connection issues |
| Message processing | Queue message handling with retries |
## Component Characteristics
### RetryPolicy
- Configures retry behavior
- Maximum attempts
- Delay strategy (fixed, exponential, linear)
- Jitter support to prevent thundering herd
### RetryExecutor
- Executes operations with retry logic
- Tracks attempt count
- Applies delay between retries
- Logs retry attempts
### Backoff Strategies
- **Fixed**: Same delay every time
- **Linear**: Delay increases linearly
- **Exponential**: Delay doubles (with optional jitter)
---
## Generation Process
### Step 1: Generate Core Components
**Path:** `src/Infrastructure/Resilience/Retry/`
1. `BackoffStrategy.php` — Enum for delay strategies
2. `RetryPolicy.php` — Configuration with shouldRetry/calculateDelay
3. `RetryContext.php` — Attempt context value object
4. `RetryException.php` — Exception with attempt history
### Step 2: Generate Executor
**Path:** `src/Infrastructure/Resilience/Retry/`
1. `RetryExecutor.php` — Main retry logic with callbacks
2. `SleepInterface.php` — For testability
### Step 3: Generate Tests
1. `RetryPolicyTest.php` — Policy behavior tests
2. `RetryExecutorTest.php` — Executor tests
---
## File Placement
| Component | Path |
|-----------|------|
| All Classes | `src/Infrastructure/Resilience/Retry/` |
| Unit Tests | `tests/Unit/Infrastructure/Resilience/Retry/` |
---
## Naming Conventions
| Component | Pattern | Example |
|-----------|---------|---------|
| Policy | `RetryPolicy` | `RetryPolicy` |
| Strategy Enum | `BackoffStrategy` | `BackoffStrategy` |
| Executor | `RetryExecutor` | `RetryExecutor` |
| Context | `RetryContext` | `RetryContext` |
| Exception | `RetryException` | `RetryException` |
| Test | `{ClassName}Test` | `RetryExecutorTest` |
---
## Quick Template Reference
### RetryPolicy
```php
final readonly class RetryPolicy
{
public function __construct(
public int $maxAttempts = 3,
public int $baseDelayMs = 100,
public int $maxDelayMs = 10000,
public float $multiplier = 2.0,
public bool $useJitter = true,
public BackoffStrategy $strategy = BackoffStrategy::Exponential,
public array $retryableExceptions = [],
public array $nonRetryableExceptions = []
) {}
public static function exponential(int $maxAttempts = 5, int $baseDelayMs = 100): self;
public static function linear(int $maxAttempts = 5, int $baseDelayMs = 500): self;
public function shouldRetry(\Throwable $e, int $attempt): bool;
public function calculateDelay(int $attempt): int;
}
```
### RetryExecutor
```php
final readonly class RetryExecutor
{
public function execute(
callable $operation,
RetryPolicy $policy,
?callable $onRetry = null
): mixed;
}
```
---
## Usage Example
```php
$policy = new RetryPolicy(
maxAttempts: 3,
baseDelayMs: 200,
retryableExceptions: [
ConnectionException::class,
TimeoutException::class,
],
nonRetryableExceptions: [
ClientException::class,
]
);
try {
$result = $retryExecutor->execute(
operation: fn() => $httpClient->get($url),
policy: $policy,
onRetry: fn($e, $ctx) => $logger->warning('Retrying...', ['attempt' => $ctx->attempt])
);
} catch (RetryException $e) {
// All retries exhausted
$deadLetter->send($message, $e);
}
```
---
## Anti-patterns to Avoid
| Anti-pattern | Problem | Solution |
|--------------|---------|----------|
| No Max Attempts | Infinite retries | Always set maxAttempts |
| No Backoff | Hammering service | Use exponential backoff |
| Retrying All Exceptions | Retrying unrecoverable errors | Specify retryable exceptions |
| No Jitter | Thundering herd | Enable jitter |
| Ignoring Context | Can't track attempts | Use RetryContext |
| Blocking Forever | Thread exhaustion | Set maxDelayMs cap |
---
## References
For complete PHP templates and examples, see:
- `references/templates.md` — RetryPolicy, BackoffStrategy, RetryExecutor, RetryContext templates
- `references/examples.md` — HTTP client, database, message consumer examples and testsRelated Skills
advanced-patterns
Advanced T-SQL patterns and techniques for SQL Server. Use this skill when: (1) User needs help with CTEs or recursive queries, (2) User asks about APPLY operator, (3) User wants MERGE or OUTPUT clause help, (4) User works with temporal tables, (5) User needs In-Memory OLTP guidance, (6) User asks about advanced grouping (ROLLUP, CUBE, GROUPING SETS).
advanced-js-mocking-patterns
Advanced mocking patterns for Jest and Vitest including module mocking, spies, and fake timers. PROACTIVELY activate for: (1) Module mocking, (2) Partial mocking with spies, (3) Mock lifecycle management, (4) Fake timers for time-dependent code, (5) Complex mock implementations. Triggers: "jest.mock", "vi.mock", "spyOn", "fakeTimers", "mockImplementation", "mockReturnValue", "mock lifecycle"
Advanced GetX Patterns
Advanced GetX features including Workers, GetxService, SmartManagement, GetConnect, GetSocket, bindings composition, and testing patterns
add-outbox-pattern
Add transactional outbox pattern for reliable event publishing with RavenDB (project)
patterns/adapter
Adapter (Wrapper) Pattern pattern for C development
ActiveRecord Query Patterns
Complete guide to ActiveRecord query optimization, associations, scopes, and PostgreSQL-specific patterns. Use this skill when writing database queries, designing model associations, creating migrations, optimizing query performance, or debugging N+1 queries and grouping errors.
actions-pattern
Garante que novas Actions sigam o padrão de classes actions reutilizáveis do Easy Budget.
Action Pattern Conventions
This skill should be used when the user asks about "Laravel action pattern", "action class naming", "how to structure actions", "React component patterns", "Node.js service structure", "framework-specific conventions", or discusses creating reusable, focused classes following action pattern conventions in Laravel, Symfony, React, Vue, or Node.js projects.
Action Cable & WebSocket Patterns
Real-time WebSocket features with Action Cable in Rails. Use when: (1) Building real-time chat, (2) Live notifications/presence, (3) Broadcasting model updates, (4) WebSocket authorization. Trigger keywords: Action Cable, WebSocket, real-time, channels, broadcasting, stream, subscriptions, presence, cable
ace-pattern-learning
Search ACE playbook before implementing, building, fixing, debugging, or refactoring code. Capture patterns after completing substantial coding work.
accessibility-patterns
Build inclusive web experiences following WCAG guidelines. Covers semantic HTML, ARIA, keyboard navigation, color contrast, and testing strategies. Triggers on accessibility, a11y, WCAG, screen readers, or inclusive design requests.
access-control-patterns
[STUB - Not implemented] Access control auditing with IDOR detection, RBAC/ABAC patterns, and privilege escalation prevention. PROACTIVELY activate for: [TODO: Define on implementation]. Triggers: [TODO: Define on implementation]