|
| 1 | +# Issue tracker: Jira |
| 2 | + |
| 3 | +Issues and PRDs for this repo live in Jira, not GitHub Issues. The GitHub repo |
| 4 | +(`newrelic/newrelic-dotnet-agent`) is a public mirror for code and pull |
| 5 | +requests; planning and triage happen in Jira. |
| 6 | + |
| 7 | +- **Site**: new-relic.atlassian.net |
| 8 | +- **Project key**: `NR` |
| 9 | +- **Access**: the Atlassian MCP tools (`mcp__plugin_nr_atlassian-jira__*`). The |
| 10 | + site host `new-relic.atlassian.net` works directly as the `cloudId` argument |
| 11 | + for those tools. |
| 12 | + |
| 13 | +## Write formatting (mandatory) |
| 14 | + |
| 15 | +Every Jira write -- create, edit, comment -- must use `contentFormat: "adf"` |
| 16 | +with a proper ADF (Atlassian Document Format) JSON body, even for plain text. |
| 17 | +Follow the `nr:jira-adf-format` skill. Passing raw markdown/plain strings is |
| 18 | +the most common mistake. |
| 19 | + |
| 20 | +## Conventions |
| 21 | + |
| 22 | +- **Create an issue**: `createJiraIssue` with `projectKey: NR`, an |
| 23 | + `issueTypeName` (`Task`, `Bug`, `Story`), a `summary`, and a `description`. |
| 24 | + New issues are assigned to the "APM+ -> .NET Agent" team (team field ID |
| 25 | + `ea229518-a006-4d09-b8c0-223a885aeff7-188`) via `additional_fields` unless |
| 26 | + told otherwise. |
| 27 | +- **Read an issue**: `getJiraIssue` with the issue key (e.g. `NR-574460`). |
| 28 | + Include `comment` in `fields` (or fetch `*all`) to get comments. |
| 29 | +- **List / search issues**: `searchJiraIssuesUsingJql`, e.g. |
| 30 | + `project = NR AND labels = "needs-triage" ORDER BY created DESC`. |
| 31 | +- **Comment on an issue**: `addCommentToJiraIssue`. |
| 32 | +- **Apply / remove labels**: `editJiraIssue`, setting the `labels` field (see |
| 33 | + `triage-labels.md` for the role strings). |
| 34 | +- **Transition state**: `getTransitionsForJiraIssue` to find the transition ID, |
| 35 | + then `transitionJiraIssue`. |
| 36 | +- **Link issues**: `createIssueLink` (`getIssueLinkTypes` lists types; for |
| 37 | + "A is blocked by B", inwardIssue = B, outwardIssue = A). |
| 38 | + |
| 39 | +## Referencing tickets in git |
| 40 | + |
| 41 | +Never link to Jira in commits or PR descriptions -- this is a public |
| 42 | +open-source repo and Jira is internal. Reference by ticket ID only, inline in |
| 43 | +prose (e.g. "from NR-574460"), never as a `Resolves` keyword. |
| 44 | + |
| 45 | +## When a skill says "publish to the issue tracker" |
| 46 | + |
| 47 | +Create a Jira issue in project `NR`. |
| 48 | + |
| 49 | +## When a skill says "fetch the relevant ticket" |
| 50 | + |
| 51 | +Read the Jira issue by key with `getJiraIssue`. The user will normally pass the |
| 52 | +key (e.g. `NR-574460`) directly. |
| 53 | + |
| 54 | +## Pull requests as a triage surface |
| 55 | + |
| 56 | +**No.** External GitHub PRs are not pulled into the triage queue. |
| 57 | + |
| 58 | +## Wayfinding operations |
| 59 | + |
| 60 | +Used by `/wayfinder`. The **map** is a single Jira issue with **child** issues |
| 61 | +as tickets. |
| 62 | + |
| 63 | +- **Map**: a Jira issue (type `Task`/`Story`) holding the Notes / |
| 64 | + Decisions-so-far / Fog body; label it `wayfinder:map`. |
| 65 | +- **Child ticket**: a Jira issue linked to the map (a sub-task under the map, |
| 66 | + or a `Relates` link plus `Part of NR-<map>` in the body). Label |
| 67 | + `wayfinder:<type>` (`research`/`prototype`/`grilling`/`task`). Once claimed, |
| 68 | + assign to the driving dev. |
| 69 | +- **Blocking**: use Jira issue links -- "is blocked by" (`createIssueLink` with |
| 70 | + type `Blocks`: inwardIssue = blocker, outwardIssue = blocked). A ticket is |
| 71 | + unblocked when every blocker is Done/closed. |
| 72 | +- **Frontier query**: JQL for the map's open children with no open blocker and |
| 73 | + no assignee; first in map order wins. |
| 74 | +- **Claim**: assign the issue to the driving dev -- the session's first write. |
| 75 | +- **Resolve**: comment the answer, transition the issue to Done, then append a |
| 76 | + context pointer (gist + link) to the map's Decisions-so-far. |
0 commit comments