atlassian-itsm
$
npx mdskill add automateyournetwork/netclaw/atlassian-itsmManages ITSM workflows using Jira and Confluence for issue tracking and documentation
- Tracks incidents, changes, and tasks in IT operations using Jira
- Leverages Jira and Confluence APIs for issue and documentation management
- Uses predefined workflows for incident resolution and knowledge sharing
- Provides structured outputs and requires human confirmation for write actions
SKILL.md
.github/skills/atlassian-itsmView on GitHub ↗
---
name: atlassian-itsm
description: IT Service Management workflows using Jira for issue tracking and Confluence for documentation
license: Apache-2.0
mcp_servers:
- atlassian-mcp
tools_used:
- jira_search
- jira_get_issue
- jira_get_issue_comments
- jira_get_projects
- jira_get_fields
- jira_get_issue_types
- jira_create_issue
- jira_update_issue
- jira_transition_issue
- jira_get_transitions
- jira_add_comment
- jira_link_issues
- jira_get_issue_links
- jira_get_link_types
- jira_batch_create_issues
- confluence_search
- confluence_get_page
- confluence_get_spaces
- confluence_get_space
- confluence_get_page_comments
- confluence_create_page
- confluence_update_page
- confluence_add_comment
metadata:
openclaw:
requires:
bins: [uvx]
env: [JIRA_URL, JIRA_USERNAME, JIRA_API_TOKEN]
---
# Atlassian ITSM Skill
IT Service Management workflows using Jira for incident/change tracking and Confluence for runbooks, postmortems, and documentation.
## Purpose
This skill provides ITSM-focused workflows for network operations teams using Atlassian tools:
- **Jira**: Incident tracking, change requests, problem management, and task coordination
- **Confluence**: Runbook documentation, postmortem reports, and knowledge base maintenance
All write operations require human-in-the-loop confirmation per Constitution XIV.
## Jira Read Workflows (User Story 1)
### Discovering Projects and Issue Types
Before creating or searching issues, discover the available projects and their issue types.
**Step-by-step workflow:**
1. **List accessible projects**: Call `jira_get_projects` to see all projects the authenticated user can access
2. **Get project details**: Call `jira_get_project(project_key)` for specific project configuration
3. **List issue types**: Call `jira_get_issue_types(project_key)` to see available issue types (Bug, Task, Story, etc.)
4. **List available fields**: Call `jira_get_fields` to see standard and custom fields
**Example prompts:**
- "Show me all Jira projects I have access to"
- "What issue types are available in project NET?"
- "List the custom fields in our Jira instance"
### Searching Issues with JQL
Search issues using Jira Query Language (JQL) for powerful filtering.
**Step-by-step workflow:**
1. **Construct JQL query**: Build query using project, status, assignee, label, and date filters
2. **Execute search**: Call `jira_search(jql_query, max_results)` with the JQL string
3. **Review results**: Parse the returned issue list with key, summary, status, assignee
**Common JQL patterns:**
```
# Open issues in project NET assigned to me
project = NET AND assignee = currentUser() AND status != Done
# Critical/blocker issues created this week
project = NET AND priority IN (Critical, Blocker) AND created >= -7d
# Issues with specific label
project = NET AND labels = "outage"
# Unassigned issues in backlog
project = NET AND assignee IS EMPTY AND status = "To Do"
# Issues updated in the last 24 hours
project = NET AND updated >= -1d
```
**Example prompts:**
- "Show me open issues in project NET assigned to me"
- "Search for critical issues created this week in project OPS"
- "Find all issues with label 'network-outage'"
### Retrieving Issue Details
Get full details for a specific issue by key.
**Step-by-step workflow:**
1. **Get issue details**: Call `jira_get_issue(issue_key)` with the issue key (e.g., "NET-1234")
2. **Review issue data**: Parse fields including summary, description, status, priority, assignee, reporter, labels, components, fix versions
3. **Get comments**: Call `jira_get_issue_comments(issue_key)` to see discussion history
**Example prompts:**
- "Get details for issue NET-1234"
- "Show me the comments on issue OPS-567"
- "What is the current status and priority of NET-1234?"
## Confluence Read Workflows (User Story 2)
### Discovering Spaces
Before searching or creating pages, discover available Confluence spaces.
**Step-by-step workflow:**
1. **List all spaces**: Call `confluence_get_spaces` to see accessible spaces
2. **Get space details**: Call `confluence_get_space(space_key)` for specific space info
**Example prompts:**
- "Show me all Confluence spaces I have access to"
- "Get details for the NET-DOCS space"
### Searching Pages with CQL
Search Confluence pages using Confluence Query Language (CQL).
**Step-by-step workflow:**
1. **Construct CQL query**: Build query using space, title, text, and date filters
2. **Execute search**: Call `confluence_search(cql_query, max_results)`
3. **Review results**: Parse returned page list with title, space, ID
**Common CQL patterns:**
```
# Pages in space NET-DOCS containing "BGP"
space = "NET-DOCS" AND text ~ "BGP"
# Pages with title containing "runbook"
title ~ "runbook"
# Recently modified pages in a space
space = "NET-DOCS" AND lastModified > now("-7d")
```
**Example prompts:**
- "Search Confluence for 'BGP runbook'"
- "Find pages in NET-DOCS space containing 'OSPF'"
- "Show me recently modified pages in the network documentation space"
### Retrieving Page Content
Get full page content by ID or title+space combination.
**Step-by-step workflow:**
1. **Get page content**: Call `confluence_get_page(page_id)` or `confluence_get_page(space_key, title)`
2. **Review content**: Parse body, version number, and metadata
3. **Get comments**: Call `confluence_get_page_comments(page_id)` to see page comments
**Example prompts:**
- "Show me the 'Router Maintenance Procedures' page in NET-DOCS"
- "Get the content of Confluence page ID 123456"
- "What comments are on the BGP runbook page?"
## Jira Write Workflows (User Story 3)
### Creating Issues
Create new Jira issues with human-in-the-loop confirmation.
**Step-by-step workflow:**
1. **Query available types**: Call `jira_get_issue_types(project_key)` to verify available issue types
2. **Get available fields**: Call `jira_get_fields` to understand required/optional fields
3. **Present to operator**: Display the proposed issue details and request confirmation (Constitution XIV)
4. **Create issue**: After confirmation, call `jira_create_issue` with project, issue_type, summary, description, priority, labels, assignee
5. **Confirm creation**: Return the created issue key to the operator
**Example prompts:**
- "Create a Jira issue in project NET titled 'Router-01 BGP peer down' with priority Critical"
- "Log an incident in project OPS for the core switch fan failure"
**IMPORTANT**: Always present the full issue details to the operator and wait for explicit confirmation before calling `jira_create_issue`.
### Updating Issues
Update existing issue fields with human-in-the-loop confirmation.
**Step-by-step workflow:**
1. **Get current state**: Call `jira_get_issue(issue_key)` to see current field values (read-before-write per Constitution II)
2. **Present changes**: Display current vs proposed field values to operator
3. **Update issue**: After confirmation, call `jira_update_issue(issue_key, fields)` with the changed fields
4. **Confirm update**: Verify the update succeeded
**Updateable fields:** summary, description, priority, labels, assignee, components, fix_versions
**Example prompts:**
- "Update NET-1234 priority to Critical"
- "Add label 'outage' to issue OPS-567"
- "Assign NET-1234 to john.smith"
### Transitioning Issues
Move issues through workflow states.
**Step-by-step workflow:**
1. **Get available transitions**: Call `jira_get_transitions(issue_key)` to see valid transitions from current state
2. **Present options**: Show operator the available transitions (e.g., "Start Progress", "Resolve", "Close")
3. **Execute transition**: After confirmation, call `jira_transition_issue(issue_key, transition_id)`
4. **Confirm transition**: Verify the new status
**Example prompts:**
- "Transition NET-1234 to In Progress"
- "Mark issue OPS-567 as Resolved"
- "What workflow transitions are available for NET-1234?"
### Adding Comments
Add comments to issues for investigation updates.
**Step-by-step workflow:**
1. **Draft comment**: Prepare comment text with investigation findings
2. **Present to operator**: Show the proposed comment for confirmation
3. **Add comment**: Call `jira_add_comment(issue_key, body)` after confirmation
**Example prompts:**
- "Add a comment to NET-1234: 'Root cause identified - BGP hold timer expired due to high CPU'"
- "Update OPS-567 with: 'Fan replacement scheduled for maintenance window'"
## Confluence Write Workflows (User Story 4)
### Creating Pages
Create new Confluence pages with human-in-the-loop confirmation.
**Step-by-step workflow:**
1. **Verify target space**: Call `confluence_get_space(space_key)` to confirm space exists
2. **Present to operator**: Display proposed page title, space, and body content
3. **Create page**: After confirmation, call `confluence_create_page(space_key, title, body)`
4. **Confirm creation**: Return the created page URL to the operator
**Example prompts:**
- "Create a Confluence page in NET-DOCS titled 'Incident Postmortem: Router-01 Outage'"
- "Create a new runbook page for BGP troubleshooting in the network documentation space"
**IMPORTANT**: Always present the full page content to the operator and wait for explicit confirmation before calling `confluence_create_page`.
### Updating Pages
Update existing page content (creates a new version).
**Step-by-step workflow:**
1. **Get current page**: Call `confluence_get_page(page_id)` to retrieve current content and version (read-before-write)
2. **Present changes**: Show operator the proposed changes (diff view if possible)
3. **Update page**: After confirmation, call `confluence_update_page(page_id, title, body, version)` - note: version must be incremented
4. **Confirm update**: Verify the new version was created
**Example prompts:**
- "Update the 'Router Maintenance Procedures' page with the new reboot procedure"
- "Add a section to the BGP runbook about peer flapping troubleshooting"
### Adding Page Comments
Add comments to Confluence pages.
**Step-by-step workflow:**
1. **Draft comment**: Prepare comment text
2. **Present to operator**: Show the proposed comment for confirmation
3. **Add comment**: Call `confluence_add_comment(page_id, body)` after confirmation
**Example prompts:**
- "Add a comment to the postmortem page noting the action items are complete"
### Deleting Pages
Delete Confluence pages (requires explicit confirmation).
**Step-by-step workflow:**
1. **Get page details**: Call `confluence_get_page(page_id)` to show what will be deleted
2. **Explicit warning**: Warn operator this is a destructive action
3. **Delete page**: Only after explicit confirmation, call `confluence_delete_page(page_id)`
**IMPORTANT**: Page deletion is destructive. Require explicit confirmation including the page title.
## Cross-Product and Bulk Workflows (User Story 5)
### Linking Jira Issues
Create relationships between issues.
**Step-by-step workflow:**
1. **Get link types**: Call `jira_get_link_types` to see available link types (Blocks, Relates, Clones, etc.)
2. **Present to operator**: Show the proposed link between issues
3. **Create link**: Call `jira_link_issues(inward_issue, outward_issue, link_type)` after confirmation
4. **View links**: Call `jira_get_issue_links(issue_key)` to verify the link was created
**Example prompts:**
- "Link NET-1234 as blocking OPS-567"
- "Show me all issues linked to NET-1234"
- "What link types are available in Jira?"
### Bulk Issue Creation
Create multiple issues in a single batch operation.
**Step-by-step workflow:**
1. **Prepare issue list**: Collect all issue details (project, type, summary, description, priority)
2. **Present full batch**: Show operator ALL proposed issues for review
3. **Create batch**: After confirmation of the entire batch, call `jira_batch_create_issues(issues)`
4. **Report results**: Return all created issue keys
**Example prompts:**
- "Create 5 Jira issues in project NET for these network upgrade tasks"
- "Bulk create issues for each router in the maintenance list"
**IMPORTANT**: The entire batch must be confirmed before any issues are created.
### Incident-to-Postmortem Workflow
Cross-product workflow: Jira incident with linked Confluence postmortem.
**Step-by-step workflow:**
1. **Create Jira incident**: Following the issue creation workflow
2. **Create Confluence postmortem**: Create postmortem page in appropriate space
3. **Link documents**: Add the Confluence page URL to the Jira issue via remote link or description update
4. **Cross-reference**: Add the Jira issue key to the Confluence page
**Example prompts:**
- "Create an incident in Jira for the router-01 outage and a postmortem page in Confluence"
- "Link Confluence postmortem page 123456 to Jira issue NET-1234"
## GAIT Audit Logging
All Atlassian interactions must be logged to the GAIT audit trail via gait_mcp tools at skill invocation level.
### Logging Pattern
For each operation, log:
1. **Tool name**: Which Atlassian MCP tool was called
2. **Parameters**: Key parameters (issue key, project, search query)
3. **Result summary**: Success/failure, created item keys, record counts
### Example Log Entries
```
[GAIT] jira_search - JQL: "project = NET AND status != Done" - Found 23 issues
[GAIT] jira_get_issue - Issue: NET-1234 - Retrieved successfully
[GAIT] jira_create_issue - Project: NET, Type: Bug, Summary: "Router-01 BGP down" - Created: NET-1235
[GAIT] jira_transition_issue - Issue: NET-1234 - Transitioned: Open -> In Progress
[GAIT] confluence_create_page - Space: NET-DOCS, Title: "Postmortem: Router Outage" - Created: page_id=456789
```
### Session Requirements
- Start every Atlassian session with `gait_branch` to create an audit branch
- Record every meaningful interaction with `gait_record_turn`
- End sessions with `gait_log` to display the full audit trail
## Error Handling
### Common Errors
| Error | Cause | Resolution |
|-------|-------|------------|
| Connection failure | Atlassian instance unreachable | Check JIRA_URL/CONFLUENCE_URL and network connectivity |
| Authentication failure | Invalid token | Regenerate API token or PAT |
| Not found | Issue/page/project doesn't exist | Verify the key/ID is correct |
| Permission denied | Token lacks permissions | Check user's project/space permissions |
| Rate limited | Too many requests | Wait and retry with backoff |
| Invalid transition | Transition not available | Check `jira_get_transitions` for valid options |
| Validation error | Missing required fields | Check required fields with `jira_get_fields` |
### Graceful Degradation
- If only Jira is configured: Confluence tools are unavailable
- If only Confluence is configured: Jira tools are unavailable
- Always check tool availability before attempting operations
## Safety Checklist
Before any write operation:
- [ ] Read current state first (Constitution II: Read-Before-Write)
- [ ] Present changes to operator for confirmation (Constitution XIV: Human-in-the-Loop)
- [ ] Log the operation to GAIT audit trail (Constitution III: GAIT Logging)
- [ ] Verify the operation succeeded before reporting completion
## Example Workflows
### Incident Response Workflow
1. Search for similar past incidents: `jira_search` with relevant JQL
2. Create new incident issue: `jira_create_issue` (with confirmation)
3. Search for relevant runbook: `confluence_search`
4. Transition to In Progress: `jira_transition_issue` (with confirmation)
5. Add investigation updates: `jira_add_comment` (with confirmation)
6. Resolve and document: Update issue and create postmortem page
### Knowledge Base Maintenance
1. Search for outdated pages: `confluence_search` with date filters
2. Review page content: `confluence_get_page`
3. Update with current information: `confluence_update_page` (with confirmation)
4. Create related Jira task if major update needed: `jira_create_issue`
More from automateyournetwork/netclaw
- aap-automationRed Hat Ansible Automation Platform — inventory management, job template execution, project SCM sync, ad-hoc commands, host management, Galaxy content discovery. Use when automating infrastructure with Ansible, running playbooks, managing inventories, or searching for Ansible collections and roles.
- aap-edaEvent-Driven Ansible (EDA) — activation lifecycle, rulebook management, decision environments, event stream monitoring. Use when managing event-driven automation triggers, enabling/disabling activations, or reviewing EDA rulebooks.
- aap-lintansible-lint playbook and role validation — syntax checking, best practice enforcement, project-wide analysis, rule filtering. Use when validating Ansible playbooks, checking code quality, or enforcing automation best practices before deployment.
- aci-change-deploySafe ACI policy change deployment - ServiceNow CR lifecycle, pre/post-change fault baselines, APIC policy application, automatic rollback on fault delta, and GAIT audit trail. Use when deploying ACI policy changes, creating tenants or EPGs, pushing config to APIC, or running a change window with rollback protection.
- aci-fabric-auditComprehensive Cisco ACI fabric health audit - node status, tenant/VRF/BD/EPG policy review, contract analysis, fault triage, and endpoint learning verification. Use when auditing ACI fabric health, checking for faults, reviewing tenant policies, or running pre/post-change baselines on APIC.
- arista-cvpArista CloudVision Portal (CVP) automation via REST API — device inventory, events, connectivity monitoring, tag management (4 tools). Use when managing Arista devices, checking CloudVision events, monitoring network connectivity probes, or tagging devices in CVP.
- aruba-cx-configView and manage Aruba CX switch configurations, perform ISSU upgrades, and firmware operations
- aruba-cx-interfacesMonitor Aruba CX switch interface status, LLDP neighbors, and optical transceiver health
- aruba-cx-switchingView and manage Aruba CX switch VLANs and MAC address tables for Layer 2 operations
- aruba-cx-systemDiscover Aruba CX switch system information, firmware versions, and VSF topology