| name | create-jira-issue |
|---|---|
| description | Create a Jira issue in the WF project using the Jira REST API. Use when you need to create Initiative, Epic, Story, Bug, Chore, Spike, or Task issues with required custom fields for Balanced Team, Work Type, and Focus Area. Supports optional parent key for nesting under epics. |
Create a Jira issue in the WF project using the Jira REST API with credentials from ~/.netrc.
/create-jira-issueThen provide issue details when prompted, or create directly if all details are provided in the request.
- Gathers Issue Details - Collects summary, issue type, balanced team, work type, focus area, and optional description
- Resolves Parent - If a parent issue key is provided, fetches its Balanced Team, Focus Area, and Work Type to use as defaults
- Maps Issue Types - Converts human-readable types (Story, Bug, etc.) to Jira API IDs
- Creates Issue - Uses Jira REST API with curl and netrc authentication
- Returns Issue Link - Provides the created issue key and URL
/create-jira-issue
Create a Jira issue in WF project with title "Fix login bug", type Bug, team "Cat Crew", and description "Users cannot log in after password reset"
Create a Jira story "Add retry logic to fax sender" under WF-40000, team Cat Crew, description "Retries on transient failures"
| Type | ID | Description |
|---|---|---|
| Chore | 10021 |
Maintenance tasks |
| Initiative | 10045 |
Sits above Epic, represents goals of a collection of Epics |
| Epic | 10000 |
Large initiatives, collections of related bugs, stories, and tasks |
| Story | 10019 |
New features or enhancements expressed as user goals |
| Bug | 10020 |
Defects or errors |
| Spike | 10044 |
Research/exploration to understand a problem space with a delivered artifact |
| Task | 10001 |
Small, distinct pieces of work |
| Sub-task | 10002 |
Part of a larger task |
All issues require:
- Summary — Issue title
- Balanced Team — Which team owns this (default: Cat Crew /
10423) - Work Type — Type of work (default: Product Health / Maintenance /
10744) - Focus Area — Business domain area (default: Company Foundations /
10609) - Issue Type — See table above (default: Chore /
10021)
When creating a Story, Bug, Task, etc. under an Epic, provide the parent key:
- Parent Key - e.g.
WF-12345
When a parent is specified:
- Fetch the parent issue:
GET /rest/api/3/issue/{key}?fields=customfield_10129,customfield_10286,customfield_10219 - Use its Balanced Team, Work Type, and Focus Area as defaults (user-provided values override)
- Set the
parentfield in the create payload:"parent": {"key": "WF-12345"}
| Team | Option ID | Typical Focus Area |
|---|---|---|
| Cat Crew | 10423 |
Company Foundations |
| Needs Triage | 10435 |
Company Foundations |
| Demand Ordering | 10676 |
New Orders |
| Clinical Intelligence | 10424 |
Clinical Qualification |
| DestroyTheFax | 10420 |
AI Fax Intake |
| DevOps | 10428 |
Company Foundations |
| Expanse | 10425 |
Multi-Actor Ordering |
| Jedi | 10500 |
Order Management & Notifications |
| PayPals | 10422 |
Payor & Patient Interactions |
| Foundations | 10709 |
Company Foundations |
| Nexus | 10581 |
Company Foundations |
| EligibilityBenefits | 10841 |
Supplier E&B |
| Labs | 10940 |
Company Foundations |
| Triaged to Guild | 10483 |
Company Foundations |
| Speedshop | 11043 |
Company Foundations |
| Work Type | Option ID |
|---|---|
| Product Health / Maintenance | 10744 |
| Strategy | 10742 |
| Customer Request | 10743 |
| Focus Area | Option ID |
|---|---|
| Company Foundations | 10609 |
| New Orders | 10601 |
| AI Fax Intake | 10602 |
| SSR App | 10604 |
| Multi-Actor Ordering | 10606 |
| Patient | 10607 |
| Lead Generation Engine | 10610 |
| Quantity | 10745 |
| Facility Onboarding & Activation | 10746 |
| Supplier E&B | 10775 |
| Authorization Management | 10776 |
| Clinical Qualification | 10777 |
| Order Management & Notifications | 10778 |
| Payor & Patient Interactions | 10780 |
| Payor Network Routing | 10782 |
| Member Dashboard | 10783 |
| Grow doc & Signature requests | 10784 |
| Grow Brightree integrated orders | 10827 |
Note: Option IDs were last verified 2026-04-08. If a new team or focus area is added in Jira, fetch a sample issue to discover its ID:
curl -s --netrc 'https://parachutehealth.atlassian.net/rest/api/3/search/jql' \ -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' \ -d '{"jql": "project=WF AND \"Balanced Team\"=\"NewTeamName\" ORDER BY created DESC", "maxResults": 1, "fields": ["customfield_10129","customfield_10286","customfield_10219"]}'
- Jira API credentials in
~/.netrcfile - curl command available
- jq for JSON parsing (required to extract the issue key from the response)
This skill uses the Jira API token stored in ~/.netrc:
machine parachutehealth.atlassian.net
login your-email@parachutehealth.com
password YOUR_API_TOKEN
API v3 requires descriptions in ADF. Plain-text shorthand for a single paragraph:
"description": {"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"YOUR TEXT HERE"}]}]}For multiple paragraphs, add multiple paragraph objects to content. For links:
{"type":"text","text":"link text","marks":[{"type":"link","attrs":{"href":"https://..."}}]}- Create endpoint:
POST https://parachutehealth.atlassian.net/rest/api/3/issue - Single-issue endpoint:
GET /rest/api/3/issue/{key}(still works — used for parent resolution) - Search endpoint:
POST /rest/api/3/search/jql(the oldGET /rest/api/3/searchhas been removed) - Authentication:
curl --fail-with-body --netrc(reads~/.netrc;--fail-with-bodyensures non-zero exit on HTTP errors while preserving the response for diagnostics) - Custom field IDs:
customfield_10129(Balanced Team),customfield_10286(Work Type),customfield_10219(Focus Area) - Custom field payload format:
"customfield_XXXXX": {"id": "OPTION_ID"}— look up IDs in the tables above
Always use --fail-with-body so curl returns a non-zero exit code on HTTP errors while still capturing the response body for diagnostics.
When the API returns an error:
- 401 Unauthorized — credentials in
~/.netrcare missing or invalid. Ask the user to verify their API token. - 400 Bad Request — usually a malformed payload or invalid field value. Surface the
errorMessagesanderrorsfields from the response body to the user. - 404 Not Found — the parent issue key doesn't exist. Confirm the key with the user.
- 422 / field-level errors — an option ID may be stale (team renamed, focus area added). Surface the error, then fetch a sample issue to discover the correct ID (see the lookup curl in the Note under Focus Areas).
Always show the raw error response to the user so they can diagnose unexpected failures.
Creates a Spike owned by Clinical Intelligence:
curl -s --fail-with-body --netrc 'https://parachutehealth.atlassian.net/rest/api/3/issue' \
-X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
"fields": {
"project": {"key": "WF"},
"issuetype": {"id": "10044"},
"summary": "Investigate flaky qualification specs",
"description": {"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"Several qualification specs fail intermittently in CI. Investigate root cause and fix."}]}]},
"customfield_10129": {"id": "10424"},
"customfield_10286": {"id": "10744"},
"customfield_10219": {"id": "10777"}
}
}'To nest under a parent epic, add "parent": {"key": "WF-12345"} inside fields.
✓ Created: WF-38980
URL: https://parachutehealth.atlassian.net/browse/WF-38980