Community写作与编辑github.com

yurgeno/taut-data-community

TAUT 的社区起步数据包:一套通用的开发流程(分析/实施/审查)、工作区初始化和工作区检查技能,可针对任何技术栈进行定制。

taut-data-community 是什么?

该技能是 TAUT(通用自动化工具)的社区起步数据包,提供了一套标准化的开发工作流,包括分析(analyze)、实施(implement)和审查(review)三个阶段。它特别关注代码审查阶段(dev-review),强调审查者应基于任务意图而非空泛标准来评估代码变更。技能支持多种技术栈(Node.js、JVM、Android、PHP、Python),并为每种栈提供了具体的审查检查点,例如类型安全性、资源管理、生命周期处理等。它定义了一个清晰的“所有者门控”机制,确保审查者仅报告发现而不直接实施更改或合并代码,从而保持流程的职责分离。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add yurgeno/taut-data-community

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

dev-review — 审查者(阶段 3)

用独立的眼光审视变更。根据任务而非空泛标准来审查差异。

调用dev-review <TASK>
输入工作树差异 + memory/spec/<TASK>/analysis.md 和 implementation.md
输出memory/spec/<TASK>/review.md,status: draft,裁决:批准 / 需要修改
门控所有者接受裁决 — 见下方的 所有者门控
下一步需要修改 → 再次调用 dev-implement <TASK>;批准 → 所有者合并变更

0. 入口检查

  • 未提供 <TASK> → 询问。
  • implementation.md 缺失或为空 → 停止:尚无内容可供审查。
  • implementation.md 仍是 status: draft → 说明情况,但如果所有者要求仍可审查,但在裁决中记录阶段 2 未通过其门控。
  • 在查看差异前先阅读分析文档。不了解意图就评判变更只会产生风格评论,而错过重要发现。

流程(通用)

  1. 重新推导意图:从任务和分析中理解意图;然后判断差异是否实现了该意图。一个放到错误地方的漂亮变更是严重的发现。

  2. 正确性优先:边界情况、错误路径、并发、边界处的数据结构。然后是约定和清晰度。仅涉及风格的琐事放在最后并明确标记。

  3. 不要相信实施者的证据 — 自行复现。 重新运行决定性验证(当测试集较长时,委托给 dev-reviewer 子代理)。实施说明记录了运行的内容;你的工作是检查这些内容仍然成立,并且运行了正确的内容。

  4. 检查影响范围:还有哪些代码使用了被修改的代码?搜索差异未触及的使用点;意外的锁文件、配置文件或生成文件更改都是发现。

  5. 报告发现,而非修复。 按严重程度(严重 / 应修复 / 琐事)报告,附带文件和行号;琐碎的机械修复可以直接应用,其余一律返回给 dev-implement。将裁决写入 memory/spec/<TASK>/review.md,开头为:

    ---
    task: <TASK>
    stage: review
    status: draft
    verdict: approve | needs-changes
    ---
    

特定技术栈的审查检查

node: 差异引入的类型逃逸(any、as、@ts-ignore);无错误处理的 Promise 链;无意的依赖或锁文件漂移;绕过项目图表的单体库编辑(跨包的深层相对导入)。

jvm: 新边界处的空值处理(Kotlin 平台类型、Optional 误用);资源处理(try-with-resources / use);新 Bean 的事务和 DI 作用域;测试是否实际运行(正确的模块、正确的命名约定)。

android: 检查生命周期,而不仅仅是逻辑 — 在 Composable 或 Activity 中启动的工作必须能应对旋转,并在作用域死亡时停止(在 repeatOnLifecycle/collectAsStateWithLifecycle 中收集,用正确的作用域取消协程)。长时间存活对象中持有的 Context 是内存泄漏。AndroidManifest.xml 中的新权限也需要运行时请求路径;高于 minSdk 的 API 需要显式门控。发布版本与调试版本不同 — 任何反射性内容(序列化、Room、DI)的 R8/ProGuard 规则都是变更的一部分。另外询问仪器测试是否实际运行过:它们是 CI 最常跳过的测试。

php: 新代码上的 declare(strict_types=1) 以及参数/返回类型;触及路径中的注入面(原始 SQL、未转义的输出);差异引入的错误抑制(@);配置/DI 变更与框架约定一致。

python: 新边界处的类型注解(Any、缺少返回类型、# type: ignore);可变默认参数和可变类级状态;资源关闭(文件和连接的 with 语句)以及 async 调用是否实际被 await;吞掉异常的异常处理(except Exception: pass);清单和锁文件同时更改(pyproject.toml 与 uv.lock / poetry.lock),或两者都不改;Django:每个模型变更都有可逆的迁移;测试放在运行器能找到的地方(tests/、test_*.py、conftest.py fixture),且未被过时的标记跳过。

所有者门控

在此停止 — 审查者从不合并变更也从不重新实施变更。用两句话报告裁决及其驱动的发现。

  • 需要修改 → 所有者决定;经其确认后,循环返回 dev-implement <TASK>,该命令会追加到 implementation.md 而非重新开始。review.md 保留作为错误记录。
  • 批准 → 经所有者明确接受后,设置 status: approved。合并变更(提交、分支、推送)是所有者根据工作区 Git 法则执行的操作 — 而非此技能的职责。

完成条件

review.md 包含其前置数据和带有按严重程度分类的发现的裁决,决定性验证由你重新运行,聊天摘要用两句话给出裁决。仅批准那些你愿意在别人事后分析中捍卫的内容。

相关技能