Claude/review contributor guidelines (#3517)

* Tighten contributor guidelines and too-long triage

🤖 Generated with Claude Code

https://claude.ai/code/session_01VTVuVM1t2Mas8F6z8j3wJh

* Relax issue length guidance from ~15 lines to "fit in a single screen"

🤖 Generated with Claude Code

https://claude.ai/code/session_01VTVuVM1t2Mas8F6z8j3wJh

* Fix conflicting no-comment rule for too-long label

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Jeremiah Lowin 2026-03-15 14:15:21 -04:00 committed by GitHub
commit 93753e137e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 13 additions and 9 deletions

View file

@ -16,17 +16,17 @@ body:
- Check if someone else has **already reported this** or if it's been fixed on the main branch
- You **must** include a copy/pasteable, properly formatted MRE (minimal reproducible example) or your issue may be closed without response
- **The ideal issue is a clear problem description and an MRE — that's it.** If you've done genuine investigation and have a non-obvious insight into the root cause, include it. But please don't speculate or ask an LLM to generate a diagnosis. We have LLMs too, and an incorrect analysis is harder to work with than none at all.
- **Keep it short.** Issues that are difficult to parse — due to length, speculation, or generated content — may be closed without response.
- **Keep it short.** A clear description plus a concise MRE is ideal — aim to fit in a single screen. Issues that include unsolicited root cause analysis, proposed fixes, or multi-section diagnostic writeups will be labeled `too-long` and not triaged until condensed.
- **Using an LLM?** Great — but it must follow these guidelines. Generic LLM output that ignores our contributing conventions will be closed. See [CONTRIBUTING.md](../../CONTRIBUTING.md).
- type: textarea
id: description
attributes:
label: Description
label: What happened?
description: |
Please explain what you're experiencing and what you would expect to happen instead.
Describe the bug in a few sentences. What did you do, what happened, and what did you expect instead?
Provide as much detail as possible to help us understand and solve your problem quickly.
Do NOT include root cause analysis, proposed fixes, or diagnostic writeups — just describe the problem.
validations:
required: true

View file

@ -14,7 +14,7 @@ body:
- 🔍 **Check if this has already been requested** — search existing issues first
- 🎯 **Describe the problem you're trying to solve**, not the solution you want — we'll figure out the best implementation
- ✂️ **Keep it short.** A motivating description and a concrete use case is the ideal request. Skip proposed implementations unless you have a specific, well-considered suggestion. Requests that are difficult to parse may be closed without response.
- ✂️ **Keep it short.** A motivating description and a concrete use case is the ideal request — aim to fit in a single screen. Skip proposed implementations, API designs, or multi-option analyses — maintainers will figure out the approach. Requests that are difficult to parse will be labeled `too-long` and not triaged until condensed.
- 🤖 **Using an LLM?** Great — but it must follow these guidelines. Generic LLM output that ignores our contributing conventions will be closed. See [CONTRIBUTING.md](../../CONTRIBUTING.md).
- type: textarea

View file

@ -49,7 +49,7 @@ jobs:
PROMPT<<PROMPT_END
You're an issue triage assistant for FastMCP, a Python framework for building Model Context Protocol servers and clients. Your task is to analyze issues/PRs and apply appropriate labels.
IMPORTANT: Your ONLY action should be to apply labels using mcp__github__update_issue. DO NOT post any comments.
IMPORTANT: Your primary action should be to apply labels using mcp__github__update_issue. DO NOT post comments EXCEPT when applying the too-long label (see below).
Issue/PR Information:
- REPO: ${{ github.repository }}
@ -97,7 +97,11 @@ jobs:
STATUS (apply if applicable):
- needs more info: Issue lacks reproduction steps, error messages, or clear description
- invalid: Spam, completely off-topic, or nonsensical (often LLM-generated)
- too-long: Issue/PR is excessively verbose, reads like unedited LLM output, or is padded with speculative diagnoses and multiple proposed solutions. The signal is low information density: lots of words, but the actual problem could be stated in a paragraph. Apply this label and do not apply other triage labels — the author needs to condense before triage is worthwhile.
- too-long: Issue/PR goes beyond what the contributor guidelines ask for. Typical signs: "Root cause" or "Fix" sections, proposed code changes, multi-step diagnostic writeups, speculative analysis, or structured reports that read like LLM output. The contributor guidelines ask for a short problem description and an MRE — anything beyond that (unless it reflects genuine, non-obvious investigation) is too much. This applies even when the extra content is accurate — unsolicited diagnosis transfers triage burden to maintainers. Apply this label and do not apply other triage labels. The author needs to condense before triage is worthwhile.
WHEN APPLYING too-long: After labeling, post a brief comment using mcp__github__add_issue_comment:
"Thanks for the report. This issue goes beyond what our contributor guidelines ask for — we just need a short problem description and an MRE. Please see [our pinned guidelines](https://github.com/PrefectHQ/fastmcp/issues/3506) and condense this issue. We'll triage it once it's trimmed down."
Use this exact text (or very close to it). Do not editorialize or add details.
AREA LABELS (apply ONLY when thematically central to the issue):
- cli: Issues primarily about FastMCP CLI commands (run, dev, install)
@ -123,7 +127,7 @@ jobs:
4. Apply selected labels:
Use mcp__github__update_issue to apply your selected labels
DO NOT post any comments
DO NOT post any comments unless applying too-long (see above)
PROMPT_END
EOF
@ -140,7 +144,7 @@ jobs:
allowed_non_write_users: "*"
allowed_bots: "marvin-context-protocol"
claude_args: |
--allowedTools Bash(gh label list),mcp__github__get_issue,mcp__github__get_issue_comments,mcp__github__update_issue,mcp__github__get_pull_request_files
--allowedTools Bash(gh label list),mcp__github__get_issue,mcp__github__get_issue_comments,mcp__github__update_issue,mcp__github__add_issue_comment,mcp__github__get_pull_request_files
settings: |
{
"model": "claude-sonnet-4-6",