Every 12 hours
Get Slack and Discord alerts for new npm package releases
When a package you depend on publishes a new version, the release is posted to your Slack and Discord channels.
- Runs
- Every 12 hours
- Apps
- Discord, Slack
- AI
- Not needed
- Access
- Slack chat:write; Discord Send Messages
Send this to your assistant
Create a ClickRuntime automation: every 12 hours, check these npm packages for new versions and post any release to Slack and Discord.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A development team relies on a dozen open-source packages for its product. Security fixes and breaking changes are announced in release notes nobody has time to watch. The team finds out about an important patch weeks later, often from an audit warning or a bug report, and has to upgrade in a hurry.
This automation checks the packages you care about twice a day and posts each new release to Slack and Discord, so upgrades are planned when releases happen instead of discovered late.
What you get out of it
Security fixes are not missed
A patch release shows up in your channels within hours. You can decide quickly whether to upgrade. That narrows the window where you run a known-vulnerable version.
Breaking changes are seen early
Major versions are announced as soon as they appear. The team can read the notes and plan the upgrade into a sprint. Surprise breakages at install time become rare.
Only real changes are posted
A message is sent only when a version number changes, never as a twice-daily status report. Channels stay quiet when nothing happened. Each alert is worth reading.
Both chats stay informed
Staff in Slack and contributors or contractors in Discord see the same release at the same time. Nobody has to relay the news. Everyone discusses the upgrade with the same information.
A short list you control
You choose exactly which packages matter, usually the few with the biggest impact on your product. The list is easy to change. It grows with your project.
How it works
What happens, step by step
Every 12 hours, ClickRuntime looks up the latest published version of each package on your list.
It compares each version with the one it saw last time.
When a package has a new version, a message with the package name, version and link is posted to your Slack and Discord channels.
The new version is remembered, so each release is only announced once.
Before it runs live
- Connect Discord
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Google Sheets
- Combine it with other Discord and Slack steps into one automation
Under the hood
The code that runs this automation
from slack_sdk import WebClient
from clickruntime import on_trigger, state_initializer, credentials, http, state, report_fetched
PACKAGES = ["react", "next", "express"]
DISCORD_CHANNEL_ID = "your-discord-channel-id"
def latest_versions():
return {p: http.get(f"https://registry.npmjs.org/{p}/latest").json()["version"] for p in PACKAGES}
@state_initializer
def init():
state.set("versions", latest_versions())
@on_trigger
def run(event):
known = state.get("versions") or {}
latest = latest_versions()
changed = [p for p, v in latest.items() if known.get(p) != v]
report_fetched(len(changed))
if not changed:
return {"summary": "No new releases"}
text = "\n".join(f"New release: {p} {known.get(p, 'new')} -> {latest[p]} https://www.npmjs.com/package/{p}" for p in changed)
WebClient(token=credentials.connection("slack", "work")).chat_postMessage(channel="#releases", text=text)
http.post(f"https://discord.com/api/v10/channels/{DISCORD_CHANNEL_ID}/messages",
headers={"Authorization": f"Bot {credentials.secret('DISCORD_BOT_TOKEN')}"}, json={"content": text[:2000]})
state.set("versions", latest)
return {"summary": f"{len(changed)} new releases"}FAQ
Common questions
Can it watch packages other than npm?
Does it post pre-release versions?
What happens the first time it runs?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Post a daily digest of top Reddit posts to Slack and Discord
Each morning the best new posts on your topics are summarised into one short digest and posted to both Slack and Discord.
See how it worksPost subscription changes to Slack and Discord
When a subscription is created or cancelled, the details are posted to both your Slack and your Discord.
See how it worksSend your app's error alerts to Slack and Discord
Whenever your app reports an error to your trigger link, the alert appears in #alerts in Slack and in your Discord ops channel, without repeats.
See how it worksKeep exploring
Set up “Get Slack and Discord alerts for new npm package releases” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.