reeboot 1.0.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: reeboot-tasks
3
+ description: Manage the reeboot agent's own scheduled tasks — create, list, pause, resume, and cancel scheduled jobs. Use when setting up recurring tasks, one-time reminders, or managing the agent's task schedule.
4
+ ---
5
+
6
+ # Reeboot Tasks
7
+
8
+ Meta-skill for the agent to manage its own scheduler. Uses the built-in scheduler tools registered by the scheduler-tool extension.
9
+
10
+ ## Setup
11
+
12
+ No external dependencies. The scheduler is built into reeboot.
13
+
14
+ The following tools are available when the scheduler-tool extension is enabled:
15
+ - `schedule_task` — create a new scheduled task
16
+ - `list_tasks` — list all scheduled tasks
17
+ - `cancel_task` — cancel a scheduled task by ID
18
+ - `pause_task` — pause a scheduled task (stops it from running without deleting)
19
+ - `resume_task` — resume a paused task
20
+
21
+ Verify tools are available by asking: "What tools do you have access to?" — the scheduler tools should appear in the list.
22
+
23
+ ## Usage
24
+
25
+ ### Schedule formats
26
+
27
+ **Cron expressions** (standard 5-field cron):
28
+ ```
29
+ 0 9 * * 1-5 # Every weekday at 9 AM
30
+ 0 */2 * * * # Every 2 hours
31
+ 30 8 * * 1 # Every Monday at 8:30 AM
32
+ 0 0 1 * * # First day of each month at midnight
33
+ ```
34
+
35
+ **Interval expressions**:
36
+ ```
37
+ every 30m # Every 30 minutes
38
+ every 2h # Every 2 hours
39
+ every 1d # Every day
40
+ every 15m # Every 15 minutes
41
+ ```
42
+
43
+ **One-time expressions**:
44
+ ```
45
+ in 1h # In 1 hour from now
46
+ in 30m # In 30 minutes
47
+ in 2d # In 2 days
48
+ ```
49
+
50
+ ### Tool usage
51
+
52
+ ```
53
+ # Schedule a recurring task
54
+ schedule_task({
55
+ name: "daily-standup-reminder",
56
+ schedule: "0 9 * * 1-5",
57
+ prompt: "Send a standup reminder to the team on WhatsApp"
58
+ })
59
+
60
+ # Schedule a one-time reminder
61
+ schedule_task({
62
+ name: "meeting-reminder",
63
+ schedule: "in 45m",
64
+ prompt: "Remind me that the client call starts in 15 minutes"
65
+ })
66
+
67
+ # List all tasks
68
+ list_tasks()
69
+
70
+ # Pause a task
71
+ pause_task({ id: "task-id-here" })
72
+
73
+ # Resume a paused task
74
+ resume_task({ id: "task-id-here" })
75
+
76
+ # Cancel a task permanently
77
+ cancel_task({ id: "task-id-here" })
78
+ ```
79
+
80
+ ### Example flows
81
+
82
+ ```
83
+ User: "Remind me to check my email every weekday morning at 8 AM"
84
+ → schedule_task({
85
+ name: "morning-email-check",
86
+ schedule: "0 8 * * 1-5",
87
+ prompt: "Remind the user to check their email"
88
+ })
89
+ → "Done — I'll remind you every weekday at 8 AM."
90
+
91
+ User: "What tasks do I have scheduled?"
92
+ → list_tasks()
93
+ → Present results in a readable format
94
+
95
+ User: "Cancel the standup reminder"
96
+ → list_tasks() to find the ID
97
+ → cancel_task({ id: "<id>" })
98
+ ```
@@ -1,27 +1,65 @@
1
1
  ---
2
2
  name: send-message
3
- description: Send a message to a contact via WhatsApp or Signal. Use when the user asks you to send a message to someone via a messaging channel.
3
+ description: Send a message back to the originating channel or to a specific contact via WhatsApp or Signal. Use when the user asks you to send, forward, or relay a message to someone via a messaging channel.
4
4
  ---
5
5
 
6
- # Send Message Skill
6
+ # Send Message
7
7
 
8
- Use this skill when the user wants to send a message to a contact via a messaging channel (WhatsApp, Signal).
8
+ Teaches the agent to send a message back to the originating channel or to a specific peer via reeboot's channel routing system.
9
9
 
10
- ## Instructions
10
+ ## Setup
11
11
 
12
- 1. Identify the target channel (WhatsApp or Signal) and recipient
13
- 2. Confirm the message content with the user if not explicitly stated
14
- 3. Use the appropriate channel tool to send the message
15
- 4. Report success or failure back to the user
12
+ No external dependencies. The send-message capability is built into reeboot's channel system.
16
13
 
17
- ## When to Use
14
+ Supported channels (must be configured in `~/.reeboot/config.json`):
15
+ - **WhatsApp** — requires WhatsApp session to be active (`reeboot channels login whatsapp`)
16
+ - **Signal** — requires Signal container running (`reeboot channels login signal`)
18
17
 
19
- - "Send a WhatsApp message to Alice saying..."
20
- - "Text Bob on Signal that..."
21
- - "Forward this to my team on WhatsApp"
18
+ Verify channel status:
19
+ ```
20
+ reeboot channels list
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ ### Send a reply in the same turn
26
+
27
+ Simply include your reply text as the response — reeboot routes it back to the originating channel automatically.
28
+
29
+ ### Send to a specific contact
30
+
31
+ Use the `send_message` tool (registered by the channel routing system):
32
+
33
+ ```
34
+ send_message({
35
+ channel: "whatsapp", // or "signal"
36
+ peerId: "+1234567890", // phone number or WhatsApp JID
37
+ content: "Hello from reeboot!"
38
+ })
39
+ ```
40
+
41
+ ### When to use vs. just responding
42
+
43
+ - **Just respond** — if you want to reply to the person who sent you the message (same turn, same channel). This is the default.
44
+ - **Use send_message tool** — if you need to send to a *different* contact or channel, or send *proactively* (e.g., from a scheduled task).
45
+
46
+ ### Example flows
47
+
48
+ ```
49
+ User (WhatsApp): "Text my wife that I'll be home late"
50
+ → Identify contact from user's address book or ask for phone number
51
+ → Confirm: "Send 'I'll be home late' to +1XXXXXXXXXX on WhatsApp?"
52
+ → send_message({ channel: "whatsapp", peerId: "+1XXXXXXXXXX", content: "I'll be home late" })
53
+ → Report: "Message sent."
54
+ ```
55
+
56
+ ```
57
+ Scheduled task: daily standup reminder
58
+ → send_message({ channel: "whatsapp", peerId: "team@g.us", content: "Daily standup in 15 minutes!" })
59
+ ```
22
60
 
23
61
  ## Important
24
62
 
25
- - Always confirm the recipient and message content before sending
26
- - Do not send messages without explicit user instruction
63
+ - Always confirm recipient and content before sending
64
+ - Never send without explicit user instruction (or a pre-approved schedule)
27
65
  - Report delivery status or errors clearly
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: slack
3
+ description: Slack workspace operations via SLACK_BOT_TOKEN and curl — send messages, list channels, post to threads, upload files. Use when sending Slack messages, reading channels, or interacting with a Slack workspace.
4
+ ---
5
+
6
+ # Slack
7
+
8
+ Uses `SLACK_BOT_TOKEN` env var + curl against the Slack Web API to send messages, list channels, reply to threads, and upload files.
9
+
10
+ ## Setup
11
+
12
+ 1. Create a Slack App at https://api.slack.com/apps:
13
+ - Click **Create New App** → **From scratch**
14
+ - Give it a name and select your workspace
15
+
16
+ 2. Configure Bot Token Scopes under **OAuth & Permissions** → **Bot Token Scopes**:
17
+ - `channels:read` — list public channels
18
+ - `chat:write` — post messages
19
+ - `files:write` — upload files
20
+ - `groups:read` — list private channels (optional)
21
+ - `im:read` / `im:write` — direct messages (optional)
22
+
23
+ 3. Install to workspace:
24
+ - Click **Install to Workspace** → **Allow**
25
+ - Copy the **Bot User OAuth Token** (starts with `xoxb-`)
26
+
27
+ 4. Set the environment variable:
28
+ ```
29
+ export SLACK_BOT_TOKEN=xoxb-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx
30
+ ```
31
+ Add to your shell profile for persistence.
32
+
33
+ 5. Invite the bot to channels:
34
+ ```
35
+ /invite @your-bot-name
36
+ ```
37
+
38
+ 6. Verify:
39
+ ```
40
+ curl -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
41
+ https://slack.com/api/auth.test
42
+ ```
43
+
44
+ ## Usage
45
+
46
+ ```bash
47
+ # List channels
48
+ curl -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
49
+ "https://slack.com/api/conversations.list?limit=50"
50
+
51
+ # Post a message
52
+ curl -X POST \
53
+ -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
54
+ -H "Content-Type: application/json" \
55
+ https://slack.com/api/chat.postMessage \
56
+ -d '{"channel": "#general", "text": "Hello from reeboot!"}'
57
+
58
+ # Reply in a thread
59
+ curl -X POST \
60
+ -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
61
+ -H "Content-Type: application/json" \
62
+ https://slack.com/api/chat.postMessage \
63
+ -d '{"channel": "#general", "text": "Reply", "thread_ts": "<parent_ts>"}'
64
+
65
+ # Get channel history
66
+ curl -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
67
+ "https://slack.com/api/conversations.history?channel=<channel_id>&limit=20"
68
+
69
+ # Upload a file
70
+ curl -F "file=@/path/to/file.pdf" \
71
+ -F "channels=<channel_id>" \
72
+ -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
73
+ https://slack.com/api/files.upload
74
+ ```
@@ -0,0 +1,85 @@
1
+ ---
2
+ name: sqlite
3
+ description: SQLite database operations via sqlite3 CLI and DATABASE_PATH — run queries, inspect schemas, read and write data. Use when working with a SQLite database file.
4
+ ---
5
+
6
+ # SQLite
7
+
8
+ Wraps the `sqlite3` CLI for SQLite database operations. Uses the `DATABASE_PATH` environment variable or an explicit file path.
9
+
10
+ ## Setup
11
+
12
+ 1. Install sqlite3 (usually pre-installed on macOS and most Linux distros):
13
+ ```bash
14
+ # macOS — check first:
15
+ sqlite3 --version
16
+
17
+ # If not installed:
18
+ brew install sqlite
19
+
20
+ # Ubuntu/Debian:
21
+ apt-get install sqlite3
22
+ ```
23
+
24
+ 2. Set the `DATABASE_PATH` environment variable (optional but recommended):
25
+ ```bash
26
+ export DATABASE_PATH=/path/to/your/database.db
27
+ ```
28
+ Add to your shell profile for persistence. Or pass the path directly in each command.
29
+
30
+ 3. Verify:
31
+ ```bash
32
+ sqlite3 "$DATABASE_PATH" ".tables"
33
+ # or:
34
+ sqlite3 /path/to/database.db ".tables"
35
+ ```
36
+
37
+ ## Usage
38
+
39
+ ```bash
40
+ # List all tables
41
+ sqlite3 "$DATABASE_PATH" ".tables"
42
+
43
+ # Show schema for a table
44
+ sqlite3 "$DATABASE_PATH" ".schema users"
45
+
46
+ # Show full schema
47
+ sqlite3 "$DATABASE_PATH" ".schema"
48
+
49
+ # Run a query
50
+ sqlite3 "$DATABASE_PATH" "SELECT * FROM users LIMIT 10;"
51
+
52
+ # Count rows
53
+ sqlite3 "$DATABASE_PATH" "SELECT COUNT(*) FROM orders WHERE status = 'pending';"
54
+
55
+ # Insert data
56
+ sqlite3 "$DATABASE_PATH" "INSERT INTO logs (message, created_at) VALUES ('test', datetime('now'));"
57
+
58
+ # Update data
59
+ sqlite3 "$DATABASE_PATH" "UPDATE users SET active = 1 WHERE email = 'user@example.com';"
60
+
61
+ # Delete data
62
+ sqlite3 "$DATABASE_PATH" "DELETE FROM sessions WHERE expires_at < datetime('now');"
63
+
64
+ # Run a SQL file
65
+ sqlite3 "$DATABASE_PATH" < /path/to/migration.sql
66
+
67
+ # Export to CSV
68
+ sqlite3 -csv "$DATABASE_PATH" "SELECT * FROM users;" > users.csv
69
+
70
+ # Show database info
71
+ sqlite3 "$DATABASE_PATH" ".dbinfo"
72
+
73
+ # Check table info (columns, types)
74
+ sqlite3 "$DATABASE_PATH" "PRAGMA table_info(users);"
75
+
76
+ # Interactive mode
77
+ sqlite3 "$DATABASE_PATH"
78
+ ```
79
+
80
+ ### Tips
81
+
82
+ - Use `LIMIT` on large tables to avoid returning too many rows
83
+ - Use `.headers on` and `.mode column` in interactive mode for readable output
84
+ - SQLite files can be inspected directly with `ls -lh "$DATABASE_PATH"` to check size
85
+ - Use `PRAGMA integrity_check;` to verify database health
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: web-research
3
+ description: Structured multi-query web research using the web-search extension. Use when researching a topic, finding current information, investigating a question, or gathering facts from the web. Run 3–5 targeted searches, synthesise findings, cite URLs.
4
+ ---
5
+
6
+ # Web Research
7
+
8
+ Structured research pattern using the web-search extension. Produces a synthesis with cited sources.
9
+
10
+ ## Setup
11
+
12
+ No external dependencies beyond the web-search extension being enabled in your reeboot config.
13
+
14
+ Verify the extension is active:
15
+ ```
16
+ reeboot reload
17
+ ```
18
+
19
+ The `web_search` tool must be available in the agent's tool list. If not, enable the web-search extension in your config:
20
+ ```json
21
+ { "extensions": ["web-search"] }
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ Run 3–5 targeted searches for different facets of the question, then synthesise:
27
+
28
+ ```
29
+ # Step 1: broaden the question into sub-queries
30
+ web_search("topic overview 2025")
31
+ web_search("topic technical details")
32
+ web_search("topic comparison alternatives")
33
+
34
+ # Step 2: check for recency
35
+ web_search("topic news March 2025")
36
+
37
+ # Step 3: synthesise
38
+ # Combine findings, note agreement/disagreement across sources, cite URLs.
39
+ ```
40
+
41
+ ### Best practices
42
+
43
+ - Use specific, factual queries rather than open-ended questions
44
+ - Include the year or "latest" to avoid stale results
45
+ - Read the top 3 results per query before moving on
46
+ - Cite every claim with its source URL
47
+ - If results conflict, note the discrepancy and explain which source you trust more
@@ -0,0 +1,16 @@
1
+ {
2
+ "providers": [
3
+ {
4
+ "id": "ollama",
5
+ "name": "Ollama (local)",
6
+ "baseUrl": "http://localhost:11434/v1",
7
+ "models": [
8
+ {
9
+ "id": "{{MODEL_ID}}",
10
+ "name": "{{MODEL_ID}}",
11
+ "contextWindow": 8192
12
+ }
13
+ ]
14
+ }
15
+ ]
16
+ }
@@ -1,32 +0,0 @@
1
- ---
2
- name: web-search
3
- description: Search the web using SearXNG. Use when you need to find current information, research a topic, look up facts, or gather information from the internet.
4
- ---
5
-
6
- # Web Search Skill
7
-
8
- Use this skill when you need to search the web for information.
9
-
10
- ## Instructions
11
-
12
- 1. Formulate a clear, concise search query for the topic
13
- 2. Use the `web_search` tool with your query
14
- 3. Review the results and extract relevant information
15
- 4. Cite your sources when presenting findings
16
-
17
- ## When to Use
18
-
19
- - Looking up current events or news
20
- - Researching a technical topic
21
- - Finding documentation or tutorials
22
- - Verifying facts or statistics
23
- - Discovering resources on a subject
24
-
25
- ## Example
26
-
27
- ```
28
- User: What is the current version of Node.js LTS?
29
- → web_search("Node.js LTS version 2025")
30
- → Review results
31
- → Report: "The current Node.js LTS version is X.Y.Z (sources: ...)"
32
- ```