Constants, field IDs, and formulas used across all phases.
Note: Project-level constants (Jira base URL, project key, component ID, GitHub repo, QA contact, labels, stale threshold, phase gates/models) are defined in
dev-helper.config.jsonand loaded byscripts/_config.sh. Personal secrets (email, API token, assignee ID) live in~/.jira-creds. See SETUP.md for configuration and SKILL.md for orchestrator / subagent behavior.
| Component | ID |
|---|---|
| User Interface | 35732 (default -- set in config) |
| Inventory | 35725 |
| Controller | 35727 |
| Name | ID |
|---|---|
| Blocker | 10000 |
| Critical | 10001 |
| Major | 10002 |
| Normal | 10003 |
| Minor | 10004 |
| Field | ID | Type | Notes |
|---|---|---|---|
| Git Pull Request | customfield_10875 |
string | Comma-separated URLs for multiple PRs |
| Ready | customfield_10484 |
option | Value: "True" |
These IDs are consistent across all ticket types (Bug, Story, Task, Epic, Vulnerability).
Each ticket type has its own status lifecycle. dev-helper drives transitions at specific phases; manual transitions are handled outside this skill.
| Status | Meaning | Set by |
|---|---|---|
New |
Not yet assigned | (initial) |
ASSIGNED |
Developer picked it up | Phase 1 (Triage) |
POST |
PR posted, not yet merged | Phase 10 (Send PR) |
MODIFIED |
PR merged, fix in codebase (not yet in build) | Phase 12 (Post-Merge) |
ON_QA |
Fix available in a build; QA can test | Manual / CI automation |
Verified |
QE contact confirmed the fix | QE team |
| Status | Meaning | Set by |
|---|---|---|
New |
Work not started | (initial) |
In Progress |
PR has been posted, not yet merged | Phase 10 (Send PR) |
Done |
PR merged | Phase 12 (Post-Merge) |
| Status | Meaning | Set by |
|---|---|---|
New |
No child story has started | (initial) |
Refinement |
(not used — skip) | n/a |
In Progress |
At least one child Story is In Progress | Phase 10 (when first child Story posts PR) |
Done |
All child Stories are Done | Phase 12 (when last child Story merges) |
dev-helper does not transition Epics directly; transitions are triggered automatically as child Stories advance.
Feature Requests group Epics (children are Epics, not Stories). Status tracking is mostly manual — dev-helper never auto-transitions Feature Requests. When encountered, skip all status transitions and note they exist.
| Phase | Bug | Story | Epic | Feature Request |
|---|---|---|---|---|
| Phase 1 — Triage | New → ASSIGNED |
(no change) | (no change) | (no change) |
| Phase 5 — Jira Track | (no change) | (no change) | (no change) | (no change) |
| Phase 10 — Send PR | ASSIGNED → POST |
New → In Progress (+ parent Epic check) |
(triggered by child) | (skip) |
| Phase 12 — Post-Merge | POST → MODIFIED |
In Progress → Done (+ all-children Epic check) |
(triggered by children) | (skip) |
Scripts chain through intermediate transitions automatically since Jira does not allow skipping states (e.g., New directly to Closed will fail).
Note: Transition IDs vary per project. Use jira-transition.sh discover <TICKET_KEY> to find available transitions.
Always read dynamically from build/release.conf at the project root:
grep '^RVERSION=' build/release.conf | cut -d= -f2Never hardcode the version -- always run the command above to get the current value.
- Sprint length: 3 weeks
- Board: Use Jira Agile API to find active sprint
- Capacity rule: if >70% of sprint time elapsed, attach to next sprint
Always query the active sprint dynamically:
.cursor/skills/dev-helper/scripts/jira-track.sh get-sprint-infoNever hardcode the sprint name -- it changes every 3 weeks.
| Points | Size | Description | Duration |
|---|---|---|---|
| 2 | XS | Minimal work, extremely simple | Couple hours to half a day |
| 5 | S | Simple task, short acceptance criteria | 1-2 days |
| 8 | M | Few difficult aspects, mostly clear, some research | 2-4 days |
| 13 | L | Complex (new area / research / complex impl) | 4-7 days |
| 21 | XL | Too big, should be broken into smaller tasks | >1 week |
Calculation inputs: elapsed time (ASSIGNED -> PR merged), investigation depth, work size.
Set during Phase 1 (Triage). Two independent axes.
| Level | Definition | Fast-track | Design phase | Investigation depth |
|---|---|---|---|---|
| clear | Solution known from ticket. Done this type before. | Auto-eligible | Skippable (user prompted if gated) | Minimal |
| complicated | Need investigation. Deterministic once understood. | Standard criteria | Per config | Full |
| complex | Solution shape unknown. Requirements may emerge. | Forbidden | Always mandatory | Full + Architect |
Default: complicated.
| Level | Definition | Rough SP mapping |
|---|---|---|
| small | 1-3 files, single area | 2-5 |
| medium | 4-10 files, crosses boundaries | 5-8 |
| large | 10+ files, multiple features | 8-21 |
Default: medium.
Work size does not change pipeline behavior. It helps Phase 5 set story points and guides sprint assignment.
| Ticket Type | Activity Type |
|---|---|
| Bug / Task | Quality / Stability / Reliability |
| Story / Epic | Product / Portfolio Work |
See MTV New Release Notes Process for field definitions.
If the Google Doc is inaccessible, ask the user for the content.
| Type | Pattern | Example |
|---|---|---|
| Bug | bug/MTV-XXXX |
bug/MTV-5187 |
| Story/Feature | feat/MTV-XXXX |
feat/MTV-4500 |
| Chore | chore/description |
chore/bump-types |
Embedded in phases/prompts/send-pr.md and phases/quick-ref.md P10. Enforced by
send-pr.sh (title must start with Resolves: MTV-):
Resolves: MTV-XXXX | short description
Embedded in phases/prompts/send-pr.md, phases/quick-ref.md P10, and
.cursor/rules/workflows/pr-preparation.mdc. Aligns with
.github/pull_request_template.md (Links, Description, Demo) plus Test plan.
## 📝 Links
- [MTV-XXXX]($JIRA_BASE_URL/browse/MTV-XXXX)
## 📝 Description
[One-sentence summary of the change.]
- [Key change 1]
- [Key change 2]
## 🎥 Demo
<!-- Screenshot or video of the fix -->
## Test plan
- [ ] [Test step 1]
- [ ] [Test step 2]Remote names are configured in dev-helper.config.json under github.forkRemote
and github.upstreamRemote. Defaults:
| Name | Points to | Config key |
|---|---|---|
origin |
Your fork | github.forkRemote |
upstream |
kubev2v/forklift-console-plugin |
github.upstreamRemote |
For investigation of backend behavior:
- Repo:
https://github.com/kubev2v/forklift - Language: Go
- Key paths:
pkg/controller/,pkg/provider/,pkg/apis/ - Use GitHub raw content URLs for fetching source files