home / skills / grandcamel / jira-assistant-skills / jira-relationships

jira-relationships skill

/skills/jira-relationships

This skill helps you manage Jira issue relationships and blockers, visualize dependencies, and clone issues with their links.

npx playbooks add skill grandcamel/jira-assistant-skills --skill jira-relationships

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
11.5 KB
---
name: "jira-issue-relationships"
description: "Issue linking, blockers, and dependency analysis. TRIGGERS: 'what's blocking', 'what is blocking', 'is blocked by', 'link issues', 'link to', 'blockers for', 'depends on', 'clone issue', 'clone with', 'blocking chain', 'dependency graph', 'show dependencies', 'get blockers', 'relates to', 'duplicates'. Use for issue dependencies, relationships, and cloning. NOT FOR: epic linking (use jira-agile), field updates (use jira-issue), bulk cloning (use jira-bulk)."
version: "1.0.0"
author: "jira-assistant-skills"
license: "MIT"
allowed-tools: ["Bash", "Read", "Glob", "Grep"]
---

# jira-relationships

Issue linking and dependency management for JIRA - create, view, and analyze issue relationships.

## Risk Levels

| Operation | Risk | Notes |
|-----------|------|-------|
| Get link types | `-` | Read-only |
| Get links/blockers | `-` | Read-only |
| Get dependencies | `-` | Read-only |
| Link statistics | `-` | Read-only |
| Create link | `-` | Easily reversible (can unlink) |
| Remove link | `!` | Link data lost, can recreate |
| Bulk link | `!` | Many links created, can remove |
| Clone issue | `-` | Creates new issue, can delete |
| Clone with subtasks | `!` | Creates multiple issues |

**Risk Legend**: `-` Safe, read-only | `!` Caution, modifiable | `!!` Warning, destructive but recoverable | `!!!` Danger, irreversible

## When to use this skill

Use this skill when you need to:
- Link issues together (blocks, duplicates, relates to, clones)
- View issue dependencies and blockers
- Find blocker chains and critical paths
- Analyze issue relationships and dependencies
- Get link statistics for issues or projects
- Bulk link multiple issues
- Clone issues with their relationships

## What this skill does

**IMPORTANT:** Always use the `jira-as` CLI. Never run Python scripts directly.

This skill provides issue relationship operations:

1. **Get Link Types**: View available link types in JIRA instance
   - Lists all configured link types
   - Shows inward/outward descriptions
   - Filter by name pattern

2. **Link Issues**: Create relationships between issues
   - Semantic flags for common types (--blocks, --relates-to, etc.)
   - Support for all JIRA link types
   - Optional comment on link creation
   - Dry-run mode for preview

3. **View Links**: See all relationships for an issue
   - Filter by direction (inward/outward)
   - Filter by link type
   - Shows linked issue status and summary

4. **Remove Links**: Delete issue relationships
   - Remove specific links between issues
   - Remove all links of a type
   - Dry-run and confirmation modes

5. **Blocker Analysis**: Find blocking dependencies
   - Direct blockers for an issue
   - Recursive blocker chain traversal
   - Circular dependency detection
   - Critical path identification

6. **Dependency Graphs**: Visualize relationships
   - Export to DOT format for Graphviz
   - Export to Mermaid diagrams
   - Export to PlantUML format
   - Export to D2 diagrams (Terrastruct)
   - Transitive dependency tracking

7. **Link Statistics**: Analyze link patterns
   - Stats for single issue or entire project
   - Link breakdown by type and direction
   - Find orphaned issues (no links)
   - Identify most-connected issues
   - Status distribution of linked issues

8. **Bulk Operations**: Link multiple issues at once
   - Link from JQL query results
   - Progress tracking
   - Skip existing links

9. **Clone Issues**: Duplicate issues with relationships
   - Copy fields to new issue
   - Create "clones" link to original
   - Optionally copy subtasks and links

## Available Commands

| Command | Description |
|---------|-------------|
| `jira-as relationships link-types` | List available link types |
| `jira-as relationships link` | Create link between issues |
| `jira-as relationships get-links` | View links for an issue |
| `jira-as relationships unlink` | Remove issue links |
| `jira-as relationships get-blockers` | Find blocker chain (recursive) |
| `jira-as relationships get-dependencies` | Find all dependencies |
| `jira-as relationships stats` | Analyze link statistics for issues/projects |
| `jira-as relationships bulk-link` | Bulk link multiple issues |
| `jira-as relationships clone` | Clone issue with links |

All commands support `--help` for full documentation.

## Common Options

All commands support these common options:

| Option | Description |
|--------|-------------|
| `-o/--output FORMAT` | Output format (see table below) |
| `--help` | Show help message and exit |

### Output Formats by Command

| Command | Supported Formats |
|---------|-------------------|
| `link-types` | text, json |
| `link` | text, json |
| `get-links` | text, json |
| `unlink` | text, json |
| `get-blockers` | text, json |
| `get-dependencies` | text, json, mermaid, dot, plantuml, d2 |
| `stats` | text, json |
| `bulk-link` | text, json |
| `clone` | text, json |

## Examples

### Quick Start - Common Operations

```bash
# View available link types in your JIRA instance
jira-as relationships link-types
jira-as relationships link-types --filter block
jira-as relationships link-types --output json

# Create links using semantic flags
jira-as relationships link PROJ-1 --blocks PROJ-2
jira-as relationships link PROJ-1 --is-blocked-by PROJ-2   # Inverse direction
jira-as relationships link PROJ-1 --duplicates PROJ-2
jira-as relationships link PROJ-1 --clones PROJ-2          # Mark as clone
jira-as relationships link PROJ-1 --relates-to PROJ-2
jira-as relationships link PROJ-1 --type "Blocks" --to PROJ-2

# View and remove links
jira-as relationships get-links PROJ-123
jira-as relationships get-links PROJ-123 --direction outward
jira-as relationships unlink PROJ-1 PROJ-2
jira-as relationships unlink PROJ-1 PROJ-2 --dry-run
jira-as relationships unlink PROJ-1 --type blocks --all

# Clone an issue with its relationships
jira-as relationships clone PROJ-123 --clone-subtasks -l  # -l is short for --clone-links
jira-as relationships clone PROJ-123 -p OTHER  # -p is short for --to-project
jira-as relationships clone PROJ-123 --summary "Custom summary"
jira-as relationships clone PROJ-123 --no-link  # Skip creating "clones" link
```

### Advanced - Blocker Analysis & Statistics

```bash
# Find blocker chains for sprint planning
jira-as relationships get-blockers PROJ-123 --recursive
jira-as relationships get-blockers PROJ-123 --recursive --include-done
jira-as relationships get-blockers PROJ-123 -r --depth 3  # Limit recursion depth (0 = unlimited)
jira-as relationships get-blockers PROJ-123 -r --depth 0  # Unlimited depth
jira-as relationships get-blockers PROJ-123 -d inward  # -d/--direction: inward or outward

# Analyze dependencies (with link type filtering)
jira-as relationships get-dependencies PROJ-123
jira-as relationships get-dependencies PROJ-123 -t blocks,relates  # -t/--type for filtering

# Link statistics - multiple modes
# KEY_OR_PROJECT: optional positional argument for issue key or project key
# -p/--project: alternative option to specify project for project-wide analysis
jira-as relationships stats PROJ-123                       # Single issue stats (positional arg)
jira-as relationships stats PROJ                           # Project-wide stats (positional arg)
jira-as relationships stats -p PROJ                        # Project-wide stats (-p/--project option)
jira-as relationships stats --jql "type = Epic"            # JQL-filtered stats
jira-as relationships stats -p PROJ -t 20                  # Show top 20 connected (-t/--top)
jira-as relationships stats -p PROJ --max-results 100      # Limit issues analyzed

# Bulk link issues from JQL query (--output json for JSON output)
jira-as relationships bulk-link --jql "project=PROJ AND fixVersion=1.0" --relates-to PROJ-500 --dry-run
jira-as relationships bulk-link --issues PROJ-1,PROJ-2,PROJ-3 --blocks PROJ-100
jira-as relationships bulk-link --issues PROJ-1,PROJ-2 --blocks PROJ-100 --output json
jira-as relationships bulk-link --jql "sprint in openSprints()" --relates-to PROJ-500 --skip-existing  # Skip already linked
```

### Visualization - Dependency Graphs

```bash
# Export for documentation (Mermaid for GitHub/GitLab)
jira-as relationships get-dependencies PROJ-123 --output mermaid

# Export for publication (Graphviz)
jira-as relationships get-dependencies PROJ-123 --output dot > deps.dot
dot -Tpng deps.dot -o deps.png

# Export for PlantUML
jira-as relationships get-dependencies PROJ-123 --output plantuml > deps.puml

# Export for D2/Terrastruct
jira-as relationships get-dependencies PROJ-123 --output d2 > deps.d2
d2 deps.d2 deps.svg
```

## Exporting Dependency Graphs

Use `jira-as relationships get-dependencies` with `--output` flag to generate diagrams:
- Formats: `text` (default), `json`, `mermaid` (GitHub docs), `dot` (Graphviz), `plantuml`, `d2`
- All formats include status-based coloring and link type labels
- Run `jira-as relationships get-dependencies --help` for rendering instructions

## Link Types

Standard JIRA link types and when to use them:

| Link Type | Outward | Inward | When to Use |
|-----------|---------|--------|-------------|
| **Blocks** | blocks | is blocked by | Sequential dependencies: Task A must finish before B starts |
| **Duplicate** | duplicates | is duplicated by | Mark redundant issues; close the duplicate |
| **Relates** | relates to | relates to | General association; cross-team awareness |
| **Cloners** | clones | is cloned by | Issue templates; multi-platform variants |

**Link Direction:** When A blocks B, A is "outward" (blocks) and B is "inward" (is blocked by).
Use `--blocks` when source issue blocks target; use `--is-blocked-by` when source is blocked by target.

**Note:** Issue links are labels only - they do not enforce workflow rules. Combine with automation or team discipline.

## Exit Codes

| Code | Description |
|------|-------------|
| 0 | Success |
| 1 | Error (validation failed, API error, or issue not found) |

## Troubleshooting

### "Issue does not exist" error
- Verify the issue key format is correct (e.g., PROJ-123)
- Check that you have permission to view the issue
- Confirm the project exists in your JIRA instance

### "Link type not found" error
- Run `jira-as relationships link-types` to see available link types
- Link type names are case-sensitive in some JIRA instances
- Custom link types may have different names than standard ones

### "Permission denied" when creating links
- Ensure you have "Link Issues" permission in the project
- Some projects may restrict who can create certain link types

### Bulk link operations timing out
- Reduce the number of issues in a single operation
- Use `--max-results` to limit JQL query results
- Consider breaking large operations into smaller batches

### Clone operation fails
- Verify you have "Create Issues" permission in the target project
- Check that required fields for the target project are satisfied
- Some fields may not be cloneable (e.g., custom field restrictions)

### Circular dependency detected
- The blocker analysis command automatically detects and reports cycles
- Review the blocker chain to identify and break the cycle
- Consider whether the blocking relationship is correctly modeled

## Configuration

Requires JIRA credentials via environment variables (`JIRA_SITE_URL`, `JIRA_EMAIL`, `JIRA_API_TOKEN`).

## Architecture Patterns

For strategic guidance on blocker chains, circular dependencies, cross-project linking, and visualization strategies, see [Patterns Guide](docs/PATTERNS.md).

## Related skills

- **jira-issue**: For creating and updating issues
- **jira-lifecycle**: For transitioning issues through workflows
- **jira-search**: For finding issues to link
- **jira-agile**: For epic and sprint management

Overview

This skill manages JIRA issue relationships: linking, blocker analysis, dependency graphs, and cloning with relationships. It helps you create and remove semantic links, find blocking chains and critical paths, and export dependency diagrams for documentation. Use the included CLI commands (via jira-as) to perform read-only inspections or controlled link and clone actions.

How this skill works

The skill inspects JIRA link types and existing links for an issue or project, traverses dependency chains recursively, and generates statistics. It can create and remove links using semantic flags (blocks, is-blocked-by, duplicates, relates-to, clones), perform bulk linking from JQL or issue lists, and clone issues optionally copying subtasks and links. Exports support text, JSON, mermaid, dot, plantuml, and d2 formats for visualization.

When to use it

  • Model sequential dependencies (task A blocks task B) or mark duplicates and related items
  • Discover direct and transitive blockers when planning sprints or releases
  • Export dependency graphs for documentation or architecture reviews
  • Bulk link many issues from a JQL result or a list of keys
  • Clone an issue while preserving relationships and subtasks for cross-project work

Best practices

  • Always run commands through the jira-as CLI wrapper rather than raw scripts
  • Use dry-run and confirmation flags before bulk linking or unlinking
  • Filter link types and recursion depth when analyzing large graphs to avoid noise
  • Respect project permissions and required fields when cloning into another project
  • Break large bulk operations into smaller batches to avoid timeouts

Example use cases

  • Find the full blocker chain for PROJ-123 and export it as a mermaid diagram for the sprint board
  • Link a set of issues to a release ticket using bulk-link with a JQL query and skip-existing to avoid duplicates
  • Clone a template issue into another project including subtasks and create a clones link back to the original
  • Run stats for a project to identify orphaned issues and the most-connected backlog items
  • Detect circular dependencies within a feature and report the cycle for remediation

FAQ

Can I undo link creations?

Yes—links can be removed. Use unlink for single links or remove by type; bulk unlinking should be done with care and preferably after a dry-run.

Will links enforce workflow rules?

No—issue links are metadata only. They do not enforce transitions; combine links with automation rules if you need enforced behavior.

Which output formats support diagrams?

get-dependencies supports mermaid, dot (Graphviz), plantuml, and d2 in addition to text and JSON for further rendering.