Install any skill in seconds. Free to start, no credit card required.
Get Started Free →服务于 `/genesis` Step 3「技术选型」:以 ATAM 与 12 维加权矩阵评估候选栈,产出可追溯的对比结论与 ADR 升格素材;不写正式 ADR 文件(落盘在 Step 5)。优先读本 SKILL 旁 `references/`。
.claude/skills/bilal140202-tech-evaluator/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 89% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 202% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 221% | 0% |
> "没有最好的技术栈,只有最适合的技术栈。" —— ThoughtWorks Technology Radar
本技能基于 SEI 的 ATAM (Architecture Tradeoff Analysis Method) 与 加权决策矩阵。在 /genesis 中与 Step 3 绑定;ADR 的正式写入与编号治理以 Step 5 与 genesis.md 为准。
> !IMPORTANT] > > - /genesis Step 3:只输出评估结果与 Markdown 对比素材,不得在本步创建或修改 .anws/v{N}/03_ADR/ 下任何 ADR 文件。原因见 genesis.md Step 3 / Step 5:ADR 为正式决策记录,须在 Step 5 完整审视后落盘。 > - Step 5 落盘目标(供下游引用,非 Step 3 执行项):将 Step 3 对比表升格为 .anws/v{N}/03_ADR/ADR_001_TECH_STACK.md(及姊妹 ADR),章节结构以 references/ADR_TEMPLATE.md 为唯一权威。 > - 若宿主会话声明 非 /genesis 或显式授权「本步即写 ADR」,以当场工作流为准;默认仍按 Step 3 不写 ADR。
> !NOTE] > ADR 时序:Step 3 只产出评估与对比素材,不写 03_ADR/;Step 4 产出系统边界与 02_*;Step 5 再升格 ADR,使影响范围与真实系统 ID 对齐。阶段表与四点论证见 genesis.md Step 3 的 NOTE。若会话非 /genesis 或用户授权本步写 ADR,以当场工作流为准。
> !IMPORTANT] > > - 可核对:约束块须覆盖功能需求、非功能需求、团队、预算、特殊约束;缺的项写「未提供—评估基于假设 H-…」,不得静默省略。 > - 可计算:每个候选栈须有 12 维得分表(1–5)或逐维「不适用 + 原因」;禁止只给总分不给细表。 > - 可推演:ATAM 段落须含至少一个质量属性场景、若干权衡点、若干风险点;不得用形容词堆叠代替场景。 > - 可升格:最终对比表须能无损映射到 references/ADR_TEMPLATE.md 的章节与必填节,供 Step 5 粘贴与润色。 > - 验证策略显式:须回答或标注待决:单测 / 集成 / E2E 侧重、冒烟 / 回归门禁、质量门禁落在 PR / INT / 预发 / 发布的哪一层(与 genesis.md Step 3 要求一致)。 > - 单一真源:数值与结论以 Step 3 产出表为准;Step 5 仅做编辑与状态流转,不得在无新证据时反向改分。
> !IMPORTANT] > 在开始评估前必须调用 sequential-thinking skill,按复杂度组织 3—7 个 thought,例如: > > 1. 用户核心场景与必须支持的用例边界是什么? > 2. 团队熟悉度与可接受的学习成本? > 3. 预算与云 / 许可证 TCO 敏感度? > 4. 预期规模与并发 / 数据量级? > 5. 合规(GDPR、等保等)是否一票否决某些栈?
在不写 ADR 文件前提下,产出:
必须从用户或已加载工件取得(不足的按 spec 契约标注假设):
01_PRD.md)。/explore 研究结论中的证据与备选方案。固化输入边界,列出缺口与假设编号。
避免无约束的偏好打分和不复现的结论。
输出中可出现「假设 H-xx」对照表;无静默缺项。
主流技术栈参考(可按项目替换或增删):
| 场景 | 推荐栈 | 备选 | | ---------- | --------------------------- | --------------------------- | | Web 全栈 | Next.js + TypeScript | Nuxt, SvelteKit | | 后端 API | Go / Rust / Node.js | Python FastAPI, Java Spring | | 桌面应用 | Tauri (Rust + Web) | Electron, Flutter Desktop | | 移动应用 | React Native / Flutter | Swift/Kotlin 原生 | | AI/ML | Python + PyTorch/TensorFlow | Rust (Candle), Julia | | 数据密集 | PostgreSQL + TimescaleDB | ClickHouse, DuckDB |
列出 2 个及以上具名候选(语言 / 框架 / 关键中间件级),附一句选型范围说明。
单候选无权衡,无法完成 ATAM。
每个候选可被独立打分;无匿名「方案 A/B」。
对每个候选按 1–5 分打分:
| 维度 | 权重建议 | 评估问题 | | ------------- | ---- | --------------- | | 需求匹配 | — | 能否实现所有核心功能? | | 扩展性 | — | 能否支撑 10x 增长? | | 性能 | — | 能否满足响应时间 / 吞吐量? | | 安全性 | — | 内置安全与合规支持? | | 团队技能 | — | 熟悉度与学习曲线? | | 人才市场 | — | 招聘与外包可得性? | | 开发速度 | — | 迭代与交付速度? | | TCO (总成本) | — | 开发 + 运维 + 许可证? | | 社区生态 | — | 库、工具与排障资源? | | 长期维护 | — | 技术寿命与 LTS? | | 集成能力 | — | 与存量与第三方集成? | | AI 就绪 | — | 接入 AI / LLM 的便利度? |
填满矩阵;声明权重(均匀或加权)并计算可比总分或档级。
多维透明,便于 Step 5 写入 ADR 证据节。
表在 Markdown 中可复算;不适用维度有单行解释。
把「为什么不是第二名」说清楚。
ADR 核心价值在取舍与后果,不单是赢家声明。
至少 1 个场景 + 若干权衡 / 风险,可与候选表交叉引用。
在 /genesis Step 3 下,你不得新建或修改 03_ADR/*.md。产出完整 Markdown 对比结论与升格素材,使 Step 5 能对照 references/ADR_TEMPLATE.md 无损升格;段落与章节可标 Proposed / 待定。
若工作流显式要求本步预创建占位文件(极少见),仅允许空文件或 MANIFEST 约定路径,不得将占位等同于已接受 ADR。
禁止:在本 SKILL 内再嵌一套与 references/ADR_TEMPLATE.md 重复的完整 ADR 范文;章节疑问一律以该文件为准。
生成完整对比与符合 references/ADR_TEMPLATE.md 场域的草稿(内存或会话消息中的 Markdown)。
与 genesis 决策关口对齐,避免未成文的早期 ADR。
父代理能在 Step 5 打开 references/ADR_TEMPLATE.md 并对齐各节而无信息断档。
与本 SKILL 同级的 references/ADR_TEMPLATE.md 供 ADR 骨架引用。读取时 仅以本 SKILL 旁 references/ 为准。
| 文件 | 用途 | |------|------| | references/ADR_TEMPLATE.md | ADR 体格与必填节 |
sequential-thinking 必须在主会话或由明确指定的合并代理执行一轮完整 thought 链后再定稿;子代理不可替代该义务除非工作流写明。并行搜集与串行裁决分离,降低遗漏维度的概率。
合并稿仍满足 spec 契约;无互相矛盾的分数或重复候选名;/genesis Step 3 仍无 03_ADR 写操作。
references/ADR_TEMPLATE.md。/genesis Step 3:确认未创建 / 修改 03_ADR/*.md。<completion_criteria>
sequential-thinking 已完成 3—7 thought,且可在输出中见其结论被评估吸收。/genesis Step 3 默认路径下,未对 .anws/v{N}/03_ADR/ 进行 ADR 落盘。.agents/skills/。</completion_criteria>
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 30,976 | 34,802 | +12% | 1 | 1 | 0% | 6,246 | 8,081 | +29% | 0 | 0 | — |
case-02 | fail→pass | 36,398 | 52,814 | +45% | 1 | 1 | 0% | 6,244 | 7,960 | +27% | 0 | 0 | — |
case-03 | fail→pass | 27,426 | 31,835 | +16% | 1 | 1 | 0% | 4,524 | 8,530 | +89% | 0 | 0 | — |
case-04 | fail→pass | 16,307 | 27,057 | +66% | 1 | 1 | 0% | 2,710 | 8,182 | +202% | 0 | 0 | — |
case-05 | fail→pass | 14,198 | 25,478 | +79% | 1 | 1 | 0% | 2,346 | 7,525 | +221% | 0 | 0 | — |
case-06 | fail→pass | 14,352 | 28,649 | +100% | 1 | 1 | 0% | 2,753 | 8,599 | +212% | 0 | 0 | — |
case-07 | fail→pass | 24,344 | 28,323 | +16% | 1 | 1 | 0% | 3,885 | 8,487 | +118% | 0 | 0 | — |
case-08 | pass→pass | 25,429 | 35,738 | +41% | 1 | 1 | 0% | 4,031 | 9,232 | +129% | 0 | 0 | — |
case-09 | fail→pass | 23,978 | 30,144 | +26% | 1 | 1 | 0% | 3,802 | 8,197 | +116% | 0 | 0 | — |
case-10 | pass→pass | 17,083 | 24,617 | +44% | 1 | 1 | 0% | 2,894 | 8,153 | +182% | 0 | 0 | — |
case-11 | pass→pass | 17,460 | 25,688 | +47% | 1 | 1 | 0% | 2,818 | 7,494 | +166% | 0 | 0 | — |
case-12 | fail→pass | 15,542 | 32,184 | +107% | 1 | 1 | 0% | 2,479 | 8,411 | +239% | 0 | 0 | — |
case-13 | fail→pass | 7,204 | 24,190 | +236% | 1 | 1 | 0% | 1,186 | 7,202 | +507% | 0 | 0 | — |
case-14 | fail→pass | 17,463 | 26,458 | +52% | 1 | 1 | 0% | 2,841 | 7,655 | +169% | 0 | 0 | — |
case-15 | fail→pass | 16,915 | 28,200 | +67% | 1 | 1 | 0% | 3,208 | 8,023 | +150% | 0 | 0 | — |
case-16 | fail→pass | 21,750 | 29,750 | +37% | 1 | 1 | 0% | 3,907 | 8,092 | +107% | 0 | 0 | — |
case-17 | pass→pass | 14,276 | 20,266 | +42% | 1 | 1 | 0% | 2,626 | 6,859 | +161% | 0 | 0 | — |
case-18 | fail→fail | 17,572 | 26,496 | +51% | 1 | 1 | 0% | 2,983 | 7,824 | +162% | 0 | 0 | — |
case-19 | fail→pass | 17,136 | 30,765 | +80% | 1 | 1 | 0% | 2,961 | 8,320 | +181% | 0 | 0 | — |
case-20 | fail→fail | 24,187 | 10,344 | -57% | 1 | 1 | 0% | 4,380 | 3,769 | -14% | 0 | 0 | — |
case-21 | fail→fail | 33,810 | 9,043 | -73% | 1 | 1 | 0% | 6,174 | 3,511 | -43% | 0 | 0 | — |
case-22 | fail→fail | 27,312 | 23,328 | -15% | 1 | 1 | 0% | 6,175 | 7,290 | +18% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +64 percentage points is the difference between those two pass rates over the 20 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.