Meet
The Meeting Nobody Needed
At some point today, somewhere in the world, forty-seven people are sitting in a conference
room for a one-hour meeting that could have been a two-paragraph email. They know this.
The person who called the meeting knows this. Nobody says it.
At the same time, somewhere else, two people are exchanging their fourteenth email on a
decision that would take four minutes to resolve if they just talked.
Bad meeting culture does not have one failure mode. It has two: too many meetings that
should not exist, and too few of the conversations that should.
This skill fixes both.
Meeting Classification
MEETING_TYPES = {
"decision": {
"purpose": "A specific decision must be made before people leave",
"required": "Decision owner, options pre-circulated, clear criteria",
"failure": "Leaving without a decision documented and assigned"
},
"alignment": {
"purpose": "Everyone needs the same understanding of something",
"required": "What specifically needs to be aligned, why async failed",
"failure": "Sharing information that could have been an email"
},
"creative": {
"purpose": "Generate options, ideas, or approaches that require real-time interaction",
"required": "Diverge before converge — all ideas before evaluation",
"failure": "HiPPO effect — highest paid person's opinion dominates early"
},
"relationship": {
"purpose": "Build trust, connection, and shared context that enables future work",
"required": "Intentional structure — this does not happen by accident",
"failure": "Filling with status updates instead of genuine connection"
},
"should_not_exist": {
"status_update": "Use async tools — weekly written update replaces 30 min standup",
"one_way_info": "Record a video or write it — do not call 20 people to read slides",
"FYI_meeting": "If no one needs to say or do anything, it is not a meeting"
}
}
The Pre-Meeting System
MEETING_PREPARATION = {
"agenda_design": {
"structure": """
AGENDA_TEMPLATE = {
"title": "Meeting name that states the purpose",
"objective": "One sentence: what will be true after this meeting that is not true before",
"pre_read": "Material people must read BEFORE — not during",
"items": [
{
"topic": "Specific discussion point",
"owner": "Person leading this item",
"time": "Minutes allocated",
"type": "inform | discuss | decide",
"output": "What we need from this item"
}
],
"decisions_needed": "Pre-listed so everyone arrives prepared",
"parking_lot": "Where off-topic items go — not ignored, not derailing"
}
""",
"rules": ["Send agenda minimum 24 hours before",
"No pre-read longer than 10 minutes",
"Last item is always next actions — who does what by when"]
},
"attendee_audit": """
def should_attend(person, meeting):
roles = {
"decider": person.must_approve_outcome,
"contributor": person.has_unique_input_others_lack,
"implementer": person.will_execute_the_decision,
"informed": False # Send the notes — do not attend
}
return any([roles["decider"], roles["contributor"], roles["implementer"]])
# Amazon rule: if two pizzas cannot feed everyone, the meeting is too big
# Optimal decision meeting size: 5-8 people
"""
}
Running the Meeting
FACILITATION_FRAMEWORK = {
"opening": {
"first_90_seconds": ["State the objective — not the agenda",
"Confirm decision authority — who can say yes",
"Set the clock — visible timer creates urgency"],
"parking_lot": "Visible place for off-topic items — keeps meeting on track
without making people feel dismissed"
},
"discussion_management": {
"silence_is_data": "Silence after a question means people are thinking — let it breathe",
"dominant_voice": "Thank you for that — let us hear from someone who has not spoken",
"tangent_response": "That is important — let us put it in the parking lot and come back",
"circular_discussion": """
def detect_circular_discussion(transcript):
if same_points_repeated_3_times:
intervene("We are going in circles. Let me name the two positions I am hearing.
[Position A] versus [Position B]. Can we agree on what information
would resolve this?")
"""
},
"decision_making": {
"RAPID_framework": {
"Recommend": "Person who develops the proposal",
"Agree": "Person whose agreement is required",
"Perform": "Person who executes the decision",
"Input": "Person consulted but not blocking",
"Decide": "Single person who makes the final call"
},
"principle": "Every decision needs exactly one Decider. Not consensus. Not majority.
One person who is accountable for the outcome."
},
"closing": {
"last_5_minutes": ["Read back every decision made",
"Confirm every action item: owner + deadline",
"State what will be communicated to people not in the room",
"Rate the meeting 1-5 — one word per person"],
"never_end_without": "Written next actions before people leave the room"
}
}
The After-Meeting System
MEETING_NOTES = {
"what_to_capture": {
"decisions": "Every decision with the reasoning — not just what, but why",
"actions": "Owner, task, deadline — three fields, no exceptions",
"parking_lot": "Every item with assigned follow-up owner",
"not_decisions": "Discussion content is optional — decisions and actions are mandatory"
},
"distribution": {
"timing": "Within 2 hours — memory degrades fast",
"audience": "Everyone who attended + everyone who needs to know the outcome",
"format": "Decisions first, then actions, then discussion summary if needed"
},
"accountability": """
def track_actions(action_items):
for action in action_items:
if approaching_deadline(action) and not complete(action):
send_reminder(action.owner, days_before=2)
if past_deadline(action) and not complete(action):
escalate_to_meeting_organizer(action)
"""
}
Fixing Meeting Culture
CULTURE_FIX = {
"audit_first": """
def meeting_audit(calendar):
for meeting in calendar.recurring:
evaluate({
"last_cancellation_missed": was it missed when cancelled,
"output_per_session": what is produced each time,
"could_be_async": would Loom or doc work instead,
"attendee_engagement": do people actually contribute
})
kill_or_redesign(meetings_failing_audit)
""",
"principles": ["Default to async — meetings are the expensive option",
"Protect deep work blocks — no meeting before 10am or after 3pm (example)",
"Meeting-free day per week — Wednesday is common",
"No meeting without agenda — if you cannot write the objective, cancel it",
"Standing meetings get audited quarterly — most should die eventually"]
}
Quality Check Before Delivering
- - [ ] Meeting type identified — decision, alignment, creative, or relationship
- [ ] Agenda has a single stated objective not just a list of topics
- [ ] Attendee list audited — no passengers
- [ ] Decision authority identified if decision meeting
- [ ] Action item format includes owner and deadline
- [ ] Meeting notes distributed within 2 hours
- [ ] Recurring meetings flagged for audit if culture question raised
会议
没人需要的会议
今天某个时刻,世界某个地方,有四十七个人正坐在会议室里参加一个本可以用两段邮件说清楚的一小时会议。他们知道这一点。召集会议的人也知道这一点。但没人说出来。
与此同时,在另一个地方,两个人正在就某个决定来回发送第十四封邮件,而如果他们直接交谈,这个问题四分钟就能解决。
糟糕的会议文化并非只有一种失败模式。它有两种:太多本不该存在的会议,以及太少本该发生的对话。
这项技能同时解决这两个问题。
会议分类
MEETING_TYPES = {
决策型: {
目的: 必须在人们离开前做出具体决定,
必要条件: 决策负责人、预先分发的选项、明确的标准,
失败标志: 离开时没有记录并分配决策
},
对齐型: {
目的: 每个人都需要对某事有相同的理解,
必要条件: 具体需要对齐什么、为什么异步方式失败,
失败标志: 分享本可以用邮件传达的信息
},
创意型: {
目的: 生成需要实时互动的选项、想法或方法,
必要条件: 先发散后收敛——先收集所有想法再评估,
失败标志: HiPPO效应——最高薪者的意见过早主导
},
关系型: {
目的: 建立信任、联系和共享背景,为未来工作创造条件,
必要条件: 有意的结构设计——这不会偶然发生,
失败标志: 用状态更新填充而非真正的联系
},
不应存在型: {
状态更新: 使用异步工具——每周书面更新替代30分钟站会,
单向信息: 录制视频或写下来——不要召集20个人来读幻灯片,
仅供参考会议: 如果没人需要说或做任何事,那就不是会议
}
}
会前系统
MEETING_PREPARATION = {
议程设计: {
结构:
AGENDA_TEMPLATE = {
标题: 说明目的的会议名称,
目标: 一句话:会议结束后将实现什么之前不存在的状态,
预读材料: 人们必须在会议前阅读的材料——而非会议期间,
议程项: [
{
主题: 具体讨论点,
负责人: 主导此项的人,
时间: 分配的分钟数,
类型: 告知 | 讨论 | 决策,
产出: 此项需要达成的结果
}
],
待决策事项: 提前列出,以便所有人做好准备,
待办事项暂存区: 存放偏离主题的事项——既不忽略也不偏离主线
}
,
规则: [至少提前24小时发送议程,
预读材料不超过10分钟,
最后一项永远是下一步行动——谁在什么时间之前做什么]
},
参会者审核:
def should_attend(person, meeting):
roles = {
决策者: person.mustapproveoutcome,
贡献者: person.hasuniqueinputotherslack,
执行者: person.willexecutethe_decision,
被告知者: False # 发送会议记录——不要参加
}
return any([roles[决策者], roles[贡献者], roles[执行者]])
# 亚马逊规则:如果两个披萨不够所有人吃,会议就太大了
# 最佳决策会议规模:5-8人
}
主持会议
FACILITATION_FRAMEWORK = {
开场: {
前90秒: [陈述目标——而非议程,
确认决策权限——谁能说是,
设定计时器——可见的计时器创造紧迫感],
待办事项暂存区: 存放偏离主题事项的可见位置——保持会议轨道
同时不让人们感到被忽视
},
讨论管理: {
沉默即数据: 提问后的沉默意味着人们在思考——给它呼吸的空间,
主导声音: 谢谢你的发言——让我们听听还没发言的人的想法,
跑题回应: 这很重要——让我们先把它放在暂存区稍后讨论,
循环讨论:
def detectcirculardiscussion(transcript):
if samepointsrepeated3times:
intervene(我们在兜圈子。让我说出我听到的两种立场。
[立场A] 对比 [立场B]。我们能否就解决这个问题所需的信息达成一致?)
},
决策制定: {
RAPID框架: {
推荐: 制定提案的人,
同意: 需要其同意的人,
执行: 执行决策的人,
输入: 被咨询但不否决的人,
决定: 做出最终决定的单一个人
},
原则: 每个决策需要且仅需要一个决策者。不是共识。不是多数决。
一个对结果负责的人。
},
收尾: {
最后5分钟: [复述每项做出的决定,
确认每项行动事项:负责人 + 截止日期,
说明将向未参会者传达什么,
给会议打分1-5——每人一个词],
绝不空手结束: 在人们离开房间前写下下一步行动
}
}
会后系统
MEETING_NOTES = {
记录内容: {
决策: 每项决策及其理由——不仅是什么,还有为什么,
行动: 负责人、任务、截止日期——三个字段,无一例外,
待办事项暂存区: 每项内容分配后续跟进负责人,
非决策: 讨论内容可选——决策和行动是必须的
},
分发: {
时间: 2小时内——记忆衰退很快,
受众: 所有参会者 + 所有需要知道结果的人,
格式: 先决策,再行动,最后是讨论摘要(如需要)
},
问责:
def trackactions(actionitems):
for action in action_items:
if approaching_deadline(action) and not complete(action):
sendreminder(action.owner, daysbefore=2)
if past_deadline(action) and not complete(action):
escalatetomeeting_organizer(action)
}
修复会议文化
CULTURE_FIX = {
先审计:
def meeting_audit(calendar):
for meeting in calendar.recurring:
evaluate({
取消后是否被错过: was it missed when cancelled,
每次会议的产出: what is produced each time,
能否异步进行: would Loom or doc work instead,
参会者参与度: do people actually contribute
})
killorredesign(meetingsfailingaudit)
,
原则: [默认异步——会议是昂贵的选择,
保护深度工作时段——上午10点前或下午3点后不安排会议(示例),
每周一天无会议日——周三常见,
无议程不开会——如果你写不出目标,就取消它,
定期会议每季度审计——大多数最终应该被取消]
}
交付前质量检查
- - [ ] 会议类型已识别——决策型、对齐型、创意型或关系型
- [ ] 议程有单一明确目标,而不仅仅是一系列主题
- [ ] 参会者名单已审核——没有旁观者
- [ ] 如为决策会议,决策权限已明确
- [ ] 行动事项格式包含负责人和截止日期
- [ ] 会议记录在2小时内分发
- [ ] 如提出文化问题,定期会议已标记待审计