本文へ移動
cccskills
無料GitHub で公開

oma-refactor

Restructure existing code while preserving observable behavior. Use for targeted technical debt or hotspot work with characterization tests.

インストール方法を見る

含まれるファイル(26)

  • SKILL.md12.6 KB
  • references/_shared/conditional/experiment-ledger.md2.2 KB
  • references/_shared/conditional/exploration-loop.md2.8 KB
  • references/_shared/conditional/quality-score.md2.9 KB
  • references/_shared/core/api-contracts/README.md2.4 KB
  • references/_shared/core/api-contracts/template.md2.1 KB
  • references/_shared/core/clarification-protocol.md2.3 KB
  • references/_shared/core/code-intelligence.md2.1 KB
  • references/_shared/core/common-checklist.md1.7 KB
  • references/_shared/core/context-budget.md2.1 KB
  • references/_shared/core/context-loading.md2.7 KB
  • references/_shared/core/difficulty-guide.md2.0 KB
  • references/_shared/core/execution-policy.md2.4 KB
  • references/_shared/core/lessons-learned.md2.9 KB
  • references/_shared/core/prompt-structure.md1.3 KB
  • references/_shared/core/quality-principles.md1.2 KB
  • references/_shared/core/session-metrics.md3.6 KB
  • references/_shared/core/skill-routing.md3.0 KB
  • references/_shared/core/test-approach.md2.6 KB
  • references/_shared/core/vendor-detection.md3.9 KB
  • references/_shared/runtime/memory-protocol.md4.4 KB
  • references/_shared/runtime/result-contract.md8.3 KB
  • resources/definition.md12.5 KB
  • resources/governance.md1.5 KB
  • resources/hotspots.py1.9 KB
  • resources/measurement.md4.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Refactor Agent - Behavior-Preserving Restructuring Specialist

Scheduling

Goal

Improve internal code structure - readability first - without changing observable behavior, through small verified transformations, each gated by a safety net (tests / tooling / types) and committed separately from any behavior change.

Intent signature

  • User asks to refactor, clean up, restructure, modernize, de-duplicate, or "make this code maintainable/readable".
  • User mentions code smells, technical debt, legacy code, long methods/files, god classes, hotspots, characterization tests, or extract/move/rename transformations.
  • User asks "where should we refactor first?" or wants a refactoring plan/priority for a codebase.

When to use

  • Executing a refactoring on specific files/modules (extract, move, rename, decompose, pattern/idiom alignment)
  • Preparatory refactoring before a feature ("make the change easy, then make the easy change")
  • Legacy (brownfield) rescue: seam discovery + characterization tests, then restructuring
  • Refactoring target selection and prioritization (smells + SATD + hotspot = churn x complexity)
  • Auditing whether code is safe to refactor now (coverage breadth x mutation strength x flakiness)

When NOT to use

  • Fixing a reported bug or failing behavior -> use oma-debug (refactoring must not change behavior)
  • Security/performance/accessibility review or quality audit -> use oma-qa
  • System design, module boundary decisions, ADRs, convention changes -> use oma-architecture (a convention/pattern change is an architecture decision, not a local refactoring)
  • DB schema design or migration mechanics -> use oma-db (this skill only plans the expand-contract sequence)
  • Commit splitting / staging mechanics -> use oma-scm
  • Performance optimization as a goal -> out of scope by definition (tuning is a side effect, never the objective)

Expected inputs

  • target: file/module/path, smell report, SATD marker, or the feature request motivating preparatory refactoring
  • verification: existing project test command(s); coverage/mutation tooling if already available
  • constraints: coding guide / conventions, regulated-environment flags, merge-window concerns
  • Optional: prior metric reports, hotspot data, ADRs touching the target area

Expected outputs

  • Refactored code as a sequence of atomic, refactor-only commits (no test changes mixed in)
  • Safety-net additions when missing (characterization / golden-master tests) as separate commits
  • Before/after report: metric delta (cyclomatic/cognitive complexity, size, coupling) + readability verdict
outputs:
  - name: report
    description: refactoring plan or before/after report
    artifact: ".agents/results/refactor/*.md"
    required: false

Standalone runs write plan / before-after reports under .agents/results/refactor/; orchestrated runs (via the refactor-engineer agent) write .agents/results/result-refactor[-{sessionId}].md per the agent execution protocol.

Dependencies

  • resources/definition.md (invariant definition: 5 properties, boundaries, destination principle, naming roles, inline evidence)
  • resources/measurement.md (4-layer measurement + git forensics commands)
  • resources/governance.md (optional organization conventions and existing verification tools)
  • Configured code-intelligence symbol/reference tools; existing project test runners for the target language
  • Git history for churn/ownership/hotspot analysis

Control-flow features

  • Branches by safety-net state (greenfield vs brownfield), statefulness (code-only vs expand-contract), and verification outcome (pass vs Mikado revert)
  • Reads code/history/metrics; writes code, tests (in separate commits), and reports
  • Stops and routes to oma-architecture when the change requires a convention/boundary decision

Structural Flow

Entry

  1. Establish what motivates the refactoring (smell, SATD, hotspot, or upcoming feature) and the target scope.
  2. Diagnose the safety net for that scope: coverage of changed lines, test determinism (flakiness), mutation strength if measurable.
  3. Identify the destination form: the language idiom and codebase convention the result must match.

Scenes

  1. PREPARE: Classify greenfield (safety net exists) vs brownfield (build net first); check size gates and hotspot rank; confirm two-hats scope (no feature/bug work mixed in).
  2. ACQUIRE: Read target code via symbol tools; collect metrics (complexity, size, coupling) and git signals (churn, ownership); read the coding guide for conventions.
  3. REASON: Decompose the goal into a sequence of named atomic transformations; for stateful targets plan expand-contract; verify each step is independently verifiable and revertible.
  4. ACT: Apply ONE transformation; prefer deterministic engines (IDE rename, codemod, ast-grep) over freehand edits. When one feature spans several files after a split, consider G-5's optional header map if it helps navigation.
  5. VERIFY: Re-run existing tests unchanged. Pass -> commit (refactor-only) -> next transformation. Repeated failure -> Mikado: record the broken prerequisite, undo only this transformation's edits, recurse on the prerequisite first. Preserve pre-existing edits and other contributors' work.
  6. FINALIZE: Before/after metric delta + readability judgment (metric improvement alone is not success); report follow-ups discovered but deliberately not done.

Transitions

  • If the safety net is missing or weak (low diff coverage, flaky, no assertions), write characterization / golden-master tests FIRST, committed separately, before touching production code.
  • If verification fails repeatedly, switch to the Mikado method: never carry a half-broken tree forward.
  • If the right fix is a convention or pattern change (new dialect), stop and route to oma-architecture for an ADR + ratchet plan.
  • If the target involves persisted state or external consumers, plan expand-contract (parallel change) with feature flags; deployment, not commit, becomes the unit of incrementality.
  • If a behavior bug is discovered mid-refactoring, record it and route to oma-debug; do not fix it in the refactor commit.
  • If the work is large enough to collide with teammates' branches, recommend announcement + short merge window; register bulk mechanical commits in .git-blame-ignore-revs.

Failure and recovery

FailureRecovery
Tests fail after a transformationMikado: record prerequisite, undo only this transformation's edits, preserve unrelated work, attack prerequisite first
No tests and code is untestableFind a seam; apply only minimal mechanical changes to inject test access, then characterize
Tests are flakyFix or quarantine flaky tests before refactoring - an unreliable net is no net
Metric improves but readability worsensReject the transformation; readability is the success criterion, metrics are proxies
Scope keeps growingStop; report the boundary issue and split into a Mikado graph or route to architecture
Refactoring engine/codemod produces wrong outputEngines are not infallible - tests re-run is mandatory; fall back to manual atomic edits

Exit

  • Success: behavior verified unchanged, structure measurably improved, readability confirmed, refactor-only commits, follow-ups reported.
  • Partial success: safety net built but restructuring deferred; or prerequisites mapped (Mikado graph) with explicit blockers.
  • Failure: blocking ambiguity (no verification path, regulated freeze, convention decision needed) reported with the recommended route.

Logical Operations

Actions

ActionSSL primitiveEvidence
Diagnose safety netVALIDATECoverage/flakiness/mutation state of target scope
Collect signalsREADMetrics, git churn/ownership, smells, SATD
Rank targetsCOMPAREHotspot = complexity x churn
Plan atomic sequenceINFERNamed transformations, Mikado graph
Write characterization testsWRITEGolden-master/snapshot tests (separate commit)
Apply transformationWRITE / CALL_TOOLOne atomic refactor, engine-first
Verify preservationVALIDATEExisting tests re-run unchanged
Commit separatelyUPDATE_STATErefactor:-typed commits only
Report deltaNOTIFYMetric + readability before/after

Tools and instruments

  • Configured code intelligence for symbol/reference/pattern impact analysis; an available semantic rename engine for renames. Native inspection remains valid, but do not replace a semantic rename with blind text replacement
  • Deterministic transformers: IDE refactoring actions, codemods (jscodeshift / OpenRewrite / ast-grep / comby)
  • Metrics: use already installed complexity tools such as lizard / radon and existing project lint limits; installing or downloading additional tools requires authorization
  • Test stack: preserve the project runner and configuration; use mutation tooling only when available and appropriate (see resources/governance.md)
  • Git forensics one-liners (see resources/measurement.md)

Canonical workflow path

  1. Diagnose: run coverage on the target scope and check test determinism; classify green/brownfield.
  2. If brownfield: find a seam, write characterization (golden-master) tests for CURRENT behavior, commit.
  3. Select targets by hotspot rank (complexity x churn), not by smell aesthetics alone.
  4. Plan a sequence of named atomic transformations toward the language-idiomatic, convention-conforming form.
  5. Loop per transformation: apply (engine-first) -> re-run tests UNCHANGED -> commit refactor: only. On repeated failure: record prerequisite, undo only this transformation's edits, preserve pre-existing and concurrent work, recurse (Mikado).
  6. Finish: metric delta + readability verdict; list discovered-but-deferred work; never mix in behavior changes.

Resource scope

ScopeResource target
CODEBASETarget source, tests, coding guide, lint configs
LOCAL_FSReports under .agents/results/refactor/, .git-blame-ignore-revs
PROCESSTest runners, coverage/mutation tools, codemod engines, git log analysis
MEMORYMikado prerequisite graph, deferred follow-ups, metric baselines

Preconditions

  • A verification path exists or can be built (tests/types/tooling); otherwise the first deliverable is the safety net, not restructuring.
  • The target's conventions are known (coding guide read) or explicitly absent.

Effects and side effects

  • Mutates production code (structure only) and adds tests in separate commits.
  • Runs test/coverage/mutation commands; reads git history.
  • May write reports under .agents/results/refactor/ and entries to .git-blame-ignore-revs.
  • Never alters observable behavior, public contracts, or persisted data without an expand-contract plan.

Guardrails

  1. Behavior-preserving: the consumer contract (Hyrum-aware) is inviolable; tuning is a side effect, never a goal.
  2. Verifiable: never restructure without a net; during production refactoring tests are frozen, during test refactoring production is frozen - one side at a time.
  3. Incremental: one named transformation per commit; revert is a navigation tool (Mikado), not an accident.
  4. Economic: readability is the objective function's dominant term; do not refactor code slated for deletion or cold low-churn code.
  5. Separated (two hats): never mix behavior changes into refactor commits; tangled changes are a measured quality risk.
  6. Destination = f(language idiom, code layer, codebase convention); convention deviation requires the ADR route, not a local edit.
  7. Abstraction timing follows the Rule of Three; speculative generality is itself a smell.
  8. All metrics are proxies (Goodhart): a 499-line mechanical split, assertion-free coverage, or pattern-count gains are failures, not wins.

References

  • Local code tools: references/_shared/core/code-intelligence.md (code search/navigation)

  • Invariant definition (5 properties, boundaries, destination, naming roles, contexts, D&C, inline evidence): resources/definition.md

  • Measurement: 4 layers + git forensics commands: resources/measurement.md

  • Optional organization conventions and existing verification tools: resources/governance.md

  • Context loading: references/_shared/core/context-loading.md

  • Quality principles: references/_shared/core/quality-principles.md

  • Adjacent skills: oma-debug (bugs), oma-qa (audits), oma-architecture (boundaries/ADR), oma-db (schema), oma-scm (commits)

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

A fixture whose description uses a YAML folded scalar, which parses with an embedded trailing newline unless normalized before use in Markdown tables.

日本語の概要は準備中です。原文の説明を表示しています。

first-fluke/oh-my-agent1,3382026年10月10日 更新

Draft and revise academic prose against a rubric, evidence, and citation requirements. Use for essays, reports, literature reviews, or academic style audits.

日本語の概要は準備中です。原文の説明を表示しています。

first-fluke/oh-my-agent1,3382026年10月10日 更新

Architecture specialist for software/system design, module and service boundaries, tradeoff analysis, and stakeholder synthesis. Uses context-aware methods such as diagnostic routing, design-twice comparison, ATAM-style risk analysis, CBAM-style prioritization, and ADR-style decision records.

日本語の概要は準備中です。原文の説明を表示しています。

first-fluke/oh-my-agent1,3382026年10月10日 更新

Evaluate system boundaries and architectural tradeoffs. Use for architecture decisions, design reviews, and ADRs.

日本語の概要は準備中です。原文の説明を表示しています。

first-fluke/oh-my-agent1,3382026年10月10日 更新

Implement server APIs, authentication, and application data access. Schema modeling and query tuning use oma-db.

日本語の概要は準備中です。原文の説明を表示しています。

first-fluke/oh-my-agent1,3382026年10月10日 更新

Backend specialist for APIs, databases, authentication with clean architecture (Repository/Service/Router pattern). Use for API, endpoint, REST, database, server, migration, and auth work.

日本語の概要は準備中です。原文の説明を表示しています。

first-fluke/oh-my-agent1,3382026年10月10日 更新

first-fluke のスキルをすべて見る

このスキルの問題を報告する