Jira Cloud by @altf1be
Manage Atlassian Jira Cloud issues, comments, attachments, and workflow transitions via the REST API.
Setup
- Get an API token from https://id.atlassian.com/manage-profile/security/api-tokens
- Set environment variables (or create
.envin{baseDir}):
JIRA_HOST=yourcompany.atlassian.net
JIRA_EMAIL=you@example.com
JIRA_API_TOKEN=your-api-token
JIRA_DEFAULT_PROJECT=PROJ
- Install dependencies:
cd {baseDir} && npm install
Commands
Issues
# List issues (optionally filter by project, status, assignee)
node {baseDir}/scripts/jira.mjs list --project PROJ --status "In Progress" --assignee "currentUser()"
# Create an issue
node {baseDir}/scripts/jira.mjs create --project PROJ --type Task --summary "Fix login bug" --description "Users can't log in" --priority High
# Read issue details
node {baseDir}/scripts/jira.mjs read --key PROJ-123
# Update issue fields
node {baseDir}/scripts/jira.mjs update --key PROJ-123 --summary "New title" --priority Low
# Delete issue (requires --confirm)
node {baseDir}/scripts/jira.mjs delete --key PROJ-123 --confirm
# Search with JQL
node {baseDir}/scripts/jira.mjs search --jql "project = PROJ AND status = Open ORDER BY created DESC"
Comments
# List comments on an issue
node {baseDir}/scripts/jira.mjs comment-list --key PROJ-123
# Add a comment
node {baseDir}/scripts/jira.mjs comment-add --key PROJ-123 --body "This is ready for review"
# Update a comment
node {baseDir}/scripts/jira.mjs comment-update --key PROJ-123 --comment-id 10001 --body "Updated comment"
# Delete a comment (requires --confirm)
node {baseDir}/scripts/jira.mjs comment-delete --key PROJ-123 --comment-id 10001 --confirm
Attachments
# List attachments on an issue
node {baseDir}/scripts/jira.mjs attachment-list --key PROJ-123
# Upload an attachment
node {baseDir}/scripts/jira.mjs attachment-add --key PROJ-123 --file ./screenshot.png
# Delete an attachment (requires --confirm)
node {baseDir}/scripts/jira.mjs attachment-delete --attachment-id 10001 --confirm
Workflow Transitions
# List available transitions for an issue
node {baseDir}/scripts/jira.mjs transitions --key PROJ-123
# Move issue to a new status (by transition ID or name)
node {baseDir}/scripts/jira.mjs transition --key PROJ-123 --transition-id 31
node {baseDir}/scripts/jira.mjs transition --key PROJ-123 --transition-name "Done"
Dependencies
commander— CLI frameworkdotenv— environment variable loading- Node.js built-in
fetch(requires Node >= 18)
Security
- Email + API token auth (Basic auth via base64 encoding)
- No secrets or tokens printed to stdout
- All delete operations require explicit
--confirmflag - Path traversal prevention for file uploads
- Built-in rate limiting with exponential backoff retry
- Lazy config validation (only checked when a command runs)
Author
Abdelkrim BOUJRAF — ALT-F1 SRL, Brussels 🇧🇪 X: @altf1be