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

unleak-abstraction

Use when an abstraction leak must be sealed as a module seam, configuration option, or explicit override, or exposed as a named boundary. Not for detecting concealment patterns: use no-hide.

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

설치 방법 보기

포함된 파일(2)

  • SKILL.md4.8 KB
  • agents/openai.yaml209 B

SKILL.md(원문)

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

Unleak abstraction

Contract

FieldBound contract
TriggerUser names an abstraction leak and wants it sealed as a module seam, configuration option, or explicit override, or deliberately exposed as a named boundary.
AuthorityReversible local: writes only named local artifacts; rollback is stated before mutating (version control or undo). No remote mutation.
Side effectRefactored code that seals or deliberately exposes the named leak. A wrapper is rejected if it adds more than half the measured complexity of what it hides.
DoneThe abstraction leak is sealed or deliberately exposed; the complexity gate holds (wrapper complexity is less than half the hidden complexity, or both are zero as the zero-complexity case from step 5), confirmed by post-change re-measurement.

Inputs

Required:

  • The target code containing the abstraction leak (must be supplied by the user).
  • The location or symbol name of the leak.

Optional:

  • The desired seam, configuration key, or override shape.
  • A stated complexity budget or constraint.

Complexity metric

Complexity is measured as branching decisions: the count of if, else if, else, case/match arms, ternary conditionals, and short-circuit logical operators (&&, ||) in conditions that control flow. Each branching decision counts as 1. Linear statements, assignments, and function calls count as 0. This metric is applied identically to the hidden code (the code that conceals the dependency) and the proposed wrapper (the seam, parameter, or configuration surface that replaces it).

Procedure

  1. Locate the leak and its hidden dependency. Examine the code, identify the hidden dependency, implicit coupling, or encapsulation violation the user wants surfaced. Done when: the leak is located and its hidden dependency, coupling, or violation is identified.
  2. Confirm the user's intent: seal the leak (make it explicit and controlled) or expose it (name it as a configuration or module seam). Done when: the intent is confirmed as seal or expose.
  3. Measure the hidden complexity. Count the branching decisions in the code that conceals the dependency or coupling. Record the count as hidden_complexity. Done when: hidden_complexity is a non-negative integer.
  4. Propose the minimal structural change that achieves the intent: a new parameter, field, configuration entry, module boundary, or override hook. Done when: one minimal structural change is proposed.
  5. Measure the wrapper complexity. Count the branching decisions in the proposed wrapper or seam code. Record the count as wrapper_complexity. Compute the ratio wrapper_complexity / hidden_complexity. If hidden_complexity is 0, any wrapper with branching decisions is rejected; a zero-complexity wrapper (a pure pass-through or direct exposure) is admitted. Done when: the ratio is computed and the proposal is admitted (ratio < 0.5) or rejected (ratio >= 0.5).
  6. If the proposal is rejected, report the measured ratio and stop. Do not apply. Done when: the rejection is reported.
  7. Apply the change. If applying requires deleting or relocating code, record the original text for rollback. Done when: the change is applied and original text is recorded for rollback.
  8. Re-measure the wrapper complexity after the change lands. Confirm the gate still holds: if hidden_complexity is 0, the wrapper must still have zero branching decisions (the zero-complexity case from step 5); otherwise confirm wrapper_complexity / hidden_complexity < 0.5. Done when: the post-change measurement confirms the gate holds.
  9. Roll back if the done predicate cannot be satisfied; report the rollback and stop. Done when: the rollback is complete or the done predicate is confirmed.

Failure and recovery

  • No-such-leak: the named symbol does not exist or the leak cannot be reproduced. Report that the target is absent and stop.
  • Gate-reject: wrapper complexity is at least half the hidden complexity. Do not apply. Report the measured ratio (wrapper_complexity / hidden_complexity = N.N) and stop without mutating.
  • Rollback-failure: the change cannot be reversed. Stop further mutation, report the irreversible state, and do not claim done.
  • Partial-state: if part of the change lands before a failure, roll back the partial change before reporting. Never leave partial state as the result.
  • Non-converged: the leak cannot be sealed or exposed without exceeding the complexity gate. Return the measured ratio and stop.

Output

Refactored code with the leak sealed or exposed, plus a one-line complexity ratio wrapper / hidden = N.N (branching decisions). On gate failure, the ratio and blocked result only.

리뷰

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

댓글

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

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

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

0 / 1,000자

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

같은 저장소의 스킬

Use when explaining System V AMD64, ARM AAPCS, RISC-V psABI, stack frames, variadic calls, or FFI register rules. Not for the Rust FFI binding layer: use rust-ffi.

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

OutlineDriven/odin-claude-plugin372026년 9월 29일 업데이트

Use when configuring ADC sampling time, DMA-driven ADC, calibration, or DAC channel setup on bare-metal MCUs. Not for the DMA stream itself: use dma-baremetal.

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

OutlineDriven/odin-claude-plugin372026년 9월 29일 업데이트

af-xdp

무료

Use when creating AF_XDP sockets, configuring UMEM and XSK rings, writing an XDP redirect program, or choosing copy versus zero-copy mode. Not for full kernel bypass: use dpdk.

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

OutlineDriven/odin-claude-plugin372026년 9월 29일 업데이트

Use when a completed session needs an agent-environment retrospective. Not for an engineering retrospective from telemetry: use engineering-retrospective.

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

OutlineDriven/odin-claude-plugin372026년 9월 29일 업데이트

Use when a redacted, trimmed agent transcript must be appended to a GitHub PR or issue body, with human approval and preview. Not for automated or model-initiated insertion.

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

OutlineDriven/odin-claude-plugin372026년 9월 29일 업데이트

agents-md

무료

Use when a repo needs agent setup, AGENTS.md added or made lean, CLAUDE.md audited, or agent instructions scored or pruned. Not for remote, credential, publish, deploy, or irreversible changes.

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

OutlineDriven/odin-claude-plugin372026년 9월 29일 업데이트

OutlineDriven의 스킬 모두 보기

이 스킬의 문제 신고