Get issue 23 from GitHub in the abc repo, find the key issues and make a fix.md, send it to xyz, set a one-on-one with xyz, and update the work in Trello.Fibonacci turns that into a workflow and runs it:
- The issue is read with its whole discussion.
abcis found among the repositories your token can see, so you don’t have to typeowner/abc. - fix.md is written by Claude from the issue, and travels as a real file: attached to the email and to the Trello card.
- xyz gets the email and a calendar invitation with a Google Meet link, at 10:00 on the next business day in your calendar’s time zone, because you didn’t name a time.
- The card for issue 23 moves to In Progress and gets a comment saying what happened.
- If you didn’t give xyz’s email, Fibonacci asks for it as an input before the run. It never guesses an address.
The GitHub tools read. The only GitHub writes are reviewing and commenting on a pull request. Changes go to Jira and Trello, and messages to people, where your org’s governance rules can hold or block them.
Connect your accounts
Each person adds their own credentials to their Secrets Locker (Dashboard → Secrets Locker; Organization → Integrations → Developer tools walks through each one). Runs act as that person, with their permissions.- GitHub
- Jira
- Trello
- Email and calendar
For reading, give the token read access to Metadata, Contents, Issues, Pull requests, Commit statuses and Checks on the repositories you want. Add Pull requests: write only if workflows should post reviews or PR comments. If your organization uses SAML single sign-on, authorize the token for it (Configure SSO → Authorize).
GitHub: read, check, maintain, document
Every GitHub tool takes the repository the way you’d write it:owner/name, a github.com link, or just the name. Issues and pull requests can be 23, #23, owner/name#23 or their link. Something that isn’t a number (23a) is refused before anything is called, with an explanation.
Jira and Trello: keep the timeline current
- Names, not IDs. Boards by name or link, lists by name (
"In Progress"), cards by link or, with a board, by their name ("#23"finds “#23 Login times out”). If a name matches two cards or no list, the step stops and says which ones exist. - Markdown in, Markdown out. Jira’s rich-text format is converted both ways, so headings, lists and code blocks survive.
- Statuses move the right way.
status: "Done"uses the transition that leads to Done from where the issue is; if there isn’t one, the error lists where it can go.
Files, people and meetings
The example, as a workflow
This is the shape the generator produces for the request at the top (you can also write it yourself, in the API or the SDK):{"xyz_email": "xyz@acme.com", "trello_board": "Sprint 12"}. The issue read, the 1:1 and the card move happen in parallel; the email and the Trello note wait for fix.md.
Templates work inside lists and objects too:
["{{input.xyz_email}}"] resolves to the address.More recipes
Triage: open bugs into one Jira ticket
Triage: open bugs into one Jira ticket
List open GitHub issues in acme/api labelled bug, rank them by impact, and open a Jira task in OPS with the ranking, assigned to me.
github_list_issues (labels bug) → LLM ranks them → jira_create_issue with the ranking as the description and assignee: "me". Save the workflow and run it whenever you triage, or from your own scheduler through the execute API.Red main branch → Slack
Red main branch → Slack
Check CI on main in acme/web; if it’s failing, DM me which checks failed and the last three commits.
github_get_checks (no ref = default branch) → github_list_commits (limit: 3) → slack_send_message to @me with {{checks.summary}}, with a condition on {{checks.state}} equals failure so nothing is sent when it’s green.Standup from yesterday's commits
Standup from yesterday's commits
Summarize what I committed in acme/api since yesterday, post it to #standup, and mark the card “Token refresh” on Sprint 12 done.
github_list_commits with since: "{{yesterday}}" and author → LLM summary → slack_send_message and trello_update_card (list: "Done").Stale pull requests
Stale pull requests
List PRs in acme/web with no update for a week, with who they’re waiting on, and email me the list.
github_list_pull_requests gives days_since_update and requested_reviewers → LLM writes the digest → gmail_send to me.Release notes from the code
Release notes from the code
Write release notes for acme/api from commits since 2026-10-01 and the CHANGELOG, and attach them to the Jira release ticket OPS-140.
github_list_commits + github_get_file (CHANGELOG.md) → LLM → jira_add_comment with attachment_name: "release-notes.md".A workflow has a fixed set of steps: it can summarize a list into one ticket, message or document, but not create one ticket per item. For per-item work, run a workflow once per item through the API.
Governance for developer data
- Issue text is untrusted. Anyone who can open an issue writes it, so
github_get_issueandgithub_list_issueslabel their outputinternalanduntrusted. With the rule template “Approve sends that mix web content with internal data” active, an email or comment built from an issue waits for a human. That stops a prompt injection hidden in an issue from mailing out your code. - Side effects are honest. Reads are
read; creating or moving tickets and cards iswrite; comments, emails and invitations areegress(they reach people). Aread_onlyrole can run the read tools and nothing else. - Every call is on the receipt.
GET /runs/{id}/authorizationshows each tool call, its labels and the rule that decided it.