dotnet / dotnet/winforms

Create a Skill for reading issue-level custom fields (Type/Priority/Effort) via GraphQL

Open Beginner friendly
#14,802 0 comments 0 reactions 0 assignees View on GitHub
NewApi-Net11
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.