JLugagne

Go Surgeon — AI skill for Claude Code

AI community

Deterministic Go code editing for LLM agents.

How to install Go Surgeon

This entry records only its repository, not the path inside it, so there is no exact command to give. Open JLugagne/go-surgeon and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Go Surgeon does

Deterministic Go code editing for LLM agents. AST-based CLI and MCP server that replaces Edit, Read, and Grep on .go files for Claude Code, Cursor, and any agent.

Alternatives in AI

  • Firecrawl MCP Server — 🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM c 6.1k ★
  • Jcodemunch MCP — Cut AI token costs 95%+ on code exploration 2.6k ★
  • Skilldock — SkillDock is an AI skill manager and skill management desktop app for Claude Code, Cursor, Codex, Windsurf, Ge 490 ★

README

go-surgeon

**Deterministic Go code editing for LLM agents. No text patching. No broken builds.**

Your agent shouldn't edit Go with Edit, Read, Grep, or Bash.

Go isn't just text, it's a tree of declarations. go-surgeon gives your agent a real AST-based toolkit — precise symbol lookup, structural edits, automatic `goimports` — exposed as an MCP server it uses instead of generic file tools.

**One tool call per edit. Valid Go every time.**

[![Go](https://img.shields.io/badge/Go-1.25+-00ADD8?logo=go)](https://golang.org) [![MCP](https://img.shields.io/badge/MCP-ready-8A2BE2)](https://modelcontextprotocol.io) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

[**Quick Start**](#quick-start) • [**Why**](#why-go-surgeon) • [**MCP**](#-mcp-server) • [**Highlights**](#highlighted-features) • [**Safety**](#-safety)


The problem nobody admits

Ask your agent to update a single function in a 200-line Go file. Watch what happens:

  1. It Reads the file, finds the function, plans the edit
  2. It calls Edit with a string replacement — misses a trailing tab
  3. The patch fails. It re-reads the file. Tries again with the whole function body
  4. This time it forgets the context.Context import
  5. go build fails. It edits the import block — badly. Curly brace drift.
  6. Three turns later you have a working file and no idea what changed.

Every Go dev using an LLM agent has lived this. The problem isn't the model's reasoning — **text-level patching is fundamentally wrong for a structured language**. Indentation, imports, braces: these aren't content, they're grammar. And grammar breaks loudly.

The fix

update(object="func", file="internal/catalog/domain/book.go", identifier="NewBook", content="""
func NewBook(title, author string) (*Book, error) {
    return &Book{Title: title, Author: author}, nil
}
""")
✅ SUCCESS (update func): Updated NewBook in internal/catalog/domain/book.go

Locat