Skip to content

Commit 429733a

Browse files
bryan-coxclaude
andcommitted
feat(jira): add modular skills for issue type creation
Add comprehensive skills for creating different Jira issue types with templates, best practices, and interactive workflows. Type-Specific Skills: - create-story: User story format, acceptance criteria, 3 Cs framework - create-epic: Epic structure, scope guidelines, parent linking - create-feature: Market problem framework, success criteria, strategic planning - create-task: Technical task structure, task vs story differentiation - create-bug: Bug report template, reproduction steps, severity handling Project-Specific Skills: - cntrlplane: CNTRLPLANE project conventions (stories, epics, features, tasks) - ocpbugs: OCPBUGS project conventions (bugs only) Team-Specific Skills: - hypershift: HyperShift team component selection (ARO/ROSA/HyperShift) Architecture: - No duplication across project/team skills (~1% structural duplication in type skills) - Each skill is self-contained and independently readable - Skills provide implementation guidance for Claude when executing /jira:create command 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent 2027cfb commit 429733a

File tree

8 files changed

+4300
-0
lines changed

8 files changed

+4300
-0
lines changed
Lines changed: 344 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,344 @@
1+
---
2+
name: CNTRLPLANE Jira Conventions
3+
description: Jira conventions for the CNTRLPLANE project used by OpenShift teams
4+
---
5+
6+
# CNTRLPLANE Jira Conventions
7+
8+
This skill provides conventions and requirements for creating Jira issues in the CNTRLPLANE project, which is used by various OpenShift teams for feature development, epics, stories, and tasks.
9+
10+
## When to Use This Skill
11+
12+
Use this skill when creating Jira items in the CNTRLPLANE project:
13+
- **Project: CNTRLPLANE** - Features, Epics, Stories, Tasks for OpenShift teams
14+
- **Issue Types: Story, Epic, Feature, Task**
15+
16+
This skill is automatically invoked by the `/jira:create` command when the project_key is "CNTRLPLANE".
17+
18+
## Project Information
19+
20+
### CNTRLPLANE Project
21+
**Full name:** Red Hat OpenShift Control Planes
22+
23+
**Key:** CNTRLPLANE
24+
25+
**Used for:** Features, Epics, Stories, Tasks, Spikes
26+
27+
**Used by:** Multiple OpenShift teams (HyperShift, Cluster Infrastructure, Networking, Storage, etc.)
28+
29+
## Version Requirements
30+
31+
**Note:** Universal requirements (Security Level: Red Hat Employee, Labels: ai-generated-jira) are defined in the `/jira:create` command and automatically applied to all tickets.
32+
33+
### Target Version (customfield_12319940)
34+
**Purpose:** Target release version for the feature/story/task
35+
36+
**Common default:** `openshift-4.21` (current development release)
37+
38+
**Override:** Teams may specify different versions based on their roadmap:
39+
- `openshift-4.20` (maintenance release)
40+
- `openshift-4.22` (future release)
41+
- `openshift-4.23` (future release)
42+
- Or team-specific version schemes
43+
44+
**Never set:**
45+
- Fix Version/s (`fixVersions`) - This is managed by the release team
46+
47+
### Version Override Handling
48+
49+
When user specifies a different version:
50+
1. Accept the version as provided
51+
2. Validate version exists using MCP tool `jira_get_project_versions` if needed
52+
3. If version doesn't exist, suggest closest match or ask user to confirm
53+
54+
## Component Requirements
55+
56+
**IMPORTANT:** Component requirements are **team-specific**.
57+
58+
Some teams require specific components, while others do not. The CNTRLPLANE skill does NOT enforce component selection.
59+
60+
**Team-specific component handling:**
61+
- Teams may have their own skills that define required components
62+
- For example, HyperShift team uses `hypershift` skill for component selection
63+
- Other teams may use different components based on their structure
64+
65+
**If component is not specified:**
66+
- Prompt user: "Does this issue require a component? (optional)"
67+
- If yes, ask user to specify component name
68+
- If no, proceed without component
69+
70+
## Issue Type Requirements
71+
72+
**Note:** Issue type templates and best practices are defined in type-specific skills (create-story, create-epic, create-feature, create-task).
73+
74+
### Stories
75+
- Must include acceptance criteria
76+
- May link to parent Epic (use `--parent` flag)
77+
78+
### Epics
79+
- **Epic Name field required:** `customfield_epicname` must be set (same value as summary)
80+
- May link to parent Feature (use `--parent` flag)
81+
82+
### Features
83+
- Should include market problem and success criteria (see `create-feature` skill)
84+
85+
### Tasks
86+
- May link to parent Story or Epic (use `--parent` flag)
87+
88+
**Note:** Security validation (credential scanning) is defined in the `/jira:create` command and automatically applied to all tickets.
89+
90+
## MCP Tool Integration
91+
92+
### For CNTRLPLANE Stories
93+
94+
```python
95+
mcp__atlassian__jira_create_issue(
96+
project_key="CNTRLPLANE",
97+
summary="<story summary>",
98+
issue_type="Story",
99+
description="<formatted description with AC>",
100+
components="<component name>", # if required by team
101+
additional_fields={
102+
"customfield_12319940": "openshift-4.21", # target version (default)
103+
"labels": ["ai-generated-jira"],
104+
"security": {"name": "Red Hat Employee"}
105+
}
106+
)
107+
```
108+
109+
### For CNTRLPLANE Epics
110+
111+
```python
112+
mcp__atlassian__jira_create_issue(
113+
project_key="CNTRLPLANE",
114+
summary="<epic summary>",
115+
issue_type="Epic",
116+
description="<epic description with scope and AC>",
117+
components="<component name>", # if required
118+
additional_fields={
119+
"customfield_12319940": "openshift-4.21",
120+
"customfield_epicname": "<epic name>", # required, same as summary
121+
"labels": ["ai-generated-jira"],
122+
"security": {"name": "Red Hat Employee"},
123+
"parent": {"key": "CNTRLPLANE-123"} # if --parent specified
124+
}
125+
)
126+
```
127+
128+
### For CNTRLPLANE Features
129+
130+
```python
131+
mcp__atlassian__jira_create_issue(
132+
project_key="CNTRLPLANE",
133+
summary="<feature summary>",
134+
issue_type="Feature",
135+
description="<feature description with market problem and success criteria>",
136+
components="<component name>", # if required
137+
additional_fields={
138+
"customfield_12319940": "openshift-4.21",
139+
"labels": ["ai-generated-jira"],
140+
"security": {"name": "Red Hat Employee"}
141+
}
142+
)
143+
```
144+
145+
### For CNTRLPLANE Tasks
146+
147+
```python
148+
mcp__atlassian__jira_create_issue(
149+
project_key="CNTRLPLANE",
150+
summary="<task summary>",
151+
issue_type="Task",
152+
description="<task description with what/why/AC>",
153+
components="<component name>", # if required
154+
additional_fields={
155+
"customfield_12319940": "openshift-4.21",
156+
"labels": ["ai-generated-jira"],
157+
"security": {"name": "Red Hat Employee"},
158+
"parent": {"key": "CNTRLPLANE-456"} # if --parent specified
159+
}
160+
)
161+
```
162+
163+
### Field Mapping Reference
164+
165+
| Requirement | MCP Parameter | Value |
166+
|-------------|---------------|-------|
167+
| Project | `project_key` | `"CNTRLPLANE"` |
168+
| Issue Type | `issue_type` | `"Story"`, `"Epic"`, `"Feature"`, `"Task"` |
169+
| Summary | `summary` | User-provided text |
170+
| Description | `description` | Formatted template content |
171+
| Component | `components` | Team-specific (optional) |
172+
| Target Version | `additional_fields.customfield_12319940` | `"openshift-4.21"` (default) |
173+
| Labels | `additional_fields.labels` | `["ai-generated-jira"]` (required) |
174+
| Security Level | `additional_fields.security` | `{"name": "Red Hat Employee"}` (required) |
175+
| Parent Link | `additional_fields.parent` | `{"key": "PARENT-123"}` |
176+
| Epic Name | `additional_fields.customfield_epicname` | Same as summary (epics only) |
177+
178+
## Interactive Prompts
179+
180+
**Note:** Detailed prompts for each issue type are defined in type-specific skills (create-story, create-epic, create-feature, create-task).
181+
182+
**CNTRLPLANE-specific prompts:**
183+
- **Target version** (optional): "Which version should this target? (default: openshift-4.21)"
184+
- **Component** (if required by team): Defer to team-specific skills
185+
- **Parent link** (for epics/tasks): "Link to parent Feature/Epic?" (optional)
186+
187+
## Examples
188+
189+
**Note:** All examples automatically apply universal requirements (Security: Red Hat Employee, Labels: ai-generated-jira) as defined in `/jira:create` command.
190+
191+
### Create CNTRLPLANE Story
192+
193+
```bash
194+
/jira:create story CNTRLPLANE "Enable pod disruption budgets for control plane"
195+
```
196+
197+
**CNTRLPLANE-specific defaults:**
198+
- Target Version: openshift-4.21
199+
200+
**Prompts:** See `create-story` skill for story-specific prompts
201+
202+
### Create CNTRLPLANE Epic
203+
204+
```bash
205+
/jira:create epic CNTRLPLANE "Improve cluster lifecycle management"
206+
```
207+
208+
**CNTRLPLANE-specific defaults:**
209+
- Target Version: openshift-4.21
210+
- Epic Name: Same as summary (required field)
211+
212+
**Prompts:** See `create-epic` skill for epic-specific prompts
213+
214+
### Create CNTRLPLANE Feature
215+
216+
```bash
217+
/jira:create feature CNTRLPLANE "Advanced observability capabilities"
218+
```
219+
220+
**CNTRLPLANE-specific defaults:**
221+
- Target Version: openshift-4.21
222+
223+
**Prompts:** See `create-feature` skill for feature-specific prompts
224+
225+
### Create CNTRLPLANE Task
226+
227+
```bash
228+
/jira:create task CNTRLPLANE "Refactor cluster controller reconciliation logic"
229+
```
230+
231+
**CNTRLPLANE-specific defaults:**
232+
- Target Version: openshift-4.21
233+
234+
**Prompts:** See `create-task` skill for task-specific prompts
235+
236+
## Error Handling
237+
238+
### Invalid Version
239+
240+
**Scenario:** User specifies a version that doesn't exist.
241+
242+
**Action:**
243+
1. Use `mcp__atlassian__jira_get_project_versions` to fetch available versions
244+
2. Suggest closest match: "Version 'openshift-4.21.5' not found. Did you mean 'openshift-4.21.0'?"
245+
3. Show available versions: "Available: openshift-4.20.0, openshift-4.21.0, openshift-4.22.0"
246+
4. Wait for confirmation or correction
247+
248+
### Component Required But Missing
249+
250+
**Scenario:** Team requires component, but user didn't specify.
251+
252+
**Action:**
253+
1. If team skill detected required components, show options
254+
2. Otherwise, generic prompt: "Does this issue require a component?"
255+
3. If yes, ask user to specify component name
256+
4. If no, proceed without component
257+
258+
### Sensitive Data Detected
259+
260+
**Scenario:** Credentials or secrets found in description.
261+
262+
**Action:**
263+
1. STOP issue creation immediately
264+
2. Inform user: "I detected potential credentials in the description."
265+
3. Show general location: "Found in: Technical details section"
266+
4. Do NOT echo the sensitive data back
267+
5. Suggest: "Please use placeholder values like 'YOUR_API_KEY'"
268+
6. Wait for user to provide sanitized content
269+
270+
### Parent Issue Not Found
271+
272+
**Scenario:** User specifies `--parent CNTRLPLANE-999` but issue doesn't exist.
273+
274+
**Action:**
275+
1. Attempt to fetch parent issue using `mcp__atlassian__jira_get_issue`
276+
2. If not found: "Parent issue CNTRLPLANE-999 not found. Would you like to proceed without a parent?"
277+
3. Offer options:
278+
- Proceed without parent
279+
- Specify different parent
280+
- Cancel creation
281+
282+
### MCP Tool Failure
283+
284+
**Scenario:** MCP tool returns an error.
285+
286+
**Action:**
287+
1. Parse error message for actionable information
288+
2. Common errors:
289+
- **"Field 'component' is required"** → Prompt for component (team-specific requirement)
290+
- **"Permission denied"** → User may lack permissions
291+
- **"Version not found"** → Use version error handling above
292+
- **"Issue type not available"** → Project may not support this issue type
293+
3. Provide clear next steps
294+
4. Offer to retry after corrections
295+
296+
### Wrong Issue Type
297+
298+
**Scenario:** User tries to create a bug in CNTRLPLANE.
299+
300+
**Action:**
301+
1. Inform user: "Bugs should be created in OCPBUGS. CNTRLPLANE is for stories/epics/features/tasks."
302+
2. Suggest: "Would you like to create this as a story in CNTRLPLANE, or as a bug in OCPBUGS?"
303+
3. Wait for user decision
304+
305+
**Note:** Jira description formatting (Wiki markup) is defined in the `/jira:create` command.
306+
307+
## Team-Specific Extensions
308+
309+
Teams using CNTRLPLANE may have additional team-specific requirements defined in separate skills:
310+
311+
- **HyperShift team:** Uses `hypershift` skill for component selection (HyperShift / ARO, HyperShift / ROSA, HyperShift)
312+
- **Other teams:** May define their own skills with team-specific components and conventions
313+
314+
Team-specific skills are invoked automatically when team keywords are detected in the summary or when specific components are mentioned.
315+
316+
## Workflow Summary
317+
318+
When `/jira:create` is invoked for CNTRLPLANE:
319+
320+
1.**CNTRLPLANE skill loaded:** Applies project-specific conventions
321+
2. ⚙️ **Apply CNTRLPLANE defaults:**
322+
- Target version: openshift-4.21 (default)
323+
- Epic name field (for epics)
324+
3. 🔍 **Check for team-specific skills:** If team keywords detected, invoke team skill (e.g., `hypershift`)
325+
4. 💬 **Interactive prompts:** Collect missing information (see type-specific skills for details)
326+
327+
**Note:** Universal requirements (security, labels), security validation, and issue creation handled by `/jira:create` command.
328+
329+
## Best Practices
330+
331+
1. **Version consistency:** Use common defaults (openshift-4.21) unless team specifies otherwise
332+
2. **Template adherence:** Defer to type-specific skills for templates (create-story, create-epic, etc.)
333+
3. **Link hierarchy:** Link epics to features, tasks to stories/epics using `--parent` flag
334+
4. **Descriptive summaries:** Use clear, searchable issue summaries
335+
5. **Component selection:** Defer to team-specific skills when applicable (e.g., HyperShift)
336+
337+
**Note:** Universal best practices (security, labels, formatting, credential scanning) are defined in the `/jira:create` command.
338+
339+
## See Also
340+
341+
- `/jira:create` - Main command that invokes this skill
342+
- `ocpbugs` skill - For OCPBUGS bugs
343+
- Team-specific skills (e.g., `hypershift`) - For team-specific conventions
344+
- Type-specific skills (create-story, create-epic, create-feature, create-task) - For issue type best practices

0 commit comments

Comments
 (0)