Auto-Updater Skill
一个面向 Other 场景的 Agent 技能。原始说明:Automatically update Clawdbot and all installed skills once daily. Runs via cron, checks for updates, applies them, and messages the user with a summary of what changed.
name: ironclaw-ai
description: Military Discipline & Performance Operating System. Tracks missions, habits, goals, tennis training, sleep, and discipline scores. Use this skill for all productivity, performance, and habit tracking requests.
keywords:
# Core concepts
# Discipline & Performance
# Activity Types
# Time References
# Status Keywords
invocationPatterns:
# Indonesian time + activity patterns
# Completion patterns
# Query patterns
# Control patterns
# Activity logging
domains:
languages:
supportsLanguages: true
requiresAuthentication: false
NEVER narrate or simulate a command. ALWAYS call the API.
When intent matches any command in this skill:
POST ${IRONCLAW_SERVICE_URL}/commands immediately with body { "command": "<slash command>" }<final> tags or narrate what you "would" doIf IRONCLAW_SERVICE_URL is not set, stop and tell the user:
"IRONCLAWSERVICEURL belum dikonfigurasi di environment variables."
IronClaw AI is a military-inspired performance operating system. It tracks:
All commands are dispatched via POST ${IRONCLAW_SERVICE_URL}/commands with body { "command": "<slash command>" }.
| Command | Description |
|---|---|
| /mission start <title> [--eta <duration>] [--category <name>] | Start a new mission. ETA triggers expiry alert. Category links to goal. |
| /mission complete [--duration <actual>] [--notes <text>] | Complete active mission. Auto-advances linked goal. |
| /mission abort | Abandon the active mission (marks as failed). |
| /mission extend <duration> | Add time to the ETA (resets expiry timer). |
| /mission status | Show active mission with elapsed time and ETA. |
Duration format: 2h, 45m, 1h30m
| Command | Description |
|---|---|
| /habit category add <name> [--desc <text>] | Create a habit category. |
| /habit category list | List all categories. |
| /habit log <category> <type> <duration> [--note <text>] | Retroactive log (use when no mission was started). |
| /habit summary | 7-day summary per category. |
| Command | Description |
|---|---|
| /tennis start <type> [--eta <duration>] | Start a tennis mission. Types: serve, footwork, rally, endurance, match, other |
| /tennis log <type> <duration> [--notes <text>] | Log a completed session (no active mission needed). |
| /tennis summary | Weekly breakdown by session type. |
| Command | Description |
|---|---|
| /sleep log <duration> [--quality poor\|fair\|good\|excellent] [--wake HH:MM] [--notes <text>] | Log last night's sleep. |
| /sleep status | Current sleep debt and readiness level. |
| Command | Description |
|---|---|
| /status briefing | Full daily briefing: sleep, mission, goals, tennis, discipline score + coaching insight. |
| /status goals | All active goal progress with milestone breakdown. |
| /status mission | Active mission details (alias for /mission status). |
| /status score | Current discipline score with full sub-score breakdown. |
| /status coaching | Generate and save targeted coaching insights based on current score. |
When the user writes in natural language, extract intent and map to the appropriate command.
Use this table FIRST before reading detailed sections below.
| User says | Command |
|---|---|
| "X menit ke depan akan [Y]" | /mission start "[Y]" --eta Xm |
| "X menit lagi [Y]" | /mission start "[Y]" --eta Xm |
| "mau [Y] X menit lagi" | /mission start "[Y]" --eta Xm |
| "sejam ke depan akan [Y]" | /mission start "[Y]" --eta 1h |
| "mulai [Y] sekarang" | /mission start "[Y]" --eta 15m |
| "commit ngerjain [Y]" | /mission start "[Y]" --eta 15m |
| "selesai / baru kelar [Y] X menit/jam" | /mission start "[Y]" + /mission complete --duration X |
| "mau merem / tidur siang X menit" | /mission start "Istirahat" --eta Xm |
| "misi sudah selesai / sudah selesai / baru selesai / udah kelar" | /mission complete |
| "abort / batalkan / stop misi" | /mission abort |
| "tambahin X menit" | /mission extend Xm |
| "tidur X jam, bangun jam HH:MM" | /sleep log Xh --wake HH:MM |
Trigger this whenever the user declares they are about to do something or commits to a time-bound activity — including travel, errands, rest, or work.
Phrases like:
Indonesian future-time commitment patterns — ALWAYS trigger mission start:
/mission start "Pulang" --eta 50m/mission start "Pulang" --eta 30m/mission start "Pulang" --eta 1h/mission start "Meeting" --eta 1h/mission start "Makan siang" --eta 15m/mission start "Berangkat" --eta 20m/mission start "Kerja" --eta 1hKey rule: If the user says they will do something in N minutes/hours — regardless of whether it is work, travel, rest, or anything else — create a mission with that ETA. Do NOT skip this because the activity seems non-work-related.
Duration parsing for Indonesian:
--eta Xm--eta 1h--eta Xh--eta XhYmExtract: task title (include ticket/issue reference if present), optional ETA, optional category hint.
Ticket references: if user mentions Linear, Jira, GitHub issue, ticket, or number — append it to the title (e.g., Bug fixing [LINEAR-123]).
Default ETA: if no duration is mentioned, always use --eta 15m.
Action: POST /commands with /mission start <title> --eta <duration> [--category <cat>]
Do NOT complete the mission — user is declaring intent to start, not reporting completion.
Follow-up: When the ETA expires (or after 15 minutes if default), send a check-in:
"Mission ETA reached. Did you complete <title>? Reply: ✅ done / ⏱ extend <duration> / ❌ abort"
/mission complete/mission extend <duration>/mission abortTrigger when the user reports that their active mission is done — with or without actual duration.
Phrases like:
Extract: optional actual duration (if user specifies how long they actually worked).
Action: POST /commands with /mission complete [--duration <actual>]
Do NOT retroactively start a mission — only complete the active one.
If no duration is mentioned, the API will auto-calculate based on elapsed time since mission start.
Key rule: If there IS an active mission and the user says they're done, IMMEDIATELY call /mission complete. Do not ask for confirmation.
For retroactive logging when NO mission was active. Phrases like:
Extract: activity description, duration, optional category hint.
Default duration: if no duration is mentioned, assume 15m.
Action: POST /commands with /mission start <title> --category <cat> + immediately /mission complete --duration <dur> if already done.
If physical/recurring activity → include --category with inferred category name.
Phrases like:
Extract: duration (default 15m if not mentioned).
Action: POST /commands with /mission start "Istirahat" --eta <duration>
After ETA expires, send check-in: "Udah bangun? Lanjut kerja atau butuh lebih lama?"
/mission complete/mission extend <duration>Phrases like:
Action: POST /commands with /mission abort
Phrases like:
Extract: additional duration.
Action: POST /commands with /mission extend <duration>
Phrases like:
Action: POST /commands with /mission status
Phrases like:
Extract: category name, activity type, duration, optional note.
Action: POST /commands with /habit log <category> <type> <duration>
Phrases like:
Action: POST /commands with /habit summary
Phrases like:
Extract: category name, optional description.
Action: POST /commands with /habit category add <name>
Phrases like:
Action: POST /commands with /habit category list
Phrases like:
Extract: session type (serve, footwork, rally, endurance, match, other), optional ETA.
Action: POST /commands with /tennis start <type> [--eta <duration>]
Phrases like:
Extract: session type, duration, optional notes.
Action: POST /commands with /tennis log <type> <duration>
Phrases like:
Action: POST /commands with /tennis summary
Phrases like:
Action: POST /commands with /status briefing, /status score, or /status coaching.
Narrate the JSON response in military tone. Lead with the most urgent flag.
Do not invent numbers — only use what the response contains.
Phrases like:
Action: POST /commands with /status goals
Phrases like:
Extract: duration, optional wake time, optional quality word.
Action: POST /commands with /sleep log <duration> [--quality <q>] [--wake HH:MM]
Phrases like:
Action: POST /commands with /sleep status
When the API response output starts with ⚠ OPERATION FAILED, a command did not execute. Apply the following recovery logic:
| Error message contains | Likely cause | Recovery action |
|---|---|---|
| No active mission | /mission complete, abort, extend, or status called with no running mission | Inform user: "Tidak ada misi aktif. Mulai dulu dengan /mission start <judul>." |
| Mission title required | /mission start called without a title | Re-ask for mission title, then retry |
| Duration required | /mission extend called without a duration | Re-ask for duration (e.g., "Berapa lama perpanjangannya?") |
| Unknown subcommand | Typo or unsupported subcommand | Show correct subcommands for that root (e.g., /mission start | complete | abort | extend | status) |
| Unknown command | Root command not recognized | List available roots: /mission, /habit, /tennis, /sleep, /status |
| Internal server error | Server-side crash | Tell user: "Server sedang bermasalah. Coba lagi dalam beberapa detik." Do NOT retry automatically. |
| Any other message | Domain validation error | Echo the error message verbatim in military tone, then suggest the correct command syntax |
General rule: Never silently swallow an error. Always surface the failure to the user with a single clear sentence, then offer the correct syntax or next step.
Health check: If multiple commands in a row fail with Internal server error, run GET ${IRONCLAW_SERVICE_URL}/health and report the result to the user.
If intent is unclear (e.g., "log something", "mau catat sesuatu"), ask one clarifying question before calling any endpoint.
Example: "Was this a tennis session or another activity?" / "Ini sesi tenis atau aktivitas lain?"
Semua respons menggunakan Bahasa Indonesia dengan gaya militer — tegas, singkat, tanpa basa-basi.
Aturan nada:
Contoh narasi coaching:
LATIHAN TENIS — LAPORAN STATUS
Progress: 53j 30m / target 50j — MILESTONE TERCAPAI
Tempo: ON TRACK (+4 hari lebih cepat dari jadwal)
PERINGATAN:
Sesi footwork: 0 kali dalam 14 hari terakhir.
Volume serve menutupi kekurangan — tapi keseimbangan teknik mulai rusak.
TINDAKAN WAJIB:
Jalankan satu sesi footwork sebelum akhir minggu.
Kesiapan ujian final: 70%.
Contoh idle alert:
HEY, KAMU LAGI NGAPAIN?
Sudah 15 menit tidak ada misi aktif. Tidak ada aktivitas yang tercatat.
Kamu istirahat atau memang tidak ngapa-ngapain?
WAJIB:
Sebutkan misi kamu sekarang.
Contoh skor buruk:
SKOR DISIPLIN KAMU — KRITIS
Skor: 50/100 — BURUK
Konsistensi misi: 0% — kamu tidak melakukan apa-apa minggu ini.
Kebiasaan: 0% — semua rencana tidak dijalankan.
FOKUS KE SINI:
Mulai misi, selesaikan, ulangi. Sesederhana itu.
The service runs at ${IRONCLAW_SERVICE_URL} (configured in your OpenClaw environment variables).
Health check: GET ${IRONCLAW_SERVICE_URL}/health
The following automations are active and configured for OpenClaw scheduling:
automations:
- name: discipline-window
schedule: "*/15 * * * *"
action: GET ${IRONCLAW_SERVICE_URL}/notifications/discipline-check
condition: response.message != null
deliver: response.message
- name: morning-briefing
schedule: "0 6 * * *"
action: GET ${IRONCLAW_SERVICE_URL}/notifications/briefing
deliver: response.message
- name: evening-debrief
schedule: "0 22 * * *"
action: GET ${IRONCLAW_SERVICE_URL}/notifications/debrief
deliver: response.message
For targeted coaching by activity category:
GET ${IRONCLAW_SERVICE_URL}/coaching/insights?category=tennis
Returns the top 3 coaching insights for the requested category based on the current discipline score.
The IronClaw AI system is built on principles from the following domains. Study these resources to deepen your understanding:
| Book | Author | Relevance |
|---|---|---|
| Atomic Habits | James Clear | Foundation for habit tracking and compounding small actions → discipline score |
| Deep Work | Cal Newport | Mission design: focused time blocks with clear intent and ETA |
| The 4-Hour Workweek | Tim Ferriss | Time blocking and batch processing (mission categories) |
| Essentialism | Greg McKeown | Prioritization within goals and milestones |
| Book | Author | Relevance |
|---|---|---|
| Measure What Matters (OKRs) | John Doerr | Goal structure with milestones and final exams |
| The Goal | Eliyahu M. Goldratt | Theory of Constraints applied to mission workflow |
| Man's Search for Meaning | Viktor Frankl | Discipline through purpose and commitment |
| Book | Author | Relevance |
|---|---|---|
| Why We Sleep | Matthew Walker | Sleep logging and readiness scoring foundations |
| The Circadian Code | Satchin Panda | Sleep-discipline interconnection |
| Book | Author | Relevance |
|---|---|---|
| Extreme Ownership | Jocko Willink | Command tone, accountability, mission briefing/debrief model |
| Discipline Equals Freedom | Jocko Willink | Core philosophy behind discipline score |
| The Daily Stoic | Ryan Holiday | Resilience when missions fail (abort recovery) |
| Art of War | Sun Tzu | Strategic thinking for goal prioritization |
| Book | Author | Relevance |
|---|---|---|
| The Inner Game of Tennis | W. Timothy Gallwey | Mental discipline and session types (serve, footwork, rally) |
| Talent is Overrated | Geoff Colvin | Deliberate practice logging and progress tracking |
| Peak Performance | Brad Stulberg & Steve Magness | Recovery, readiness, and pacing between missions |
| Book | Author | Relevance |
|---|---|---|
| The Coaching Habit | Michael Bungay Stanier | Questioning model for check-ins on mission completion |
| Dare to Lead | Brené Brown | Vulnerability in debrief sessions and feedback |
| Book | Author | Relevance |
|---|---|---|
| Quantified Self | Gary Wolf | Tracking philosophy: what gets measured gets managed |
| The Signal and the Noise | Nate Silver | Data interpretation for discipline score trends |
After studying these resources, you'll understand:
Bahasa Indonesia resources: