用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/InugamiDev/ultrathink-oss --skill circuit-breaker命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Unified design foundations — design system architecture, tokens, component specs, visual principles, creative vision, figma integration, plus brand design system loader (66 real brands via DESIGN.md). Absorbs design, design-system, design-systems, design-principles, design-router, creative-vision, figma, design-md.
Render, summarize, and present markdown documents and structured content in multiple output modes
Ultra UI skill - combines Google's DESIGN.md spec (machine-readable design tokens) with the ui-ux-pro-max knowledge base (91 styles, 161 palettes, 73 font pairings, 161 products, 104 UX guidelines, 25 chart types). Generates lint-clean DESIGN.md files, validates token references and WCAG contrast, exports Tailwind/DTCG tokens, and diffs design systems version-over-version.
基于 SOC 职业分类
正在显示 SKILL.md
| name | circuit-breaker |
| description | Circuit breaker for fault tolerance — closed/open/half-open states, fallback, resilience libs |
| layer | domain |
| category | architecture |
| triggers | ["circuit breaker","fault tolerance","resilience","fallback pattern","service degradation","cascading failure"] |
| linksTo | ["error-handling","microservices","api-gateway"] |
| linkedFrom | ["microservices","api-gateway"] |
| riskLevel | high |
The circuit breaker pattern prevents cascading failures in distributed systems by wrapping calls to external services in a state machine. When failures exceed a threshold, the circuit "opens" and short-circuits requests, returning a fallback response instead of overwhelming a degraded service.
| State | Behavior |
|---|---|
| Closed | Requests pass through normally; failures are counted |
| Open | Requests are immediately rejected; fallback is returned |
| Half-Open | A limited number of probe requests are allowed to test recovery |
type CircuitState = 'closed' | 'open' | 'half-open';
interface CircuitBreakerOptions {
failureThreshold: number; // failures before opening
resetTimeoutMs: number; // time before half-open probe
halfOpenMax: number; // probe requests in half-open
}
class CircuitBreaker {
private state: CircuitState = 'closed';
private failureCount = 0;
private lastFailureTime = 0;
private halfOpenAttempts = 0;
constructor(private opts: CircuitBreakerOptions) {}
async call<T>(fn: () => Promise<T>, fallback: () => T): Promise<T> {
if (this.state === 'open') {
if (Date.now() - this.lastFailureTime > this.opts.) {
. = ;
. = ;
} {
();
}
}
(. === && . >= ..) {
();
}
{
result = ();
.();
result;
} (err) {
.();
();
}
}
() {
. = ;
. = ;
}
() {
.++;
. = .();
(. === || . >= ..) {
. = ;
}
}
}
import CircuitBreaker from 'opossum';
const breaker = new CircuitBreaker(fetchUserProfile, {
timeout: 3000,
errorThresholdPercentage: 50,
resetTimeout: 10000,
});
breaker.fallback(() => ({ name: 'Guest', cached: true }));
breaker.on('open', () => metrics.increment('circuit.open'));
breaker.on('halfOpen', () => metrics.increment('circuit.halfOpen'));
const profile = await breaker.fire(userId);
const breakers = new Map<string, CircuitBreaker>();
function getBreaker(service: string) {
if (!breakers.has(service)) {
breakers.set(service, new CircuitBreaker({
failureThreshold: 5,
resetTimeoutMs: 30_000,
halfOpenMax: 2,
}));
}
return breakers.get(service)!;
}