Automated summary
This skill provides the ability to configure and customize the maintainer workflow for a GitHub repository by editing the .github/maintainer/config.json file.
Strengths
- 1. Allows fine-grained control over triage scoring, stale policies, label mapping, and derived metrics. 2. Uses a human-readable JSON format that is easy to edit. 3. Includes comprehensive heuristics for detecting issues needing info, duplicates, and relationship quality. 4. Provides sensible defaults with the option to fall back if config is missing.
Limitations
- 1. Only applies to repositories that use the maintainer workflow script
- not a universal solution. 2. Requires understanding of the config schema and its impact on scoring. 3. Some settings may not be documented in the file itself, requiring external knowledge.
Use when you need to tweak issue scoring, adjust stale policies, or customize label mappings for your GitHub repository's maintainer automation.
Do not use if you do not have the maintainer bot set up, or if you prefer manual triage without automation.
Security analysis
SafeThe file is a static configuration template for a GitHub maintainer workflow. It contains no executable code, destructive commands, or data exfiltration risks.
No concerns found
How this analysis is madeExamples
I need to increase the stale days for issues to 90 days. Edit the maintainer config to change the staleDays.issues value to 90.Our team decided that feature requests should have higher priority. Edit the maintainer config to increase the type boost for 'feature' to 8.Please add a new signal for missing steps to reproduce in the needsInfo heuristics. Edit the config to include 'missingSteps' with weight 2.Maintainer Config
At a glance
- Purpose: Control triage scoring, stale policy, label mapping, and derived metrics.
- Use when: Scoring/actionability feels “off,” you want different prioritization, or you’re changing automation policy.
- Output: Proposed edits to
.github/maintainer/config.jsonwith a short rationale. - Do not: Manually edit
.github/maintainer/semantics.generated.json(it is auto-managed).
Machine-readable configuration file for the maintainer workflow.
Place it at:
.github/maintainer/config.json
The triage script reads this file to drive scoring, labels, and stale policy. If it is missing, the script falls back to built-in defaults and prints a warning.
Config Template
{
"schemaVersion": 1,
"reportsDir": "reports",
"stateFile": ".github/maintainer/state.json",
"noMergeExternalPRs": true,
"semantics": {
"intent": {
"bug": ["bug", "crash", "error", "exception"],
"feature": ["feature request", "enhancement"],
"question": ["how do i", "question"],
"support": ["help", "support"],
"meta": ["roadmap", "governance"]
},
"needsInfo": {
"repro": ["steps to reproduce", "repro steps"],
"expected": ["expected behavior"],
"actual": ["actual behavior"],
"environment": ["environment", "os"],
"version": ["version", "node version"],
"logs": ["logs", "stack trace"],
"testPlan": ["test plan", "testing"]
},
"environmentTokens": ["windows", "macos", "linux", "node", "npm"],
"relationship": {
"linkKeywords": ["fixes", "closes", "resolves", "addresses"],
"duplicateHints": ["duplicate", "same issue"]
},
"errors": {
"signatures": [],
"keywords": ["error", "exception", "failed", "crash"]
}
},
"heuristics": {
"needsInfo": {
"enabled": true,
"threshold": 2,
"issueSignals": {
"missingRepro": { "enabled": true, "applyTo": ["bug", "unknown"] },
"missingExpectedActual": { "enabled": true, "applyTo": ["bug", "unknown"] },
"missingEnvironment": { "enabled": true, "applyTo": ["bug", "support", "question", "unknown"] },
"missingVersion": { "enabled": true, "applyTo": ["bug", "support", "question", "unknown"] },
"missingLogs": { "enabled": true, "applyTo": ["bug", "support", "unknown"] }
},
"prSignals": {
"missingTestPlan": { "enabled": true },
"missingDescription": { "enabled": true }
},
"weights": {
"missingRepro": 2,
"missingExpectedActual": 1,
"missingEnvironment": 1,
"missingVersion": 1,
"missingLogs": 1,
"missingTestPlan": 1,
"missingDescription": 1
}
},
"duplicates": {
"titleSimilarityThreshold": 0.6,
"overlapThreshold": 0.35,
"requireSharedError": false
},
"relationshipQuality": {
"strongOverlapThreshold": 0.45,
"mediumOverlapThreshold": 0.15,
"strongWhenExplicit": true,
"defaultWhenLinked": "medium"
}
},
"sentiment": {
"positiveWords": ["thanks", "great", "helpful", "fixed"],
"negativeWords": ["broken", "error", "crash", "fail"]
},
"staleDays": {
"issues": 60,
"prs": 30
},
"labels": {
"blocked": ["blocked", "on-hold"],
"needsInfo": ["needs-info", "needs-more-info", "waiting-for-response"],
"needsDecision": ["needs-decision"],
"closable": ["duplicate", "wontfix", "invalid", "out-of-scope"]
},
"typeLabels": {
"bug": ["bug"],
"feature": ["feature", "enhancement"],
"question": ["question"],
"support": ["support"],
"meta": ["meta", "governance", "roadmap"]
},
"priority": {
"issue": {
"commentWeight": 2,
"reactionWeights": {
"THUMBS_UP": 3,
"THUMBS_DOWN": 2,
"HEART": 2
},
"typeBoosts": {
"bug": 10,
"feature": 5
},
"stalePenalty": {
"over30": -5,
"over60": -10
},
"ageBoost": {
"over30AndFresh": 5
}
},
"pr": {
"commentWeight": 2,
"reviewWeight": 3,
"approvalBoost": 8,
"ciSuccessBoost": 6,
"unresolvedThreadsPenalty": -5,
"changesRequestedPenalty": -5,
"draftPenalty": -8,
"stalePenalty": {
"over14": -5,
"over30": -10
}
},
"labelBoosts": {
"security": 40,
"critical": 25,
"high-priority": 15
}
},
"relationshipScore": {
"overlapWeight": 30,
"explicitLinkBoost": 8,
"linkedIssuesWeight": 2,
"mentionedByWeight": 2,
"linkedIssuePriorityWeight": 0.15
},
"implementation": {
"commentWeight": 1,
"reviewWeight": 2,
"reviewCommentWeight": 1,
"reactionWeight": 1,
"linkedIssuePriorityWeight": 0.6,
"linkedIssueReactionWeight": 0.3,
"linkedIssueSentimentWeight": 0.2,
"relationshipScoreWeight": 0.5,
"relationshipQualityBoosts": {
"strong": 6,
"medium": 3,
"weak": 0,
"none": -2
},
"touchesTestsBoost": 5,
"ciSuccessBoost": 6,
"ciFailurePenalty": -6,
"changesRequestedPenalty": -8,
"unresolvedThreadsPenalty": -4,
"draftPenalty": -10,
"agePenalty": {
"over14": -3,
"over30": -7,
"over60": -12
},
"sizePenalty": {
"filesOver10": -3,
"filesOver25": -7,
"linesOver500": -8,
"linesOver1000": -12
},
"agentScoreWeight": 1,
"agentConfidenceMultipliers": {
"high": 1.5,
"medium": 1,
"low": 0.5,
"unset": 0
},
"scoreFloor": 0,
"tierThresholds": {
"strong": 40,
"medium": 20
}
}
}
Notes
- All label names are matched case-insensitively.
labelBoostsapply to both issues and PRs.noMergeExternalPRsis a policy guardrail used by docs and agent workflow.stateFilestores the last run and hashes for delta reports.sentimentuses a small lexicon; extend for non-English repos if needed.implementationweights tune the auto score; agent adjustments are recorded in.github/maintainer/notes/.semanticsandheuristicsdrive all derived metrics (type classification, actionability, duplicates, relationship quality).relationshipScoreweights control PR-to-issue relationship scoring..github/maintainer/semantics.generated.jsonis auto-managed by the agent and merged each run.
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/maintainer-configuration-mm5t8cit/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/maintainer-configuration-mm5t8cit' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/maintainer-configuration-mm5t8cit/download' --output '.skill-downloads/maintainer-configuration-mm5t8cit/SKILL.md.part' && mv '.skill-downloads/maintainer-configuration-mm5t8cit/SKILL.md.part' '.skill-downloads/maintainer-configuration-mm5t8cit/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
This file does not provide a usable name/description header for this native procedure. It remains available to download and inspect; use the manual method below.
Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/maintainer-configuration-mm5t8cit/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
Configure a Chat Channel with SecretRefs
DevOps
Set up chat channels using non-interactive commands, with secrets only as SecretRefs. Covers gather, mutate, repair, and prove steps for reliable delivery.
Investigate ClickHouse CI Failures
DevOps
Investigate a ClickHouse CI failure end-to-end from a PR or S3 report URL. Fetches failed tests, classifies flaky vs real regression, and checks for existing issues/fixes.
Ansible PR Review
DevOps
Reviews an Ansible PR following the project's standardized process, including changelog checks, test coverage validation, and feedback tracking.