JiraSnap
Create Jira tasks from VS Code in seconds.


JiraSnap is a focused capture extension: minimal prompts, automatic context, and reliable issue creation even when parent assignment fails.
Quick Start (Fast Path)
- Complete required setup settings (
jirasnap.baseUrl, jirasnap.email, jirasnap.apiToken, jirasnap.projectKey).
- In any editor tab, press
cmd+shift+j.
- Enter title and optional note.
This shortcut is the primary workflow for JiraSnap and the fastest way to capture work without leaving your coding flow.
If cmd+shift+j triggers the wrong command (for example Invalid JSON, please check manually), open Keyboard Shortcuts, search cmd+shift+j, and keep only JiraSnap: Capture Task.
Before First Use (Required Setup)
JiraSnap will not create issues until your Jira account and project settings are configured.
- Set required connection settings:
jirasnap.baseUrl
jirasnap.email
jirasnap.apiToken
jirasnap.projectKey
- Confirm your Jira user can create issues in that project.
- If your company enforces additional required Jira fields, map them in
jirasnap.customFieldsJson (see section below).
If required settings are missing, JiraSnap shows an error and offers to open settings.
Features
- Fast command-driven capture from inside the editor
- Optional parent epic assignment
- Automatic fallback to unparented task if parent is invalid
- Automatic label (
jirasnap)
- Optional quick note + captured context
- repo
- branch
- file path
- selected line range
- timestamp
- Open captures view using configurable JQL
- Status bar shortcut for quick access
Commands
JiraSnap: Capture Task
JiraSnap: Open Captures
Default keybinding (primary workflow):
Requirements
- Jira Cloud base URL
- Jira account email
- Jira API token
- Jira project key
Create an Atlassian API token at:
Extension Settings
Required settings:
jirasnap.baseUrl
jirasnap.email
jirasnap.apiToken
jirasnap.projectKey
Optional settings:
jirasnap.defaultEpicKey
- accepts issue key (example:
TNT-1900) or full browse URL
jirasnap.capturesJql
- default:
labels = jirasnap ORDER BY created DESC
jirasnap.showStatusBarOpenCaptures
jirasnap.customFieldsJson
- default:
{}
- JSON object merged into Jira issue fields for company-specific required fields
- example:
{"customfield_11302":{"value":"Yes"},"customfield_12345":"ABC"}
jirasnap.capitalizableFieldId
- default: empty
- legacy optional single-field shortcut; use
jirasnap.customFieldsJson for multiple fields
jirasnap.capitalizableValue
Company-Specific Required Fields (Important)
Many Jira instances require custom fields beyond summary/project/type. These are different for every company (and sometimes per project/issue type).
Use jirasnap.customFieldsJson to map those fields for your account.
Example:
{
"customfield_11302": { "value": "Yes" },
"customfield_12345": "ABC"
}
How to find your required fields:
- In Jira web, open the project and choose Create issue (same project and issue type you use in JiraSnap, usually
Task).
- Note every field marked with a red asterisk (
*) — those are required.
- Open browser DevTools (
F12 or Cmd+Option+I), go to the Network tab, and filter by XHR or search for issue.
- Submit the create form. A request to
/rest/api/2/issue or /rest/api/3/issue will appear.
- Click that request, open the Payload (or Request Body) tab, and copy the JSON. The keys that look like
customfield_12345 with their values are exactly what you need.
- Paste those key/value pairs into
jirasnap.customFieldsJson in VS Code settings.
Common value shapes:
- Text field:
"customfield_12345": "Some text"
- Single select:
"customfield_12345": { "value": "Yes" }
- Multi select:
"customfield_12345": [{ "value": "Option A" }, { "value": "Option B" }]
- User picker:
"customfield_12345": { "accountId": "<jira-account-id>" }
- Number:
"customfield_12345": 5
Legacy note:
jirasnap.capitalizableFieldId and jirasnap.capitalizableValue are kept for backward compatibility, but jirasnap.customFieldsJson is the recommended approach.
How It Works
- Run
JiraSnap: Capture Task.
- Enter title and optional quick note.
- JiraSnap builds Jira ADF description with captured context.
- JiraSnap attempts to create task with parent if configured.
- If parent is rejected, JiraSnap retries without parent.
- JiraSnap returns a clickable issue link.
Installation
Install from Marketplace
Install from VSIX (local)
- In VS Code Extensions view, open
... menu.
- Select
Install from VSIX....
- Choose
jirasnap-<version>.vsix (for example jirasnap-0.0.4.vsix).
Development install
- Clone repository.
- Run
npm install.
- Press
F5 to launch Extension Development Host.
Usage Example
- Set required settings.
- Run
JiraSnap: Capture Task.
- Enter:
- Title:
Fix missing cache invalidation on product update
- Quick note:
Observed while testing update endpoint
- JiraSnap creates the task and offers
Open Issue.
Troubleshooting
Authentication failed
- verify
jirasnap.email and jirasnap.apiToken
Permission denied
- your Jira account cannot create issues in that project
Project key not found or project create failure
- verify
jirasnap.projectKey
- Parent/epic errors
- clear or correct
jirasnap.defaultEpicKey; JiraSnap can create without parent
- Jira custom field errors
- confirm
jirasnap.capitalizableFieldId and option value for your Jira instance
jirasnap.customFieldsJson is invalid JSON
- set
jirasnap.customFieldsJson to a valid JSON object string
- example:
{"customfield_11302":{"value":"Yes"}}
- Description format errors
- JiraSnap sends ADF automatically; if this appears again, validate against the latest packaged version
Invalid JSON, please check manually appears when pressing cmd+shift+j
- this is usually a keybinding conflict with another command
- confirm JiraSnap works from Command Palette:
JiraSnap: Capture Task
- open Keyboard Shortcuts, search
cmd+shift+j, keep only JiraSnap: Capture Task
- remove conflicting bindings such as
json.shortcut and workbench.action.search.toggleQueryDetails
Validation
npm run lint
npm run build
npm test
npm run smoke (live Jira call, requires credentials in env)
Smoke environment variables:
JIRASNAP_BASE_URL
JIRASNAP_PROJECT_KEY
JIRASNAP_PARENT_KEY
JIRASNAP_SKIP_PARENT=1
JIRASNAP_EMAIL / JIRASNAP_API_TOKEN (or JIRA_EMAIL / JIRA_API_TOKEN)
Real Jira Validation Checklist
Use this before publishing or after major changes:
- Create a task with a valid parent epic.
- Create a task with no parent configured.
- Create a task with an invalid parent and confirm fallback succeeds.
- Open captures from the status bar or
JiraSnap: Open Captures.
- Verify created issue includes:
- label
jirasnap
- capitalizable field set to
Yes
- captured description context
Project Docs
License
MIT. See LICENSE.