Skip to content

Commit a517aa9

Browse files
authored
Merge pull request #29 from redhat-developer/feat/rhdh-jira-standup-0514-improvements
feat(rhdh-jira): incorporate COPE standup 5/14 decisions and process docs
2 parents c58afa1 + 8c793b6 commit a517aa9

9 files changed

Lines changed: 315 additions & 37 deletions

File tree

skills/rhdh-jira/SKILL.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ Load only what the current task requires.
121121
| `references/fields.md` | Need to know a field name, custom field ID, accepted values, or label conventions. Custom fields, labels, link types, components, priorities. |
122122
| `references/workflows.md` | Transitioning issues, checking exit criteria, or verifying readiness for the next status. |
123123
| `references/templates.md` | Creating new issues. Also load `references/workflows.md` for required fields at entry status. |
124-
| `references/support.md` | Handling support cases, filing bugs from customer cases, or creating feature requests from support. |
124+
| `references/support.md` | Handling support cases, filing bugs from customer cases, or creating feature requests from support. Full RHDHSUPP workflow, SLA, and anti-patterns. |
125+
| `references/feature-exploration.md` | Feature Exploration Process checklist: component validation, labels (demo, rhdh-testday), Doc Epic automation, cross-team dependencies, rescoping. Load when creating Features, refining Features, or checking Feature readiness. |
125126
| `references/jql-patterns.md` | Building a JQL query, finding a board ID, or looking up sprint information. JQL cookbook with 23+ tested queries. |
126127
| `references/auth.md` | Setting up authentication for REST API or GraphQL calls. Token file format, path discovery, security, instance config, common auth errors. |
127128
| `references/rest-api-fallback.md` | `acli` failed to update a custom field (Team, Size, Story Points, Release Note Type). Curl examples, response handling, OpenAPI spec discovery. |
@@ -156,6 +157,8 @@ Load only what the current task requires.
156157
11. **GraphQL search is beta.** `issueSearchStable` requires `X-ExperimentalApi: JiraIssueSearch` header. Load `references/graphql-queries.md` before attempting GraphQL queries.
157158
12. **`.jira-token` format is `email:token`, not bare token.** A file containing only the API token without the email prefix will cause 401 errors on REST/GraphQL calls. The `setup.py` script validates the format.
158159
13. **`acli search` silently truncates results.** The default page size is 30. If your JQL matches more than 30 issues, you get the first 30 with no warning. Always pass `--limit 200` for bulk queries, or use `--count` first to check the total, then `--paginate` to fetch all pages. This is the #2 cause of incorrect reports after skipping `--enrich`.
160+
14. **"Feature Exploration" vs "Feature Refinement."** The meeting/process is called **Feature Exploration**. The Jira workflow status is **Refinement**. These are different things. When referring to the meeting or process, always use "Feature Exploration." When referring to the Jira status, use "Refinement." The meeting is sometimes mislabeled as "Feature Refinement" in calendar invites — this is incorrect.
161+
15. **Don't remove `rhdh-X.Y-candidate` labels.** Candidate labels track release targeting. Removing them without PM approval can silently drop a feature from release tracking.
159162

160163
## Error Handling
161164

skills/rhdh-jira/references/acli-commands.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ acli jira workitem edit --key "RHIDP-123,RHIDP-124" --assignee "jdoe@example.com
8787
acli jira workitem edit --jql "project = RHIDP AND labels = 'needs-info'" --labels "needs-pm" --yes
8888

8989
# Add/remove labels
90-
acli jira workitem edit --key RHIDP-123 --labels "demo,test-day" --yes
90+
acli jira workitem edit --key RHIDP-123 --labels "demo,rhdh-testday" --yes
9191
acli jira workitem edit --key RHIDP-123 --remove-labels "needs-info" --yes
9292

9393
# Edit description from file
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Feature Exploration Process
2+
3+
Checklist for reviewing and refining Features and Epics before sprint planning. This is the process followed during **Feature Exploration** meetings (not "Feature Refinement" — see Terminology note below).
4+
5+
## Terminology
6+
7+
The meeting is called **Feature Exploration**. The Jira workflow status is **Refinement**. These are different things:
8+
9+
- **Feature Exploration** — the meeting where team leads, architects, and engineers review candidate features, ask questions, and identify risks
10+
- **Refinement (Jira status)** — the workflow status a Feature enters after initial fields are set
11+
12+
Do not confuse the two. When referring to the meeting or process, use "Feature Exploration."
13+
14+
## Feature Exploration Checklist
15+
16+
Team leads, architects, and engineers review feature candidates to identify dependencies and risks.
17+
18+
### 1. Set Required Jira Fields
19+
20+
- **Priority** — set based on business value and urgency
21+
- **Team** — assign the owning scrum team
22+
- **Assignee** — assign a Feature Owner (single point of contact)
23+
24+
### 2. Cross-Team Engagement
25+
26+
- Identify if the feature requires work from other scrum teams
27+
- Engage with those teams to design the solution
28+
- Document dependencies in the Jira issue
29+
- Confirm the other teams are aware and have capacity
30+
31+
### 3. Labels for PM and Reporter Communication
32+
33+
- Add `needs-pm` if there are questions for Product Management
34+
- Add `needs-info` if there are questions for the feature reporter from Engineering
35+
- Use Feature Exploration meetings to ask unanswered questions after discussing in the Jira issue first
36+
37+
### 4. Update Jira with Decisions
38+
39+
- Document decisions, questions, and next steps in the issue (as comments, not description bloat)
40+
- Consider rescoping if the feature is too large to fit within a single release
41+
42+
### 5. Set Components
43+
44+
Components must be accurate — they affect Feature Freeze and Code Freeze queries.
45+
46+
- Validate components against the project's component list (see Component Validation below)
47+
- If the feature involves documentation, set the `Documentation` component and invoke the doc automation: **Feature → More → Create Doc EPIC from RHDHPlan**
48+
- Note: This is a Jira UI automation action. The agent should prompt the user to perform this step manually after the Feature is created.
49+
- Note: Doc EPIC automation is only available for the Documentation component. If it's not available, coordinate with the Docs team directly.
50+
- Some components may be excluded from Feature Freeze (FF) or Code Freeze (CF). Check the component's FF/CF status before assuming it blocks a freeze.
51+
52+
### 6. Set Labels
53+
54+
- `demo` — if the feature requires a customer-facing feature demo
55+
- `rhdh-testday` — if this feature should be tested as part of release test day
56+
- `rhdh-X.Y-candidate` — candidate for a specific release (e.g., `rhdh-2.1-candidate`)
57+
- `stretch` — stretch goal for the release (may be descoped)
58+
59+
### 7. Create Epics for Each Scrum Team
60+
61+
Refine the Feature and create Epic(s) for work to be delivered by each scrum team. For each Epic:
62+
63+
- Set the **Team** field to the owning scrum team
64+
- Assign an **Epic Owner** (Assignee) — work with the scrum team to identify
65+
- The Epic Owner is responsible for sizing the Epic
66+
67+
Set these fields on each Epic:
68+
69+
| Field | What to set |
70+
|-------|------------|
71+
| Component(s) | Validate against project component list |
72+
| Size | T-shirt size per the sizing guide |
73+
| Links (Dependencies) | Link or note key dependencies on other issues, teams, upstream work |
74+
75+
### 8. Size the Feature
76+
77+
- Feature Owner sizes the Feature by updating the **Size** field
78+
- Base Feature size on the sizing guide and the aggregate of Epic T-shirt sizes
79+
- If multiple L or XL Epics exist within a Feature, reassess scope — the Feature may be too large
80+
81+
### 9. Set Feature Status
82+
83+
After exploration is complete:
84+
85+
- Set Feature Status to **Backlog**
86+
- Ensure all child Epics are created and linked
87+
88+
## Component Validation
89+
90+
Components are critical for freeze queries and team routing. Validate proposed components against the live Jira data.
91+
92+
> Same validation pattern as `fields.md` Component Validation — duplicated here to avoid transitive loading.
93+
94+
```bash
95+
# List all components for a project
96+
curl -s -H "Authorization: Basic $(cat "$TOKEN_FILE")" \
97+
"https://redhat.atlassian.net/rest/api/3/project/RHIDP/components" | \
98+
python -c "import sys,json; [print(c['name']) for c in json.load(sys.stdin)]"
99+
100+
# For RHDHPLAN
101+
curl -s -H "Authorization: Basic $(cat "$TOKEN_FILE")" \
102+
"https://redhat.atlassian.net/rest/api/3/project/RHDHPLAN/components" | \
103+
python -c "import sys,json; [print(c['name']) for c in json.load(sys.stdin)]"
104+
```
105+
106+
When setting components during feature creation or refinement:
107+
108+
1. **Infer components** from the issue summary and description — match against known component names
109+
2. **Validate** the proposed components exist in the project
110+
3. **Flag mismatches** — if a component doesn't exist, suggest the closest match
111+
4. **Check FF/CF status** — note if a component is excluded from freeze queries (this affects release planning)
112+
113+
The agent should suggest components based on issue details, but always confirm with the user before setting them.
114+
115+
## Feature Demo and Test Day
116+
117+
Features that are customer-facing should be assessed for:
118+
119+
- **Demo requirement** — does this need a feature demo? If yes, add the `demo` label. A link to the Feature Demo is required at **Release Pending** status.
120+
- **Test day candidacy** — should this be tested during release test day? If yes, add the `rhdh-testday` label.
121+
122+
Ask about both during feature creation and refinement.
123+
124+
## Rescoping
125+
126+
If a feature is too large for a single release:
127+
128+
1. Consider splitting into multiple Features across releases
129+
2. Identify the minimum viable scope for the current release
130+
3. Document what's being deferred and why (as a comment on the Feature)
131+
4. Adjust the `rhdh-X.Y-candidate` label if the target release changes

skills/rhdh-jira/references/fields.md

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,13 @@ All lowercase, hyphen-separated. Labels are global to the Jira instance.
5050

5151
| Label | Usage |
5252
|-------|-------|
53-
| `demo` | Customer-facing Features/Epics requiring a feature demo |
54-
| `needs-info` | Release planning — needs more information |
53+
| `demo` | Customer-facing Features/Epics requiring a feature demo. See `references/feature-exploration.md`. |
54+
| `needs-info` | Release planning — needs more information from the feature reporter (Engineering → reporter) |
5555
| `needs-pm` | Release planning — needs product management input |
5656
| `stretch` | Feature is a stretch goal for a release |
57-
| `test-day` | Feature is a Test Day candidate |
58-
| `rhdh-n.n-candidate` | Feature is a candidate for release n.n (e.g., `rhdh-1.10-candidate`) |
57+
| `rhdh-testday` | Feature should be tested as part of release test day. Set during Feature Exploration. |
58+
| `quality` | Continuous improvement issues. **Excluded from code freeze release queries** — use this label (not `ci`) to ensure the issue doesn't block a code freeze. |
59+
| `rhdh-n.n-candidate` | Feature is a candidate for release n.n (e.g., `rhdh-2.1-candidate`). **Do not remove without PM approval** — removing this label can silently drop a feature from release tracking. |
5960
| `ci-fail` | Identifies CI failures |
6061
| `must-have` | Documentation team — must-have for release doc plan |
6162
| `nice-to-have` | Documentation team — nice-to-have for release doc plan |
@@ -79,18 +80,43 @@ Match by **name** in `issuelinks`, not by ID.
7980

8081
List all available link types with: `acli jira workitem link type`
8182

82-
## Components (RHIDP)
83+
## Components
8384

84-
Heavily used for filtering and routing. Key components:
85+
Heavily used for filtering, routing, and freeze queries. Components affect Feature Freeze and Code Freeze scope — some components may be excluded from FF/CF.
8586

86-
Key components (run `acli jira workitem search --jql "project = RHIDP AND component = 'X'" --count` for current counts):
87+
Key components in RHIDP (run `acli jira workitem search --jql "project = RHIDP AND component = 'X'" --count` for current counts):
8788

8889
Documentation, Security, UI, Lightspeed, Orchestrator, Continuous Improvement, Plugins, Topology
8990

9091
Query by component: `project = RHIDP AND component = 'Documentation'`
9192

9293
Components are not available via `--fields` on search. Use `--json` to get component data.
9394

95+
### Component Validation
96+
97+
When setting components during issue creation or refinement, validate against the project's live component list:
98+
99+
```bash
100+
# List all components for RHIDP
101+
curl -s -H "Authorization: Basic $(cat "$TOKEN_FILE")" \
102+
"https://redhat.atlassian.net/rest/api/3/project/RHIDP/components" | \
103+
python -c "import sys,json; [print(c['name']) for c in json.load(sys.stdin)]"
104+
105+
# List all components for RHDHPLAN
106+
curl -s -H "Authorization: Basic $(cat "$TOKEN_FILE")" \
107+
"https://redhat.atlassian.net/rest/api/3/project/RHDHPLAN/components" | \
108+
python -c "import sys,json; [print(c['name']) for c in json.load(sys.stdin)]"
109+
```
110+
111+
During creation grills:
112+
113+
1. Infer likely components from the issue summary and description
114+
2. Validate the proposed components exist in the target project
115+
3. If a component doesn't exist, suggest the closest match
116+
4. Confirm with the user before setting
117+
118+
See `references/feature-exploration.md` for the full Feature Exploration component checklist.
119+
94120
## Priorities
95121

96122
| Priority | Notes |

skills/rhdh-jira/references/refine.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,27 @@ For issues in the current sprint, verify they meet the "Planned" criteria:
142142

143143
Flag any sprint issue missing these as "not sprint-ready."
144144

145+
### Check 7 — Feature Exploration Readiness (when context is feature freeze triage or Features are in scope)
146+
147+
For Features, check against the Feature Exploration checklist (`references/feature-exploration.md`):
148+
149+
| Check | How to verify | Severity |
150+
|-------|---------------|----------|
151+
| Candidate label | Labels include `rhdh-X.Y-candidate` pattern | error — feature is invisible to release tracking |
152+
| Components set and valid | At least one component in `JiraComponentsField` | error |
153+
| `demo` label decision | If feature is customer-facing, check for `demo` label | warning — ask if demo is needed |
154+
| `rhdh-testday` label decision | If feature is customer-facing, check for `rhdh-testday` label | warning — ask if test day is needed |
155+
| Child Epics exist | Query `parent = {key}` for Epic children | error if status ≥ Backlog |
156+
| Cross-team dependencies noted | Check issue links for `Blocks`/`Depend` to other teams | warning if none and feature involves multiple teams |
157+
| Feature Demo link | Check for demo link in issue links (required at Release Pending) | warning if status approaching Release Pending |
158+
159+
**Freeze-aware filtering:** When running in feature freeze triage context, exclude issues labeled `quality` from the release query — continuous improvement issues are not subject to code freeze.
160+
161+
```jql
162+
-- Feature freeze query (excludes quality-labeled issues)
163+
project = RHDHPLAN AND issuetype = Feature AND labels in ("rhdh-X.Y-candidate") AND labels != "quality" AND status != Closed
164+
```
165+
145166
## Output
146167

147168
### Data Contract

skills/rhdh-jira/references/release.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ For each Feature, verify expected labels:
8787
| Label | Required when | Flag if missing |
8888
|-------|--------------|----------------|
8989
| `demo` | Customer-facing Feature | "Customer-facing Feature missing `demo` label — needs Feature Demo." |
90-
| `test-day` | Test Day candidate | Informational only — note if present. |
90+
| `rhdh-testday` | Test Day candidate | Informational only — note if present. |
9191
| Documentation component | Feature requires docs | "No Documentation component — will Docs team create an Epic?" |
9292

9393
### Step 5 — Readiness Score

0 commit comments

Comments
 (0)