算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
team-communications【设计与创意】Design a delivery team's communication system — channel routing, meeting-load reduction, status structure, escalation SLAs, timezone norms. Use when the calendar is full, updates go unread, or blockers surface late.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
The operating system a delivery team runs its information on: which channel a given message belongs in, how much the recurring calendar actually costs, how a status update survives a 20-second executive skim, and what happens when someone is blocked. Most teams never design this — it accretes, one well-intentioned meeting at a time, until 30% of the week is gone and blockers still surface three days late.
Before generating, confirm these inputs. If any is unknown or vague, ASK — do not assume:
Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
assets/sample_calendar.json): people with hourly cost and timezone,
meetings with duration, cadence, attendees, day, start time.KILL outright, convert every ASYNC to a written update with
a comment window, then merge the 60%+ audience overlaps.python3 project-management/team-communications/scripts/meeting_load_auditor.py \
--input project-management/team-communications/assets/sample_calendar.json \
--maker-hours-target 24 --format text
assets/sample_messages.json shape.one_way /
two_way), stakeholder count, shared context (low / medium / high),
and hours until it is needed.python3 project-management/team-communications/scripts/channel_router.py \
--input project-management/team-communications/assets/sample_messages.json \
--core-overlap-hours 3 --format text
assets/status_update_template.md.python3 project-management/team-communications/scripts/status_update_scorer.py \
--input project-management/team-communications/assets/sample_status_update.json \
--format text
| Rank | Condition | Channel |
|---|---|---|
| 1 | Emotional load: performance, pay, conflict, standing | Live 1:1 |
| 2 | Irreversible (one-way door) + a decision needed | Written decision record with a named approver |
| 3 | 8+ people and no decision to make | Broadcast |
| 4 | Low shared context + a decision needed | Live meeting with agenda and pre-read |
| 5 | Decision needed within 8 hours | Live meeting — faster than one async round trip |
| 6 | Everything else | Async thread |
Seniority of the requester never appears in this table. A VP wanting a meeting is not a reason; a VP lacking context is (rank 4).
| Verdict | Trigger | Action |
|---|---|---|
| KEEP | Produces decisions, has agenda and notes | Leave it alone |
| TRIM | Produces decisions but leaks structure | Fix the agenda or notes, or cut duration 25% |
| ASYNC | Under 1 decision/month, or 8+ people in a "working session" | Written update + comment window |
| KILL | Under 1 decision/month and no agenda | Cancel; announce the replacement channel |
Decisions per month is the best available proxy for value: countable, hard to game without actually deciding things, and it correctly kills status meetings, which produce zero decisions by design.
| Metric | Healthy | Danger |
|---|---|---|
| IC meeting hours per week | under 6h (15%) | over 10h (25%) |
| Uninterrupted maker hours per week | 24h+ | under 20h |
| Sync share of routed traffic | under 34% | over 50% |
| Status update length | under 400 words | over 600 words |
| Average sentence length | 18-22 words | over 28 words |
| Quantified claims per update | 3+ | 0 |
Acknowledgement is not resolution — "seen it, answer Thursday" fully satisfies an acknowledge SLA and stops the requester re-pinging. Escalation is a process failure signal, not an interpersonal act; say so in the charter, or the team develops silent blockers, which cost far more than the discomfort they avoid.
The full SLA ladder by urgency band and the three-strike escalation rule are in
references/channel-selection-and-meeting-load.md; the charter template ships
them ready to fill in.
Mistake: Reporting green week after week, then going red two weeks before the deadline. Why it happens: Each individual week genuinely feels recoverable, and a yellow invites questions the author does not yet have answers to. Optimism compounds silently. Instead: Go yellow the week a risk becomes plausible, not the week it becomes certain, and attach an owner and a mitigation date. One defensible red buys more credibility than a quarter of unearned greens — and the scorer's risk element exists precisely to force the disclosure.
Mistake: Cancelling the status meeting and the alignment sync in the same week the audit lands, with nothing replacing them. Why it happens: The audit makes the waste vivid and the cuts feel like the whole intervention. The written replacement is unglamorous and gets deferred. Instead: Install the weekly written status first, run both for one cycle, then cancel. The meetings were carrying real information badly; removing the carrier before building a new one converts a load problem into a late-blocker problem, which is more expensive.
Mistake: A team where going to a manager about a blocker is read as tattling, so people wait and hint instead. Why it happens: Nobody wrote down what escalation is for, so everyone infers it from the one time it went badly. Instead: Write in the charter that escalation is a process failure signal, not an interpersonal act, and specify the three strikes by role. Making the ladder public converts strike 3 into a paperwork step rather than a confrontation, because the record already exists.
Mistake: Declaring the team async-first, then watching decisions take two weeks and quietly reinstating the meetings. Why it happens: Async is treated as a channel choice rather than a skill. High Slack volume is mistaken for async maturity, when it is often level-1 verbal culture conducted in writing. Instead: Standardise the decision record shape — decision, approver, options with costs, consequences, comment deadline — before removing sync time. Escalate to a 20-minute call after two unresolved comment rounds, and post the outcome back into the doc.
Mistake: A meeting created for a launch three years ago that still runs weekly with six attendees. Why it happens: Nobody has standing to cancel someone else's meeting, and the original owner has left, so it has no one to defend or kill it. Instead: Give every recurring meeting an expiry date 3-6 months out at creation, plus a named owner. At expiry it is re-justified or it dies by default. Where one already exists with no owner, trial-cancel it for four weeks and ask what broke — roughly two-thirds never come back.
| File | Purpose |
|---|---|
scripts/meeting_load_auditor.py | Person-hours, annual cost, KEEP/TRIM/ASYNC/KILL verdicts, double bookings, consolidation proposal |
scripts/channel_router.py | Routes each message to sync / async / written decision / 1:1 / broadcast with reasons and an SLA |
scripts/status_update_scorer.py | Scores a draft 0-100 on completeness, executive readability and skimmability |
references/channel-selection-and-meeting-load.md | Routing model, cost arithmetic, verdict rubric, consolidation, timezone regimes, escalation ladder, status thresholds, instrumentation |
references/operating-rhythm-and-charter.md | Six-ritual minimum rhythm, ritual design rules, async writing standards, channel taxonomy, maturity model, rollout sequence, failure modes |
assets/communication_charter_template.md | One-page charter: core hours, channel and meeting rules, SLAs, escalation, decision protocol, timezone norms |
assets/status_update_template.md | Update skeleton built for a 20-second executive skim |
assets/sample_calendar.json | Runnable 8-person, 8-meeting calendar export |
assets/sample_messages.json | Runnable set of 7 pending communications |
assets/sample_status_update.json | Runnable mid-quality draft (scores 50 — REVISE) |