重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
npx skills add https://github.com/open-horizon-labs/skills --skill dissent结构化异议,强化决策。核心理念:在单向门关闭前发现缺陷。
异议不是攻击。它是一种积极寻找你可能出错原因的做法。魔鬼代言人是一个角色,而非个性。
在以下情况调用 /dissent:
不要在以下情况使用: 收集初始选项、头脑风暴或探索时。异议用于压力测试决策,而非生成决策。
在攻击之前,充分阐述你正在挑战的立场:
"当前方法是 [方法]。推理是 [推理]。预期结果是 [结果]。这是该立场的最强版本。"
如果你不能善意地陈述该立场,说明你还没有充分理解它,不足以挑战它。
积极寻找与当前方法相矛盾的信息:
"如果这个方法错了,我们会预期看到什么?我们是否看到了任何迹象?"
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
想象现在是六个月后,这个决策失败了。反向推理:
"失败是因为 [原因]。我们忽略的警告信号是 [信号]。被打破的假设是 [假设]。"
生成至少三个合理的失败场景:
每个决策都基于假设。大多数没有明说。找到它们:
对于每个假设:
Assumption: [我们视为理所当然的事情]
Evidence: [支持这个假设的证据]
Risk if wrong: [如果这个假设不成立会发生什么]
Test: [我们如何在承诺前验证这个假设]
基于异议分析,推荐以下之一:
始终包含推理:
"继续:最强的反驳论点是 [X],但可以通过 [Y] 解决。关键假设是 [Z],我们已经通过 [如何] 验证了它。"
如果决策是 单向门(难以逆转)并且你推荐继续或调整,则提议创建架构决策记录。未来的团队成员会问"我们为什么这样做?"
在以下情况提议创建 ADR:
异议报告直接映射到 ADR 格式:
| 异议部分 | ADR 部分 |
|---|---|
| 审查中的决策 | 标题 |
| 钢铁人立场 | 上下文 |
| 相反证据 + 事前剖析 | 考虑的选项 |
| 隐藏假设 | 后果 |
| 决策 + 推理 | 决策 |
如果用户接受,写入: docs/adr/NNNN-<decision-slug>.md(或项目的 ADR 位置)
# ADR NNNN: [决策标题]
## Status
Accepted
## Context
[来自钢铁人立场 - 为什么需要做出这个决策]
## Decision
[来自决策部分 - 我们决定了什么以及为什么]
## Options Considered
[来自相反证据 - 评估了哪些替代方案]
## Consequences
[来自隐藏假设 - 通过做出这个决策我们接受了什么]
## Notes
Generated from /dissent on [date]
始终按此结构生成异议报告:
## Dissent Report
**Decision under review:** [被挑战的内容]
**Stakes:** [为什么这很重要]
**Confidence before dissent:** [HIGH/MEDIUM/LOW]
### Steel-Man Position
[当前方法的最强版本]
### Contrary Evidence
1. [证据点 1]
2. [证据点 2]
3. [证据点 3]
### Pre-Mortem Scenarios
1. **[失败模式]:** [这可能如何失败]
2. **[失败模式]:** [这可能如何失败]
3. **[失败模式]:** [这可能如何失败]
### Hidden Assumptions
| Assumption | Evidence | Risk if Wrong | Test |
|------------|----------|---------------|------|
| [Assumption 1] | [Evidence] | [Risk] | [Test] |
| [Assumption 2] | [Evidence] | [Risk] | [Test] |
### Decision
**Recommendation:** [PROCEED / ADJUST / RECONSIDER]
**Reasoning:** [为什么是这个推荐]
**If ADJUST:** [具体修改]
**Confidence after dissent:** [HIGH/MEDIUM/LOW]
**Create ADR?** [Yes - offer to write docs/adr/NNNN-slug.md / No - not a one-way door]
/dissent
We're about to adopt a microservices architecture for the new
payments system. The team agrees this is the right approach.
输出:
## Dissent Report
**Decision under review:** Microservices architecture for payments
**Stakes:** 6+ month commitment, affects entire system
**Confidence before dissent:** HIGH (team unanimous)
### Steel-Man Position
Microservices will allow independent scaling of payment processing,
enable different teams to deploy independently, and provide fault
isolation so one service failure doesn't bring down payments.
### Contrary Evidence
1. We have 4 engineers. Netflix had 100+ when they went microservices.
2. Our deployment pipeline takes 45 minutes. We'll multiply that by N services.
3. The "independent teams" benefit requires teams we don't have.
### Pre-Mortem Scenarios
1. **Distributed systems complexity:** We spend 60% of time debugging
cross-service issues instead of building features.
2. **Operational overhead:** We can't hire SREs fast enough. System
is down because nobody understands the full architecture.
3. **Premature optimization:** The "scaling" benefit never materializes
because we never got enough users to need it.
### Hidden Assumptions
| Assumption | Evidence | Risk if Wrong | Test |
|------------|----------|---------------|------|
| We'll need to scale components independently | None - projected | Waste of complexity | Check actual load patterns |
| Team will grow to support this | Hiring plan exists | Stuck with complexity, no staff | Validate funding/timeline |
| Network latency acceptable | Not measured | Payment failures | Prototype and benchmark |
### Decision
**Recommendation:** RECONSIDER
**Reasoning:** The benefits of microservices assume scale and team
size we don't have. The strongest argument for microservices (independent
scaling) has no evidence supporting the need. A modular monolith gives
us the code organization benefits without the operational complexity.
**Confidence after dissent:** HIGH (clear mismatch)
**Create ADR?** No - we're reconsidering, not committing
/dissent
We're about to ship a recommendation system that suggests similar
items based on purchase history. Built over 3 sprints.
输出:
## Dissent Report
**Decision under review:** Ship purchase-history recommendation system
**Stakes:** 3 sprints invested, prominent homepage placement
**Confidence before dissent:** MEDIUM
### Steel-Man Position
Users who bought X often want Y. Amazon proved this works. We have
the purchase data. The model is trained and performs well in testing.
### Contrary Evidence
1. Our testing used historical data. Users might behave differently
when seeing recommendations in real-time.
2. We have 10K users. Amazon's model works with billions of data points.
3. Competitor tried this, removed it after 6 months (no lift).
### Pre-Mortem Scenarios
1. **Cold start problem:** New users see garbage recommendations,
leave before making a purchase we could learn from.
2. **Filter bubble:** System recommends what users already buy,
doesn't drive discovery of new product categories.
3. **Wrong metric:** Recommendations get clicks but not purchases.
We optimized for engagement, needed revenue.
### Hidden Assumptions
| Assumption | Evidence | Risk if Wrong | Test |
|------------|----------|---------------|------|
| Purchase history predicts intent | Industry standard | Wasted real estate | A/B test against simple "popular items" |
| 10K users is enough data | None | Poor recommendations | Check minimum viable data in literature |
| Homepage placement is right | None | Users ignore it | Heatmap existing traffic patterns |
### Decision
**Recommendation:** ADJUST
**Reasoning:** The approach is sound but we're shipping without
validation. Risk is manageable with modifications.
**Modifications:**
1. Ship with A/B test against "popular items" baseline
2. Add fallback to curated picks for users with <5 purchases
3. Define success metric (revenue lift, not clicks) before launch
**Confidence after dissent:** MEDIUM (reduced risk with A/B)
**Create ADR?** Yes - shall I write `docs/adr/0012-recommendation-system-rollout.md`? Documents why we chose A/B testing and what success metrics we committed to.
此技能可以将上下文持久化到 .oh/<session>.md,供后续技能使用。
如果提供了会话名称 (/dissent auth-decision):
.oh/auth-decision.md如果未提供会话名称 (/dissent):
"保存到会话?[建议名称] [自定义] [跳过]"
读取: 检查现有的会话文件。读取 目标、问题陈述、解决方案空间 以理解正在被挑战的决策。
写入: 生成异议报告后:
## Dissent
**Updated:** <timestamp>
**Decision:** [PROCEED | ADJUST | RECONSIDER]
[dissent report content]
随处可用。生成异议报告供人工审查。无持久化。
.oh/<session>.md 读取决策上下文oh_search_context("risks and constraints for [area]", artifact_types: ["guardrail", "metis"]) 来为异议提供依据outcome_progress 来评估方法是否服务于目标oh_record_metis 将异议发现作为持久性学习记录下来结合使用: /solution-space(挑战推荐方案)、/problem-statement(挑战问题框架)、/execute(在单向门之前)。导向: 继续(带着信心继续)、调整(修改方法)或重新考虑(回到解决方案空间)。这不是一个阶段: 异议是你在风险高时调用的覆盖层。
异议之后,通常:
/execute 或 /ship,信心增强/review 修改内容/solution-space记住: 异议不是怀疑。它是在寻求舒适之前寻求真理的纪律。目标不是阻止决策,而是做出更好的决策。
每周安装
72
仓库
GitHub 星标
1
首次出现
Jan 27, 2026
安全审计
安装于
claude-code55
opencode40
gemini-cli29
codex29
cursor23
github-copilot22
Structured disagreement that strengthens decisions. The insight: find flaws before the one-way door closes.
Dissent is not attack. It's the practice of actively seeking reasons you might be wrong. The devil's advocate is a role, not a personality.
Invoke /dissent when:
Do not use when: Gathering initial options, brainstorming, or exploring. Dissent is for stress-testing decisions, not generating them.
Before attacking, fully articulate the position you're challenging:
"The current approach is [approach]. The reasoning is [reasoning]. The expected outcome is [outcome]. This is the strongest version of this position."
If you can't state the position charitably, you don't understand it well enough to challenge it.
Actively search for information that contradicts the current approach:
"If this approach were wrong, what would we expect to see? Are we seeing any of that?"
Imagine it's six months from now and this decision failed. Work backward:
"This failed because [reason]. The warning signs we ignored were [signs]. The assumption that broke was [assumption]."
Generate at least three plausible failure scenarios:
Every decision rests on assumptions. Most aren't stated. Find them:
For each assumption:
Assumption: [what we're taking for granted]
Evidence: [what supports this assumption]
Risk if wrong: [what happens if this assumption breaks]
Test: [how we could validate this before committing]
Based on the dissent analysis, recommend one of:
Always include the reasoning:
"PROCEED: The strongest counter-argument is [X], but it's addressed by [Y]. The key assumption is [Z], which we've validated by [how]."
If the decision is a one-way door (hard to reverse) and you recommend PROCEED or ADJUST, offer to create an Architecture Decision Record (ADR). Future team members will ask "why did we do it this way?"
Offer to create an ADR when:
The dissent report maps directly to ADR format:
| Dissent Section | ADR Section |
|---|---|
| Decision under review | Title |
| Steel-Man Position | Context |
| Contrary Evidence + Pre-Mortem | Options Considered |
| Hidden Assumptions | Consequences |
| Decision + Reasoning | Decision |
If user accepts, write to: docs/adr/NNNN-<decision-slug>.md (or project's ADR location)
# ADR NNNN: [Decision Title]
## Status
Accepted
## Context
[From Steel-Man Position - why this decision needed to be made]
## Decision
[From Decision section - what we decided and why]
## Options Considered
[From Contrary Evidence - what alternatives were evaluated]
## Consequences
[From Hidden Assumptions - what we're accepting by making this decision]
## Notes
Generated from /dissent on [date]
Always produce a dissent report in this structure:
## Dissent Report
**Decision under review:** [what's being challenged]
**Stakes:** [why this matters]
**Confidence before dissent:** [HIGH/MEDIUM/LOW]
### Steel-Man Position
[The strongest version of the current approach]
### Contrary Evidence
1. [Evidence point 1]
2. [Evidence point 2]
3. [Evidence point 3]
### Pre-Mortem Scenarios
1. **[Failure mode]:** [How this could fail]
2. **[Failure mode]:** [How this could fail]
3. **[Failure mode]:** [How this could fail]
### Hidden Assumptions
| Assumption | Evidence | Risk if Wrong | Test |
|------------|----------|---------------|------|
| [Assumption 1] | [Evidence] | [Risk] | [Test] |
| [Assumption 2] | [Evidence] | [Risk] | [Test] |
### Decision
**Recommendation:** [PROCEED / ADJUST / RECONSIDER]
**Reasoning:** [Why this recommendation]
**If ADJUST:** [Specific modifications]
**Confidence after dissent:** [HIGH/MEDIUM/LOW]
**Create ADR?** [Yes - offer to write docs/adr/NNNN-slug.md / No - not a one-way door]
/dissent
We're about to adopt a microservices architecture for the new
payments system. The team agrees this is the right approach.
Output:
## Dissent Report
**Decision under review:** Microservices architecture for payments
**Stakes:** 6+ month commitment, affects entire system
**Confidence before dissent:** HIGH (team unanimous)
### Steel-Man Position
Microservices will allow independent scaling of payment processing,
enable different teams to deploy independently, and provide fault
isolation so one service failure doesn't bring down payments.
### Contrary Evidence
1. We have 4 engineers. Netflix had 100+ when they went microservices.
2. Our deployment pipeline takes 45 minutes. We'll multiply that by N services.
3. The "independent teams" benefit requires teams we don't have.
### Pre-Mortem Scenarios
1. **Distributed systems complexity:** We spend 60% of time debugging
cross-service issues instead of building features.
2. **Operational overhead:** We can't hire SREs fast enough. System
is down because nobody understands the full architecture.
3. **Premature optimization:** The "scaling" benefit never materializes
because we never got enough users to need it.
### Hidden Assumptions
| Assumption | Evidence | Risk if Wrong | Test |
|------------|----------|---------------|------|
| We'll need to scale components independently | None - projected | Waste of complexity | Check actual load patterns |
| Team will grow to support this | Hiring plan exists | Stuck with complexity, no staff | Validate funding/timeline |
| Network latency acceptable | Not measured | Payment failures | Prototype and benchmark |
### Decision
**Recommendation:** RECONSIDER
**Reasoning:** The benefits of microservices assume scale and team
size we don't have. The strongest argument for microservices (independent
scaling) has no evidence supporting the need. A modular monolith gives
us the code organization benefits without the operational complexity.
**Confidence after dissent:** HIGH (clear mismatch)
**Create ADR?** No - we're reconsidering, not committing
/dissent
We're about to ship a recommendation system that suggests similar
items based on purchase history. Built over 3 sprints.
Output:
## Dissent Report
**Decision under review:** Ship purchase-history recommendation system
**Stakes:** 3 sprints invested, prominent homepage placement
**Confidence before dissent:** MEDIUM
### Steel-Man Position
Users who bought X often want Y. Amazon proved this works. We have
the purchase data. The model is trained and performs well in testing.
### Contrary Evidence
1. Our testing used historical data. Users might behave differently
when seeing recommendations in real-time.
2. We have 10K users. Amazon's model works with billions of data points.
3. Competitor tried this, removed it after 6 months (no lift).
### Pre-Mortem Scenarios
1. **Cold start problem:** New users see garbage recommendations,
leave before making a purchase we could learn from.
2. **Filter bubble:** System recommends what users already buy,
doesn't drive discovery of new product categories.
3. **Wrong metric:** Recommendations get clicks but not purchases.
We optimized for engagement, needed revenue.
### Hidden Assumptions
| Assumption | Evidence | Risk if Wrong | Test |
|------------|----------|---------------|------|
| Purchase history predicts intent | Industry standard | Wasted real estate | A/B test against simple "popular items" |
| 10K users is enough data | None | Poor recommendations | Check minimum viable data in literature |
| Homepage placement is right | None | Users ignore it | Heatmap existing traffic patterns |
### Decision
**Recommendation:** ADJUST
**Reasoning:** The approach is sound but we're shipping without
validation. Risk is manageable with modifications.
**Modifications:**
1. Ship with A/B test against "popular items" baseline
2. Add fallback to curated picks for users with <5 purchases
3. Define success metric (revenue lift, not clicks) before launch
**Confidence after dissent:** MEDIUM (reduced risk with A/B)
**Create ADR?** Yes - shall I write `docs/adr/0012-recommendation-system-rollout.md`? Documents why we chose A/B testing and what success metrics we committed to.
This skill can persist context to .oh/<session>.md for use by subsequent skills.
If session name provided (/dissent auth-decision):
.oh/auth-decision.md directlyIf no session name provided (/dissent):
"Save to session? [suggested-name] [custom] [skip]"
Reading: Check for existing session file. Read Aim , Problem Statement , Solution Space to understand the decision being challenged.
Writing: After producing the dissent report:
## Dissent
**Updated:** <timestamp>
**Decision:** [PROCEED | ADJUST | RECONSIDER]
[dissent report content]
Works anywhere. Produces dissent report for manual review. No persistence.
.oh/<session>.md for context on the decisionoh_search_context("risks and constraints for [area]", artifact_types: ["guardrail", "metis"]) to ground dissentoutcome_progress to assess whether the approach serves the outcomeoh_record_metis to capture dissent findings as durable learningCombines with: /solution-space (challenge the recommendation), /problem-statement (challenge the framing), /execute (before one-way doors). Leads to: PROCEED (continue with confidence), ADJUST (modify approach), or RECONSIDER (back to solution-space). This is not a phase: Dissent is an overlay you invoke when stakes are high.
After dissent, typically:
/execute or /ship with strengthened confidence/review the modifications/solution-space with new constraintsRemember: Dissent is not doubt. It's the discipline of seeking truth before comfort. The goal isn't to stop decisions—it's to make better ones.
Weekly Installs
72
Repository
GitHub Stars
1
First Seen
Jan 27, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
claude-code55
opencode40
gemini-cli29
codex29
cursor23
github-copilot22
冲刺回顾模板:敏捷团队回顾会议指南与模板(开始-停止-继续/愤怒-悲伤-高兴/4Ls)
10,400 周安装