Create a Skill for reading issue-level custom fields (Type/Priority/Effort) via GraphQL
- Dominant language
- C#
- Stars
- 4.9k
- Forks
- 1.1k
- Avg merge
- 20h 23m
- Merged PRs (30d)
- 103
Description
### Summary
Create a Copilot **Skill** (under `.github/skills/`) that documents how to read GitHub **issue-level custom fields** (the new `Type` → `Priority` / `Effort` fields that appear on issues, distinct from Projects v2 fields and from labels).
### Motivation
Triaging the `NewApi-Net11` work relies on the **Priority** field (High/Medium/Low). These are **not labels** and **not Projects v2 items**, so the usual `gh issue list --label ...` and `projectItems`/`projectV2` GraphQL paths do not surface them. Discovering the correct GraphQL shape took several introspection round-trips; a Skill would let the agent (and contributors) read/filter by these fields immediately.
### What the Skill should document
The working GraphQL recipe on the `Issue` type:
- `issueType { name }` — the `Type` (e.g. `Bug`).
- `issueFieldValues(first: N) { nodes { ... } }` — the custom field values. Each node is a union `IssueFieldValue` with members:
- `IssueFieldSingleSelectValue` (Priority/Effort): select `value` and `field { ... on IssueFieldSingleSelect { name } }`.
- `IssueFieldTextValue`, `IssueFieldNumberValue`, `IssueFieldDateValue`, `IssueFieldMultiSelectValue`.
- The `field` accessor is the union `IssueFields` (members `IssueFieldSingleSelect`, `IssueFieldText`, `IssueFieldNumber`, `IssueFieldDate`, `IssueFieldMultiSelect`) — you **must** use an inline fragment to read `name`.
Example query that returns Priority for an issue:
```graphql
query {
repository(owner: "dotnet", name: "winforms") {
issue(number: 14795) {
number
issueType { name }
issueFieldValues(first: 20) {
nodes {
__typename
... on IssueFieldSingleSelectValue {
value
field { ... on IssueFieldSingleSelect { name } }
}
}
}
}
}
}
```
Returns: `issueType.name = "Bug"`, and a node `{ value: "High", field: { name: "Priority" } }`.
### Acceptance criteria
- A `SKILL.md` describing when to use this (filtering `NewApi-Net11` work by Priority/Effort), the union shapes, the copy-paste GraphQL, and a batched multi-issue variant (aliased sub-selections) for reading many issues at once.
- A short note that `gh issue list --label` cannot filter these fields, and that Projects v2 (`projectItems`) is a different mechanism.
Contributor guide
Research direction
Create the requested SKILL.md under .github/skills/ and use the issue’s GraphQL recipe as the starting point. Document issueType, issueFieldValues, the IssueFieldValue and IssueFields unions, the copy-paste query, and the aliased batched variant. Done means the skill covers Priority/Effort filtering, explains why labels and projectItems are different, and meets every listed acceptance criterion.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github, graphql
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 88/100