Community Triage
SkillAI & modelsGitHub issues, pull requests, bug reports, scope questions, and support threads. Use when handling community reports or PRs to separate supported OpenAI-compatible behavior from out-of-scope provider-specific requests, request missing evidence, route upstream, and close or escalate politely.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Community Triage skill
What this skill tells your AI
The instructions your AI receives, as published by roryeckel/wyoming_openai in .agents/skills/community-triage/SKILL.md and read by ahel’s review.
Handle community issues and PRs with respect, evidence, and firm scope discipline.
This skill exists to protect maintainer time, avoid speculative changes, and preserve the project's intended boundary.
Project Boundary
- Wyoming OpenAI is an OpenAI-compatible proxy/middleware.
- Treat OpenAI-compatible request/response behavior as the primary contract.
- Existing backend enum/autodetection exceptions are compatibility shims, not a license to support arbitrary provider-specific transports, routes, or schemas.
- Do not expand scope to custom endpoints such as
/tts, provider-specificstream=truesemantics, or bespoke response formats unless the maintainer explicitly chooses to widen scope.
Goals
- Be helpful without overcommitting.
- Separate local defects from upstream limitations and unsupported integrations.
- Prefer minimal actionable next steps: fix locally, request reproduction details, route upstream, or close with clear reasoning.
- Maintain a respectful tone even when issue quality is low.
Default Posture
- Assume good faith.
- Do not mirror vague or incorrect technical framing.
- Translate the report into the actual technical question the project can answer.
- Use evidence from code, tests, docs, and upstream behavior before concluding.
- Do not let conversation momentum expand the project's scope by accident.
Triage Workflow
- Classify the thread.
- Identify the supported surface.
- Gather evidence.
- Decide ownership.
- Respond with a clear outcome.
1. Classify the thread
Choose the closest category:
- bug/regression on a supported surface
- feature request inside scope
- feature request outside scope
- support question or configuration issue
- upstream compatibility issue
- low-fidelity report with insufficient reproduction
- community PR
2. Identify the supported surface
Pin down the exact surface before deciding anything:
- endpoint path
- Wyoming event flow
- CLI/config flag
- backend compatibility path
- testable request/response behavior
Explicitly determine whether the report concerns an OpenAI-compatible path or instead depends on a custom provider API.
3. Gather evidence
Use the repo and upstream references, not assumptions.
- inspect the relevant implementation and tests in this repo
- read linked upstream docs/issues/PRs, not just their titles or summaries
- verify the exact route, request schema, and response transport involved
- distinguish between "supports streaming somewhere" and "streams on the exact supported integration surface used here"
4. Decide ownership
Assign the issue to one bucket:
- local defect in this repo
- upstream defect or limitation
- out-of-scope custom integration request
- uncertain because key evidence is still missing
5. Respond with a clear outcome
Pick one outcome and be explicit:
- implement/fix
- ask for concrete reproduction details
- route upstream
- close politely with scope reasoning
Evidence Standard
Treat these as strong evidence:
- code paths
- tests
- official docs
- concrete reproductions
- exact request/response behavior
- linked upstream implementation details
Treat these as weak evidence:
- issue titles
- second-hand descriptions
- marketing claims
- "OpenAI-compatible" labels without route-level confirmation
- "supports streaming" claims without transport details
Do not conclude a behavior is supported just because a provider advertises compatibility. Confirm the specific surface this project actually uses.
Minimum Missing Details To Request
When the report is ambiguous, ask for only what is necessary to decide ownership.
Good examples:
- exact endpoint path
- sample request/response behavior
- provider or server project link
- version or commit
- relevant logs
- minimal reproduction steps
Do not start by asking for everything. Ask for the smallest missing fact that would change the decision.
Low-Fidelity Issues
When a report is vague, technically confused, or incomplete:
- extract the likely underlying question
- ask at most a small number of precise follow-ups
- request only the missing details needed to decide whether this repo owns the problem
- avoid speculative fixes or speculative roadmap commitments
If the issue remains unsupported by evidence after reasonable follow-up, close it politely rather than leaving it open indefinitely.
Scope Guardrails
- Do not add support for provider-specific custom endpoints when an OpenAI-compatible endpoint already exists but behaves differently.
- Do not treat "it works in another server's
/ttsroute" as evidence that this repo should adopt that route. - Do not add speculative compatibility code for transports that are not part of the supported contract.
- Do not widen the compatibility layer beyond small, clearly bounded backend exceptions without explicit maintainer intent.
- Do not add new provider-specific autodetection probes (custom
/health,/readyz,/test, or similar routes) when explicit backend configuration or the OpenAI-compatible surface itself can identify the backend. A new provider-specific route is justifiable only when it fills a gap the OpenAI spec does not cover (for example voice listing); pure identity probes do not meet that bar. - Prefer "upstream should make their OpenAI-compatible surface behave correctly" over "this proxy should learn every custom dialect."
Boundary Example
If an upstream Chatterbox server streams on a custom /tts endpoint but buffers on its OpenAI-compatible /v1/audio/speech endpoint:
- do not add
/ttssupport here - do not reopen scope just because the custom route exists
- explain that Wyoming OpenAI targets the OpenAI-compatible surface
- route streaming complaints about
/v1/audio/speechupstream unless there is evidence this repo mishandles a truly incremental OpenAI-compatible response
Issue Decision Matrix
Keep Open Or Fix Here
Keep the issue open or fix it when:
- there is evidence the failure occurs on a supported OpenAI-compatible surface used by this repo
- the behavior regressed from prior repo behavior
- a minimal fix exists without expanding scope
- the report includes enough detail to reproduce or the code clearly shows a defect
Ask For Details
Ask for more detail when:
- the failure might be in this repo, but one or two key facts are missing
- the report mixes supported and unsupported surfaces and needs disambiguation
- an upstream implementation claims compatibility but the actual route/response behavior is still unknown
Route Upstream
Route upstream when:
- the failing behavior lives in another project's OpenAI-compatible server or provider
- the linked implementation buffers where true streaming is expected
- the only path that provides the requested capability is a custom upstream endpoint outside this repo's target contract
Close
Close when:
- the request depends on a custom provider-specific API outside project scope
- there is no evidence of a defect in this repo after reasonable triage
- the issue asks for a nonexistent or irrelevant API surface
- the request would materially expand scope or maintenance burden beyond the maintainer's intent
PR Review Guidance
Review community PRs primarily for:
- scope fit
- correctness
- maintenance cost
- tests on supported behavior
- regression risk
Be especially skeptical of PRs that:
- add provider-specific routes or bespoke schemas
- teach the proxy custom behavior for one server in a way that weakens the OpenAI-compatible boundary
- include broad refactors alongside compatibility changes
- add fallback code without evidence of a real supported use case
Prefer minimal changes that keep the contract clear.
If a PR changes supported behavior, ask for tests.
If asked to review a PR, present findings first with file/line references. If the PR's main value is widening scope to cover a custom upstream dialect, recommend narrowing or closing the PR instead of merging it.
Response Style
- Thank the reporter or contributor for concrete links, repros, or code references.
- Be direct and factual.
- Avoid blame, sarcasm, or dismissal.
- Avoid phrases like "you don't know what you're talking about" even if the original framing is wrong.
Prefer phrasing such as:
- "I do not currently see evidence that the limitation is in this project."
- "This appears to be upstream of Wyoming OpenAI."
- "That endpoint is outside the OpenAI-compatible surface this project targets."
- "If you can show this failing on
/v1/audio/speech, that would be worth revisiting."
Avoid phrasing such as:
- "Not my problem."
- "Works for me."
- speculative roadmap commitments
- over-apologizing for enforcing scope
Closure Pattern
When closing, include all of the following:
- what was checked
- why the issue is out of scope or upstream
- the specific supported surface this project targets
- the condition under which the issue would become actionable here
Template:
Thanks for the report and the additional reference.
I checked the relevant code path and the linked implementation. Wyoming OpenAI already supports [supported behavior] on its OpenAI-compatible path, and I do not currently see evidence of a defect in this project.
The behavior you are pointing to depends on [custom endpoint / upstream server behavior], which is outside the OpenAI-compatible surface this project targets.
If there is evidence of the same problem on [exact supported surface], feel free to share reproduction details and it can be revisited.
Upstream Escalation Pattern
When routing upstream:
- name the exact upstream repo, issue, or route
- describe the boundary cleanly
- do not volunteer to mirror custom APIs locally
Template:
This looks like an upstream compatibility issue rather than a Wyoming OpenAI bug.
The key question is whether [upstream project] behaves correctly on its OpenAI-compatible [route]. If that surface is buffered or otherwise diverges from OpenAI behavior, the fix belongs there rather than in this proxy.
Re-entry Criteria
Reopen or continue when:
- a reporter provides a concrete reproduction on a supported OpenAI-compatible surface
- a community PR narrows itself to supported behavior and includes tests
- upstream changes make the supported surface behave differently and this repo needs a bounded compatibility adjustment
Anti-Patterns
- implementing custom provider transports to salvage one wrapper
- keeping vague issues open indefinitely
- conflating "streaming exists somewhere in the upstream project" with "the supported integration surface streams here"
- adding fallback behavior for undocumented responses
- treating backend enum exceptions as permission for general vendor lock-in
- adding new provider-specific autodetection probes when explicit backend configuration would work. Provider-specific routes are acceptable only when they fill a gap the OpenAI spec lacks (for example voice/model listing) — not for pure identity probes.
Maintainer Intent Distilled
- Be kind to community contributors.
- Keep the contract narrow.
- Favor evidence over momentum.
- Push upstream when the real defect lives upstream.
- Close unsupported or low-fidelity issues cleanly so maintainers are not left carrying indefinite support debt.
Signals
- GitHub stars
- 210
- Forks
- 34
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
community-triage- Source
- github.com/roryeckel/wyoming_openai