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

pharo-refactor

Refactor messy Pharo code safely through the genie MCP tools, working from the live image (no files). Use for renames, method extraction, moving behavior, or general cleanup of existing code.

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

설치 방법 보기

포함된 파일(1)

  • SKILL.md2.6 KB

SKILL.md(원문)

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

Pharo refactor loop (live image, via the genie MCP tools)

Refactoring = change structure without changing behavior. The proof that behavior is unchanged is a green test suite before AND after. All reads and writes go through the genie MCP tools; there are no files. Change code only via define_method / define_class / rename_class / remove_method / eval, and read every change back to confirm it.

Loop

  1. Green baseline. Run run_test on the relevant class/package. If the code you're about to touch has NO test coverage, STOP and write characterization tests first (use the pharo-tdd skill) — you cannot refactor safely without a safety net.

  2. Map impact. Before any rename/move/extract, find every caller and implementor:

    • search_references / search_references_to_class — who uses it
    • search_implementors — who else defines this selector
    • search_methods_like — similar code that may need the same change Make a list. Every item gets updated in this same session.
  3. One small change. Make a single structured edit. Read changed methods back with get_method_source.

  4. Re-test. Run run_test (class, then package). Green → keep going. Red → the trace shows what broke; fix or revert this one step before moving on. Never batch unverified edits.

  5. Repeat steps 3–4 in small increments until the cleanup is complete.

  6. Done. Persist with save_image gated on the test package. Summarize the before/after shape.

Common moves

  • Rename class: use rename_class — it updates every code reference and symbol literal via the refactoring engine. It does NOT touch string literals, so fix stringly-typed names by hand; and in a test that renames a class, refer to the old name as 'Foo' asSymbol, never #Foo, or the test rewrites its own assertion and self-mangles.
  • Remove method: remove_method. Remove class: remove_class.
  • Rename method: install the new selector via define_method, repoint every sender (from search_references), then remove_method the old one.
  • Extract method: add the new helper, call it from the original, re-test.

Rules

  • Behavior-preserving only. If a test changes meaning, that's a feature change — do it under pharo-tdd, not here.
  • Small steps, tests between each. A long unverified refactor is a bug factory.
  • Modern class API only (ShiftClassInstaller / define_class).

리뷰

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

댓글

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

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

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

0 / 1,000자

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

같은 저장소의 스킬

Use when modifying a Genie-backed Pharo project through the live MCP server on localhost:8087; includes project ownership, image read/change/test/save workflow, and first steps for new user projects.

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

KentBeck/SmalltalkGenie202026년 7월 20일 업데이트

Rename Pharo methods safely through Genie's `rename_method` MCP refactoring tool. Use when a selector should be renamed while preserving behavior, updating senders and symbol references across the live image, including as one step in larger refactorings such as clarify API names, split responsibilities, or move behavior behind better messages.

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

KentBeck/SmalltalkGenie202026년 7월 20일 업데이트

pharo-tdd

무료

Drive a Genie change test-first through the genie MCP tools, working entirely from the live image (no files). Use when adding behavior or fixing a bug in the image — anything where a test should lead.

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

KentBeck/SmalltalkGenie202026년 7월 20일 업데이트

Use when reviewing or refactoring code that pulls apart another object's private representation, such as raw limb/byte/slot access, slice constructors, or helper methods that expose internal storage. Guides agents to find representation envy and suggest moving behavior onto the object that owns the representation, using live-image Genie tools when working in Pharo.

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

KentBeck/SmalltalkGenie202026년 7월 20일 업데이트

KentBeck의 스킬 모두 보기

이 스킬의 문제 신고