zco-claude 0.0.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. ClaudeSettings/DOT.claudeignore +7 -0
  2. ClaudeSettings/README.md +100 -0
  3. ClaudeSettings/commands/generate_changelog.sh +49 -0
  4. ClaudeSettings/commands/show_env +92 -0
  5. ClaudeSettings/commands/zco-clean +164 -0
  6. ClaudeSettings/commands/zco-git-summary +15 -0
  7. ClaudeSettings/commands/zco-git-tag +42 -0
  8. ClaudeSettings/hooks/CHANGELOG.md +157 -0
  9. ClaudeSettings/hooks/README.md +254 -0
  10. ClaudeSettings/hooks/save_chat_plain.py +148 -0
  11. ClaudeSettings/hooks/save_chat_spec.py +398 -0
  12. ClaudeSettings/rules/README.md +270 -0
  13. ClaudeSettings/rules/go/.golangci.yml.template +170 -0
  14. ClaudeSettings/rules/go/GoBuildAutoVersion.v250425.md +95 -0
  15. ClaudeSettings/rules/go/check-standards.sh +128 -0
  16. ClaudeSettings/rules/go/coding-standards.md +973 -0
  17. ClaudeSettings/rules/go/example.go +207 -0
  18. ClaudeSettings/rules/go/go-testing.md +691 -0
  19. ClaudeSettings/rules/go/list-comments.sh +85 -0
  20. ClaudeSettings/settings.sample.json +71 -0
  21. ClaudeSettings/skills/README.md +225 -0
  22. ClaudeSettings/skills/zco-docs-update/SKILL.md +381 -0
  23. ClaudeSettings/skills/zco-help/SKILL.md +601 -0
  24. ClaudeSettings/skills/zco-plan/SKILL.md +661 -0
  25. ClaudeSettings/skills/zco-plan-new/SKILL.md +585 -0
  26. ClaudeSettings/zco-scripts/co-docs-update.sh +150 -0
  27. ClaudeSettings/zco-scripts/test_update_plan_metadata.py +328 -0
  28. ClaudeSettings/zco-scripts/update-plan-metadata.py +324 -0
  29. zco_claude-0.0.8.dist-info/METADATA +190 -0
  30. zco_claude-0.0.8.dist-info/RECORD +34 -0
  31. zco_claude-0.0.8.dist-info/WHEEL +5 -0
  32. zco_claude-0.0.8.dist-info/entry_points.txt +3 -0
  33. zco_claude-0.0.8.dist-info/top_level.txt +1 -0
  34. zco_claude_init.py +1732 -0
@@ -0,0 +1,170 @@
1
+ # golangci-lint 配置模板
2
+ # 将此文件复制到项目根目录并重命名为 .golangci.yml
3
+
4
+ run:
5
+ # 超时时间
6
+ timeout: 5m
7
+
8
+ # 要检查的目录
9
+ tests: true
10
+
11
+ # 要跳过的目录
12
+ skip-dirs:
13
+ - vendor
14
+ - third_party
15
+ - testdata
16
+ - examples
17
+ - .*
18
+
19
+ # 启用的 linters
20
+ linters:
21
+ enable:
22
+ # 基础检查
23
+ - gofmt # 代码格式检查
24
+ - goimports # import 顺序检查
25
+ - govet # go vet 静态分析
26
+ - errcheck # 错误检查
27
+ - staticcheck # 静态分析
28
+ - unused # 未使用代码检查
29
+ - gosimple # 简化建议
30
+ - ineffassign # 无效赋值检查
31
+ - typecheck # 类型检查
32
+
33
+ # 代码质量
34
+ - gocyclo # 圈复杂度检查
35
+ - funlen # 函数长度检查
36
+ - gocognit # 认知复杂度检查
37
+
38
+ # 错误处理
39
+ - goerr113 # 错误处理检查
40
+ - wrapcheck # 错误包装检查
41
+
42
+ # 性能
43
+ - prealloc # slice 预分配检查
44
+
45
+ # 风格
46
+ - stylecheck # 代码风格检查
47
+ - revive # golint 替代品
48
+
49
+ # 注释
50
+ - godot # 注释格式检查
51
+ - godox # TODO/FIXME 检查
52
+
53
+ # 安全
54
+ - gosec # 安全检查
55
+
56
+ disable:
57
+ - deadcode # 已被 unused 替代
58
+ - varcheck # 已被 unused 替代
59
+ - structcheck # 已被 unused 替代
60
+
61
+ # Linters 配置
62
+ linters-settings:
63
+ # 圈复杂度检查
64
+ gocyclo:
65
+ min-complexity: 10
66
+
67
+ # 函数长度检查
68
+ funlen:
69
+ lines: 50
70
+ statements: 40
71
+
72
+ # 认知复杂度检查
73
+ gocognit:
74
+ min-complexity: 15
75
+
76
+ # 错误检查
77
+ errcheck:
78
+ check-blank: true # 检查 _ = err
79
+ check-type-assertions: true
80
+
81
+ # go vet 配置
82
+ govet:
83
+ check-shadowing: true
84
+ enable-all: true
85
+
86
+ # 注释格式检查
87
+ godot:
88
+ scope: declarations
89
+ capital: true
90
+
91
+ # TODO/FIXME 检查(允许使用 //; 前缀的注释)
92
+ godox:
93
+ keywords:
94
+ - TODO
95
+ - FIXME
96
+ - HACK
97
+ - OPTIMIZE
98
+ - DEPRECATED
99
+ - NOTE
100
+
101
+ # 安全检查
102
+ gosec:
103
+ severity: medium
104
+ confidence: medium
105
+ excludes:
106
+ - G104 # 允许未检查的错误(errcheck 会处理)
107
+
108
+ # 代码风格检查
109
+ stylecheck:
110
+ checks: ["all", "-ST1000", "-ST1003"]
111
+
112
+ # Revive 配置
113
+ revive:
114
+ confidence: 0.8
115
+ rules:
116
+ - name: exported
117
+ severity: warning
118
+ - name: unexported-return
119
+ severity: warning
120
+ - name: time-naming
121
+ severity: warning
122
+
123
+ # Issues 配置
124
+ issues:
125
+ # 排除规则
126
+ exclude-rules:
127
+ # 测试文件允许更长的函数
128
+ - path: _test\.go
129
+ linters:
130
+ - funlen
131
+ - gocyclo
132
+ - gocognit
133
+
134
+ # 允许在测试中使用点导入
135
+ - path: _test\.go
136
+ text: "should not use dot imports"
137
+
138
+ # 允许在 main.go 中使用全局变量
139
+ - path: cmd/.*main\.go
140
+ linters:
141
+ - gochecknoglobals
142
+
143
+ # 允许特定的 TODO/FIXME 注释(使用 //; 前缀 和 //@ 前缀)
144
+ - linters:
145
+ - godox
146
+ source: "//;"
147
+
148
+ # 最大 issues 数量(0 表示无限制)
149
+ max-issues-per-linter: 0
150
+ max-same-issues: 0
151
+
152
+ # 不排除新代码的 issues
153
+ new: false
154
+
155
+ # 显示所有 issues
156
+ exclude-use-default: false
157
+
158
+ # 输出配置
159
+ output:
160
+ # 输出格式:colored-line-number, line-number, json, tab, checkstyle
161
+ format: colored-line-number
162
+
163
+ # 打印 linter 名称
164
+ print-linter-name: true
165
+
166
+ # 使问题输出唯一
167
+ uniq-by-line: false
168
+
169
+ # 排序方式
170
+ sort-results: true
@@ -0,0 +1,95 @@
1
+ # GoBuild  动态编译版本管理
2
+
3
+ ## 说明
4
+ go释放的二进制文件, 应该自携带版本信息
5
+
6
+ ## 实现步骤
7
+
8
+ #### 1.  定义全局变量并绑定到  flag
9
+
10
+ 将版本信息变量声明为包级变量:
11
+
12
+ ```go
13
+ package main
14
+
15
+ import flag
16
+ import fmt
17
+ import os
18
+
19
+ var (
20
+ xBuildDesc string
21
+ AppName string = "{AppName}"
22
+ GitCommit string = "unset" // 默认 Commit,编译时覆盖
23
+ GitBranch string = "unset" // 默认 分支,编译时覆盖
24
+ BuildTime string = "unset" // 默认构建时间,编译时覆盖
25
+ CI_JOB_URL string = "unset" // 默认 CI Job URL,编译时覆盖
26
+ )
27
+
28
+ func co_parse_flag() {
29
+ //@NOTE: 绑定版本信息到 flag, 注意 flag.Parse() 只能执行一次
30
+ versionFlag := flag.Bool("version", false, "Print version and exit")
31
+ verboseFlag := flag.Bool("show-info", false, "Print verbose info and exit")
32
+ helpFlag := flag.Bool("h", false, "Display this help message")
33
+ flag.Parse()
34
+
35
+ if *versionFlag {
36
+ fmt.Fprint(os.Stdout, version)
37
+ os.Exit(0)
38
+ }
39
+
40
+ xBuildDesc := fmt.Sprintf(" AppName: %s \n Version: %s \n CommitID: %s \n Branch: %s \n BuildTime: %s \n CI_JOB_URL:%s \n",
41
+ AppName, version, GitCommit, GitBranch, BuildTime, CI_JOB_URL,
42
+ )
43
+
44
+ if *verboseFlag {
45
+ fmt.Fprint(os.Stdout, xBuildDesc)
46
+ os.Exit(0)
47
+ }
48
+
49
+ if *helpFlag {
50
+ flag.Usage()
51
+ os.Exit(0)
52
+ }
53
+ }
54
+
55
+ func main(){
56
+ //; 如果有其他自定义的 flag 配置需要前置
57
+ //flag.StringVar(&configFilePath, "c", "conf/app.conf", "Path to config file")
58
+ //; 注意 flag.Parse() 全局只能执行一次
59
+ co_parse_flag()
60
+
61
+ //; 后续是原业务逻辑代码
62
+ }
63
+ ```
64
+
65
+ #### 2.  编译时动态注入值
66
+
67
+ 在编译命令中使用  `-ldflags`  覆盖全局变量值:(Makefile), 参考如下是
68
+
69
+ ```Makefile
70
+ DIST_GitCommit ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo "commit_id")
71
+ DIST_GitBranch ?= $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "branch")
72
+ DIST_CI_JOB_URL ?= $(shell echo ${CI_JOB_URL:-"unset"})
73
+ # DIST_BuildTime := $(shell date +'%Y-%m-%dT%H%M%S%Z')
74
+ DIST_BuildTime := $(shell date +'%Y%m%d_%H%M%S')
75
+ DIST_AppName := "AppName"
76
+
77
+ build:
78
+ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w \
79
+ -X 'main.GitCommit=${DIST_GitCommit}' \
80
+ -X 'main.GitBranch=${DIST_GitBranch}' \
81
+ -X 'main.BuildTime=${DIST_BuildTime}' \
82
+ -X 'main.CI_JOB_URL=${DIST_CI_JOB_URL}' " \
83
+ -o ${BINARY}
84
+ # // ... 自定义更多的参数
85
+ ```
86
+
87
+ - **效果**:`Version`、`GitCommit`、`BuildTime`  会被编译时注入的值覆盖。
88
+
89
+ #### 3.  测试
90
+
91
+ ```shell
92
+ make build
93
+ ./{BINARY} -version
94
+ ./{BINARY} -show-info
95
+ ```
@@ -0,0 +1,128 @@
1
+ #!/bin/bash
2
+
3
+ # Go 编程标准检查脚本
4
+
5
+ set -e
6
+
7
+ echo "🔍 开始检查 Go 编程标准..."
8
+ echo ""
9
+
10
+ # 颜色定义
11
+ RED='\033[0;31m'
12
+ GREEN='\033[0;32m'
13
+ YELLOW='\033[1;33m'
14
+ NC='\033[0m' # No Color
15
+
16
+ FAILED=0
17
+
18
+ # 1. 检查代码格式
19
+ echo "📝 [1/7] 检查代码格式..."
20
+ if ! gofmt -l . | grep -q ".go"; then
21
+ echo -e "${GREEN}✓ 代码格式正确${NC}"
22
+ else
23
+ echo -e "${RED}✗ 以下文件格式不正确:${NC}"
24
+ gofmt -l .
25
+ FAILED=1
26
+ fi
27
+ echo ""
28
+
29
+ # 2. 检查 imports
30
+ echo "📦 [2/7] 检查 imports 顺序..."
31
+ if command -v goimports &> /dev/null; then
32
+ if ! goimports -l . | grep -q ".go"; then
33
+ echo -e "${GREEN}✓ Imports 顺序正确${NC}"
34
+ else
35
+ echo -e "${RED}✗ 以下文件 imports 顺序不正确:${NC}"
36
+ goimports -l .
37
+ FAILED=1
38
+ fi
39
+ else
40
+ echo -e "${YELLOW}⚠ goimports 未安装,跳过检查${NC}"
41
+ fi
42
+ echo ""
43
+
44
+ # 3. 运行测试
45
+ echo "🧪 [3/7] 运行测试..."
46
+ if go test ./... -v; then
47
+ echo -e "${GREEN}✓ 所有测试通过${NC}"
48
+ else
49
+ echo -e "${RED}✗ 测试失败${NC}"
50
+ FAILED=1
51
+ fi
52
+ echo ""
53
+
54
+ # 4. 检查测试覆盖率
55
+ echo "📊 [4/7] 检查测试覆盖率..."
56
+ COVERAGE=$(go test ./... -cover -coverprofile=coverage.out 2>&1 | grep "coverage:" | awk '{sum+=$NF; count++} END {if (count>0) print sum/count; else print 0}' | sed 's/%//')
57
+
58
+ if [ -z "$COVERAGE" ]; then
59
+ echo -e "${YELLOW}⚠ 无法计算覆盖率${NC}"
60
+ else
61
+ if (( $(echo "$COVERAGE >= 80" | bc -l) )); then
62
+ echo -e "${GREEN}✓ 测试覆盖率: ${COVERAGE}% (≥ 80%)${NC}"
63
+ else
64
+ echo -e "${RED}✗ 测试覆盖率: ${COVERAGE}% (< 80%)${NC}"
65
+ FAILED=1
66
+ fi
67
+ fi
68
+ echo ""
69
+
70
+ # 5. 检查竞态条件
71
+ echo "🏃 [5/7] 检查竞态条件..."
72
+ if go test -race ./... > /dev/null 2>&1; then
73
+ echo -e "${GREEN}✓ 无竞态条件${NC}"
74
+ else
75
+ echo -e "${RED}✗ 检测到竞态条件${NC}"
76
+ FAILED=1
77
+ fi
78
+ echo ""
79
+
80
+ # 6. 运行 linter
81
+ echo "🔍 [6/7] 运行 linter..."
82
+ if command -v golangci-lint &> /dev/null; then
83
+ if golangci-lint run ./...; then
84
+ echo -e "${GREEN}✓ Linter 检查通过${NC}"
85
+ else
86
+ echo -e "${RED}✗ Linter 检查失败${NC}"
87
+ FAILED=1
88
+ fi
89
+ else
90
+ echo -e "${YELLOW}⚠ golangci-lint 未安装,跳过检查${NC}"
91
+ echo " 安装命令: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b \$(go env GOPATH)/bin"
92
+ fi
93
+ echo ""
94
+
95
+ # 7. 检查注释规范
96
+ echo "💬 [7/7] 检查注释规范..."
97
+ echo " 查找所有功能注释 (//@NOTE:):"
98
+
99
+ # 统计各类非代码注释
100
+ TODO_COUNT=$(grep -r "TODO:" . --include="*.go" 2>/dev/null | wc -l || echo 0)
101
+ FIXME_COUNT=$(grep -r "FIXME:" . --include="*.go" 2>/dev/null | wc -l || echo 0)
102
+ HACK_COUNT=$(grep -r "HACK:" . --include="*.go" 2>/dev/null | wc -l || echo 0)
103
+ DEPRECATED_COUNT=$(grep -r "DEPRECATED:" . --include="*.go" 2>/dev/null | wc -l || echo 0)
104
+
105
+ echo " - TODO: $TODO_COUNT 项"
106
+ echo " - FIXME: $FIXME_COUNT 项"
107
+ echo " - HACK: $HACK_COUNT 项"
108
+ echo " - DEPRECATED: $DEPRECATED_COUNT 项"
109
+
110
+ if [ "$FIXME_COUNT" -gt 0 ]; then
111
+ echo -e "${YELLOW} ⚠ 有 $FIXME_COUNT 个 FIXME 需要修复${NC}"
112
+ fi
113
+
114
+ if [ "$DEPRECATED_COUNT" -gt 0 ]; then
115
+ echo -e "${YELLOW} ⚠ 有 $DEPRECATED_COUNT 个废弃代码需要清理${NC}"
116
+ fi
117
+
118
+ echo ""
119
+
120
+ # 8. 总结
121
+ echo "================================"
122
+ if [ $FAILED -eq 0 ]; then
123
+ echo -e "${GREEN}✓ 所有检查通过!${NC}"
124
+ exit 0
125
+ else
126
+ echo -e "${RED}✗ 检查失败,请修复上述问题${NC}"
127
+ exit 1
128
+ fi