npx claudepluginhub seonghyeonkimm/my-claude-code-config --plugin workflowThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
함수의 파라미터와 반환값에 객체를 사용하여 가독성, 확장성, 유지보수성을 높인다.
// ❌ positional parameters
function createUser(name: string, email: string, age: number, isAdmin: boolean) {
// ...
}
createUser("Kim", "kim@example.com", 30, false);
// ✅ RORO pattern
function createUser({ name, email, age, isAdmin }: {
name: string;
email: string;
age: number;
isAdmin: boolean;
}) {
// ...
}
createUser({ name: "Kim", email: "kim@example.com", age: 30, isAdmin: false });
// ❌ tuple 반환
function parseConfig(raw: string): [Config, Error | null] {
// ...
}
const [config, error] = parseConfig(rawText);
// ✅ 객체 반환
function parseConfig({ raw }: { raw: string }): { config: Config; error: Error | null } {
// ...
}
const { config, error } = parseConfig({ raw: rawText });
// ✅ destructuring + default values
function fetchUsers({ page = 1, limit = 20, sort = "createdAt" }: {
page?: number;
limit?: number;
sort?: string;
} = {}) {
// ...
}
fetchUsers(); // 모든 기본값 사용
fetchUsers({ limit: 50 }); // 필요한 것만 override
function greet(name: string) — 객체로 감쌀 필요 없음array.map((item, index) => ...) — 런타임/프레임워크 규약 따름Math.max(a, b), clamp(value, min, max) — 순서가 자명한 경우