the-maintainers-no
Say no as an open-source maintainer without burning contributors or yourself — the feature that doesn't fit, the PR that took someone a weekend but …
它会碰到什么
这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。
技能内容
The Maintainer's No Skill
Maintainer burnout is mostly unsent nos: the feature request at 40 comments,
the well-meant PR that would triple the maintenance surface, the company
that filed "urgent" on a volunteer's project. Every avoided no costs a
week of low-grade guilt; the sent no costs five minutes and is almost never
received as badly as feared. This skill writes the specific no each
situation needs — with the reasoning shown, the effort honored, and a real
alternative where one exists — because "no with a why and a path" keeps
contributors that "maybe someday" quietly loses.
What This Skill Produces
- The situation-fit no, drafted ready to post: scope-no, PR-no,
support-no, urgency-no, or the fork blessing
- The reasoning paragraph: the project-vision line that makes this no
consistent instead of personal (and reusable next time)
- An alternative that's real: plugin/extension point, the fork blessing,
a linked workaround, a paid-support pointer if one exists — or nothing,
stated honestly, if nothing exists
- A policy line worth adding to CONTRIBUTING/README so the next no is
half-written
Required Inputs
Ask for (if not already provided):
- The thread/PR/request text, and how long it's been festering
- The real reason it's a no (doesn't fit vision? maintenance cost? just
don't want to? — all valid; the phrasing differs)
- Who's asking: first-timer, regular contributor, company, drive-by
- What the maintainer could genuinely offer, if anything (review a smaller
PR? accept behind a flag? nothing?)
Framework
- Diagnose the no. Scope-no (doesn't fit what this project is) ·
cost-no (fits, but the maintenance is forever and it's mine) · PR-no
(effort real, direction wrong) · support-no (this is unpaid volunteer
time being invoiced) · capacity-no (fits, but not this year — the only
no that may honestly become "someday").
- Honor effort before delivering direction. For PRs especially: name
something genuinely good in it first (one specific thing, not flattery).
The order is: thanks-with-specifics → the no with the why → the path if
real. Skipping straight to the no is efficient and expensive.
- Show the vision line, not the mood. "This project deliberately stays
[small/zero-dep/single-purpose]; features like X belong in
[plugins/forks/other tools]" — a no anchored to a stated principle
generalizes; a no anchored to today's energy invites relitigation.
If the principle isn't written anywhere yet, this is the moment: the
skill drafts the CONTRIBUTING line.
- Bless the fork sincerely. "This is exactly what forks are for — the
license means you don't need my permission, and I mean that as an
invitation, not a brush-off" defuses more standoffs than any other
sentence in open source.
- For companies: name the exchange. Volunteer-maintained ≠ SLA. The
reply states what's available free (the issue queue, at volunteer pace),
what isn't (deadlines, priority), and — if the maintainer wants it —
the paid path ("sponsorship/support contract gets your issue a
scheduled slot"). No apology anywhere in it.
- Close the loop physically. The no ends with the issue's fate:
closed-wontfix, converted to discussion, or left open behind a named
condition. A no that leaves the thread open re-accrues the guilt.
Output Format
## Diagnosis
[Which no this is, and the real reason in one honest line]
## The reply (ready to post)
[Thanks-with-specifics → the no with the vision line → the real path or
honest nothing → the thread's fate]
## Add to CONTRIBUTING (so the next one is half-written)
[The policy line this no just established]
## If they push back
[The one-paragraph second reply — same decision, warmer, final]
Quality Checks
- [ ] The no is unambiguous — a reader cannot mistake it for maybe
- [ ] Effort is honored with a specific, true observation, not a compliment
template
- [ ] The reasoning cites a project principle that will still be true next
month
- [ ] Any offered alternative is real — no "PR welcome" unless a PR would
genuinely merge
- [ ] The thread's fate is stated (closed / converted / condition), and the
pushback reply doesn't reopen the decision
Anti-Patterns
- [ ] Do not soften into ambiguity — "maybe down the road" costs you this
conversation again in six months, with interest
- [ ] Do not apologize for the project's boundaries; gratitude yes,
apology no
- [ ] Do not match a demanding tone — the calm no in a heated thread is
read by every future contributor, not just this one
- [ ] Do not invent roadmap promises to escape the moment
- [ ] Do not skip the fork blessing out of possessiveness — the license
already said yes; saying it warmly is free
Related
[[maintainer-triage]] — the system that catches these before they fester;
[[saying-no-kindly]] — the general craft; [[first-maintainer-month]] for
setting the boundaries early enough that nos stay rare.
想直接用这个技能?
本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。
同名技能的其他版本
有 3 个不同仓库或目录里都有叫 the-maintainers-no 的技能。它们内容并不相同,别混用:
- mohitagw15856/pm-claude-skills — Say no as an open-source maintainer without burning contributors or yourself — the feature
- mohitagw15856/pm-claude-skills — Summarise what The Maintainers No does in one line. Use when asked to [trigger phrases the