AGENT SKILL

jira-conflict-detect

Check if a story is already being worked on by another team member. Use before starting any story implementation.

License 许可
MIT
最近更新
2026-05-12
Stars
★ 8
Forks
1

01 前言 Front Matter

name
jira-conflict-detect
description
Check if a story is already being worked on by another team member. Use before starting any story implementation.

03 SKILL.md 正文

JIRA — Multi-Member Conflict Detection

Goal

Perform a 3-layer conflict check before any team member claims a story. Prevents two developers from working on the same story simultaneously.


Why 3 Layers?

A single check can be bypassed or stale. Three independent signals give high confidence:

Layer Signal What It Catches
1 JIRA ticket status + assignee Story is formally In Progress or In Review
2 Git branch existence Story branch was already created (even if JIRA not updated)
3 Confluence doc version lock Story references a planning doc version that's been superseded

Activation

Ask: "Which story are you checking?" (accept S-ID, JIRA key, or title)

Load the story's JIRA key from local story file frontmatter.


Layer 1: JIRA Status Check

curl -s \
  "{jira_url}/rest/api/3/issue/{JIRA-KEY}" \
  -u "{email}:{api_token}" \
  -H "Accept: application/json" | python3 -c "
import sys, json
d = json.load(sys.stdin)
fields = d['fields']
status = fields['status']['name']
assignee = (fields.get('assignee') or {}).get('displayName', 'Unassigned')
print(f'Status: {status}')
print(f'Assignee: {assignee}')
"

Conflict conditions:

  • Status is In Progress AND assignee is NOT the current user → 🔴 CONFLICT
  • Status is In Review → 🟡 WARNING (story may be done, verify)
  • Status is Done → 🔴 CONFLICT (story is complete, don't re-implement)
  • Status is To Do or Open AND unassigned → ✅ CLEAR

Layer 2: Git Branch Check

git fetch --all --quiet
git branch -a | grep -i "{JIRA-KEY}"

Conflict conditions:

  • Branch exists remotely → 🔴 CONFLICT (someone created the branch already)
  • Branch exists locally but not remotely → 🟡 WARNING (stale local branch from previous attempt)
  • No branch found → ✅ CLEAR

Layer 3: Confluence Version Consistency (if Confluence is configured)

Load the story's prd_version from frontmatter.

If Confluence integration is configured, check if the PRD page version on Confluence matches the local prd_version embedded in the story.

curl -s \
  "{confluence_url}/rest/api/content/{prd_page_id}?expand=version" \
  -u "{email}:{api_token}" \
  -H "Accept: application/json" | python3 -c "
import sys, json
d = json.load(sys.stdin)
print('Confluence PRD version:', d['version']['number'])
print('Story based on version:', '{local_prd_version}')
"

Conflict conditions:

  • Confluence version > local story's prd_version → 🟡 WARNING (PRD was updated after stories were generated; stories may be stale)

Conflict Report

Present a single consolidated verdict:

Conflict Check — {JIRA-KEY}: {story_title}
════════════════════════════════════════
Layer 1 — JIRA Status:    [✅ CLEAR | 🟡 WARNING | 🔴 CONFLICT]
  Status: {status}, Assignee: {assignee}

Layer 2 — Git Branch:     [✅ CLEAR | 🟡 WARNING | 🔴 CONFLICT]
  {branch found or not}

Layer 3 — Doc Version:    [✅ CLEAR | 🟡 WARNING | N/A]
  {version comparison}
════════════════════════════════════════
VERDICT: [✅ SAFE TO CLAIM | 🟡 PROCEED WITH CAUTION | 🔴 DO NOT PROCEED]

If Conflict Detected

🔴 DO NOT PROCEED. Report:

"Story {JIRA-KEY} appears to be actively worked on by {assignee} (status: {status}). Starting implementation risks merge conflicts and duplicate work. Recommended: sync with your team or pick a different story."

🟡 Caution:

"There's a potential conflict signal. Review before claiming the story. If you're sure it's safe, you may proceed."

✅ Clear:

"No conflicts detected. Safe to claim and implement. Shall I create the branch now? (github-create-branch)"

04 同仓库更多 Skills