--- name: the-maintainers-no description: "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 can't merge, the company that wants free support, the fork suggestion said kindly. Use when a maintainer says 'how do I reject this PR nicely', 'a company is demanding support', 'this feature request won't die', or is avoiding an issue thread out of guilt. Produces the specific no for the situation, with reasoning shown and the relationship kept." homepage: https://mohitagw15856.github.io/pm-claude-skills/skill/the-maintainers-no.html metadata: { "openclaw": { "emoji": "๐Ÿง " } } --- # 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 1. **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"). 2. **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. 3. **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. 4. **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. 5. **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. 6. **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.