grokkit/.grokkit/recipes/result-refactor.md

54 lines
1.7 KiB
Markdown
Raw Normal View History

---
name: result-refactor
description: Convert traditional Go error handling to Result[T] monadic style
version: 1.0
parameters:
package_path:
type: string
default: internal/service
description: Package to refactor
dry_run:
type: bool
default: true
description: If true, only generate patches
allowed_shell_commands:
- go test ./...
- go fmt ./...
- go vet ./...
- rg --files
- git diff --name-only
- jq
---
# Result[T] Refactoring Recipe
**Overview**
Refactors all error handling in the target package to use the new Result[T] pattern.
## Execution Steps
### Step 1: Discover files
**Objective:** Find every file that needs changing.
**Instructions:** Recursively scan `{{.package_path}}` for `.go` files containing `if err != nil`.
**Expected output:** A clean numbered list of full file paths (one per line).
### Step 2: Refactor each file
**Objective:** Generate the updated code.
**Instructions:** For each file from Step 1:
- Read the full original content.
- Refactor it to use `Result[T]` instead of naked errors (follow existing style, preserve comments).
- Return *ONLY* the complete new file inside a ```go code block (no explanations).
**Expected output:** One ```go block per file, clearly labelled with the filename.
### Step 3: Apply or patch
**Objective:** Safely write changes or create reviewable output.
**Instructions:**
- If `dry_run` is true → create a unified diff patch file for review.
- If false → write the new files (backup originals as `.bak`).
**Expected output:** Confirmation of what was written + full path to any patch file.
### Final Summary
Give me a concise executive summary: number of files changed, any warnings or patterns you noticed, and your recommended next step.