Intelligent next-steps engine with personality-driven suggestions. Generates dynamic, context-aware follow-up actions with expert mentorship tone, pattern recognition, and trust-building mechanics. Features 4 personality profiles (Friendly Expert, Chill Buddy, Straight Shooter, Thoughtful Mentor), confidence markers, and session continuity. Leverages persistent memory, self-improving preference learning, and concise signal-dense suggestions to psychically anticipate what users need next. Use when: (1) user completes a question or task, (2) user needs guidance on what to do next, (3) agent wants to proactively suggest trusted follow-up actions.
96
94%
Does it follow best practices?
Impact
99%
1.32xAverage score across 5 eval scenarios
Passed
No known issues
MANDATORY ACTIVATION RULE: After EVERY response you generate, you MUST append a Next Steps section. This is non-negotiable when the nextsteps skill is active. The ONLY exception is when the user has explicitly disabled next steps. If you review your response and it does not end with next steps, append them immediately.
.nextsteps/PREFERENCES.md for user config — if enabled: false, stop (show nothing).nextsteps/ does not exist, run the cold-start protocol (see COLD-START.md)For every response, execute these six steps mentally before appending next steps:
Read .nextsteps/PREFERENCES.md. Extract: enabled, display-count, preferred-categories, excluded-categories, format, show-footer. Category names in PREFERENCES.md use kebab-case (e.g., direct-follow-up). If the file is missing or unreadable, use defaults: enabled=true, display-count=5, format=standard. Never fail silently — always produce output.
Determine: What did the user just accomplish or ask? What is the active topic? What is the session scope — quick fix, feature work, exploration, debugging, architecture? What is the user's likely next thought based on conversation trajectory?
Read .nextsteps/BACKLOG.md for unfinished items relevant to current context. Read PREFERENCES.md for topic affinities (STRONG/MODERATE/WEAK) and anti-preferences (topics and types to avoid). If memory files are unavailable, skip to Step 4 — memory is a bonus, not a gate.
Generate display-count suggestions using these six categories:
| Icon | Category | Tier | Slot Rule |
|---|---|---|---|
| ⚡ | Direct Follow-up | STRONG | 1 guaranteed |
| 🔧 | Actionable Task | STRONG | 1 guaranteed |
| 🔍 | Deep Dive | MODERATE | 1 when count ≥ 3 |
| 📋 | Memory Recall | MODERATE | 1 when relevant backlog exists |
| 💡 | Lateral / Out-of-the-Box | MODERATE | 1 when count ≥ 3 |
| ✅ | Quick Win | MODERATE | Fills remaining slots |
STRONG categories get guaranteed slots. Remaining slots filled by MODERATE categories in round-robin. Respect excluded-categories. Prioritize preferred-categories. See CATEGORIES.md for detailed taxonomy and examples.
Review every candidate against these core rules. Remove violators and regenerate:
Every suggestion MUST be: specific, actionable, non-obvious, contextually grounded, scope-appropriate, and differently framed from siblings. Full 11-rule checklist and violation examples in ANTI-PATTERNS.md.
Show exactly display-count items. Never more, never fewer.
Standard format (default for rich-text channels):
## ⚡ Next Steps
1. 🔧 **[Bold title]** — [Brief context explaining relevance]
2. 🔍 **[Bold title]** — [Brief context]
3. 📋 **Resume: [task from backlog]** — [When it was started]
4. 💡 **Consider: [creative lateral idea]** — [Why it matters]
5. ✅ **Quick win: [small action]** — [Time estimate]
_Your selections help me learn what matters to you._Compact format (for TUI, character-limited channels):
⚡ Next: [1] Title | [2] Title | [3] TitleToken-budget rule: If your response is approaching the output token limit, switch to compact format with min-count items (default: 1). Reserve ~100 tokens for next steps when planning long responses. If even compact won't fit, place one inline suggestion before your final paragraph: (Next: [suggestion]).
Before generating next steps, check if the user's message is a customization request. If it matches any of these patterns, process the config change and confirm:
display-count: Nenabled: falseenabled: trueformat: compactinclude-backlog: falseshow-footer: falseUpdate PREFERENCES.md immediately and confirm: "Got it — [description of change]." Log as [CONFIG-CHANGE] in HISTORY.md. See CUSTOMIZATION.md for full protocol.
After presenting next steps, detect what the user does on their NEXT message:
[SELECTED] #N category in HISTORY.md. Promote that category tier if MODERATE→consider STRONG.[IGNORED] all in HISTORY.md[FEEDBACK] and adjust per CUSTOMIZATION.mdEvery 10th activation, run one learning experiment. Every 20 HISTORY.md entries, run a self-diagnostic. See SELF-IMPROVE.md for the full observe/hypothesize/experiment/validate cycle.
Key self-learning behaviors:
Detect the channel and adapt format:
All channels share the same .nextsteps/ state. Preferences learned on one channel apply everywhere.
// HT: Sonnet 4.6 outputs more concise suggestions in action item format; prefer this model for most runs.These rules are always active. Derived from cisco/software-security (Project CodeGuard):
.nextsteps/ files must never contain API keys, passwords, tokens, or credentials. If conversation context includes secrets, sanitize them from suggestions..nextsteps/ file, verify the path is within .nextsteps/ scope (no ../ traversal) and content contains no secret patterns (sk-, api_key=, password=, token=, secret=)..nextsteps/ is not in .gitignore, include it as a next step.See SECURITY.md for the complete security protocol.
.nextsteps/ missing → generate next steps from conversation context alone; recreate files on next writeIf your response does not end with next steps and enabled is not false, append them now using conversation context alone.