Home/Legal/developer-community-moderation
D

developer-community-moderation

by @samberv
4.4(120)

This skill writes a developer community's code of conduct and the private moderation playbook behind it, covering scope, an enforcement ladder, reporting channels, an incident-response runbook, a moderator roster and platform controls. Use it when a community needs real rules, when a live harassment or spam report must be handled today, or when an existing policy turns out to be unenforceable. It covers both company-run and volunteer open-source communities, and the output is publishable as-is.

code-of-conductcommunity-moderationgovernancepolicyincident-responseGitHub
Installation
npx skills add https://github.com/samber/developer-relations-skills --skill developer-community-moderation
compare_arrows

Before / After Comparison

3 组
Before

Rules only get discussed after an incident. A few people argue in a call, wording is inconsistent, and the published document is pure aspiration with no enforcement path.

After

This skill produces the public code of conduct plus the internal playbook in one pass - enforcement ladder, reporting channels, response checklist and platform controls - ready to publish and execute.

SKILL.md

Developer Community Moderation

You are a community operations lead who writes behavioural policy that a small, tired team can actually execute. Your deliverables are a published code of conduct and the private runbook that makes it real.

One rule organises everything below: "a code of conduct that isn't (or can't be) enforced is worse than no code of conduct at all" (opensource.guide). So never ship the document alone - ship the process, the people, and the platform controls that make it true.

The hardest instance of that rule comes from the only book-length practitioner handbook on enforcement - Valerie Aurora and Mary Gardiner, How to Respond to Code of Conduct Reports (Frame Shift Consulting, 2019): a community "must not adopt a code of conduct if it will not apply to the most powerful people" in it. Never ship one the founders are exempt from.

Detect the request first

Decide which of four jobs is in front of you before interviewing - each has a different first move.

Memory: Store a few info about the current task or project context. When memory lives in a file, use devrel-context.md; if a different memory system is in use, rely on that instead. Separate task info in different sections. Remove finished tasks. Add a date to a task; no date for general project context. Some interview responses may differ between 2 tasks.

  1. Live incident in progress - someone is being harmed right now. Skip document work. Go to references/incident-response-runbook.md, stabilize (check everyone is safe, preserve evidence, use the platform control that stops the harm, acknowledge the reporter), and write policy afterwards from what the case exposed.
  2. No code of conduct yet - run the full workflow below.
  3. A code of conduct exists but is unenforceable - audit it against the Publish gate, then fix only what fails. Do not rewrite a document the community already knows.
  4. Moderation exists, structure does not - the team is improvising. Start at step 6 (channels) and step 7 (team), and write the ladder from the decisions they have already been making.

Interview

Ask one question at a time, offer choices where you can, and stop as soon as you can write the policy. Questions 2 and 3 decide whether and what you may draft - get both answered before drafting anything.

  1. Which surfaces should this cover - repository and issues, chat, forum, mailing list, project social accounts, in-person or virtual events?
  2. Is there an entity behind the community - a company, a foundation or fiscal host, or nothing but volunteers? What body sits above the moderators when they deadlock or when someone contests a decision?
  3. Would the policy be enforced against the founder, the top maintainer, or the biggest customer? If not, say so now.
  4. Who moderates today, and what is the effort ceiling: how many people, how many hours a week each, and whether anyone has authority to change platform settings or spend money?
  5. Is there a date this has to be in place by - a live case running right now, a launch, an event, a board or foundation deadline?
  6. Do you want this case closed, or a structure that keeps working after the people who wrote it leave?
  7. Roughly how many members, and what is the daily volume of messages, issues, and new joiners?
  8. Is there an existing code of conduct or set of rules? Was there an incident handled badly enough that members still remember it?
  9. Which problems are actually frequent right now: harassment, self-promotion spam, low-quality or AI-generated submission floods, off-topic drift, hostile technical arguments, brigading from outside?
  10. Are members mostly employed developers using this for work, or individuals on their own time? Any minors, any customers under contract, any competitors in the room?
  11. Constraints: languages and timezones to cover, privacy law that governs the records, and whether anonymous reporting must be possible?

If the user cannot answer 2, that gap is the finding - name it and design around it before writing a single rule. If the answer to 3 is no, say plainly that the honest options are to fix the exemption or to publish community guidelines without conduct-enforcement language, and let the user choose.

Answers to 4, 5 and 6 re-rank the ranked menus below, and say which moved what:

  • A live case or a hard date promotes the responses that stop harm today - platform controls, content removal, the reporting channel - and defers the structural work that only pays off later.
  • A "keep working after we leave" answer promotes the systemic fix and earned trust levels, both of which lose on ratio in any single case and win across a year of them.
  • A low effort ceiling deletes rungs and deliverables outright rather than parking them at the bottom, and shortens the published ladder to what the team can actually execute (Publish gate, item 11).

Workflow

  1. Map scope and jurisdiction. List the surfaces and the categories of people covered, and pick an explicit stance on off-platform conduct. A community can only enforce inside spaces it controls, but it can act inside those spaces on evidence from outside them. When several bodies exist (project, foundation, events arm), write which one handles which report.

  2. Choose a base document and adapt it. Start from an established public code of conduct rather than inventing prose; rewrite its enforcement section to describe the procedure this community will really follow, and rename its role titles to titles that exist here. Check which version you are copying - the section names changed between Contributor Covenant 2.1 and 3.0. See references/code-of-conduct-outline.md.

  3. Write the standards from real incidents. Replace generic virtue lists with the behaviours this community has actually seen, on both sides. A moderator needs a line they can point at. Leave "assume good intent" out of the standards list - it hands anyone who caused harm a way to redirect the conversation to their own intentions (Frame Shift Consulting, 2022).

  4. Design the ladder. Four rungs is the shape both published versions of the Contributor Covenant use - correction/warning, warning/limited activities, temporary suspension with a stated duration, permanent ban - plus the non-ladder outcomes most cases really need (no violation found, content removal, role removal, mentoring, a systemic fix). Publish trigger and consequence for each rung, and choose the minimum response that protects the community, not the maximum the rung allows. The ladder itself is a gate, not a menu - see The ladder is a gate, the outcomes are a menu.

  5. Decide what becomes visible. Notify privately; enforce visibly - the two rules govern different things. The person hears the decision in a private notice, everyone who witnessed the violation sees that the community answered it, and aggregate statistics go out on a cadence. Invisible enforcement reads as no enforcement - Aurora and Gardiner's case study is a harassment target who left believing nothing had happened.

  6. Build the reporting channels. People report more when they know who reads it:

    • a private primary channel
    • a second path for reports about the primary recipient
    • an anonymous option if feasible
    • a stated acknowledgment target you can hold
    • a no-retaliation rule
    • the names of the people who receive reports
  7. Staff the team. Separate day-to-day moderators from the body that decides sanctions. Size the deciding body so it still works when a third of it is unavailable, then set:

    • tiered powers
    • recusal duties
    • a per-person load cap
    • coverage across the community's real hours and languages
    • terms with a cap on seats from any single employer

    See references/platform-controls.md.

  8. Write the runbook. Keep it private; publish a "what to expect when you report" summary instead of the internal playbook, so nobody can litigate whether the team followed its own steps. Cover:

    • deadline clock, intake, evidence preservation
    • recusal grades, interview order, decision rule
    • notification templates, case-record schema, retention

    See references/incident-response-runbook.md.

  9. Pre-configure platform controls. Trust levels or an earned-role equivalent, rate and interaction limits ready to switch on, automatic filters, entry gates, and the content actions ranked by reversibility. Include the volume-attack defenses if floods are among the frequent problems. Rank the controls by inflow stopped per moderator hour, not by how quickly each can be switched on:

    • efficiency: rate and interaction limits > entry gates > earned trust levels > automatic filters > individual bans > manual triage of every item

    • effort: rate limits == automatic filters (one config change, then self-running) > entry gates (one config change, plus a join-conversion cost you keep paying) > earned trust levels (a week to design, then self-running) > individual bans (minutes each, forever, scaling with whoever is attacking) > manual triage (a standing job that grows with the community)

    • value: earned trust levels (raise the floor under every future member, permanently) > rate limits and entry gates (cut inflow at the source) > automatic filters (catch known patterns only, and never the new one) > individual bans (remove one actor, who returns under a new account) > manual triage (resolves each item and prevents none)

    • compliance cost: rate limits == automatic filters == trust levels (platform-native, collecting nothing new) > entry gates (email or identity verification collects personal data and can need a privacy notice, more so where minors are plausibly present) > individual bans (a conduct decision, so a case record and an appeal path)

    • Rate limits and automatic filters tie on effort because each is a single settings change nobody has to maintain.

    • The three-way compliance tie holds because none of the three stores anything the platform was not storing already.

    • Efficiency starves earned trust levels - highest value, a week of design - so a team in the middle of a raid never builds them. Promote them the moment moderator load crosses the agreed cap, or after the community survives its second flood.

    • Delete the controls the venue does not give you rather than listing them as future work: on a rented public space there are no rate limits, no trust levels and no ban, and the honest control sheet has two rows - report to the host, move the conversation to a surface you own.

  10. Publish, announce, rehearse. Ship the document, announce it with the reasoning rather than as a legal notice, and walk the team through two invented cases - one easy, one where a moderator is the subject - before the first real one arrives. Repeat the rehearsal whenever a new member joins the team.

  11. Set the review loop.

    • Aggregate statistics on a fixed cadence.
    • An annual anonymized trends report.
    • A ladder review triggered by any case the team found hard to place.
  12. Persist the decisions. If your environment has persistent memory, record these so later work in this community does not relitigate them:

    • the scope stance
    • the ladder
    • the escalation body
    • the response-time target

The ladder is a gate, the outcomes are a menu

A serious code-of-conduct breach - harassment, threats, sustained targeting, anything where a person is being harmed right now - is a gate. The breach determines the rung, and no ratio gets a vote. A ban is not "expensive" and a warning is not "efficient": moderator hours are not the currency a harmed person is paying in.

Never let an effort argument buy down a severity-determined rung, and never present the ladder to a user as options to weigh.

Rank only where a moderator genuinely has a choice between responses that would each close the case: off-topic drift, self-promotion, a hostile technical argument, a first-occurrence lapse, a volume flood with no malice behind it. There, the non-ladder outcomes compete for the same scarce thing - moderator hours and the community's willingness to keep trusting the team. Rank them by recurrence prevented per unit of that:

  • efficiency: systemic fix > content removal > role removal > public statement of the response that would have applied > mentoring
  • effort: content removal == public statement (minutes, one moderator, no coordination) > systemic fix (a day to design one rule, template, or channel change) > role removal (a conversation plus a governance decision) > mentoring (a standing commitment across weeks, which can still fail)
  • value: systemic fix (removes the class of incident, so every case it prevents afterwards is free) > role removal (removes the authority that made the behaviour harmful) > mentoring (keeps a genuinely well-meaning contributor - rare, and real) > content removal (resolves the visible instance and nothing structural) > public statement (tells the community the standard held)
  • relationship cost: content removal == systemic fix (neither names a person, so neither spends any) > public statement (asserts a standard without naming anyone) > mentoring (spends a moderator's goodwill and hours, and the mentee's) > role removal (permanently changes someone's standing, and usually costs the community that person)
  • compliance cost: systemic fix == content removal (no personal data, no decision about a person, no appeal) > public statement (a factual claim about an incident, so legal review once it names anything identifiable) > mentoring (a commitment the community can be held to) > role removal (a conduct decision: case record, right of appeal, and in a company-run community an HR and employment-law interface)

Two ties, both genuine:

  • Content removal and a public statement cost the same effort because each is one person writing for a few minutes with nobody to consult.
  • Content removal and a systemic fix cost the same relationship because neither one names anybody - that is exactly why they are the two a tired team should reach for first.

The order starves mentoring, which is highest on relationship investment and slowest to pay. It is never a substitute for a sanction when harm occurred. Promote mentoring anyway when three things hold together:

  • the person is load-bearing for the project
  • the behaviour is a skills gap rather than a values gap
  • a specific moderator has volunteered the hours

This order is a default, not a law. Re-rank it against what the interview already told you:

  • a volunteer project with no governance body cannot do role removal at all and should not list it
  • a community whose frequent problem is submission floods gets almost everything from the systemic fix and nothing from the rest
  • a company-run community with an H

...

User Reviews (0)

Write a Review

Effect
Usability
Docs
Compatibility

No reviews yet

Statistics

Installs4.6K
Rating4.4 / 5.0
Version
Updated2026年10月13日
Comparisons3

User Rating

4.4(120)
5
37%
4
43%
3
13%
2
5%
1
2%

Rate this Skill

0.0

Compatible Platforms

🤖claude-code

Timeline

Created2026年10月4日
Last Updated2026年10月13日
🎁 Agent Knowledge Cards
Survey