Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

JIRA

The JIRA provider syncs tasks (issues) from a configured JIRA project into the local filesystem. It does not call the JIRA REST API directly — instead it delegates to the claude CLI, which uses the Atlassian Rovo MCP server to fetch issues on your behalf. No API token is required in Banco.

Prerequisites

  • The claude CLI must be installed and available in your PATH
  • The Atlassian Rovo MCP server must be configured in your claude setup
  • If using Claude via AWS Bedrock, run claude interactively at least once to complete authentication before running banco sync

Configuration

Set interactively via banco provider add.

ParameterRequiredDescription
hostyesJIRA instance URL (e.g. https://yourorg.atlassian.net) — used to construct browse URLs
projectyesProject key to sync (e.g. ENG)
labelsnoList of labels to filter issues by — passed to the agent at fetch time; omit to fetch all
agent_backendyesAgent backend to use; only claude is supported

By default, only issues assigned to the calling user and not in Done status are synced. There are no config fields for these — they are built-in defaults.

Example configuration

providers:
  - name: jira
    config:
      host: https://yourorg.atlassian.net
      project: ENG
      agent_backend: claude

With labels filter and an alias (useful when syncing multiple projects):

providers:
  - name: jira
    alias: jira-sre
    config:
      host: https://yourorg.atlassian.net
      project: OPS
      labels:
        - SRE
        - platform
      agent_backend: claude

Directory structure

Tasks are synced flat under tasks/<provider>/:

tasks/
└── jira/
    ├── ENG-1 - Fix login bug.md
    └── ENG-42 - Improve onboarding flow.md

If an alias is configured, the alias is used in place of jira.

Task file format

Each task file carries a YAML frontmatter block with the issue metadata, followed by the file body (populated from a template if one exists, otherwise empty):

---
status: In Progress
type: Task
parent_id: ENG-10
---

parent_id is omitted for top-level issues. All three fields are updated automatically on each banco sync without touching the rest of the file.

Issue types

type reflects the JIRA issue type name exactly as returned by the Rovo MCP server. Common values include Epic, Story, Task, Sub-task, and Bug, but custom issue types are also supported.

Browsing

banco browse constructs issue URLs as {host}/browse/{id} using the host config value and the issue ID parsed from each filename.

Templates

New task files are initialized from the first matching template found under .banco/templates/tasks/: jira/TEMPLATE.mdtasks/TEMPLATE.md. See Templates for details.

Sync

After a successful sync, banco stores the timestamp in .banco/sync-state/<provider>. On every sync, all currently non-done issues are fetched.

After writing the fetched issues, banco reconciles local tasks: any local task whose status is not Done and whose ID was not in the fetched set is marked Done — it was completed on JIRA and disappeared from the non-done results. Tasks already Done locally are left untouched.

See banco sync for the full sync flow.

Syncing

banco sync           # sync all providers
banco sync jira      # sync only the jira provider (or use its alias)

If claude exits with an error, Banco will display the error output. If authentication is pending (e.g. first run with Bedrock), run claude interactively to complete login, then retry.