···11+---
22+verify:
33+ literal:
44+ header: Authorization
55+ secret: $FORGEJO_WEBHOOK_SECRET
66+payload:
77+ contentType: json
88+---
99+1010+You have received a Forgejo webhook from the **{{ payload.repository.full_name }}** repository.
1111+1212+Event: `{{ headers["x-gitea-event"] }}`
1313+1414+{% if headers["x-gitea-event"] == "push" %}
1515+**{{ payload.pusher.full_name | default: payload.pusher.login }}** pushed {{ payload.commits | size }} commit(s) to `{{ payload.ref }}`:
1616+1717+{% for commit in payload.commits %}
1818+- `{{ commit.id | slice: 0, 7 }}` {{ commit.message }} — {{ commit.author.name }}
1919+{% endfor %}
2020+2121+Summarize what changed across these commits and whether any follow-up is warranted.
2222+{% endif %}
2323+2424+{% if headers["x-gitea-event"] == "pull_request" %}
2525+Pull request **{{ payload.action }}**: [#{{ payload.number }} {{ payload.pull_request.title }}]({{ payload.pull_request.html_url }})
2626+2727+- Opened by: **{{ payload.pull_request.user.login }}**
2828+- Merging `{{ payload.pull_request.head.label }}` → `{{ payload.pull_request.base.label }}`
2929+- State: {{ payload.pull_request.state }}
3030+3131+{{ payload.pull_request.body }}
3232+3333+Summarize the intent of this pull request and note any action required.
3434+{% endif %}
3535+3636+{% if headers["x-gitea-event"] == "issues" %}
3737+Issue **{{ payload.action }}**: [#{{ payload.issue.number }} {{ payload.issue.title }}]({{ payload.issue.html_url }})
3838+3939+- Opened by: **{{ payload.issue.user.login }}**
4040+{% if payload.issue.labels %}
4141+- Labels: {% for label in payload.issue.labels %}{{ label.name }}{% unless forloop.last %}, {% endunless %}{% endfor %}
4242+{% endif %}
4343+4444+{{ payload.issue.body }}
4545+4646+Summarize this issue and determine whether any immediate action or response is needed.
4747+{% endif %}
4848+4949+{% if headers["x-gitea-event"] == "issue_comment" %}
5050+**{{ payload.comment.user.login }}** commented on [#{{ payload.issue.number }} {{ payload.issue.title }}]({{ payload.issue.html_url }}):
5151+5252+{{ payload.comment.body }}
5353+5454+Note this comment and whether it indicates a blocker, a resolution, or a request for action.
5555+{% endif %}
5656+5757+{% if headers["x-gitea-event"] == "release" %}
5858+Release **{{ payload.action }}**: [{{ payload.release.tag_name }}]({{ payload.release.html_url }})
5959+6060+- Name: {{ payload.release.name }}
6161+- Pre-release: {{ payload.release.prerelease }}
6262+6363+{{ payload.release.body }}
6464+6565+Note this release and whether any follow-up tasks are needed (e.g. deployment, announcements, or documentation).
6666+{% endif %}
+54
examples/lures/github.lure
···11+---
22+verify:
33+ hmac:
44+ header: X-Hub-Signature-256
55+ prefix: "sha256="
66+ secret: $GITHUB_WEBHOOK_SECRET
77+payload:
88+ contentType: json
99+---
1010+1111+You have received a GitHub webhook from the **{{ payload.repository.full_name }}** repository.
1212+1313+Event: `{{ headers["x-github-event"] }}`
1414+1515+{% if headers["x-github-event"] == "push" %}
1616+**{{ payload.pusher.name }}** pushed {{ payload.commits | size }} commit(s) to `{{ payload.ref }}`:
1717+1818+{% for commit in payload.commits %}
1919+- `{{ commit.id | slice: 0, 7 }}` {{ commit.message }} — {{ commit.author.name }}
2020+{% endfor %}
2121+2222+Summarize what changed across these commits and whether any follow-up is warranted (e.g. deployment, documentation update, or review).
2323+{% endif %}
2424+2525+{% if headers["x-github-event"] == "pull_request" %}
2626+Pull request **{{ payload.action }}**: [#{{ payload.pull_request.number }} {{ payload.pull_request.title }}]({{ payload.pull_request.html_url }})
2727+2828+- Opened by: **{{ payload.pull_request.user.login }}**
2929+- Merging `{{ payload.pull_request.head.ref }}` → `{{ payload.pull_request.base.ref }}`
3030+- Status: {{ payload.pull_request.state }}{% if payload.pull_request.draft %} (draft){% endif %}
3131+3232+{{ payload.pull_request.body }}
3333+3434+Summarize the intent of this pull request and note any action required based on its current state.
3535+{% endif %}
3636+3737+{% if headers["x-github-event"] == "issues" %}
3838+Issue **{{ payload.action }}**: [#{{ payload.issue.number }} {{ payload.issue.title }}]({{ payload.issue.html_url }})
3939+4040+- Opened by: **{{ payload.issue.user.login }}**
4141+- Labels: {% for label in payload.issue.labels %}{{ label.name }}{% unless forloop.last %}, {% endunless %}{% endfor %}
4242+4343+{{ payload.issue.body }}
4444+4545+Summarize this issue and determine whether any immediate action or response is needed.
4646+{% endif %}
4747+4848+{% if headers["x-github-event"] == "pull_request_review" %}
4949+**{{ payload.review.user.login }}** submitted a **{{ payload.review.state }}** review on [#{{ payload.pull_request.number }} {{ payload.pull_request.title }}]({{ payload.pull_request.html_url }}).
5050+5151+{{ payload.review.body }}
5252+5353+Note the outcome of this review and whether the pull request is now ready to merge, needs further changes, or requires discussion.
5454+{% endif %}
+54
examples/lures/linear.lure
···11+---
22+verify:
33+ hmac:
44+ header: Linear-Signature
55+ secret: $LINEAR_WEBHOOK_SECRET
66+payload:
77+ contentType: json
88+---
99+1010+You have received a Linear webhook.
1111+1212+Event: `{{ payload.type }}` / `{{ payload.action }}`
1313+1414+{% if payload.type == "Issue" %}
1515+Issue **{{ payload.action }}**: [{{ payload.data.identifier }} {{ payload.data.title }}]({{ payload.data.url }})
1616+1717+- Team: **{{ payload.data.team.name }}**
1818+- State: {{ payload.data.state.name }}
1919+- Priority: {% case payload.data.priority %}{% when 0 %}None{% when 1 %}Urgent{% when 2 %}High{% when 3 %}Medium{% when 4 %}Low{% endcase %}
2020+{% if payload.data.assignee %}- Assignee: **{{ payload.data.assignee.name }}**{% endif %}
2121+{% if payload.data.cycle %}- Cycle: {{ payload.data.cycle.name }}{% endif %}
2222+2323+{{ payload.data.description }}
2424+2525+Summarize this issue update and note any action required, such as following up with the assignee or adjusting priority.
2626+{% endif %}
2727+2828+{% if payload.type == "Comment" %}
2929+**{{ payload.data.user.name }}** commented on [{{ payload.data.issue.identifier }} {{ payload.data.issue.title }}]({{ payload.data.issue.url }}):
3030+3131+{{ payload.data.body }}
3232+3333+Summarize this comment in context of the issue and note whether it indicates a blocker, a decision, or a request for action.
3434+{% endif %}
3535+3636+{% if payload.type == "Project" %}
3737+Project **{{ payload.action }}**: **{{ payload.data.name }}**
3838+3939+- State: {{ payload.data.state }}
4040+{% if payload.data.description %}
4141+{{ payload.data.description }}
4242+{% endif %}
4343+4444+Note this project update and whether it affects any related issues or priorities.
4545+{% endif %}
4646+4747+{% if payload.type == "Cycle" %}
4848+Cycle **{{ payload.action }}**: **{{ payload.data.name }}** ({{ payload.data.startsAt | slice: 0, 10 }} – {{ payload.data.endsAt | slice: 0, 10 }})
4949+5050+- Team: **{{ payload.data.team.name }}**
5151+- Progress: {{ payload.data.completedIssueCountHistory | last }} of {{ payload.data.issueCountHistory | last }} issues completed
5252+5353+Note this cycle update and whether any issues need attention before the cycle ends.
5454+{% endif %}
+44
examples/lures/omi.lure
···11+---
22+verify:
33+ literal:
44+ query: uid
55+ secret: $OMI_USER_ID
66+payload:
77+ contentType: json
88+---
99+1010+You have received an Omi memory webhook.
1111+1212+{% if payload.type == "memory_created" or payload.type == "memory_processing_started" %}
1313+A new memory has been created.
1414+1515+**Summary:** {{ payload.memory.structured.overview }}
1616+1717+{% if payload.memory.structured.title %}
1818+**Title:** {{ payload.memory.structured.title }}
1919+{% endif %}
2020+2121+{% if payload.memory.structured.action_items and payload.memory.structured.action_items != empty %}
2222+**Action items identified:**
2323+{% for item in payload.memory.structured.action_items %}
2424+- {{ item.description }}{% if item.completed %} ✓{% endif %}
2525+{% endfor %}
2626+{% endif %}
2727+2828+{% if payload.memory.structured.events and payload.memory.structured.events != empty %}
2929+**Events mentioned:**
3030+{% for event in payload.memory.structured.events %}
3131+- {{ event.title }} ({{ event.start }})
3232+{% endfor %}
3333+{% endif %}
3434+3535+Review this memory. If there are open action items, note them clearly and suggest next steps. If events were mentioned, confirm whether they need to be scheduled.
3636+{% endif %}
3737+3838+{% if payload.type == "memory_updated" %}
3939+A memory has been updated.
4040+4141+**Summary:** {{ payload.memory.structured.overview }}
4242+4343+Review the updated memory and note any changes to action items or events that require follow-up.
4444+{% endif %}
+29
examples/lures/tangled.lure
···11+---
22+verify:
33+ hmac:
44+ header: X-Tangled-Signature-256
55+ prefix: "sha256="
66+ secret: $TANGLED_WEBHOOK_SECRET
77+payload:
88+ contentType: json
99+---
1010+1111+You have received a Tangled webhook.
1212+1313+Event: `{{ headers["x-tangled-event"] }}`
1414+1515+{% if headers["x-tangled-event"] == "push" %}
1616+**{{ payload.pusher }}** pushed to `{{ payload.ref }}` in **{{ payload.repository.name }}**.
1717+1818+- Before: `{{ payload.before | slice: 0, 7 }}`
1919+- After: `{{ payload.after | slice: 0, 7 }}`
2020+2121+{% if payload.commits %}
2222+Commits:
2323+{% for commit in payload.commits %}
2424+- `{{ commit.id | slice: 0, 7 }}` {{ commit.message }} — {{ commit.author.name }}
2525+{% endfor %}
2626+{% endif %}
2727+2828+Summarize what changed in this push and whether any follow-up is warranted.
2929+{% endif %}