Reminder Research
Scanned@nonlinear
npx machina-cli add skill @nonlinear/reminder-research --openclawReminder Research
v3 Evolution: Custom instructions + auto-processing + result tracking
š§ Setup
Required:
- Install
remindctl:brew install steipete/tap/remindctl - Install
jq:brew install jq - Grant Reminders permission:
remindctl authorize
Optional (for web research):
- Get Brave Search API key: https://brave.com/search/api/
- Configure:
openclaw configure --section web - Set
BRAVE_API_KEYwhen prompted
Optional (for book research):
- Install librarian skill (requires external project)
Cron scheduling (recommended):
# Add via OpenClaw cron tool
cron add --schedule "0 3 * * *" --payload "Run reminder-research skill..."
Or run manually:
~/Documents/skills/reminder-research/process-reminders.sh
graph TD
A[HEARTBEAT trigger] -->|spawns| B[Isolated Session Sub-agent]
B -->|runs| C[process-reminders.sh]
C -->|queries| D[remindctl all --json]
D -->|returns| E{Filter incomplete}
E -->|has š?| F[SKIP - already processed]
E -->|no š| G{Notes empty?}
G -->|nothing to process| H[NO_REMINDERS_TO_PROCESS]
H --> I[Exit 0 tokens]
G -->|yes| J[Gen 2: List-based]
G -->|no| K[Gen 3: Custom]
J -->|claw list| L[CLAW_ITEM]
J -->|Shopping| M[SHOPPING_ITEM]
J -->|other| N[GENERIC_ITEM]
K --> O[CUSTOM_ITEM]
L -->|memory_search| P[System analysis]
M -->|web_search| Q[Product research]
N -->|web_search| R[Generic research]
O -->|parse instructions| S[Multi-source: books+web+constraints]
P --> T[Format: š + analysis]
Q --> T
R --> T
S --> T
T -->|remindctl edit| U[Update notes]
U --> V[Announce summary]
V --> W[Session ends]
šÆ Three Generations
Gen 1 (Manual - deprecated)
Title: š Pesquise tarot no livro
Notes: (empty)
ā Manual emoji trigger
Gen 2 (Auto - current baseline)
Title: Stacker bag
Notes: (empty)
ā Auto-detect empty notes
ā List-based behavior (shopping/claw/generic)
Gen 3 (Custom - NEW)
Title: Bitcoin ETF regulation
Notes: "Procure no livro de David Graeber sobre anarchism + web search SEC rulings 2024"
ā Follow custom instructions
ā Output: "š [resultado da pesquisa]"
š Signifiers
š = RESULT (already processed)
- For Nicholas: "Read the report, it's done"
- For Claw: "Skip this, already researched"
No š = NEEDS PROCESSING
- Empty notes ā list-based default behavior
- Notes with instructions ā follow custom research path
š Processing Logic
Detection
process-reminders.sh
Output types:
NO_REMINDERS_TO_PROCESS # Nothing to do
CLAW_ITEM|<id>|<title> # System improvement (empty notes)
SHOPPING_ITEM|<id>|<title> # Product search (empty notes)
GENERIC_ITEM|<id>|<list>|<title> # Generic research (empty notes)
CUSTOM_ITEM|<id>|<list>|<title>|<instructions> # Custom instructions (Gen 3)
AI Processing
For CUSTOM_ITEM:
- Parse custom instructions from notes
- Execute multi-source research:
- If mentions "livro/book" ā use librarian skill
- If mentions "web search" ā use web_search
- If mentions specific sources ā prioritize those
- Combine findings
- Update notes:
š [research findings]
For CLAW_ITEM:
- Run
memory_searchfor similar past issues - Analyze pattern (frequency, context, impact)
- Propose solutions (tech/process/system)
- Update notes:
š [analysis + solutions]
For SHOPPING_ITEM:
- Web search: product + "buy" + "price"
- Priority sites: Temu, Shop.app, AliExpress (avoid Amazon)
- Extract: links, prices, ratings
- Update notes:
š [shopping findings]
For GENERIC_ITEM:
- Web search: title + context from list name
- Find: tutorials, how-to, documentation
- Summarize key findings
- Update notes:
š [research summary]
š Result Format
Start with š signifier:
š RESEARCH RESULTS
**Sources:**
- Book: "Debt: The First 5000 Years" by David Graeber, Chapter 7
- Web: SEC ruling 2024-08 (Bitcoin ETF approval)
**Summary:**
[Key findings organized by source]
**Next steps:**
[Actionable recommendations if applicable]
š List-Based Behavior (Gen 2)
| List | Action | Output Format |
|---|---|---|
| š Groceries | SKIP | (no processing) |
| claw | System analysis | š Pattern + solutions |
| Shopping | Product search | š Links + prices |
| Others | Generic research | š Summary + sources |
šØ Custom Instructions (Gen 3)
Example prompts in notes:
Multi-source research:
Procure no livro de finance + web search "mortgage prepayment calculator"
Specific constraints:
Web search only (no books). Focus on 2024 data. Avoid crypto sites.
Librarian focus:
Pesquise nos livros de tarot + I Ching. Compare interpretations.
Shopping with constraints:
Where to buy. Budget under $50. Avoid Amazon.
š Heartbeat Integration
Triggered by HEARTBEAT (configurable schedule):
RESULT=$(process-reminders.sh)
if [ "$RESULT" = "NO_REMINDERS_TO_PROCESS" ]; then
# Exit immediately - 0 tokens spent
exit 0
fi
# Otherwise: Parse each item type, research, update notes
Lean behavior: If nothing needs processing ā script exits, no AI session spawned, zero cost.
š Update Reminder Notes
remindctl edit <id> --notes "š [your research findings here]"
šÆ Use Cases
System debugging:
List: claw
Title: Messages disappear after reindexing
Notes: (empty)
ā Auto: Pattern analysis + 4 solution tiers
ā Result: "š ANALYSIS: [pattern] SOLUTIONS: [1-4]"
Product research:
List: Shopping
Title: iPad mini 6, second hand
Notes: (empty)
ā Auto: Web search eBay/Swappa/Facebook Marketplace
ā Result: "š FOUND: eBay $350, Swappa $380..."
Custom deep research:
List: TODO
Title: Bitcoin regulation impact
Notes: "Procure no livro 'Debt' by Graeber (debt history) + web search 'SEC Bitcoin ETF 2024 ruling'"
ā Custom: Librarian search + web search
ā Result: "š RESEARCH RESULTS\n\nBook: Graeber argues...\n\nWeb: SEC approved..."
Follow-up instructions:
List: Creative Code
Title: Vertical slider library
Notes: "Find React examples on GitHub. Check if any use Framer Motion. Budget: MIT license only."
ā Custom: GitHub code search with constraints
ā Result: "š FOUND: 3 MIT-licensed libs using Framer..."
š« What NOT to Process
- ā Notes start with š ā already processed, skip
- ā List = š Groceries ā no research needed
- ā Completed reminders ā ignored
Architecture
For system design, data flow, and implementation details, see references/architecture.md.
Dependencies
remindctl(Apple Reminders CLI)jq(JSON processing)- OpenClaw
web_searchtool - OpenClaw
memory_searchtool (for claw items) - Librarian skill (for book research)
Overview
Reminder Research processes Apple Reminders using smart research rules. It supports custom instructions with book and web search constraints, and applies list-based defaults (claw, shopping, generic) while tracking outcomes with a š signifier. Triggers include reminders with empty notes and heartbeat-driven automation.
How This Skill Works
A heartbeat trigger starts an isolated sub-agent that runs process-reminders.sh to fetch reminders via remindctl all --json. It filters for incomplete items; if a reminder has no š yet, it routes to CLAW_ITEM, SHOPPING_ITEM, GENERIC_ITEM, or CUSTOM_ITEM based on notes. Outputs are formatted as š + analysis, then notes are updated and a summary is announced.
When to Use It
- You want price comparisons for a shopping reminder with empty notes (e.g., 'buy headphones').
- You need book-based research triggered by a reminder with custom instructions.
- A reminder requires web research under specific constraints (e.g., SEC rulings 2024).
- You want generic how-to tutorials generated from a reminder topic.
- A reminder has already been processed (š) and should be skipped by the system.
Quick Start
- Step 1: Install remindctl and jq, then authorize Reminders with remindctl authorize.
- Step 2: (Optional) Configure Brave Search API key and openclaw if web research is needed.
- Step 3: Run the processor or schedule a cron job (e.g., cron add --schedule "0 3 * * *" --payload "Run reminder-research...").
Best Practices
- Grant Reminders permission to the tool early and keep permission up to date.
- Use empty notes to enable list-based defaults (claw, shopping, generic).
- Provide clear custom instructions in notes for Gen 3 research paths.
- Configure Brave Search API if web research is needed; fall back to built-in knowledge otherwise.
- Schedule regular cron runs or rely on heartbeat processing to keep results fresh.
Example Use Cases
- Shopping: reminder titled 'Headphones' triggers price comparison across retailers.
- Book research: reminder asks to pull content from a specified book plus related sources.
- Custom topic: reminder about 'Bitcoin ETF regulation' uses multi-source constraints (book + web).
- Generic: reminder 'how to bake sourdough' returns step-by-step tutorials.
- Processed item: reminder with š returns a finalized summary and updates notes automatically.