agentsclimarketplace

Code pretty

Skill deokjinlog/intent-locked-workflow/skills/code-pretty

기획 의도를 고정하고, 그 위에서만 코드가 자란다 — 기획·설계·계획·실행 4단계 게이트 Claude Code 워크플로 플러그인 (superpowers 5.0.7 계승)

Install
npx -y skills add deokjinlog/intent-locked-workflow --skill code-pretty

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 27 days oldThe repository was created 27 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use AFTER verifying-spec passes and BEFORE generating-html during the initial-creation iteration loop of <slug>-implementation-plan.md ONLY. Dispatches a Sonnet subagent that performs a strict format + 자명한 정리 pass on every "수정 후" code block in the plan. NEVER touches "원본" blocks, prose, or tables. Stops firing once the first change-history entry is logged. Idempotent on already-clean blocks (no-op rule).

SKILL.md

12.2 KB, as published. Nobody here has run it

Code Pretty (Pre-Review Code Block Formatting)

This skill prettifies the "수정 후" code blocks inside a freshly written or rewritten implementation plan, just before generating-html + user review. It is the code-only sibling of generating-html.

Announce at start: "I'm using the code-pretty skill to format 수정 후 code blocks in <file> before generating-html + user review."

<HARD-GATE> This skill MUST run AFTER verifying-spec passes and BEFORE generating-html in the writing-plans flow. It runs as many times as the writing-plans review loop iterates (initial draft + each user-fix revision).

It STOPS firing the moment the first change-history entry has been logged. That boundary marks the doc as "live" — from then on, no code-pretty.

Specifically, code-pretty MUST NOT run on:

  • <slug>-requirements.md or <slug>-tech-design.md (only implementation-plan)
  • "원본" code blocks (only "수정 후" blocks)
  • Prose, tables, headings, list items
  • Any plan AFTER its first change-history entry exists

If you are unsure whether this is still in the "initial creation phase" — STOP. Look for an existing ## 변경이력 footer with one or more entries. If ANY entry exists, this is NOT initial creation. Skip this skill. </HARD-GATE>

When to Use

Trigger (yes)Anti-trigger (no)
writing-plans just wrote/rewrote <slug>-implementation-plan.md AND verifying-spec passed AND generating-html has not yet run for this draft, no ## 변경이력 entries yetUser asked to update Task 3 wording in an already-live implementation-plan.md
User requested revision in the writing-plans review loop, agent rewrote, verifying-spec re-ran — fire againFirst change-history entry has been logged — doc is now "live", do NOT fire
Plan contains at least one **수정 후**-labeled code blockPlan only has prose updates, no code blocks

Why a Subagent (and which model)

Same reasoning as generating-html: pure transformation, no domain reasoning, negative-constraint heavy.

Always dispatch a subagent with model: "sonnet". Sonnet's instruction-following is required for honoring "leave already-clean blocks byte-identical" and "1% 의심이라도 들면 SKIP" constraints.

Do NOT use Opus (overkill) or Haiku (rephrasing risk).

Process

Step 1 — Pre-flight check (v1.1.15+ user-gate)

Before dispatching, run the deterministic helper:

source .venv/bin/activate && python -c "
import sys
from pathlib import Path
from scripts.preflight import code_pretty_check
result = code_pretty_check(Path('<TARGET>'))
print(f'ok={result.ok} reason={result.reason} | {result.human_reason}')
sys.exit(0 if result.ok else 1)
" 2>&1

exit code 분기 (v1.1.15 user-gate):

  • exit 0 → 검증 통과, Step 2 dispatch 진행.
  • exit 1 (helper semantic fail) → human_reason 노출 후 AskUserQuestion 게이트:
    • "수정 후 재시도" / "강제 진행 (위험)" (메인이 ⚠️ preflight 우회. <reason> 무시. 한 줄 안내) / "스킵 (이번만)" (caller 에게 abnormal return).
  • exit ≠ 0,1 (invocation 실패) → stderr 전문 + AskUserQuestion 게이트:
    • "직접 디버깅" / "skill 단계 스킵".

Caller 책임 (helper 가 검증 X): verifying-spec 가 직전에 통과했는지 — 이건 writing-plans 흐름의 책임이고 helper 가 검사할 수 없음. 호출자가 보장.

helper 의 검사: file 존재 / 변경이력 footer 비어있음 / filename *-implementation-plan.md / 최소 1개 **수정 후** 블록 존재. 자세히는 scripts/preflight.py:code_pretty_check.

Step 2 — Dispatch the Sonnet subagent

Use the Agent tool with these exact parameters:

  • subagent_type: general-purpose
  • model: sonnet
  • description: Code-block prettify on <filename>
  • prompt: see template below

Step 3 — Verify, surface diff, return to caller

After the subagent returns:

  1. Read the file back (1 Read)
  2. Sanity-check: every **원본**-labeled code block is byte-equal to the pre-dispatch version
  3. Surface the diff summary text returned by the subagent to the main agent's chat output (caller will combine with generating-html output for the user review gate)
  4. Return control to caller (writing-plans). Do NOT invoke generating-html or change-history yourself.

If sanity-check fails (any "원본" block was modified) → emit a warning to the caller; caller decides whether to abort or rerun.

Subagent Prompt Template

The dispatched subagent receives this exact prompt (filled in with target path):

You are performing a STRICT code-block prettify on a Korean implementation-plan document.

Target file: <ABSOLUTE_PATH>

Your job: improve READABILITY of "수정 후" code blocks ONLY. Other content is byte-identical.

# Identification — what counts as a target block

A target block is a fenced code block whose **immediately preceding non-blank line** starts with `**수정 후**`.

Examples of target labels (any of these counts):
- `**수정 후**:`
- `**수정 후** (`new file`):`
- `**수정 후**` (label only)

Examples of NON-target labels (any of these means the next code block is a "원본" — NEVER touch):
- `**원본**`
- `**원본** (...)`
- Anything not starting with `**수정 후**`

If a code block has no label at all (no preceding bold text), DO NOT touch it. Default to byte-equal preservation when uncertain.

# Allowed changes (in target blocks only)

Three categories. Apply only when there is a CONCRETE, ARTICULABLE readability improvement.

## Category A — 포맷
- Whitespace / indentation normalization
- Long-line wrapping at sensible breakpoints
- Trailing whitespace removal
- Aligned `//` comments

## Category B — 자명한 정리
- Remove dead comments explicitly marked (e.g., `// TODO: 삭제예정`)
- Standardize quote/semicolon style within the block
- Add labeling comments next to magic numbers (do NOT extract to const)

## Category C — 중복 통합 → **폐지**

**이 범주는 폐지됐습니다.** import·const·helper 병합은 **블록 밖의 참조와 스코프를 바꾸는데**, 이 스킬은 코드 블록만 보고 파일 전체를 보지 않습니다. "call-site contexts are byte-identical" 은 블록만 보고는 판정할 수 없는 조건이었습니다.

# FORBIDDEN — never do any of these

> **왜 의미 변경이 전부 금지인가:** 이 스킬은 `verifying-spec` **통과 후**에 돕니다. 그리고 `수정 후` 블록은 implementer 가 **STRICT BYTE-COPY** 로 코드베이스에 그대로 넣습니다. 즉 여기서 의미를 바꾸면 **검증된 코드와 실행되는 코드가 달라집니다.** `plan_byte_check.py` 는 `원본` 블록만 검사하므로 `수정 후` 의 변조를 잡아주지 못합니다. **서식만 만지세요.**

- **Do NOT rename variables.** 블록 밖 참조가 깨지고, 그 사실을 이 스킬은 볼 수 없다
- **Do NOT merge imports / const / inline helpers.** 스코프와 구조가 바뀐다
- Do NOT touch "원본" blocks
- Do NOT touch prose, headings, lists, tables, frontmatter, or `## 변경이력`
- Do NOT extract magic numbers to named constants
- Do NOT flatten nested if statements
- Do NOT split or merge functions
- Do NOT change behavior, side-effects, exception flow, or output
- Do NOT modify a target block if it is already well-formatted (consistent whitespace, no obvious readability issues, no Category B / C candidates) — leave byte-identical
- If you have ≥1% suspicion that a Category A or B change might alter behavior, SKIP that change

# How to apply

1. Read the file in full
2. Locate every `**수정 후**`-labeled code block
3. For each target block:
   a. Articulate (mentally) the concrete readability improvement
   b. If you cannot articulate one — leave byte-identical, mark as "no-op"
   c. Otherwise apply A/B transformations within the constraints above (C 는 폐지됨)
4. Write the result back to the SAME file path using the Write tool (overwrite)
5. Report a diff summary in this format:

code-pretty done on <path>.

Target blocks: <total>

  • Modified: <N> (<categories: A/B breakdown>)
  • No-op (already clean): <N>
  • Skipped (1% suspicion): <N> (with reasons)

Modified line summary:

"원본" blocks preserved byte-identical: yes / no


# Verification before writing

Before you call Write:
- Compare every `**원본**`-labeled block in your output to the input — they MUST be byte-identical
- Confirm the YAML frontmatter (if present) is byte-identical
- Confirm the `## 변경이력` heading and everything beneath it is byte-identical
- Confirm prose / tables / headings outside of "수정 후" blocks are byte-identical

If ANY of these fail, do NOT write. Report the failure and stop.

You have one job: make "수정 후" code blocks cleaner WITHOUT changing meaning. Nothing else.

Process Flow

digraph code_pretty {
    "Caller (writing-plans) ready" [shape=box];
    "Pre-flight check" [shape=diamond];
    "STOP — log + return" [shape=box];
    "Dispatch Sonnet subagent" [shape=box];
    "Subagent: Read → identify → prettify → Write" [shape=box];
    "Main: Read back, sanity-check 원본 blocks" [shape=box];
    "Sanity OK?" [shape=diamond];
    "Surface diff summary, return to caller" [shape=doublecircle];
    "Warn caller, return abnormally" [shape=box];

    "Caller (writing-plans) ready" -> "Pre-flight check";
    "Pre-flight check" -> "STOP — log + return" [label="any check fails"];
    "Pre-flight check" -> "Dispatch Sonnet subagent" [label="all pass"];
    "Dispatch Sonnet subagent" -> "Subagent: Read → identify → prettify → Write";
    "Subagent: Read → identify → prettify → Write" -> "Main: Read back, sanity-check 원본 blocks";
    "Main: Read back, sanity-check 원본 blocks" -> "Sanity OK?";
    "Sanity OK?" -> "Surface diff summary, return to caller" [label="yes"];
    "Sanity OK?" -> "Warn caller, return abnormally" [label="no"];
}

Anti-Patterns

WrongRight
Run code-pretty on requirements.md or tech-design.mdNEVER. implementation-plan.md only.
Modify "원본" blocks even slightlyNEVER. Bytes-equal preservation.
Extract magic numbers to constForbidden by the prompt. Allowed: comment label only.
Run code-pretty without verifying-spec passing firstPre-flight check (caller responsibility) blocks this.
Re-run code-pretty after change-history entry existsHARD-GATE blocks this — pre-flight 변경이력 empty check.
Use Opus or HaikuSonnet only.

Red Flags (STOP if you think these)

ThoughtReality
"The block is short, just inline-prettify in main agent"Subagent dispatch is mandatory — clean main context + model isolation.
"이 중복 병합해도 안전해 보임"병합은 FORBIDDEN (Category C 폐지). 블록만 보고는 호출부 스코프를 판정할 수 없다.
"Two passes will catch more"One shot only. Idempotent by design — second pass should produce 0 changes.

Acceptance

A code-pretty run is correct when ALL hold:

  1. Pre-flight checks all passed (file exists, target = implementation-plan.md, 변경이력 empty, ≥1 "수정 후" block)
  2. Subagent was dispatched with model: sonnet and the strict prompt above
  3. Post-dispatch sanity check: every "원본" block byte-identical to pre-dispatch
  4. Diff summary surfaced to main agent chat (caller forwards to user review gate)
  5. No ## 변경이력 entry was added by code-pretty itself

Related Skills

  • writing-plans — invokes this between verifying-spec and generating-html
  • generating-html — sibling skill, runs immediately after code-pretty on the same draft
  • verifying-spec — must pass before code-pretty can run
  • change-history — invoked by caller AFTER code-pretty + generating-html + user review approval

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.