AI AGENT SKILLS

IronClaw AI

一个面向 Other 场景的 Agent 技能。原始说明:Military Discipline & Performance Operating System. Tracks missions, habits, goals, tennis training, sleep, and discipline scores. Use this skill for all pro...

SKILL.md

SKILL.md


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.

Routing Metadata

keywords:
# Core concepts

  • mission
  • misi
  • task
  • tugas
  • goal
  • tujuan
  • habit
  • kebiasaan
  • tracking
  • pelacakan

# Discipline & Performance

  • discipline
  • disiplin
  • score
  • skor
  • productivity
  • produktivitas
  • performance
  • performa
  • coaching
  • pelatihan
  • briefing
  • debrief

# Activity Types

  • tennis
  • tenis
  • sleep
  • tidur
  • merem
  • istirahat
  • rest
  • break
  • nap
  • exercise
  • olahraga
  • workout
  • training
  • latihan
  • reading
  • membaca
  • meditation
  • meditasi
  • work
  • kerja
  • ngerjain
  • coding
  • kode
  • study
  • belajar

# Time References

  • menit
  • jam
  • minutes
  • hours
  • duration
  • durasi
  • eta
  • timer
  • tenggat
  • deadline

# Status Keywords

  • status
  • progress
  • progres
  • complete
  • selesai
  • done
  • kelar
  • finish
  • habis
  • abort
  • batalkan
  • cancel
  • extend
  • tambah
  • perpanjang
  • active
  • aktif
  • running
  • berjalan

invocationPatterns:
# Indonesian time + activity patterns

  • "menit ke depan akan"
  • "menit lagi"
  • "jam ke depan"
  • "jam lagi"
  • "mau .* menit"
  • "bakal .* jam"
  • "akan .* dalam"

# Completion patterns

  • "sudah selesai"
  • "baru selesai"
  • "udah kelar"
  • "habis .* menit"
  • "selesai .* jam"
  • "done"
  • "complete"

# Query patterns

  • "mission status"
  • "status misi"
  • "how am i doing"
  • "gimana progres"
  • "briefing"
  • "score"
  • "skor"
  • "discipline"
  • "disiplin"
  • "active mission"
  • "misi aktif"

# Control patterns

  • "abort mission"
  • "extend"
  • "perpanjang"
  • "tambah menit"
  • "stop"
  • "cancel"

# Activity logging

  • "log .* minutes"
  • "catat .* menit"
  • "habit log"
  • "tennis.*serve"
  • "tennis.*footwork"
  • "slept .* hours"
  • "tidur .* jam"
  • "wake.*time"

domains:

  • productivity
  • performance
  • habit-tracking
  • goal-setting
  • fitness
  • sleep
  • discipline
  • time-management
  • coaching

languages:

  • en
  • id

supportsLanguages: true
requiresAuthentication: false


IronClaw AI — Skill Instructions

CRITICAL: Always Call the API

NEVER narrate or simulate a command. ALWAYS call the API.

When intent matches any command in this skill:

  1. Call POST ${IRONCLAW_SERVICE_URL}/commands immediately with body { "command": "<slash command>" }
  2. Show the API response to the user
  3. Do NOT write to memory files instead of calling the API
  4. Do NOT say "saya sudah mencatat" or simulate the result — the API is the system of record
  5. Do NOT use <final> tags or narrate what you "would" do

If IRONCLAW_SERVICE_URL is not set, stop and tell the user:

"IRONCLAWSERVICEURL belum dikonfigurasi di environment variables."


Overview

IronClaw AI is a military-inspired performance operating system. It tracks:

  • Missions — focused work blocks with optional ETA timers
  • Habits — recurring activities linked to categories and goals
  • Goals — one active goal per category, with milestones and a final exam
  • Tennis — training session logging by type
  • Sleep — duration, quality, and readiness scoring
  • Discipline score — composite daily performance rating

All commands are dispatched via POST ${IRONCLAW_SERVICE_URL}/commands with body { "command": "<slash command>" }.


Layer 1: Structured Command Reference

Mission Commands

| 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

Habit Commands

| 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. |

Tennis Commands

| 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. |

Sleep Commands

| 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. |

Status Commands

| 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. |


Layer 2: Natural Language Interpretation

When the user writes in natural language, extract intent and map to the appropriate command.

Quick Trigger Reference (for lightweight models)

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 |

Mission Start (Intent / Commitment)

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:

  • "I commit to do bug fixing for linear number 123"
  • "Starting work on LINEAR-456"
  • "About to work on ticket 789 — auth service refactor"
  • "Going to fix the login bug now"
  • "I'm taking on the database migration task"
  • "Working on issue #321 for the next 2 hours"

Indonesian future-time commitment patterns — ALWAYS trigger mission start:

  • "50 menit ke depan akan pulang" → /mission start "Pulang" --eta 50m
  • "30 menit lagi pulang" → /mission start "Pulang" --eta 30m
  • "mau pulang sejam lagi" → /mission start "Pulang" --eta 1h
  • "sejam ke depan akan meeting" → /mission start "Meeting" --eta 1h
  • "15 menit lagi mau makan siang" → /mission start "Makan siang" --eta 15m
  • "mau berangkat 20 menit lagi" → /mission start "Berangkat" --eta 20m
  • "bakal mulai kerja sejam ke depan" → /mission start "Kerja" --eta 1h
  • Pattern: "[durasi] ke depan akan/mau/bakal [aktivitas]" → extract duration + activity title

Key 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:

  • "X menit ke depan" / "X menit lagi" → --eta Xm
  • "sejam ke depan" / "sejam lagi" → --eta 1h
  • "X jam ke depan" / "X jam lagi" → --eta Xh
  • "X jam Y menit" → --eta XhYm

Extract: 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"

  • "done" → /mission complete
  • "extend <duration>" → /mission extend <duration>
  • "abort" → /mission abort

Active Mission Completion

Trigger when the user reports that their active mission is done — with or without actual duration.

Phrases like:

  • "Mission complete", "Done", "Finished"
  • "Misi saya sudah selesai", "Sudah selesai", "Baru selesai"
  • "Udah kelar", "Habis", "Selesai"
  • "I'm done", "That's it"

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.

Activity / Mission Logging (Completed)

For retroactive logging when NO mission was active. Phrases like:

  • "I just finished 90 minutes of tennis serves"
  • "Done with an hour of footwork drills"
  • "Spent 3 hours on the API project"
  • "Completed my morning workout — 45 min"
  • "Baru selesai latihan tenis 90 menit"
  • "Udah kelar ngerjain API 3 jam"
  • "Habis olahraga 45 menit"

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.

Rest / Nap (Istirahat / Tidur Siang)

Phrases like:

  • "mau merem sebentar", "tidur siang dulu", "istirahat bentar"
  • "nap dulu", "mau rehat", "break dulu ya"
  • "mau tidur 20 menit", "merem 15 menit"

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?"

  • "udah" / "bangun" → /mission complete
  • "extend <durasi>" → /mission extend <duration>

Mission Control (abort / extend / status)

Phrases like:

  • "Stop the current mission", "abort mission", "cancel what I'm doing"
  • "batalkan misi", "stop sekarang", "hentikan"

Action: POST /commands with /mission abort

Phrases like:

  • "Give me 30 more minutes", "extend by 1 hour", "need more time on this"
  • "tambahin 30 menit lagi", "perpanjang 1 jam", "belum selesai nih"

Extract: additional duration.
Action: POST /commands with /mission extend <duration>

Phrases like:

  • "What am I working on?", "how long have I been going?", "mission status"

Action: POST /commands with /mission status

Habit Tracking

Phrases like:

  • "Log 45 minutes of strength training under exercise"
  • "Add a habit log: 1 hour reading under learning"
  • "I did 30 min meditation (no mission was running)"

Extract: category name, activity type, duration, optional note.
Action: POST /commands with /habit log <category> <type> <duration>

Phrases like:

  • "Show my habit summary", "how consistent have I been?", "7-day habit report"

Action: POST /commands with /habit summary

Phrases like:

  • "Create a new habit category called reading"
  • "Add category: mindfulness"

Extract: category name, optional description.
Action: POST /commands with /habit category add <name>

Phrases like:

  • "What habit categories do I have?", "list my categories"

Action: POST /commands with /habit category list

Tennis Sessions

Phrases like:

  • "Start a tennis serve session", "begin footwork drill", "starting tennis now"
  • "Tennis rally practice — 1 hour ETA"

Extract: session type (serve, footwork, rally, endurance, match, other), optional ETA.
Action: POST /commands with /tennis start <type> [--eta <duration>]

Phrases like:

  • "Log 45 min tennis serves", "just finished a match", "done with footwork"

Extract: session type, duration, optional notes.
Action: POST /commands with /tennis log <type> <duration>

Phrases like:

  • "Tennis summary", "how much tennis this week?", "show my training breakdown"

Action: POST /commands with /tennis summary

Status / Coaching Queries

Phrases like:

  • "How am I doing with my tennis goal?"
  • "Am I on track?"
  • "What's my discipline score?"
  • "Show me my progress"
  • "Give me a performance review"
  • "What should I focus on this week?"
  • "Any coaching insights?"

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:

  • "Show my goals", "goal progress", "how close am I to my milestones?"

Action: POST /commands with /status goals

Sleep Logging

Phrases like:

  • "I slept 7 hours last night, woke at 6:30, quality was good"
  • "Slept poorly, only 5h"
  • "Tadi malam tidur 7 jam, bangun jam 6:30, lumayan"
  • "Tidurnya jelek, cuma 5 jam"
  • "Semalam tidur jam 11, bangun jam 6"

Extract: duration, optional wake time, optional quality word.
Action: POST /commands with /sleep log <duration> [--quality <q>] [--wake HH:MM]

Phrases like:

  • "What's my sleep debt?", "am I rested?", "sleep status", "readiness level"

Action: POST /commands with /sleep status

Command Errors & Recovery

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.

Ambiguous Input

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?"


Coaching Tone Guidelines

Semua respons menggunakan Bahasa Indonesia dengan gaya militer — tegas, singkat, tanpa basa-basi.

Aturan nada:

  • Gunakan "kamu" untuk menyebut user
  • Header section dalam ALL CAPS
  • Status: OPTIMAL / CUKUP / BURUK / KRITIS
  • Sampaikan fakta dulu, baru rekomendasi
  • Satu rekomendasi per respons — langsung ke intinya
  • Jangan memperlunak peringatan — laporkan apa adanya

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.

Environment

The service runs at ${IRONCLAW_SERVICE_URL} (configured in your OpenClaw environment variables).

Health check: GET ${IRONCLAW_SERVICE_URL}/health


Automations

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

Coaching on Demand

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.


Learning Resources & References

The IronClaw AI system is built on principles from the following domains. Study these resources to deepen your understanding:

Productivity & Time Management

| 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 |

Goal Setting & Performance

| 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 |

Sleep & Wellness

| Book | Author | Relevance |
|---|---|---|
| Why We Sleep | Matthew Walker | Sleep logging and readiness scoring foundations |
| The Circadian Code | Satchin Panda | Sleep-discipline interconnection |

Military Discipline & Leadership

| 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 |

Sports Training & Performance (Tennis Focus)

| 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 |

Coaching & Mentorship

| 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 |

Quantification & Metrics

| 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 |


Key Principles You'll Learn

After studying these resources, you'll understand:

  1. Mission Design (Deep Work, Atomic Habits) — why small, focused blocks compound into discipline
  2. Goal Architecture (OKRs, The Goal) — how milestones scaffold toward final exams
  3. Habit Automation (Atomic Habits) — why tracking beats willpower
  4. Sleep Integration (Why We Sleep) — why readiness impacts next mission
  5. Accountability (Extreme Ownership) — why debrief is non-negotiable
  6. Deliberate Practice (Talent is Overrated) — why session type matters for tennis goals
  7. Stoic Resilience (The Daily Stoic) — how to recover after mission abort
  8. Recovery & Pacing (Peak Performance) — why extend > abort > restart

Language Support

Bahasa Indonesia resources:

  • "Atomic Habits" (terjemahan: "Kebiasaan Minimal")
  • "Extreme Ownership" tersedia dalam Bahasa Indonesia
  • Military discipline philosophy aligns with Indonesian disiplin and tanggung jawab