# Go Import Enforcer

> Go 包导入规范检查与修复工具。基于 Claude 智能分析的 Go 项目导入规范检查工具，全面扫描和分析项目代码，识别真正的规范问题，提供准确的分析报告和修复建议。 Use when this capability is needed.

- Skill: `tomevault-io/go-import-enforcer` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/go-import-enforcer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/go-import-enforcer/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/go-import-enforcer

---


# Go 包导入规范检查器

## 概述

基于 Claude 智能分析的 Go 项目导入规范检查工具，通过大模型全面扫描和分析项目代码，识别真正的规范问题，提供准确的分析报告和修复建议。

**核心特点**：
- 🤖 **Claude 驱动**：以大模型为主要分析引擎，提供智能、准确的分析
- 🎯 **精准识别**：区分手写代码和生成代码，避免误报
- 📊 **全面分析**：不仅检查格式，还分析循环依赖和架构设计
- 💡 **智能建议**：每个问题都提供具体的修复方案和最佳实践

**工作原理**：
1. **Claude 扫描**：Claude 扫描项目，分析导入规范问题
2. **Claude 分析**：生成详细分析报告
3. **Claude 调整**：自动调整不规范内容
4. **输出结果**：用户获得规范化后的代码和完整分析报告

**核心定位**：100% Claude（智能分析、报告生成、内容调整）

## 使用场景

- **新项目规范检查** - 检查新项目导入是否符合规范
- **代码审查辅助** - 快速发现导入问题并提供修复建议
- **批量导入规范** - 统一项目导入格式和别名使用
- **重构验证** - 重构后验证导入是否需要调整

## 快速开始

### 智能分析（推荐）

```bash
# 直接将整个项目交给 Claude 进行全面分析
# Claude 会自动：
# 1. 扫描所有 Go 文件
# 2. 分析导入规范问题
# 3. 检测循环依赖
# 4. 提供修复建议和最佳实践
# 5. 自动调整不规范内容
```

**重要提示**：本技能完全由 Claude 主导，无需任何脚本辅助。

## 工作流程

### Claude 全面分析（100% 智能化）

**目标**：全面分析项目导入规范情况

**时间**：3-5 分钟（取决于代码量）

**Claude 分析流程**：
```
开始
  ↓
1. Claude 智能扫描
   ├─ 扫描所有 Go 文件（手写代码 + 生成代码）
   ├─ 分析导入格式规范
   ├─ 验证四段分组规则
   ├─ 检查别名使用规范
   ├─ 检测循环依赖
   ├─ 评估代码质量
   ├─ 识别误报和实际问题
   ├─ 提供修复建议和最佳实践
   └─ 生成详细分析报告
  ↓
2. Claude 自动调整
   ├─ 格式化导入语句
   ├─ 调整分组和排序
   ├─ 应用正确别名
   └─ 解决循环依赖（如果需要）
  ↓
完成（输出规范化代码 + 完整报告）
```

**核心能力**：
- ✅ **区分手写代码和生成代码**：自动识别 `*.pb.go`, `wire_gen.go` 等
- ✅ **识别真正的规范问题**：避免误报，提供准确分析
- ✅ **智能分组判断**：理解导入规范的实际要求
- ✅ **循环依赖分析**：构建依赖图，评估影响和修复方案
- ✅ **提供具体修复建议**：每个问题都有针对性的解决方案
- ✅ **自动调整不规范内容**：直接修复发现的规范问题

## 核心导入规范

### 1. 导入格式强制要求

**三项强制规则**：
1. **括号包裹**：所有 `import` 语句必须使用 `()` 包裹
2. **段落分组**：按段落分组，段与段之间使用空行分隔
3. **字母排序**：每个段内的包按字母顺序排序

**错误示例**：
```go
// ❌ 错误：未使用括号包裹
import "context"
import "fmt"

// ❌ 错误：未分段，未排序
import (
    "github.com/go-kratos/kratos/v2/errors"
    "context"
    kitlog "github.com/fsyyft-go/kit/log"
    "fmt"
)

// ❌ 错误：fsyyft-go 包未取别名
import (
    "github.com/fsyyft-go/kit/log"
)
```

**正确示例**：
```go
// ✅ 正确格式
import (
	"context"
	"fmt"
	"strings"
	"time"

	"github.com/gin-gonic/gin"
	"github.com/go-kratos/kratos/v2/errors"
	kratoshttp "github.com/go-kratos/kratos/v2/transport/http"
	"github.com/prometheus/client_golang/prometheus/promhttp"

	kitlog "github.com/fsyyft-go/kit/log"
	kitruntime "github.com/fsyyft-go/kit/runtime"

	apphelloworldv1 "github.com/fsyyft-go/kratos-layout/api/helloworld/v1"
	appconf "github.com/fsyyft-go/kratos-layout/internal/pkg/conf"
)
```

### 2. 四段分组规则

| 段落 | 内容 | 别名要求 | 示例 |
|------|------|---------|------|
| **第一段** | Go 标准库 | 无需别名 | `context`, `fmt`, `strings`, `time` |
| **第二段** | 第三方包（github.com 等） | 建议取别名 | `kratoshttp "github.com/go-kratos/..."` |
| **第三段** | fsyyft-go 相关包 | **强制**使用 `kit` 前缀别名 | `kitlog "github.com/fsyyft-go/kit/log"` |
| **第四段** | 项目内部包 | **强制**使用 `app` 前缀别名 | `appconf "github.com/.../internal/pkg/conf"` |

### 3. 别名规范表

**fsyyft-go 包别名**：
| 包路径 | 强制别名 |
|-------|---------|
| `github.com/fsyyft-go/kit/log` | `kitlog` |
| `github.com/fsyyft-go/kit/runtime` | `kitruntime` |
| `github.com/fsyyft-go/kit/kratos/middleware/validate` | `kitkratosmiddlewarevalidate` |

**项目内部包别名**：
| 包路径 | 强制别名 |
|-------|---------|
| `github.com/fsyyft-go/kratos-layout/api/helloworld/v1` | `apphelloworldv1` |
| `github.com/fsyyft-go/kratos-layout/internal/pkg/conf` | `appconf` |
| `github.com/fsyyft-go/kratos-layout/internal/pkg/log` | `applog` |

## 故障排除

### 常见问题

#### 问题 1：Claude 分析时间较长

**症状**：
```
Claude 分析需要较长时间
```

**解决方案**：
1. 大型项目分析需要 3-5 分钟，请耐心等待
2. 如果超时，可以分目录分析
3. 确保网络连接稳定

---

#### 问题 2：生成文件被误修改

**症状**：
```
生成文件被意外修改
```

**解决方案**：
1. Claude 会自动识别生成文件（`*.pb.go`, `wire_gen.go`）
2. 生成文件的导入顺序由工具决定，不强制要求调整
3. 如果有问题，可以回滚到修改前

---

### 回滚操作

**触发条件**：
- 修复后发现新问题
- 不满意修复结果
- 想重新开始

**回滚方法**：
```bash
# 使用 Git 回滚
git checkout .

# 或恢复备份
git reset --hard HEAD~
```

---

## 最佳实践

### 检查前准备

1. **确保代码可编译**
   - 运行 `go build ./...`
   - 确保无编译错误

2. **创建分支**
   - 在新分支上进行修复
   - 便于回滚和代码审查

3. **提交更改**
   - 修复前先提交当前状态
   - 便于对比和回滚

---

### 检查过程

1. **Claude 全面分析**
   - 直接将项目交给 Claude
   - Claude 会自动完成所有工作
   - 等待分析完成

2. **审查调整结果**
   - 查看 Claude 提供的报告
   - 检查自动调整的内容
   - 确认是否满意

---

### 修复后处理

1. **验证修复**
   - 运行 `go build ./...`
   - 运行 `go test ./...`
   - 检查修复结果

2. **查看分析报告**
   - Claude 会生成完整的 Markdown 报告
   - 包含所有发现的问题和解决方案
   - 提供最佳实践建议

3. **提交更改**
   - 创建清晰的 commit message
   - 推送到远程仓库

4. **代码审查**
   - 让团队成员审查
   - 确保修复质量

---

## 工作原理总结

**第一步：Claude 扫描**
- Claude 扫描项目所有 Go 文件
- 分析导入规范问题
- 识别手写代码和生成代码

**第二步：Claude 分析**
- 验证格式、分组、别名规范
- 检测循环依赖
- 生成详细分析报告

**第三步：Claude 调整**
- 自动调整不规范内容
- 应用正确格式和别名
- 解决发现的问题

**最终结果**
- 规范化后的代码
- 完整的分析报告
- 最佳实践建议

---

## 技术规格

- **Go 版本**：1.16+（Go modules）
- **Python 版本**：无需（完全由 Claude 处理）
- **跨平台**：Windows, macOS, Linux
- **大模型**：Anthropic Claude API

---

## 注意事项

1. **100% Claude 驱动**
   - 完全由 Claude 负责所有工作
   - 无需脚本辅助
   - Claude 能够识别和纠正任何潜在问题

2. **区分代码类型**
   - 手写代码：严格按照导入规范检查
   - 生成代码：自动识别并特殊处理（如 `*.pb.go`, `wire_gen.go`）
   - 生成代码的导入顺序由工具决定，不强制要求调整

3. **Claude 自动调整**
   - Claude 会自动调整不规范的内容
   - 修复前建议创建 Git 分支
   - Claude 会生成完整的分析报告说明所有调整

4. **性能考虑**
   - Claude 分析时间：3-5 分钟（取决于代码量）
   - 大型项目建议使用 Claude 进行全面分析
   - 分析结果更准确、更全面

---

## 相关资源

### 规范来源
- `references/import_standards.md` - 提取的导入规范
- `references/alias_mapping.md` - 标准别名映射表

### 示例代码
- `internal/biz/greeter.go` - 业务层示例
- `internal/service/greeter.go` - 服务层示例
- `cmd/web/main.go` - 应用入口示例

### 参考文档
- [Effective Go](https://golang.org/doc/effective_go.html#imports)
- [Go Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments#imports)
- [Kratos Framework Documentation](https://go-kratos.dev/)

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/fsyyft-go) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-15 -->

