Jira works like Linear in Kiln: issues and comments start or continue work items, updates go back as comments, and the planning agent can create its roadmap in a Jira project.
Set up
Jira Cloud only.
- Create an OAuth 2.0 (3LO) app in the Atlassian developer console with the callback URL
<public URL>/oauth/jira/callbackand the scopesread:jira-work,write:jira-work,read:jira-user,manage:jira-webhookandoffline_access. SetJIRA_CLIENT_IDandJIRA_CLIENT_SECRET. - Connect Jira for the workspace. A Jira site admin approves the app. If that is someone else, send them an approval link: it expires in 7 days, and you can resend or revoke it. See Connections.
- Add a Jira webhook pointing at
POST /webhooks/jira?token=<token>for issue created, issue updated and comment created events, and store the token asJIRA_WEBHOOK_TOKEN. Kiln refuses calls that do not carry it, and refuses every call until it is set. Kiln also ignores repeatedX-Atlassian-Webhook-Identifiervalues. - Set
JIRA_BOT_ACCOUNT_IDto the Atlassian account ID that represents the factory. Assigning it, or mentioning it, starts an agent session. - Add
jirato the factory'sintegrations, with its projects. A factory uses Linear or Jira, not both:
integrations:
- type: jira
jira: { projects: [ENG] }For the tracker features below (comments, states, planning), Kiln reads JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN and JIRA_PROJECT_KEY and calls Jira's REST API v3 with basic auth. With JIRA_CLOUD_ID and JIRA_ACCESS_TOKEN (or the OAuth connection), Kiln can also comment, transition and change labels through the Atlassian API.
Starting work
| Event | Fires when |
|---|---|
agent_session_created |
Someone assigns the factory's account, or mentions it in an issue or comment. |
issue_created |
An issue is created. |
issue_labeled |
Labels are added. |
status_changed |
An issue changes status. status_id is the new status. |
Filter on project_keys, labels and issue_types; sessions also take keywords (case-insensitive), and status_changed takes status_ids. issue_types matches the issue type name (issue.fields.issuetype.name, such as Bug or Service Issue), case-insensitively. See Automation triggers.
---
triggers:
- provider: jira
event: agent_session_created
filter:
project_keys: [ENG]
keywords: [investigate, fix]
---Only new service issues in one project:
triggers:
- provider: jira
event: issue_created
filter: { project_keys: [FNLF], issue_types: ["Service Issue"] }The issue key, such as ENG-42, links the work item to the issue. Other comments on that issue continue the work item. Jira events reach every factory that opted in to Jira, so filter on project_keys.
What Kiln does in Jira
- Updates. Gate requests, reminders, "Ready to merge" and "Done" are posted as comments.
- Actions. Through the Atlassian API Kiln can post comments, transition an issue by status name, and add or remove labels.
- Replies. Comments on the issue continue the work item. They decide an open spec or preview gate, answer an open question, steer a running agent, or are added to the conversation. Jira users with an email map to the person with that email; the server's
identitiesoption (jira:<user>) also works. Replies decide a gate only when their author is one of its assignees; see Who may decide from a reply. - States. At hand-off, Kiln moves the issue through the first transition into the "In Progress" status category. On completion, it uses the first transition into the "Done" category.
- Duplicates. Triage reads the project's 20 most recently created issues to spot duplicates.
- Text. Kiln writes descriptions and comments in Atlassian Document Format, one paragraph per blank-line-separated block.
Planning
The planning agent can create its roadmap in the Jira project: a Task per epic, labeled epic, with a Sub-task for each piece of work. Each sub-task has an acceptance criteria checklist and a factory:<alias> label.