go-redis 的 Claude Code 协作配置体系:settings.json 共享策略、仓库级命令、技能与架构规格文档
发布时间:2026/10/1 2:13:23来源:尧图网络
后端数据库客户端缓存【免费下载链接】go-redisRedis Go client项目地址https://gitcode.com/GitHub_Trending/go/go-redis点击查看免费下载导读本文讲解 go-redisRedis Go 客户端仓库如何为 Claude Code 建立一套项目级、团队级、可持续的 AI 协作配置体系settings.json采用何种共享策略、settings.local.json如何承载个人偏好以及commands/斜杠命令、skills/仓库级技能与specs/架构规格文档三个目录各自承担什么职责。读完本文你将理解一个大型开源项目如何把权限策略、开发流程新增命令、提交规范、测试、发布、CI 镜像维护与多年沉淀的架构知识编码为可被 AI 助手检索和执行的工程资产并可将其中的设计思路复用到自己的项目。一、.claude/目录的定位为整个维护团队配置 Claude Code在 go-redis 仓库根目录下.claude/目录存放的是仓库级的 Claude Code 配置其定位在 .claude/README.md 中开宗明义这是 Claude Code configuration for the go-redis repository——它不是个人脚本的存放处而是整个 go-redis 维护团队共享的协作配置。该目录目前包含四类内容路径作用.claude/settings.json共享的 Claude Code 设置权限 allowlist.claude/commands/仓库专属斜杠命令如check-ci.claude/skills/仓库专属技能如add-command、testing.claude/specs/被技能与维护者共同引用的架构规格文档这种分层设计的意图很清晰权限与策略settings要收敛、稳定、团队一致流程与知识commands/skills/specs要丰富、可扩展、按需读取。四个目录各司其职共同构成 go-redis 仓库的 AI 协作基础设施。二、settings.json项目共享的权限策略2.1 共享原则只放团队级策略README 明确规定了settings.json的边界settings.json被提交到仓库并作用于每一位维护者的 Claude Code 会话它只承载团队级策略——权限 allowlist及其他应当对仓库内所有人生效的设置任何个人偏好个人模型选择、本地权限授予、机器专属路径等都必须放进settings.local.json该文件已被 gitignore不会进入版本库往settings.json里添加内容是一种刻意的团队决策而非顺手为之。这一共享 vs 个人的二分法避免了两个常见问题一是个人配置污染团队仓库各人模型、路径、授权五花八门二是团队级安全边界被个人设置悄悄放宽。2.2 schema 校验为什么说明文档写在 README 而非配置里README 特别注明settings.json由 Claude Code 做schema 校验不接受注释或未知键。这正是为什么所有解释性说明都放在 .claude/README.md 中而不是写成 JSON 注释——写进去只会导致校验失败。2.3 实际权限清单解读.claude/settings.json 的permissions.allow数组给出了 go-redis 维护者日常允许 Claude Code 执行的命令逐条看能还原出这个仓库的开发工作流{ permissions: { allow: [ Bash(go version), Bash(go env:*), Bash(go list:*), Bash(go doc:*), Bash(docker info), Read, Grep, Glob, Edit, Write, Bash(make:*), Bash(go test:*), Bash(go build:*), Bash(go vet:*), Bash(gofumpt:*), Bash(git status), Bash(git diff:*), Bash(git log:*) ] } }这些条目与 go-redis 的工程实践一一对应go version/go env:*/go list:*/go doc:*环境探查与依赖查询。go env用于确认 Go 版本、模块代理等环境变量go list与go doc支撑查看模块依赖与 API 文档这类只读操作docker info只允许查询 Docker 守护进程状态不允许直接驱动容器——因为 go-redis 的测试需要先通过 docker-compose.yml 拉起 Redis 测试栈make docker.start等编排动作被约束在 Makefile 目标内执行Read/Grep/Glob/Edit/Write文件系统基础能力是 AI 助手理解与修改代码的前提make:*允许执行任意 Makefile 目标。go-redis 的 Makefile 聚合了test、test.ci、bench、fmt、build、docker.start、docker.stop、go_mod_tidy等目标把复杂的多模块测试/构建编排收敛为单一入口go test:*/go build:*/go vet:*/gofumpt:*编译、测试、静态检查与格式化。gofumpt是 go-redis 选用的严格格式化工具make fmt由 gofumpt goimports 组成在权限层面对其放行保证了 AI 生成的代码能直接通过仓库的格式门禁git status/git diff:*/git log:*只读的 Git 查询。注意没有放行git add、git commit、git push——提交与推送仍然保留为维护者的人工步骤这也与prepare-release技能本技能绝不发布的立场一致。从源码结构看这套 allowlist 是一种宽工具、窄副作用的权限模型给予 AI 充分的代码理解与修改能力同时把对仓库状态有外部影响的操作容器编排、提交、推送、打标签挡在默认授权之外。三、commands/仓库级斜杠命令commands/目录存放可被维护者直接调用的仓库专属斜杠命令。目前仓库中定义了一个check-ci见 .claude/commands/check-ci.md用于汇总当前分支 PR 的 GitHub Actions CI 状态。该命令的文件头声明了其输入约束--- description: Summarize GitHub Actions CI status for the current branchs PR (build, lint, e2e, govulncheck, ...) argument-hint: [pr-number] allowed-tools: Bash(gh pr checks:*), Bash(gh pr view:*), Bash(gh run view:*), Bash(gh pr list:*), Bash(git branch:*) ---注意它通过allowed-tools只授权了gh与git branch相关命令且限定了子命令前缀——这是一种比全局权限更细粒度的、命令自身的工具白名单。执行逻辑分四步上下文采集先获取当前分支名git branch --show-current再查询对应 PR 及其各项 check 的状态先报总数一行输出N passing · M failing · K pending含 skipped/cancelled只列失败与 pending通过状态的 check 不展示they are noise逐项列出失败的名称、状态与日志 URL按合并阻塞程度排序test-redis-ce主正确性矩阵与E2E Tests (Mock Proxy)排最前其次lint与govulncheck再往后是CodeQL/doctests/check-spellingbenchmarks 最后给出唯一结论行全绿则 All checks pass, nothing to do.有红则指出最需要先看的那个失败的 check只有 pending 则说明哪些仍在运行。这个命令把看一眼 PR 能不能合这一高频操作压缩成了单个斜杠命令并刻意要求无前言、不重述 prompt、保持简短——体现了仓库级命令设计的一个原则输出只服务于决策不输出噪音。四、skills/仓库级技能skills/目录存放仓库专属技能每个技能封装一个高频开发任务的完整执行规程。go-redis 目前定义了五个add-command、commit-style、testing、prepare-release、update-ci-image。下面逐一展开。4.1 add-command新增一条 Redis 命令的标准流程add-command见 .claude/skills/add-command/SKILL.md是五个技能中最复杂的面向给 go-redis 增加新命令含 RediSearch / TimeSeries / VectorSet / 模块子命令这一典型维护场景覆盖从取 spec 到写测试、过 custom-vet 的全链路。Step 0 强调先取两份资料动手写 Go 之前必须同时拿到机器可读的 command spec参数、key 位置、reply schema与散文文档返回值的真实形态、RESP2 vs RESP3 差异、示例二者覆盖的信息缺口不同。spec 的获取顺序是用户给的 spec 文件/PR URL 优先否则从 redis/redis 的src/commands/cmd.json拉取404 说明它是模块命令RediSearch、TimeSeries、VectorSet、Bloomspec 在模块自己的仓库里不应重试 redis/redis 的 URL。文档侧则取 redis.io 的命令页或 redis-doc 的原始 markdown重点读 Return value / RESP2 Reply / RESP3 Reply 部分并与 JSONreply_schema相互校验——两者冲突时以文档描述再辅以redis-cli实测为准。技能提供了一张双源 → 实现的映射表非常直观资料来源驱动实现specarguments方法签名、参数切片组装顺序、可选FooArgs结构体specreply_schema 文档 Return valuereadReply解析器与 Cmder 结果类型文档 RESP2 / RESP3 ReplyreadReply中的协议分支specsince 文档history集成测试里的SkipBeforeRedisVersion(...)与 doc 注释speckey_specscommand.go中的 key 位置表、集群路由speccommand_flags如READONLY、无 keykeyless / fan-out 处理、集群路由文档示例集成测试用例与期望值开工前的三个决策选哪个*_commands.go文件按数据类型就近放入只有全新类别才新建文件新文件需要配套XxxCmdable接口并嵌入Cmdable复用现有 Cmder 还是新建简单回复如 int/string/bool/[]string/map 复用*IntCmd、*StringCmd等仅结构化回复才定义新 Cmder暴露Foo(...)还是FooWithArgs(ctx, key, *FooArgs)带可选 flag 的命令二者都要。常见坑Pitfalls忘记把新XxxCmdable嵌入Cmdable——在*Client上能编译通过却通过UniversalClient静默不可达忘记实现Clone()——pipeline 会复用 Cmder共享val会导致跨执行的脏数据跳过SetVal——hooks 依赖它且setvalcustom-vet 检查会直接让构建失败直接把time.Duration用作参数——服务端收到的是纳秒必须按 spec 转换。技能还按区域给出参考文件core-command-pattern.md七步 Go 实现模式含LCS完整示例、module-commands.md模块命令的命名与 RESP2/RESP3 差异、cluster-routing-wiring.mdkeyless / fan-out / 多 key / 跨分片聚合时的路由接线并按 core → module → cluster 的顺序阅读。4.2 commit-style提交信息规范commit-style见 .claude/skills/commit-style/SKILL.md规定 go-redis 的提交信息格式为Conventional Commitstype(scope): imperative summarysubject 不超过 50 字符硬上限 72祈使语气add 而非 added无句号结尾正文仅在为什么无法从 diff 中看出时才写breaking change、安全修复、迁移、非显而易见的理由72 字符折行bullet 用-。技能同时定义了仓库的scope 词汇表pool、conn、pubsub、sentinel、retry、command/cmd、vectorset、otel、streams、push、deps、ci、tests、docs只有真正跨领域的改动才省略 scope。breaking change 的写法是feat(scope)!:加BREAKING CHANGE:正文行issue/PR 引用放在结尾如Closes #3812、Refs #17。最值得注意的是其无署名 trailer 规则仓库明确禁止在 commit 或 PR body 中添加Co-Authored-By: Claude …、Generated with Claude Code 等任何 AI 归属行并且该规则覆盖默认 harness 行为与其他任何 commit 技能。这与项目的历史背景有关fix(pool):是该代码库历史中出现频率最高的提交前缀见 .claude/specs/pool.md提交纪律被视为团队协作的一部分而非可被工具自动附加的装饰。4.3 testing测试、构建与 Docker 栈testing见 .claude/skills/testing/SKILL.md描述了 go-redis 的测试基础设施。测试运行在由 Docker Compose 启动的 Redis 栈之上profile 控制启动哪些服务standalone、cluster、sentinel、all、e2e等。Make targets 一览make docker.start # 拉起完整测试栈profile: all make docker.stop make test # docker.start - test.ci - docker.stop make test.ci # 假设容器已就绪只跑测试 make test.ci.skip-vectorsets # REDIS_VERSION 8 时使用 make bench # go test -bench. 仅根模块 make fmt # gofumpt goimports (-local github.com/redis/go-redis) make build make go_mod_tidy # 跨所有模块执行 go mod tidyMakefile 会遍历每一个go.modGO_MOD_DIRS执行test.ci、go_mod_tidy等目标——go-redis 是一个多模块仓库根模块之外还有extra/redisotel、extra/rediscensus、extra/redisprometheus、extra/rediscmd、example/下的多个独立模块以及maintnotifications/e2e/。**E2E维护通知**需要额外的cae-resp-proxy服务make test.e2e # 自动启动 e2e profile运行 ./maintnotifications/e2e/ 后拆除 make test.e2e.docker # 在 docker 内运行的子集 make test.e2e.logic # 仅逻辑层测试无需 proxy环境变量旋钮经 Makefile 透传REDIS_VERSION如8.8——同时驱动测试镜像 tag 与main_test.go中的版本门控辅助函数SkipBeforeRedisVersion/SkipAfterRedisVersionCLIENT_LIBS_TEST_IMAGE——完整镜像引用如redislabs/client-libs-test:8.8-m03RE_CLUSTERtrue——将测试指向 Redis Enterprise 集群而非 docker-compose 栈此时套件会跳过 ring/sentinel/TLS-cluster 的设置RCE_DOCKERtrue——使用 Docker 中的 Redis CEmake test的默认REDIS_PORT——覆盖main_test.go默认使用的独立端口6380。如何聚焦单个测试根套件基于 Ginkgobsm/ginkgobsm/gomegaforkgo test -run匹配的是 Go 层包装因此聚焦某个 Ginkgo spec 要用 focus 标志go test -run TestGinkgoSuite . -ginkgo.focusZAdd go test -run TestGinkgoSuite . -ginkgo.focusclusterGinkgo 套件之外的普通go test风格测试如internal/...、maintnotifications/...下的大多数文件按常规方式运行go test -run TestConnStateMachine ./internal/pool/... go test -race -run TestCircuitBreaker ./maintnotifications/...版本相关的测试用SkipBeforeRedisVersion/SkipAfterRedisVersion由REDIS_VERSION驱动在单个测试内做门控而不是在套件层面整体跳过。4.4 prepare-release发布准备但绝不发布prepare-release见 .claude/skills/prepare-release/SKILL.md把发布流程划分为本地备齐、人工发布两段并反复强调三个绝不绝不运行scripts/tag.sh ... -t-t会创建并推送 git tag、绝不git push、绝不替维护者提交。交付物是一份可审查的 diff版本号提升 一条新的 RELEASE-NOTES.md 条目。流程要点选版本当前版本以 version.go 为准grep return version.go按 semver 决定 patch/minor/major改动语义模糊时与用户确认收集变更由于scripts/tag.sh也会给公开子模块打 tagextra/redisotel/vX.Y.Z等朴素的git describe会返回子模块 tag必须用--match v[0-9]*只匹配根模块 tag再用gh pr list --state merged收集合并的 PR剔除 dependabot 升级、纯 typo 文档修复、无用户可见影响的内部重构写发布说明在 RELEASE-NOTES.md顶部前置新的# X.Y.Z (YYYY-MM-DD)小节最新的在最上严格遵循发布说明模板的章节顺序、emoji 头、(#PR) by user链接格式与Full Changelog对比链接格式RELEASE-NOTES.md是人工精选的记录文件与 release-drafter 依据 PR 标签自动草拟的 GitHub release 相互独立提升版本运行TAGvX.Y.Z ./scripts/release.sh——该脚本会重写所有子模块go.mod中的 go-redis 依赖版本、执行go mod tidy并提升version.go但不提交、不推送、不切分支干跑验证./scripts/tag.sh vX.Y.Z不加-t检查version.go与各go.mod是否已与 tag 一致并打印将要推送的 tags随后make build与git diff --stat复查交接报告发布已备妥并列明维护者自行执行的发布步骤review 后提交chore(release): vX.Y.Z→ 合入发布 PR → 合并后./scripts/tag.sh vX.Y.Z -t打标推送 → 用 release-drafter 发布并与 RELEASE-NOTES 对齐。这种技能止步于发布前一刻的设计把风险最高的动作打 tag、推送始终保留在人的手里。4.5 update-ci-image让 CI 测试镜像六处同步update-ci-image见 .claude/skills/update-ci-image/SKILL.md处理redislabs/client-libs-test镜像 tag 的增删改。该镜像引用散落在六个位置五个生效配置 一处文档漏改任何一处都会造成本地make test与 CI 分叉或某个 CI job 用了错误的镜像#位置内容1MakefileCLIENT_LIBS_TEST_IMAGE ? redislabs/client-libs-test:tag本地make test/make docker.start的默认值2docker-compose.ymlx-default-image中的回退默认值env 未设置时使用应与 Makefile 默认保持一致3.github/workflows/build.ymlredis_version_mapping关联数组驱动 benchmark job 与 test-redis-ce 矩阵4.github/actions/run-tests/action.yml与 build.yml 相同的redis_version_mapping矩阵 job 调用的复合 action必须与之锁步5.github/workflows/doctests.yaml硬编码image:doctests 不读取映射6CONTRIBUTING.md散文说明行无 CI 影响但会静默过期技能特别点出几个gotcha映射有两份build.yml 与 run-tests/action.yml 各自声明不自动去重必须都改build.yml 里有两份矩阵benchmark job 与 test-redis-ce job 各自维护redis-version列表doctests.yaml 是硬编码不读映射换镜像不要动REDIS_VERSION——数字版本驱动的是SkipBeforeRedisVersion这类测试跳过逻辑自定义镜像仍应报告其基础版本。加/删 Redis 版本、切到自定义构建如某个未发布服务特性的custom-...-debian镜像各有对应的操作清单改完后用 Grep 搜索旧 tag 引用做验证。这个技能体现了一个核心教训镜像 tag 是横切配置任何变更都必须一次性覆盖所有引用点否则本地与 CI 会在无人察觉的情况下悄悄分叉。五、specs/可检索的架构规格文档specs/目录是.claude/体系中最有分量的部分——五个架构规格文档把 go-redis 最复杂、最容易踩坑的子系统以不变量 原因 历史 bug的形式固化为知识资产供技能和人类维护者在改动代码前阅读。其共同声明是读这个文档再改代码。5.1 pool.md连接池——不变量高于一切.claude/specs/pool.md 面向 internal/pool/ 目录开篇就给出一个重要事实连接池是代码库中 bug 最多的模块fix(pool):是历史提交前缀的第一名且几乎总是因为有人无意中违反了下面的某个不变量。文档归纳了四大首要不变量每个成功的waitTurn必须调用freeTurn信号量是唯一约束并发的手段泄漏一个 turn 就是永久损失容量历史上绝大多数 pool bug 都可追溯到遗漏的freeTurnwantConnQueue必须严格 FIFO池耗尽时调用者以wantConn请求排队按到达顺序服务。两个真实 bug 都与此相关——#3777notifyWaiters循环内重读原子状态导致快 goroutine 插队与 #3680取消/超时的 waiter 滞留在队首直到下一次discardDoneAtFront拖延真实 waiter 并引发虚假重试ConnState状态机是存活性判定的唯一事实来源六种状态StateCreated → StateInitializing → StateIdle ⇄ StateInUse → StateUnusable → StateIdle/StateClosed。曾经存在的Conn.closed原子布尔在 #3783 中被移除因为它与StateClosed重复且会造成漏更新——不要重新引入影子标志Dial timeout 是逐次尝试的而非累计DialerRetries默认 5、DialerRetryTimeout默认 100ms、可选的DialerRetryBackoff塑造重试行为DialTimeout每次尝试都有独立预算#3705。此外还包含Get/Put的完整语义含 RESP3 push 帧的 peek 路径——正是这一机制让维护通知无需专用读 goroutine 即可工作、conn_check的MSG_PEEK三态判别、re-auth 与 handoff 通过StateUnusable共存#3547以及一张完整的连接池配置表选项默认值说明PoolSize10 * GOMAXPROCS池化连接软上限MinIdleConns0初始化预热Remove后补充MaxActiveConns0不限制含突发期间额外连接的硬上限PoolTimeoutReadTimeout 1swaitTurn阻塞时长ConnMaxIdleTime30 分钟Put时驱逐ConnMaxLifetime0无绝对年龄上限Put时检查ConnMaxLifetimeJitter0随机 ±抖动避免全量连接同时过期引发惊群#3666ReadBufferSize/WriteBufferSize32 KiBv9.12 起此前为 4 KiBsentinel 客户端用 4 KiB#34765.2 cluster-routing.md集群路由的完整心智模型.claude/specs/cluster-routing.md 面向 osscluster.go、osscluster_router.go、command_policy_resolver.go 及 internal/routing/ 与 internal/hashtag/。其心智模型一句话概括一条命令变成一个(slot, policy, aggregator)三元组对一个或多个节点执行再由聚合器折叠响应——大多数 bug 都出在 slot 算错、policy 选错或聚合错误上。内容覆盖slot 计算CRC16(hashtag(key)) % 16384空 key 映射到随机 slot 以避免确定性集中、MOVED/ASK重定向语义MOVED触发拓扑重载、ASK一次性ASKING后重试不重载重定向后不加退避#3048MASTERDOWN可重试 #3164dial tcp错误按重定向处理 #3786、命令策略分类RequestPolicy 的ReqDefault/ReqAllNodes/ReqAllShards/ReqMultiShard/ReqSpecial与 ResponsePolicy 的RespDefaultKeyless/RespDefaultHashSlot/RespAllSucceeded/RespOneSucceeded/RespAgg*/RespSpecial、keyless 命令的ShardPickerround-robin/random/static、四种读路由旋钮ReadOnly/RouteRandomly/RouteByLatency/ReplicaOnly的交互矩阵、拓扑重载触发源、以及跨槽约束TxPipeline要求所有 key 同槽并立即返回ErrCrossSlot普通Pipeline按槽分组并行、无此限制Eval/EvalSha按KEYS首键路由。5.3 push.mdRESP3 推送消费模型.claude/specs/push.md 描述 v9 客户端如何消费服务器推送帧类型CSC 失效、维护通知。核心模型是检查点而非专属读线程v9 连接没有专属 reader谁持有连接谁读它因此推送在固定的检查点被消费——回复读取每次命令写入后的阻塞循环、命令前 drain投机性 peek、缓存命中后的过期守卫、连接归还池前的路径检查、空闲连接后台 drain、FD 会话/pubsub有专属 reader 的连接到达即处理。文档还给出三条强制审查规则不新增投机 drain 调用点、需要更新鲜推送的特性必须自己持有 reader、绝不允许放弃半消费的帧帧中途超时即弃用连接。5.4 full-duplex.md全双工自动流水线引擎.claude/specs/full-duplex.md 记录有序全双工FD自动流水线引擎autopipeline_fullduplex.go、autopipeline.go、autopipeline_cluster_fd.go的设计不变量FD 是 opt-inAutoPipelineOptions.FullDuplex一个fdEngine持有一条连接服务多个调用者写命令时读 goroutine 按 FIFO 排空回复因此调用者无需等待一个往返就能发出下一条命令。文档详细展开引擎模型attempt/session/carry 重放、panic 边界用户代码在引擎 goroutine 上运行绝不能杀死唯一的引擎 goroutine 或让半初始化连接回池、Sentinel 下的关闭顺序LIFO close hooks以及四个明确记录在案的限制CSC 在 FD 快路径上不参与、终端失败缺 duration 指标、ClusterClient 上注册的 process hooks 不跑在 FD 路径、集群连接错误 carry 停留在源节点。5.5 maintnotifications.md维护通知与智能连接交接.claude/specs/maintnotifications.md 面向 maintnotifications/解释 Redis Enterprise 的 RESP3 维护通知机制服务端在节点即将迁移/故障转移时推送通知客户端要么放宽超时RelaxedTimeout避免在途命令误报超时要么交接连接handoff到新端点而不丢弃挂起的操作——用户可见的承诺是计划维护期间无虚假错误。其适用前提写得很清楚仅 Redis Enterprise / Redis Cloud且仅 RESP3Protocol: 3开源 Redis 不发出这些通知。通知分两个家族每连接帧MOVING触发真正的连接交接、MIGRATING/MIGRATED/FAILING_OVER/FAILED_OVER只调整超时与集群级帧SMIGRATING/SMIGRATED后者按 seqID 去重并触发部分拓扑重载。模式分三档ModeDisabled针对开源 Redis、ModeEnabled强制CLIENT MAINT_NOTIFICATIONS ON服务器拒绝即硬错误、ModeAuto默认尝试握手、服务器不理解就静默降级。交接工作池的自适应规格为MaxWorkers min(PoolSize/2, max(10, PoolSize/3))、HandoffQueueSize有上下限封顶外加按端点熔断的 circuit breaker 与EndpointType自动探测TLS 开启偏好 FQDN、关闭偏好 IP内部/外部按 RFC1918/RFC4193/loopback/RFC6598 分类带 2 秒 DNS 超时上限。5.6 规格文档的价值把 bug 历史变成不变量 原因五个规格文档有一个共同特征每节末尾都有 History worth knowing把反复出现的失败模式显式列出如 pool 的状态重复、丢失 waiter/turn、后台工作与 Close 竞争、cluster 的slot 算错、节点计数竞争、把可恢复失败当致命。配合 issue 编号#3049、#3219、#3328、#3547、#3633、#3680、#3705、#3777、#3783、#3788……这些规格把多年踩坑经验压缩成可检索、可引用的决策记录——这正是它们被称为architecture specs referenced by skills and by maintainers的原因新特性设计前读 spec等于站在全部历史 bug 的肩膀上。六、设计模式总结大型项目如何为 AI 协作编码工程知识回看 go-redis 的.claude/配置可以提炼出一套可复用的设计模式共享/个人严格分层团队级策略权限进settings.json并提交入库个人偏好进 gitignored 的settings.local.json配置本身受 schema 校验解释性内容放 README命令 → 技能 → 规格三层递进commands/处理查一下低复杂度、单次输出skills/处理做一件事多步骤流程、含工具白名单与坑位清单specs/处理理解一个系统架构不变量、历史 bug、测试策略——技能引用规格规格是知识底座权限的最小必要原则默认只放行只读查询与文件操作make:*作为复杂编排的唯一入口提交/推送/打 tag 一律留在人工侧把不变量与原因而非代码导览写成规格pool.md 明确说本文档记录不变量与为什么不是代码导览——因为代码会变不变量与原因不会每个流程都带验证闭环check-ci 给出排序后的结论、prepare-release 要求 tag.sh 干跑干净、update-ci-image 要求改后 Grep 验证、add-command 要求 custom-vet 通过——AI 协作流程与人类流程共享同一套门禁。对于任何希望用 Claude Code 支撑复杂仓库开发的团队go-redis 这套配置给出了一条清晰路径先用严格的权限边界约束 AI 的副作用再用技能封装高频开发流程最后用架构规格沉淀最难获取的知识——三者合一AI 才能既敢动手又不越界还懂背景。延伸阅读配置总览.claude/README.md、.claude/settings.json斜杠命令.claude/commands/check-ci.md仓库技能add-command、commit-style、testing、prepare-release、update-ci-image架构规格pool、cluster-routing、push、full-duplex、maintnotifications对应源码连接池 internal/pool/、集群路由 osscluster.go 与 internal/routing/、推送消费 push/、维护通知 maintnotifications/、FD 引擎 autopipeline_fullduplex.go工程配套Makefile、docker-compose.yml、version.go、RELEASE-NOTES.md赞分享后端数据库客户端缓存【免费下载链接】go-redisRedis Go client项目地址https://gitcode.com/GitHub_Trending/go/go-redis点击查看免费下载相关推荐ECC面向 Claude Code 的生产级智能体插件仓库全解析——架构、命令、Hooks 与开发规范ECC面向 Claude Code 的生产级智能体插件仓库全解析——架构、命令、Hooks 与开发规范 本篇技术指南以仓库中的项目指引文档 CLAUDE.m人工智能AI 技能AI 插件AI 评测Agent 评测MCP Clients开发工具NetAlertX 仓库 AI 协作开发指南面向 Claude Code 的项目架构、命令与编码规范全解析NetAlertX 仓库 AI 协作开发指南面向 Claude Code 的项目架构、命令与编码规范全解析 本文是 NetAlertX 仓库根目录下 CLAU后端网络运维数据可视化OpenZeppelin Contracts 的 Claude 协作指南仓库结构、命令体系与 AI 辅助开发约定OpenZeppelin Contracts 的 Claude 协作指南仓库结构、命令体系与 AI 辅助开发约定 OpenZeppelin Contracts区块链Web3上一篇Rythm.js源码架构解析模块化设计与扩展机制下一篇Next.js项目零配置部署Kool.dev Cloud与Vercel的终极对比指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网