Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
AI secretary skill for email monitoring, calendar briefings, meeting reminders, task management, and health/life support. Uses himalaya (email) and gcalcli (calendar). Handles morning/evening reports, email digests, pre-meeting notifications, task tracking, break reminders, and shopping list management. --- name: secretary description: AI secretary skill for email monitoring, calendar briefings, meeting reminders, task management, and health/life support. Uses himalaya (email) and gcalcli (calendar). Handles morning/evening reports, email digests, pre-meeting notifications, task tracking, break reminders, and shopping list management. --- Secretary AI agent skill for secretary duties: email triage, daily briefings, Capability contract not published. No trust telemetry is available yet. Last updated 2/24/2026.
Freshness
Last checked 2/24/2026
Best For
secretary is best for proactive workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack
AI secretary skill for email monitoring, calendar briefings, meeting reminders, task management, and health/life support. Uses himalaya (email) and gcalcli (calendar). Handles morning/evening reports, email digests, pre-meeting notifications, task tracking, break reminders, and shopping list management. --- name: secretary description: AI secretary skill for email monitoring, calendar briefings, meeting reminders, task management, and health/life support. Uses himalaya (email) and gcalcli (calendar). Handles morning/evening reports, email digests, pre-meeting notifications, task tracking, break reminders, and shopping list management. --- Secretary AI agent skill for secretary duties: email triage, daily briefings,
Public facts
4
Change events
1
Artifacts
0
Freshness
Feb 24, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 2/24/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Feb 24, 2026
Vendor
Watari Ai
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. Last updated 2/24/2026.
Setup snapshot
git clone https://github.com/watari-ai/secretary-skill.gitSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Watari Ai
Protocol compatibility
OpenClaw
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
Parameters
json
{
"lastRead": {
"C0ACY3F5FPV": "1708750000.000000"
},
"emailCheckedAt": 1708750000,
"breakRemindersSent": {
"2026-02-24": ["12:00", "15:00"]
},
"lastNightReminder": null,
"meetingCronsCreated": "2026-02-24"
}python
state = read_json("memory/secretary-state.json") or {}
# ... do work ...
write_json("memory/secretary-state.json", state)python
channel_id = config["tasks"]["input_channel"]
last_ts = state.get("lastRead", {}).get(channel_id, "0")text
message(action="read", channelId=<channel_id>, limit=20)
python
state["lastRead"][channel_id] = max(msg["ts"] for msg in new_messages)
write_json("memory/secretary-state.json", state)bash
# In your gateway environment or shell profile: export HIMALAYA_CONFIG=/absolute/path/to/himalaya/config.toml # Example: /Users/you/.config/himalaya/config.toml
Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
AI secretary skill for email monitoring, calendar briefings, meeting reminders, task management, and health/life support. Uses himalaya (email) and gcalcli (calendar). Handles morning/evening reports, email digests, pre-meeting notifications, task tracking, break reminders, and shopping list management. --- name: secretary description: AI secretary skill for email monitoring, calendar briefings, meeting reminders, task management, and health/life support. Uses himalaya (email) and gcalcli (calendar). Handles morning/evening reports, email digests, pre-meeting notifications, task tracking, break reminders, and shopping list management. --- Secretary AI agent skill for secretary duties: email triage, daily briefings,
AI agent skill for secretary duties: email triage, daily briefings, calendar management, meeting reminders, task management, and health/life support.
config.example.yml → config.yml, fill in values.HIMALAYA_CONFIG env var (see Known Issues).himalaya list --account <account> / gcalcli agendachmod +x tools/*.sh && cp tools/*.sh /path/to/your/workspace/tools/This skill uses a single state file to track progress across heartbeats. All features share it.
Path: memory/secretary-state.json (relative to the agent's workspace)
Schema:
{
"lastRead": {
"C0ACY3F5FPV": "1708750000.000000"
},
"emailCheckedAt": 1708750000,
"breakRemindersSent": {
"2026-02-24": ["12:00", "15:00"]
},
"lastNightReminder": null,
"meetingCronsCreated": "2026-02-24"
}
| Key | Purpose |
|-----|---------|
| lastRead.<channelId> | Last Slack message timestamp read in that channel (prevents re-processing) |
| emailCheckedAt | Unix timestamp of last email check |
| breakRemindersSent.<date> | Break reminder times already sent today |
| lastNightReminder | ISO timestamp of last late-night sleep nudge |
| meetingCronsCreated | Date for which meeting cron jobs were created |
Read/update pattern (pseudo-code):
state = read_json("memory/secretary-state.json") or {}
# ... do work ...
write_json("memory/secretary-state.json", state)
Used by: Task Management, on-demand commands.
Determine channel: use config.tasks.input_channel, or fall back to config.notifications.channel
Get last-read timestamp from state:
channel_id = config["tasks"]["input_channel"]
last_ts = state.get("lastRead", {}).get(channel_id, "0")
Fetch new messages using the message tool:
message(action="read", channelId=<channel_id>, limit=20)
Filter to messages with ts > last_ts.
Process each message (see Task Management section)
Update last-read timestamp:
state["lastRead"][channel_id] = max(msg["ts"] for msg in new_messages)
write_json("memory/secretary-state.json", state)
⚠️ Always update
lastReadafter processing. Skipping this causes duplicate task registrations on the next heartbeat.
Check unread emails, filter, summarize.
HIMALAYA_CONFIG env var: In OpenClaw gateways, $HOME is set to the workspace directory — not the system home. himalaya will fail to find its config at ~/.config/himalaya/config.toml. Fix: set the absolute path explicitly in your gateway's environment:
# In your gateway environment or shell profile:
export HIMALAYA_CONFIG=/absolute/path/to/himalaya/config.toml
# Example: /Users/you/.config/himalaya/config.toml
Add this to your gateway's .env file or environment configuration.
Fetch unread
HIMALAYA_CONFIG=/path/to/config.toml \
himalaya list --account <config.email.account> --folder INBOX -s "unseen"
Filter and prioritize
config.email.master_address → high priorityFormat using templates/email-digest.md
Send to config.notifications.channel
Update state:
state["emailCheckedAt"] = int(time.time())
Every config.email.check_interval_hours hours. Check state["emailCheckedAt"] to decide if enough time has passed.
At config.notifications.morning_report_time.
Get today's calendar
gcalcli agenda "today" "tomorrow" --details location --details description --tsv
Weather (if config.briefing.include_weather): fetch for config.briefing.weather_city
GitHub (if config.briefing.include_github): check config.briefing.github_repos
Task summary (if config.tasks.enabled and config.tasks.report_in_morning):
{config.tasks.storage_dir}/{config.tasks.storage_file}config.tasks.max_incomplete_shown items, high-priority firstFormat using templates/morning-brief.md
Send to config.notifications.channel
Schedule meeting reminders → see next section
At config.notifications.evening_report_time.
gcalcli agenda "today 00:00" "today 23:59" --tsvgcalcli agenda "tomorrow" "tomorrow +1d" --tsvconfig.notifications.channelProactive notifications config.calendar.reminder_minutes minutes before each event.
gcalcli agenda "today" "tomorrow" --tsv --details location --details description
TSV output columns: start_date start_time end_date end_time title location description
for line in tsv_output:
start_date, start_time, end_date, end_time, title, location, desc = line.split('\t')
if not start_time or start_time.strip() == '':
continue # skip all-day events
video_link = extract_url(desc, patterns=['zoom.us', 'meet.google.com', 'teams.microsoft.com'])
Option A: exec-based cron (recommended — fires reliably at exact time):
# Example: meeting at 14:00, reminder_minutes=5 → cron at 13:55
openclaw cron add \
--schedule "55 13 24 2 *" \
--task "Send meeting reminder" \
--systemEvent \
--message "⏰ 5分後: Weekly Standup (14:00) 🔗 https://meet.google.com/xxx"
Run via exec tool. Use date-specific DD MM to fire only today.
Option B: heartbeat polling (fallback — no exec needed):
In each heartbeat, check if now is within reminder_minutes of any event start time and reminder hasn't been sent yet. Track sent reminders in state.
Mark done: Save state["meetingCronsCreated"] = today so reminders are only scheduled once per day.
Use templates/meeting-reminder.md. Include:
Capture, track, and report work tasks. Config: config.tasks.*
Tasks are received via Slack/Discord, stored as a Markdown file in config.tasks.storage_dir, and reported daily.
| Config key | Purpose | Example |
|------------|---------|---------|
| tasks.input_channel | Channel ID to watch for task messages | "C0ACY3F5FPV" |
| tasks.storage_dir | Root directory for TODO file | "/Users/you/vault" |
| tasks.storage_file | Filename within storage_dir | "TODO.md" |
| tasks.report_time | Standalone report time | "09:00" |
| tasks.report_in_morning | Include in morning briefing | true |
| tasks.max_incomplete_shown | Max tasks in reports | 10 |
Step 1: Read new Slack messages (see Reading Slack Messages)
Step 2: For each new message, check if it's a task:
Detection patterns — treat as task if:
タスク:, タスク:, TODO:, TODO:, タスク追加, TODOを追加〜やっておいて, 〜をお願い, 〜やってほしい, 〜を進めておいてtask:, add task, please do〜完了, 〜終わった, 〜done → route to Completing a Taskタスク一覧, TODO一覧, 何が残ってる → route to Listing TasksStep 3: Parse priority and deadline:
急ぎ, 緊急, 重要, 至急, urgent, asap後回し, 余裕あれば, low, whenever〜まで, XX日, 来週, YYYY/MM/DD, next weekFile format ({storage_dir}/{storage_file}):
# TODO
## ⏳ 未完了
- [ ] 🔴 **タスク内容A** (登録: 2026-02-24, 期限: 2026-02-26)
- [ ] 🟡 タスク内容B (登録: 2026-02-24)
- [ ] ⚪ タスク内容C (登録: 2026-02-24)
## ✅ 完了
- [x] 🟡 タスク内容D (登録: 2026-02-23, 完了: 2026-02-24)
Steps:
- [ ] {emoji} {bold if high}{content}{normal} (登録: {today}{, 期限: date if set})## ⏳ 未完了, sorted 🔴 → 🟡 → ⚪✅ タスクを登録しました\n🟡 タスク内容B\n📁 未完了: 5件Detection: 〜完了, 〜終わった, 〜done, タスク完了: 〜
Steps:
## ⏳ 未完了 (fuzzy match)[ ] → [x], add , 完了: {today}, move to ## ✅ 完了✅ 完了にしました\n🟡 タスク内容B (完了: 2026-02-24)\n残り: 4件When: Part of morning briefing (if report_in_morning: true), or standalone at report_time.
Format:
📋 タスク状況 (2026-02-24)
⏳ 未完了: 5件 (🔴 1, 🟡 3, ⚪ 1)
• 🔴 **タスク内容A** (期限: 2026-02-26)
• 🟡 タスク内容B
• 🟡 タスク内容C
(他2件 — TODO.mdを参照)
Trigger: タスク一覧, TODO一覧, 何が残ってる, list tasks
Show all incomplete tasks regardless of max_incomplete_shown.
Trigger: タスク削除: 〜, 〜を削除, 〜をリストから外して
Same fuzzy match as completing, but remove the line entirely.
Proactive wellness and daily life assistance. Config: config.health.*
When: At times in config.health.break_reminder_times (default: ["12:00", "15:00", "18:00"])
Via heartbeat (recommended):
Check current time each heartbeat. If within ±10 min of a break_reminder_times entry AND not already sent today:
today = date.today().isoformat()
already_sent = state.get("breakRemindersSent", {}).get(today, [])
for t in config["health"]["break_reminder_times"]:
if within_10_min(now, t) and t not in already_sent:
send_break_reminder()
already_sent.append(t)
state["breakRemindersSent"][today] = already_sent
Via exec cron (alternative):
openclaw cron add --schedule "0 12 * * *" \
--task "Send break reminder" --systemEvent \
--message "☕ お昼ですよ。少し休憩しませんか?"
Tone: Natural, caring. See templates/break-reminder.md.
File: config.health.shopping_list_path (default: data/shopping-list.txt)
Scripts: tools/shopping.sh add/done/list-pending/clear (see tools/ directory)
SHOPPING_LIST_PATH=/path/to/list.txt tools/shopping.sh add "牛乳"
SHOPPING_LIST_PATH=/path/to/list.txt tools/shopping.sh list-pending
Evening check (~17:00-18:00):
tools/shopping.sh list-pending — if output is not "(none)", ask: 「今日買い物に行く予定はありますか?残りリスト: 牛乳、パン」Script: tools/work.sh status — outputs status=active duration_minutes=N or status=idle
Trigger: duration_minutes > config.health.long_work_threshold_hours * 60
Action: 「もう{N}時間以上作業してますね。少し休憩しませんか?☕」
WORK_STATE_PATH=/path/to/work-session.json tools/work.sh status
When: After config.health.night_mode_start (default: "00:00")
Action: If master sent a message in last 30 min, send one gentle sleep nudge per hour at most.
last = state.get("lastNightReminder")
if last and (now - parse_iso(last)) < 3600:
return # already reminded this hour
state["lastNightReminder"] = now.isoformat()
send("そろそろ休みませんか?😴")
Full schedule — what to run at each heartbeat check.
memory/secretary-state.jsonmorning_report_time)meetingCronsCreated != today)report_in_morning: true)check_interval_hours)Check: now - state["emailCheckedAt"] > check_interval_hours * 3600
→ Run Email Digest, update emailCheckedAt
break_reminder_times entry)Check: within_10_min(now, t) and not in breakRemindersSent[today]
→ Send reminder, mark sent
evening_report_time)Evening Briefing (day review + tomorrow preview)
Check shopping-list.txt for unchecked items → ask if going shopping
night_mode_start)If master is active → gentle sleep nudge (once per hour max)
OpenClaw sets $HOME to the workspace directory. himalaya cannot find ~/.config/himalaya/config.toml.
Fix: Set HIMALAYA_CONFIG=/absolute/path/to/himalaya/config.toml in your gateway environment.
If gcalcli needs OAuth re-authentication, it may prompt interactively and hang.
Fix: Run gcalcli list manually once in a terminal to refresh credentials. gcalcli stores tokens in ~/.config/gcalcli/oauth.
The skill doesn't currently intercept "メール確認して" from Slack messages.
Workaround: Trigger email digest from the channel reading step: if message matches メール確認して or check email, run email digest immediately regardless of emailCheckedAt.
First-time setup: see references/onboarding.md.
Located in tools/ — install to your workspace's tools/ directory and chmod +x.
| Script | Usage |
|--------|-------|
| tools/shopping.sh | add/done/list/list-pending/clear |
| tools/work.sh | start/stop/status/reset |
Set env vars to override paths:
SHOPPING_LIST_PATH (default: ./data/shopping-list.txt)WORK_STATE_PATH (default: ./data/work-session.json)See config.example.yml. Key sections:
| Key | Purpose | Default |
|-----|---------|---------|
| email.check_interval_hours | メールチェック間隔 | 4 |
| calendar.reminder_minutes | ミーティング前リマインド | 5 |
| notifications.morning_report_time | 朝ブリーフィング時刻 | "08:00" |
| notifications.evening_report_time | 夕ブリーフィング時刻 | "23:00" |
| health.break_reminder_times | 休憩声掛け時刻リスト | ["12:00","15:00","18:00"] |
| health.night_mode_start | 深夜モード開始時刻 | "00:00" |
| health.long_work_threshold_hours | 連続作業警告閾値 | 2 |
| tasks.input_channel | タスク受付チャンネル | "" (notifications.channel) |
| tasks.storage_dir | TODO保存ディレクトリ | "" (必須) |
| tasks.storage_file | TODOファイル名 | "TODO.md" |
| tasks.report_time | タスク報告時刻(単独) | "09:00" |
| tasks.report_in_morning | 朝ブリーフィングに含める | true |
| tasks.max_incomplete_shown | 報告時の表示件数上限 | 10 |
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/snapshot"
curl -s "https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/contract"
curl -s "https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Rank
70
AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs
Traction
No public download signal
Freshness
Updated 5d ago
Rank
70
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
Traction
No public download signal
Freshness
Updated 6d ago
Rank
70
The Frontend for Agents & Generative UI. React + Angular
Traction
No public download signal
Freshness
Updated 23d ago
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_OPENCLEW",
"generatedAt": "2026-04-16T23:39:08.185Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "proactive",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:proactive|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Watari Ai",
"href": "https://github.com/watari-ai/secretary-skill",
"sourceUrl": "https://github.com/watari-ai/secretary-skill",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/watari-ai-secretary-skill/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to secretary and adjacent AI workflows.