walnut-trigger SKILL.md skillA
walnut-trigger from evanzhang008/open-walnut is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.
mdr add evanzhang008/open-walnut/walnut-trigger@git:20261015.714b0bePins git:20261015.714b0be in mdr.lock. Pin the fingerprint instead.
- Audit grade
- A, 17 of 17 checks passed
- Kind
- SKILL.md skill
- Repository
- evanzhang008/open-walnut
- Path
src/data/skills/walnut-trigger/SKILL.md- Versions recorded
- 7
- Latest version
- git:20261015.714b0be, committed Oct 15, 2026
- First version recorded
- Oct 4, 2026
- Size
- 16,136 bytes
- Repository stars
- 34
- License
- MIT
Watch something with a small script and act when it changes: write a check the daemon runs every few minutes, and get a prompt delivered into this session when it fires. Use when the user says "tell me when", "let me know if", "watch for", "keep an eye on", "as soon as X happens", "poll until", or wants to be pinged on new mail / PR comments / build results / a file appearing. Also when the user says "snooze until", "wait until", "park this until", "come back to this when". Use it on your own…
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
# Trigger
A trigger is a **check script + an interval + a prompt + a description**. The daemon on the host
runs the script; when it says something happened, Walnut delivers the prompt into
a session (the same conversation, resumed if it has gone quiet; a new session on
the same task only if none can be resumed). You write the script, test it, arm it.
Nothing polls inside your session.
## The contract
The script reads ONE JSON object on stdin and prints ONE JSON object as the
**LAST line of stdout**. Log freely above that line.
```
stdin : {"state": <what you printed last run, or null>, "lastFireAt": "<ISO>|null", "now": "<ISO>"}
stdout: {"fire": true, "items": [{"id": "PR-123#c9", "title": "..."}], "input": "...", "state": {"cursor": "..."}}
{"fire": false, "state": {"cursor": "..."}}
```
- **`items` vs a bare fire.** With `items`, the daemon dedups on `id`: only ids it
has never delivered count, so a run whose ids are all known is quiet. Use it
whenever the thing you watch has identity (a comment, a message, a file, a
build). With **no** `items`, `fire: true` fires EVERY time it is true, so only
do that when the script itself decided "this is new".
…Read the whole file at its exact version.
How to install
mdr add evanzhang008/open-walnut/walnut-trigger@sha256:0ef3ff5787a208e2The line at the top of this page pins the label git:20261015.714b0be, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
[](https://markdownregistry.com/a/art_nbwciyfwk2zkr3z6)
2 badge image fetches in 30 days. What the badge shows.
Versions
The registry has recorded 7 versions of this file, between Oct 4, 2026 and Oct 15, 2026, about one every 2 days.
| version | committed | commit | size | audit | |
|---|---|---|---|---|---|
| git:20261015.714b0be latest | 2026-10-15 | 714b0be | 16,136 B | A | view · diff |
| git:20261011.d0cd814 | 2026-10-11 | d0cd814 | 15,846 B | A | view · diff |
| git:20261007.5e5bbbf | 2026-10-07 | 5e5bbbf | 14,768 B | A | view · diff |
| git:20261007.1cfe0a1 | 2026-10-07 | 1cfe0a1 | 12,831 B | A | view · diff |
| git:20261007.36e926e | 2026-10-07 | 36e926e | 12,813 B | A | view · diff |
| git:20261007.6f4881e | 2026-10-07 | 6f4881e | 13,096 B | A | view · diff |
| git:20261004.be5ae48 | 2026-10-04 | be5ae48 | 11,319 B | A | view |
Audit of the latest version
- pass: Frontmatter block present
- pass: Frontmatter declares a name
- pass: Frontmatter declares a description
- pass: Size between 200 bytes and 200 KB (16136 bytes)
- pass: No zero-width or bidi control characters
- pass: No instruction hidden inside an HTML comment
- pass: No link to an exfiltration or paste host
- pass: No credential-shaped string
- pass: No instruction to send local credentials anywhere
- pass: No text hidden with inline styles
- pass: No prompt-injection phrasing
- pass: No curl or wget piped into a shell
- pass: No recursive delete of root, home or parent
- pass: No instruction to read or print local credentials
- pass: No base64 blob over 200 characters
- pass: No link to a raw IP address
- pass: No script tag
Source
evanzhang008/open-walnut · 34 stars · license MIT · pushed 2026-10-22 · branch main
API
GET https://markdownregistry.com/api/v1/artifacts/art_nbwciyfwk2zkr3z6 GET https://markdownregistry.com/api/v1/resolve?ref=evanzhang008/open-walnut/walnut-trigger GET https://markdownregistry.com/api/v1/blob/0ef3ff5787a208e2f1ff7f51660ad17d94ccd5b7c588c30e5b0c77fcd0f1c508
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.