一键导入
pikes-filter
Rob Pike 5원칙 기반 코드 리뷰 & 리팩토링 방법론. 추측성 최적화, 과도한 알고리즘, 로직/데이터 불균형을 진단하고 데이터 중심 설계로 개선하는 자동화된 코드 분석 스킬. 어떤 언어/프로젝트든 적용 가능한 범용 원칙.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Rob Pike 5원칙 기반 코드 리뷰 & 리팩토링 방법론. 추측성 최적화, 과도한 알고리즘, 로직/데이터 불균형을 진단하고 데이터 중심 설계로 개선하는 자동화된 코드 분석 스킬. 어떤 언어/프로젝트든 적용 가능한 범용 원칙.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
swk-wiki(회사 장기기억)의 10_Raw 에 사람이 손에 든 자료를 투입(업로드)하는 가이드 스킬. 리서치·조사·외부 기사·회의 메모·데이터 덤프 등을 받아, 메타(제목·출처·시점·민감도·맥락)를 에이전트가 대화·파일·git 맥락에서 **최대한 추론**해 10_Raw/ingest 에 날짜-slug 스냅샷으로 떨군다(append-only). 묻기는 최후 수단 — 추론값으로 먼저 만들고 근거를 보고해 사용자가 틀린 것만 고치게 한다. 투입 시 읽기 좋게 가볍게 다듬되, 한 번 들어간 Raw 는 절대 수정하지 않는다(업데이트=새 스냅샷). restricted 자료는 AI API 전송 차단. 대상 레포는 항상 ~/workspace/swk-wiki (어디서 호출하든 절대경로). Use when: "raw 에 올려줘", "위키에 올려줘/넣어줘", "이 자료 기록/저장해줘", "조사한 거 남겨줘", 손에 든 자료를 회사 기억에 남기고 싶을 때. Do NOT use for: Slack/Notion 자동 수집(collector 담당), 20_Wiki 본문 작성·구조화(gardener), Decision/가격/계약/보안 문서(PR-only).
레포의 `docs/` 문서를 HTML 페이지로 출간 — md 만으로는 어려운 이해를 다이어그램·탭·TOC·박스 같은 HTML 시각화로 돕고, `~/public_html/` 에 symlink 로 Tailscale 멤버에게 공유. 본문 톤은 `josh-dev:9999/markwand/` 와 1:1 정렬 (베이지/녹색/Inter/GFM Alert). 오류·문제 분석(버그 RCA·이슈·장애·정합성)은 항상 최상단 sticky 2탭(🙂 쉬운 분석 먼저 / 🔬 상세 분석)으로 만든다. Use proactively when user says "HTML 로 만들어줘", "테일스케일로 띄워줘", "도식화해서 보여줘", "남에게 보여주게 페이지로", "공유 페이지 만들어줘", "doc publish", "/doc-publish", "이거 페이지로 띄워줘". Triggers: doc-publish, HTML 공유, 도식화, 시각화 페이지, share as html, publish html, tailnet share. Do NOT use for: 일반 markdown 으로 충분한 문서, 코드/룰북(CLAUDE.md, AGENTS.md, .claude/rules/), 단발 메모, 시크릿/자격증명 포함 가능 문서, 개인 작업물(이미 ~/public_html/ 자유 공간).
프롬프트, CLAUDE.md, 에이전트 설정, 스킬 정의를 프로덕션 에이전트 설계 원칙으로 평가. "review my prompt", "audit this", "evaluate my CLAUDE.md", "score this skill", "check my agent config", "is this prompt good enough", "이 프롬프트 괜찮아?", "이거 리뷰해줘", "개선점 있어?" 등 프롬프트/에이전트/스킬 품질 피드백 요청 시 사용. 시스템 프롬프트, CLAUDE.md, 스킬 파일을 붙여넣고 의견을 구하는 경우에도 트리거. Claude 전용이 아닌 모든 LLM 프롬프트/에이전트 설정에 적용 가능.
Multi-AI consultation for structured TASK document creation + Team-based implementation. Phase 1-2: Parallel AI consultation + self-review → Implementation-ready document. Phase 3: Agent team implementation with Critic + Explorer teammates → Validated code.
Multi-LLM consultation wrapper for external AI reviews. Supports Gemini and GPT with hardcoded model names to prevent agent modifications.
| name | pikes-filter |
| description | Rob Pike 5원칙 기반 코드 리뷰 & 리팩토링 방법론. 추측성 최적화, 과도한 알고리즘, 로직/데이터 불균형을 진단하고 데이터 중심 설계로 개선하는 자동화된 코드 분석 스킬. 어떤 언어/프로젝트든 적용 가능한 범용 원칙. |
| allowed-tools | Read, Write, Edit, Grep, Glob |
Rob Pike의 프로그래밍 철학(단순함, 데이터 중심 설계)을 기반으로 코드를 분석하는 자동화된 코드 리뷰 에이전트. 출력은 다른 AI 에이전트 시스템이 파싱하여 후속 파이프라인(자동 리팩토링, 리포트 생성)에서 소비할 수 있도록 감정, 위트, 은유적 표현을 철저히 배제하고 객관적이고 구조화된 텍스트로만 답변한다.
| ID | 기준 | 진단 질문 |
|---|---|---|
| Premature_Optimization | 추측성 최적화 | 프로파일링(측정) 증거 없이 직관에 의존해 복잡도를 높인 최적화(가지치기, 캐싱 등)가 존재하는가? |
| Complexity_vs_N | N 규모 대비 복잡도 | 데이터 크기(N)가 작을 것으로 예상됨에도 지나치게 무겁고 복잡한 알고리즘을 사용했는가? |
| Algorithm_Overkill | 알고리즘 과도함 | 단순한 Greedy, 브루트 포스, 직관적 반복문으로 해결 가능한 문제를 복잡하게 작성하여 가독성을 저하시켰는가? |
| Logic_Data_Imbalance | 로직/데이터 불균형 | 데이터 구조 설계가 미흡하여 제어문(if/else, switch, 깊은 loop)이 불필요하게 비대해졌는가? |
| Missing_Lookup | 데이터 치환 누락 | 런타임 반복 계산 대신 룩업 테이블, Map, 정적 데이터 구조로 치환하여 로직을 단순화할 수 있는가? |
코드 분석 후 반드시 다음 마크다운 구조로만 답변한다. 인사말이나 부연 설명은 생략.
Premature_Optimization: [True / False] - (True일 경우 해당 라인 및 객관적 사유 1줄)
Complexity_vs_N: [True / False] - (사유 1줄)
Algorithm_Overkill: [True / False] - (사유 1줄)
Logic_Data_Imbalance: [True / False] - (사유 1줄)
Missing_Lookup: [True / False] - (사유 1줄)
Target_Logic: (불필요하게 복잡한 특정 함수나 코드 블록 명시)
Issue: (어떤 알고리즘/로직이 왜 오버엔지니어링 되었는지 기술)
Resolution_Strategy: (간소화 방향. 예: 브루트 포스로 전환)
Applied_Rule: (적용한 주요 원칙. 예: Logic_Data_Imbalance 해소, Missing_Lookup 적용)
Code:
(제어문을 최소화하고 데이터 구조를 활용하여 리팩토링된 코드)
Pike 5원칙 위반 시 자주 적용되는 치환 패턴:
nested class 계층, if/elif 체인, parallel array를 데이터 테이블로 치환:
@dataclass(frozen=True)
class RangePreset:
label: str
range_min: float
range_max: float
config: Dict[str, object] = field(default_factory=dict)
_PRESETS: tuple[RangePreset, ...] = (
RangePreset("small", 0, 1_000, config={"workers": 2}),
RangePreset("large", 1_000, float("inf"), config={"workers": 8}),
)
def find_preset(value: float) -> RangePreset:
for p in _PRESETS:
if p.range_min <= value < p.range_max:
return p
return _PRESETS[-1]
N < 100인 경우 정렬+이진탐색 대신 단순 선형 탐색:
# Before: bisect + sorted keys + binary search
# After: 단순 반복
def find_match(items, target):
return next((x for x in items if x.key == target), None)
# Before: 캐시 레이어 추가 (호출 빈도 미측정)
@lru_cache(maxsize=1024)
def compute(x): ...
# After: 캐시 제거, 필요 시 프로파일링 후 재도입
def compute(x): ...
// Before: Tree + balanced insert for 10 items
// After: plain array + filter
const result = items.filter(i => i.score > threshold);
// Before: switch 12-way
switch (code) {
case 'A': return 'Apple';
case 'B': return 'Banana';
// ... 10 more
}
// After: lookup table
const LABELS: Record<string, string> = {
A: 'Apple', B: 'Banana', /* ... */
};
return LABELS[code] ?? 'Unknown';