novu-design-workflow
Design notification workflows the Novu way — choose channels, set severity, decide when a workflow is critical, configure digests, and route based on…
Skill by novuhq
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/novuhq-novu-design-workflow
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, data, productivity, finance
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/novu-design-workflow
What's inside
- Skill name
novu-design-workflow- Description
- Design notification workflows the Novu way — choose channels, set severity, decide when a workflow is critical, configure digests, and route based on subscriber state. Applies to BOTH dashboard-authored and code-first (`@novu/framework`) workflows. Use when planning a new workflow, deciding which channels to include, picking severity, configuring digest behavior, or matching a use case (order confirmation, payment failed, account suspended, comment, trial expiring, password reset, webhook fan-out, fetch-then-notify) to a proven template.
- License
- MIT
- Instructions
- 151 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- name: "novu-design-workflow" does not match folder "design-workflow"
Files (6)
- SKILL.md
- channel-selection.md · references/
- digest-defaults.md · references/
- severity-and-critical.md · references/
- step-conditions.md · references/
- workflow-templates.md · references/
SKILL.md (first lines)
# Design Workflow
Design rules for any Novu workflow — independent of whether you author it in the **Dashboard** (no-code) or in **code** with [`@novu/framework`](../framework-integration). The decisions here (channels, severity, critical, digest, conditions) are the same on both surfaces; only the syntax differs.
> Authoring **in code**? Pair this skill with [`framework-integration/`](../framework-integration) for `workflow(...)`, `step.*`, `controlSchema`, and Bridge Endpoint setup.
> Authoring **in the Dashboard or via the Novu MCP**? After designing here, fill in step content (subject, body, `editorType`, headers, conditions) using [`dashboard-workflows/`](../dashboard-workflows).
## When to use this skill
Use it whenever you need to **decide what a workflow should look like**:
- "Design an order-confirmation workflow"
- "Which channels should I send for a payment failure?"
- "Make this notification critical"
- "Should this be digested?"
- "Add a fallback for offline subscribers"
- "What's the right template for X?"
Do **not** use it for: triggering an existing workflow ([`trigger-notification/`](../trigger-notification)), authoring code wrappers ([`framework-integration/`](../framework-integration)), or rendering severity in the UI ([`inbox-integration/`](../inbox-integration)).
## Severity & Critical
Two independent dials. Most workflows set **neither**.
| Dial | Values | Default | Effect |
| ---------- | ------------------------------- | ------------ | ------------------------------------------------------------------------------- |
| `severity` | `LOW` / `MEDIUM` / `HIGH` | unset | Visual prioritization in the Inbox (color, glow); informs digest skip rules. |
| `critical` | `true` / `false` | `false` | Bypass subscriber preferences, skip digest, no delays, all available channels. |
Rules of thumb:
- Leave `severity` unset for most workflows. Only set it when visual prioritization is needed.
- `HIGH` = "deal with this today" (payment failed, trial expiring tomorrow).
- `critical: true` = "deliver regardless of preferences" (account suspended, security alert, password reset).
- `critical: true` ⇒ digest is automatically skipped and channels deliver immediately.
See [`references/severity-and-critical.md`](./references/severity-and-critical.md) for the full behavior matrix and the `readOnly` vs `critical` distinction.
## Channel Selection
### If the user specified channels
Use **only** those channels. Do not add fallbacks. Do not add extras. If the requested channel isn't configured in the organization, add it anyway because the user explicitly asked for it.
> "Send a push notification when the order ships" → one `push` step. Nothing else.
### If the user did NOT specify channels
Pick from channels **configured in the organization**, in this priority order, up to **3 channels**:
```
In-App > Email > Chat > Push > SMS
```
| Channel | Use it for | Skip it when |
| ------- | --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| In-App | Default for in-product content. Always include if the user is in your product. | The recipient can't see it (password reset, OTP, pre-signup) |
| Email | Receipts, documentation, async communication. Default fallback after In-App. | Pure conversational pings inside the product |
| Chat | If configured AND `severity >= MEDIUM`. Slack/Teams for ops & internal flows. | Marketing or low-severity nudges |
| Push | Fallback when subscriber is **offline** but needs immediate awareness. | Subscriber is online (use In-App instead) |
| SMS | Last resort. Only when no other channel works (true emergencies, OTP, regulatory). | Anything that fits in Email or Push |
See [`references/channel-selection.md`](./references/channel-selection.md) for the full decision tree.
## Digest Defaults
When you add a digest step, default to:
- `type: "regular"`
- look-back window: **5 minutes**
- digest time: **1 hour**
- key: `subscriberId` (and `+threadId` for conversational flows)
**Skip the digest** when:
- `severity: HIGH`, or
- `critical: true`
See [`references/digest-defaults.md`](./references/digest-defaults.md) for digest key composition and conversational examples.
## User-State Logic
Adapt routing based on whether the subscriber is online:
| State | Behavior |
| -------- | ------------------------------------------------------------------------------------------------------- |
| Online | Send In-App immediately. Skip Push. Delay Email/Chat based on severity. |
| Offline | Use Push or Chat to get attention. |
Default delays:
- **B2B** apps → next work hour
- **B2C** apps → ~30 minutes
The condition for "subscriber offline" is the same on both surfaces — see [`references/step-conditions.md`](./references/step-conditions.md).
## Workflow Templates
Match the use case to a template and copy its shape. Each template specifies severity, critical, actionable, and interaction type, plus the step ordering.
| # | Use case | Severity | Critical | Notes |
| - | ------------------------------ | -------- | -------- | ------------------------------------------------ |
| 1 | Order Confirmation | none | false | Digested, In-App + Email + Push (offline only) |
| 2 | Comment on Your Post | none | false | Digested by `subscriberId + threadId` |
| 3 | Payment Failed | HIGH | false | In-App + Chat + Email + Push (offline) |
| 4 | Account Suspended | HIGH | true | All channels, no preferences, no digest |
| 5 | Forgot Password | none | true | Email + SMS only, no In-App |
| 6 | Trial Expiring Tomorrow | HIGH | false | In-App + Chat + Email + Push (offline) |
| 7 | Explicit Channel Request | n/a | n/a | Use only the channels the user specified |
| 8 | Webhook / External API Call | varies | varies | Add `step.http` after channel steps |
| 9 | Fetch Data then Notify | varies | varies | `step.http` first; declare `responseBodySchema` |
Full ASCII flows + per-template metadata in [`references/workflow-templates.md`](./references/workflow-templates.md).
## Step Conditions
Conditions decide whether a step runs. Use them for "send only if subscriber is offline", "send email only if In-App wasn't seen", and similar fallbacks.
- **Dashboard** authors write [JSON-Logic](https://jsonlogic.com): `{ "==": [{ "var": "subscriber.isOnline" }, "false"] }`From novuhq/skills, MIT.
More from novuhq/skills
- 0.520score
novu-trigger-notification
novuhq
Trigger Novu notification workflows to send messages across email, SMS, push, chat, and in-app channels.
SkillCFreshness: C★ 4Claude Code +9 - 0.520score
novu-manage-preferences
novuhq
Configure notification preferences in Novu at the workflow and subscriber level.
SkillCFreshness: C★ 4Claude Code +9 - 0.520score
novu-manage-subscribers
novuhq
Create, update, search, and delete subscribers in Novu.
SkillCFreshness: C★ 4Claude Code +9 - 0.520score
novu-dashboard-workflows
novuhq
Author step content for Novu workflows defined in the Dashboard or generated/edited via the Novu MCP.
SkillCFreshness: C★ 4Claude Code +9 - 0.511score
novu-inbox-integration
novuhq
Integrate Novu's in-app notification inbox into web applications.
SkillCFreshness: C★ 4Claude Code +9 - 0.511score
novu-framework-integration
novuhq
Build code-first notification workflows with @novu/framework.
SkillCFreshness: C★ 4Claude Code +9 - 0.277score
connect-agent
novuhq
No description from the publisher yet.
SkillCFreshness: C★ 4Claude Code +9
Signals
- Stars
- 4
- Forks
- 2
- Open issues
- 0
- Last commit (this folder)
- May 8, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/novuhq/skills
- Website
- novu.co
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from novuhq
- 0.714score
AGENTS.md · novuhq/novu
novuhq
AGENTS.md from novuhq/novu: 44 lines covering Cursor Cloud specific instructions, Build, AI Boundaries, Developer-local agent config and more.
TemplateAFreshness: A★ 40.2KCodex +5 - 0.707score
Cursor rules · novuhq/novu
novuhq
17 Cursor rule files from novuhq/novu: api-property-optionality-hygiene, api, clickhouse, context-engineering, dal-repository and more.
TemplateAFreshness: A★ 40.2KCursor - 0.520score
novu-trigger-notification
novuhq
Trigger Novu notification workflows to send messages across email, SMS, push, chat, and in-app channels.
SkillCFreshness: C★ 4Claude Code +9 - 0.520score
novu-manage-subscribers
novuhq
Create, update, search, and delete subscribers in Novu.
SkillCFreshness: C★ 4Claude Code +9 - 0.520score
novu-dashboard-workflows
novuhq
Author step content for Novu workflows defined in the Dashboard or generated/edited via the Novu MCP.
SkillCFreshness: C★ 4Claude Code +9 - 0.520score
novu-manage-preferences
novuhq
Configure notification preferences in Novu at the workflow and subscriber level.
SkillCFreshness: C★ 4Claude Code +9
Cite this page
novu-design-workflow skill. Agent Mart. https://agentmart.dev/skills/novuhq-novu-design-workflow (last updated 2026-10-24)