본문으로 건너뛰기
cccskills
무료GitHub에 공개

dry

DRY (Don't Repeat Yourself) review rules for code reviews: find the same knowledge — a rule, a constant, a parser, a validation, a protocol detail — implemented in several places that must change together, and tell it apart from code that merely looks alike. Use when reviewing a diff, a pull request or recent changes for duplication, on "DRY review", "is this duplicated", "copy-paste check", or when a review checklist asks for DRY. Pair it with the solid skill for design and with owasp-asvs for security.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md3.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

DRY Review

DRY is about knowledge, not text. A finding is the same decision encoded in two or more places that have to change together — so that changing one and forgetting the other is a bug waiting to happen. Two blocks of similar-looking code that encode different decisions are not duplication, and merging them would couple things that should vary independently.

What to look for

  • Rules and validation — the same allow-list, regex, limit or permission check in a form, an API endpoint and a CLI command.
  • Constants and magic values — a status name, a timeout, a URL, a field name or a path spelled out in several files instead of defined once.
  • Parsers and formats — two hand-written parsers or serializers for the same file, header, JSON shape or command output.
  • Protocol details — the same auth header, retry policy, pagination loop or error mapping re-implemented per client.
  • Copied functions — a helper copied into a second module with small edits, where both copies are still meant to behave the same.
  • Docs and code — a procedure described in two documents, or a value documented in a README and hard-coded elsewhere, when both must stay in sync.

In a diff, check first whether the change adds a copy of something that already exists in the codebase: search for the key identifiers, strings and regexes it introduces.

Not a finding

  • Similar code that encodes different decisions, or would diverge on the next change.
  • Two or three lines of glue, test setup or boilerplate the framework expects.
  • Tests that restate expected values on purpose.
  • Duplication across separately released projects (a public library and a private monorepo) that are deliberately kept standalone.
  • Generated, vendored and lock files.

Severity

  • high — the copies have already drifted: they disagree today, and you can show the input that behaves differently in each.
  • medium — default: the copies are identical now but must change together, and nothing ties them.
  • low — small repeated literals or helpers where a mismatch would be cosmetic.

Reporting a finding

Each finding carries:

  • rule — DRY;
  • locations — file:line of every copy, not just the one in the diff;
  • knowledge — one sentence naming the single decision the copies share;
  • cost — what goes wrong when one copy changes and the other does not (or already has);
  • fix direction — where the one source of truth should live, preferring an existing module, config or constant over a new abstraction.

Verify each finding by reading all copies side by side before keeping it. Fewer, true findings beat a long list.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Safe deployment workflow for Drupal 10/11 sites: pre-flight checks, backup, the correct update sequence (composer install, database updates, config import, cache rebuild), verification, and rollback plan. Use when deploying to any environment, releasing to production, or when the user asks to "push changes live", "update the server", or run a release. Also use for multisite releases where each site needs its own database update pass.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

siva01c/claude-plugins162026년 9월 26일 업데이트

Use this skill when authoring or editing Docker Compose files (compose.yaml / docker-compose.yml), running multi-container stacks, or containerizing a Drupal/PHP application — e.g. "set up a local Drupal stack with nginx and MariaDB", "add Redis to my compose file", "why won't my containers start", "split dev and prod compose configuration". Also trigger for compose commands (up, down, logs, exec, watch) and healthcheck/dependency issues between services.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

siva01c/claude-plugins162026년 9월 26일 업데이트

Use this skill when running local AI models with Docker Model Runner — the `docker model` CLI — e.g. "run an LLM locally with Docker", "pull a model from the ai/ namespace", "connect my app to a local model", "use a local model as backend for the Drupal AI module", or when wiring the `models:` top-level element into a compose.yaml. Covers pulling/running models, OpenAI-compatible endpoints, and Compose integration.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

siva01c/claude-plugins162026년 9월 26일 업데이트

Use for operational Drupal 11 workflows in DDEV environments, including safe updates, backup-first procedures, and troubleshooting commands.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

siva01c/claude-plugins162026년 9월 26일 업데이트

Use when creating or extending Drupal 11 custom modules, including scaffolding, service architecture, and dependency injection best practices.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

siva01c/claude-plugins162026년 9월 26일 업데이트

Use when auditing Drupal 11 custom modules/themes for security issues such as unsafe input handling, XSS risks, SQL injection, and access control gaps.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

siva01c/claude-plugins162026년 9월 26일 업데이트

siva01c의 스킬 모두 보기

이 스킬의 문제 신고