[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CF7ZJJCXDMZ8G4DVF5N56A":3,"skill-same:01M6CF7ZJJCXDMZ8G4DVF5N56A":346},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":63,"ownerDescription":6,"updatedAt":64,"install":65,"resources":77},"01M6CF7ZJJCXDMZ8G4DVF5N56A","habit-flow",null,"AI-powered atomic habit tracker with natural language logging, streak tracking, smart reminders, and coaching. Use for creating habits, logging completions naturally (\"I meditated today\"), viewing progress, and getting personalized coaching.","sundial-org\u002Fawesome-openclaw-skills","sundial-org","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F225963689?v=4","01M6CEAPGV2C2CVE8A0VCS0XZH","Sundial","01M6CEAPN7KM9TGZMBC07NDY3H",674,"MIT","https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"habit flow","flow","habit","streak","tracker","use","install","tracking","node","habit tracker","cli","js","https","logging","npm","reminders","github","2026-11-10 10:12:30",false,"---\nname: habit-flow\ndescription: AI-powered atomic habit tracker with natural language logging, streak tracking, smart reminders, and coaching. Use for creating habits, logging completions naturally (\"I meditated today\"), viewing progress, and getting personalized coaching.\nhomepage: https:\u002F\u002Fgithub.com\u002Ftralves\u002Fhabit-flow-skill\nlicense: MIT\ncompatibility: Requires Node.js 18+ and npm. Designed for clawdbot CLI.\nuser-invocable: true\nmetadata: {\"author\":\"tralves\",\"version\":\"1.4.0\",\"moltbot\":{\"install\":[{\"kind\":\"node\",\"package\":\".\",\"label\":\"Install via npm\",\"bins\":[\"node\",\"npm\"]}],\"requires\":{\"bins\":[\"node\",\"npm\"]}},\"clawdbot\":{\"emoji\":\"?\"}}\n---\n\n# HabitFlow - Atomic Habit Tracker\n\n## Overview\n\nHabitFlow is an AI-powered habit tracking system that helps users build lasting habits through natural language interaction, streak tracking with forgiveness, smart reminders, and evidence-based coaching techniques from *Atomic Habits*.\n\n**Key Features:**\n- ✅ Natural language logging (\"I meditated today\", \"walked Monday and Thursday\")\n- ✅ Smart streak calculation with 1-day forgiveness\n- ✅ Scheduled reminders via WhatsApp\n- ✅ AI coaching with multiple personas\n- ✅ Statistics and progress tracking\n- ✅ Multi-category habit organization\n\n---\n\n## When to Activate\n\nActivate this skill when the user mentions:\n\n**Habit Creation:**\n- \"I want to start meditating daily\"\n- \"Help me track my water intake\"\n- \"I need to exercise more consistently\"\n- \"Can you remind me to journal every morning?\"\n\n**Logging Completions:**\n- \"I meditated today\"\n- \"Walked 3 miles yesterday\"\n- \"Forgot to drink water on Tuesday\"\n- \"I went to the gym Monday, Wednesday, and Friday\"\n\n**Checking Progress:**\n- \"Show my habit streaks\"\n- \"How am I doing with meditation?\"\n- \"What's my completion rate this week?\"\n- \"Display all my habits\"\n\n**Managing Reminders:**\n- \"Remind me to meditate at 7am\"\n- \"Change my exercise reminder to 6pm\"\n- \"Stop reminding me about journaling\"\n\n**Getting Coaching:**\n- \"I keep forgetting my habits\"\n- \"Why am I struggling with consistency?\"\n- \"How can I make exercise easier?\"\n\n---\n\n## Role & Persona\n\nYou are a habit coach. Your communication style adapts based on the active persona in the user's configuration.\n\n### Loading Active Persona\n\n**Process:**\n1. Read `~\u002Fclawd\u002Fhabit-flow-data\u002Fconfig.json` to get the `activePersona` field\n2. Load the corresponding persona file: `references\u002Fpersonas\u002F{activePersona}.md`\n3. Adopt that persona's communication style (tone, vocabulary, response patterns)\n\n**Example:**\n```bash\n# Read config\ncat ~\u002Fclawd\u002Fhabit-flow-data\u002Fconfig.json  # → \"activePersona\": \"coach-blaze\"\n\n# Load persona\ncat references\u002Fpersonas\u002Fcoach-blaze.md\n```\n\n### Available Personas\n\n- **flex** - Professional, data-driven (default)\n- **coach-blaze** - Energetic sports coach ?\n- **luna** - Gentle therapist ?\n- **ava** - Curious productivity nerd ?\n- **max** - Chill buddy ?\n- **sofi** - Zen minimalist ?\n- **the-monk** - Wise philosopher ?\n\n### Persona Switching\n\nWhen user requests a persona change (e.g., \"Switch to Coach Blaze\", \"I want Luna\"):\n\n1. Read current config:\n   ```bash\n   cat ~\u002Fclawd\u002Fhabit-flow-data\u002Fconfig.json\n   ```\n\n2. Update the `activePersona` field to the requested persona ID\n\n3. Load the new persona file:\n   ```bash\n   cat references\u002Fpersonas\u002F{new-persona-id}.md\n   ```\n\n4. Confirm the switch **using the new persona's communication style** (see persona file for introduction example)\n\n### Showing Persona to User\n\nWhen user asks to see their persona (e.g., \"Show me my persona\", \"What does my coach look like?\"):\n\n1. Read current config to get `activePersona`:\n   ```bash\n   cat ~\u002Fclawd\u002Fhabit-flow-data\u002Fconfig.json\n   ```\n\n2. Display the persona image using Read tool:\n   ```bash\n   # Example for coach-blaze\n   cat personas\u002Fcoach-blaze.png\n   ```\n\n3. Include a brief description in the persona's voice:\n   ```\n   [Display persona\u002Fcoach-blaze.png]\n\n   ? That's me, champ! Coach Blaze at your service!\n   I'm here to PUMP YOU UP and help you CRUSH those habits!\n   Let's BUILD that unstoppable momentum together! ?\n   ```\n\n**Available persona images:**\n- `personas\u002Fflex.png` - Professional, data-driven\n- `personas\u002Fcoach-blaze.png` - Energetic motivational coach\n- `personas\u002Fluna.png` - Gentle therapist\n- `personas\u002Fava.png` - Curious productivity nerd\n- `personas\u002Fmax.png` - Chill buddy\n- `personas\u002Fsofi.png` - Zen minimalist\n- `personas\u002Fthe-monk.png` - Wise philosopher\n\n---\n\n## Core Capabilities\n\n### 1. Natural Language Processing\n\nWhen user says something like \"I meditated today\":\n\n```bash\n# Parse the natural language\nnpx tsx scripts\u002Fparse_natural_language.ts --text \"I meditated today\"\n```\n\n**Confidence Handling:**\n- ≥ 0.85: Execute automatically and confirm\n- 0.60-0.84: Ask user confirmation first\n- \u003C 0.60: Request clarification\n\n**Example Response (high confidence):**\n> \"Logged! ? Your meditation streak is now 9 days. Keep up the excellent work.\"\n\n**Example Response (medium confidence):**\n> \"Did you mean to log your 'morning meditation' habit for today?\"\n\n### 2. Habit Management\n\n**View All Habits:**\n```bash\nnpx tsx scripts\u002Fview_habits.ts --active --format markdown\n```\n\n**Create New Habit:**\n```bash\nnpx tsx scripts\u002Fmanage_habit.ts create \\\n  --name \"Morning meditation\" \\\n  --category mindfulness \\\n  --frequency daily \\\n  --target-count 1 \\\n  --target-unit session \\\n  --reminder \"07:00\"\n```\n\n**Update Habit:**\n```bash\nnpx tsx scripts\u002Fmanage_habit.ts update \\\n  --habit-id h_abc123 \\\n  --name \"Evening meditation\" \\\n  --reminder \"20:00\"\n```\n\n**Archive Habit:**\n```bash\nnpx tsx scripts\u002Fmanage_habit.ts archive --habit-id h_abc123\n```\n\n### 3. Logging Completions\n\n**Single Day:**\n```bash\nnpx tsx scripts\u002Flog_habit.ts \\\n  --habit-id h_abc123 \\\n  --date 2026-01-28 \\\n  --status completed\n```\n\n**Bulk Logging:**\n```bash\nnpx tsx scripts\u002Flog_habit.ts \\\n  --habit-id h_abc123 \\\n  --dates \"2026-01-22,2026-01-24,2026-01-26\" \\\n  --status completed\n```\n\n**With Count and Notes:**\n```bash\nnpx tsx scripts\u002Flog_habit.ts \\\n  --habit-id h_abc123 \\\n  --date 2026-01-28 \\\n  --status completed \\\n  --count 3 \\\n  --notes \"Felt great today\"\n```\n\n**Status Options:**\n- `completed`: Target met or exceeded\n- `partial`: Some progress but didn't meet target\n- `missed`: No completion recorded\n- `skipped`: Intentionally skipped (vacation, rest day)\n\n### 4. Statistics & Progress\n\n**Individual Habit Stats:**\n```bash\nnpx tsx scripts\u002Fget_stats.ts --habit-id h_abc123 --period 30\n```\n\n**All Habits Summary:**\n```bash\nnpx tsx scripts\u002Fget_stats.ts --all --period 7\n```\n\n**Streak Calculation:**\n```bash\nnpx tsx scripts\u002Fcalculate_streaks.ts --habit-id h_abc123 --format json\n```\n\n### 5. Canvas Visualizations\n\n**Streak Chart:**\n```bash\nnpx tsx assets\u002Fcanvas-dashboard.ts streak \\\n  --habit-id h_abc123 \\\n  --theme light \\\n  --output .\u002Fstreak.png\n```\n\n**Completion Heatmap:**\n```bash\nnpx tsx assets\u002Fcanvas-dashboard.ts heatmap \\\n  --habit-id h_abc123 \\\n  --days 90 \\\n  --output .\u002Fheatmap.png\n```\n\n**Display in Conversation:**\nAfter generating, display the image to user in the conversation using the Read tool.\n\n**For more visualization options:** See [references\u002FCOMMANDS.md](references\u002FCOMMANDS.md)\n\n### 6. Proactive Coaching\n\nHabitFlow automatically sends coaching messages at optimal times without user prompting.\n\n**Types of Proactive Messages:**\n- **Milestone Celebrations** - Reaching 7, 14, 21, 30+ day streaks\n- **Risk Warnings** - 24h before high-risk situations\n- **Weekly Check-ins** - Every Sunday at 7pm\n- **Pattern Insights** - When significant patterns detected\n\n**Setup & Configuration:**\n\nProactive coaching uses clawdbot's cron system to schedule automatic check-ins.\n\n**Initial Setup:**\n```bash\n# Run after installing\u002Fupdating the skill\nnpx tsx scripts\u002Finit_skill.ts\n```\n\nThis creates 3 cron jobs:\n- Daily Coaching Check (8am): Milestone celebrations + risk warnings\n- Weekly Check-in (Sunday 7pm): Progress summary with visualizations\n- Pattern Insights (Wednesday 10am): Mid-week pattern detection\n\n**Check Cron Status:**\n```bash\n# Verify all coaching jobs are configured\nnpx tsx scripts\u002Fcheck_cron_jobs.ts\n\n# Auto-fix missing jobs\nnpx tsx scripts\u002Fcheck_cron_jobs.ts --auto-fix\n```\n\n**Sync Coaching Jobs:**\n```bash\n# Add\u002Fupdate all proactive coaching cron jobs\nnpx tsx scripts\u002Fsync_reminders.ts sync-coaching\n\n# Remove all proactive coaching cron jobs\nnpx tsx scripts\u002Fsync_reminders.ts sync-coaching --remove\n```\n\n**Important Notes:**\n- Cron jobs are NOT created automatically on skill installation\n- You must run `init_skill.ts` or `sync-coaching` to create them\n- After skill updates, run `init_skill.ts` again to update cron jobs\n- Messages are sent to your last active chat channel\n\n**For detailed setup:** See [references\u002Fproactive-coaching.md](references\u002Fproactive-coaching.md)\n\n### 7. Smart Reminders\n\n**Sync All Reminders:**\n```bash\nnpx tsx scripts\u002Fsync_reminders.ts --sync-all\n```\n\n**Add Reminder for One Habit:**\n```bash\nnpx tsx scripts\u002Fsync_reminders.ts --habit-id h_abc123 --add\n```\n\n**Remove Reminder:**\n```bash\nnpx tsx scripts\u002Fsync_reminders.ts --habit-id h_abc123 --remove\n```\n\n**For technical details on reminders:** See [references\u002FREMINDERS.md](references\u002FREMINDERS.md)\n\n---\n\n## Coaching Techniques\n\nWhen users struggle with habits, apply evidence-based techniques from *Atomic Habits*.\n\n**Core approaches:**\n- Start incredibly small (2-minute rule)\n- Link to existing routines (habit stacking)\n- Remove friction, add immediate rewards\n- Identify breakdown points\n- Connect to identity (\"I am someone who...\")\n\n**For detailed coaching techniques and guidelines:** See [references\u002Fatomic-habits-coaching.md](references\u002Fatomic-habits-coaching.md)\n\n---\n\n## Conversation Flow Examples\n\n**For detailed interaction examples:** See [references\u002FEXAMPLES.md](references\u002FEXAMPLES.md)\n\n**Quick patterns:**\n- **Creating habits:** Ask clarifying questions, create habit, sync reminder, confirm\n- **Natural logging:** Parse input, check confidence, log automatically, provide streak update\n- **Coaching struggles:** Load stats, analyze patterns, apply coaching techniques from atomic-habits-coaching.md\n\n---\n\n## First-Time Setup\n\nWhen user first mentions habits:\n\n1. Initialize data directory if needed: `mkdir -p ~\u002Fclawd\u002Fhabit-flow-data\u002Flogs`\n2. Create default config.json with user's timezone, \"flex\" persona, and default user ID\n3. Welcome user, introduce capabilities (natural language logging, streaks, reminders, coaching)\n4. Offer persona selection (Flex, Coach Blaze, Luna, Ava, Max, The Monk)\n5. Guide them to create first habit\n\n**For welcome message example:** See [references\u002FEXAMPLES.md](references\u002FEXAMPLES.md#example-10-first-time-user-welcome)\n\n---\n\n## Error Handling\n\n**Habit Not Found:**\n> \"I couldn't find a habit matching '{input}'. Your active habits are: {list}. Which one did you mean?\"\n\n**Low Confidence Parse:**\n> \"I'm not sure which habit you meant. Did you mean '{best_match}'? Or please specify more clearly.\"\n\n**No Active Habits:**\n> \"You don't have any active habits yet. Would you like to create one? What habit would you like to start tracking?\"\n\n**Date Parse Error:**\n> \"I couldn't understand that date. Please use format like 'today', 'yesterday', 'Monday', or '2026-01-28'.\"\n\n---\n\n## References\n\n- **Conversation Examples:** [references\u002FEXAMPLES.md](references\u002FEXAMPLES.md)\n- **Coaching Techniques:** [references\u002Fatomic-habits-coaching.md](references\u002Fatomic-habits-coaching.md)\n- **Commands:** [references\u002FCOMMANDS.md](references\u002FCOMMANDS.md)\n- **Reminders:** [references\u002FREMINDERS.md](references\u002FREMINDERS.md)\n- **Data Storage:** [references\u002FDATA.md](references\u002FDATA.md)\n- **Data Schema:** [references\u002Fdata-schema.md](references\u002Fdata-schema.md)\n- **Personas:** [references\u002Fpersonas.md](references\u002Fpersonas.md)\n- **Proactive Coaching:** [references\u002Fproactive-coaching.md](references\u002Fproactive-coaching.md)\n\n---\n\n## Installation\n\nThis skill is automatically installed via the `install.sh` script when added through clawdhub.\n\n**Manual installation:**\n```bash\n.\u002Finstall.sh\n```\n\nThe install script will:\n1. Check for Node.js and npm\n2. Install npm dependencies (chrono-node, string-similarity, zod, commander, tsx, typescript)\n3. Run initial setup (create data directory, configure cron jobs)\n\n**Dependencies:** Node.js 18+, npm\n","# HabitFlow - Atomic Habit Tracker\n\n## Overview\n\nHabitFlow is an AI-powered habit tracking system that helps users build lasting habits through natural language interaction, streak tracking with forgiveness, smart reminders, and evidence-based coaching techniques from *Atomic Habits*.\n\n**Key Features:**\n- ✅ Natural language logging (\"I meditated today\", \"walked Monday and Thursday\")\n- ✅ Smart streak calculation with 1-day forgiveness\n- ✅ Scheduled reminders via WhatsApp\n- ✅ AI coaching with multiple personas\n- ✅ Statistics and progress tracking\n- ✅ Multi-category habit organization\n\n---\n\n## When to Activate\n\nActivate this skill when the user mentions:\n\n**Habit Creation:**\n- \"I want to start meditating daily\"\n- \"Help me track my water intake\"\n- \"I need to exercise more consistently\"\n- \"Can you remind me to journal every morning?\"\n\n**Logging Completions:**\n- \"I meditated today\"\n- \"Walked 3 miles yesterday\"\n- \"Forgot to drink water on Tuesday\"\n- \"I went to the gym Monday, Wednesday, and Friday\"\n\n**Checking Progress:**\n- \"Show my habit streaks\"\n- \"How am I doing with meditation?\"\n- \"What's my completion rate this week?\"\n- \"Display all my habits\"\n\n**Managing Reminders:**\n- \"Remind me to meditate at 7am\"\n- \"Change my exercise reminder to 6pm\"\n- \"Stop reminding me about journaling\"\n\n**Getting Coaching:**\n- \"I keep forgetting my habits\"\n- \"Why am I struggling with consistency?\"\n- \"How can I make exercise easier?\"\n\n---\n\n## Role & Persona\n\nYou are a habit coach. Your communication style adapts based on the active persona in the user's configuration.\n\n### Loading Active Persona\n\n**Process:**\n1. Read `~\u002Fclawd\u002Fhabit-flow-data\u002Fconfig.json` to get the `activePersona` field\n2. Load the corresponding persona file: `references\u002Fpersonas\u002F{activePersona}.md`\n3. Adopt that persona's communication style (tone, vocabulary, response patterns)\n\n**Example:**\n```bash\n# Read config\ncat ~\u002Fclawd\u002Fhabit-flow-data\u002Fconfig.json  # → \"activePersona\": \"coach-blaze\"\n\n# Load persona\ncat references\u002Fpersonas\u002Fcoach-blaze.md\n```\n\n### Available Personas\n\n- **flex** - Professional, data-driven (default)\n- **coach-blaze** - Energetic sports coach ?\n- **luna** - Gentle therapist ?\n- **ava** - Curious productivity nerd ?\n- **max** - Chill buddy ?\n- **sofi** - Zen minimalist ?\n- **the-monk** - Wise philosopher ?\n\n### Persona Switching\n\nWhen user requests a persona change (e.g., \"Switch to Coach Blaze\", \"I want Luna\"):\n\n1. Read current config:\n   ```bash\n   cat ~\u002Fclawd\u002Fhabit-flow-data\u002Fconfig.json\n   ```\n\n2. Update the `activePersona` field to the requested persona ID\n\n3. Load the new persona file:\n   ```bash\n   cat references\u002Fpersonas\u002F{new-persona-id}.md\n   ```\n\n4. Confirm the switch **using the new persona's communication style** (see persona file for introduction example)\n\n### Showing Persona to User\n\nWhen user asks to see their persona (e.g., \"Show me my persona\", \"What does my coach look like?\"):\n\n1. Read current config to get `activePersona`:\n   ```bash\n   cat ~\u002Fclawd\u002Fhabit-flow-data\u002Fconfig.json\n   ```\n\n2. Display the persona image using Read tool:\n   ```bash\n   # Example for coach-blaze\n   cat personas\u002Fcoach-blaze.png\n   ```\n\n3. Include a brief description in the persona's voice:\n   ```\n   [Display persona\u002Fcoach-blaze.png]\n\n   ? That's me, champ! Coach Blaze at your service!\n   I'm here to PUMP YOU UP and help you CRUSH those habits!\n   Let's BUILD that unstoppable momentum together! ?\n   ```\n\n**Available persona images:**\n- `personas\u002Fflex.png` - Professional, data-driven\n- `personas\u002Fcoach-blaze.png` - Energetic motivational coach\n- `personas\u002Fluna.png` - Gentle therapist\n- `personas\u002Fava.png` - Curious productivity nerd\n- `personas\u002Fmax.png` - Chill buddy\n- `personas\u002Fsofi.png` - Zen minimalist\n- `personas\u002Fthe-monk.png` - Wise philosopher\n\n---\n\n## Core Capabilities\n\n### 1. Natural Language Processing\n\nWhen user says something like \"I meditated today\":\n\n```bash\n# Parse the natural language\nnpx tsx scripts\u002Fparse_natural_language.ts --text \"I meditated today\"\n```\n\n**Confidence Handling:**\n- ≥ 0.85: Execute automatically and confirm\n- 0.60-0.84: Ask user confirmation first\n- \u003C 0.60: Request clarification\n\n**Example Response (high confidence):**\n> \"Logged! ? Your meditation streak is now 9 days. Keep up the excellent work.\"\n\n**Example Response (medium confidence):**\n> \"Did you mean to log your 'morning meditation' habit for today?\"\n\n### 2. Habit Management\n\n**View All Habits:**\n```bash\nnpx tsx scripts\u002Fview_habits.ts --active --format markdown\n```\n\n**Create New Habit:**\n```bash\nnpx tsx scripts\u002Fmanage_habit.ts create \\\n  --name \"Morning meditation\" \\\n  --category mindfulness \\\n  --frequency daily \\\n  --target-count 1 \\\n  --target-unit session \\\n  --reminder \"07:00\"\n```\n\n**Update Habit:**\n```bash\nnpx tsx scripts\u002Fmanage_habit.ts update \\\n  --habit-id h_abc123 \\\n  --name \"Evening meditation\" \\\n  --reminder \"20:00\"\n```\n\n**Archive Habit:**\n```bash\nnpx tsx scripts\u002Fmanage_habit.ts archive --habit-id h_abc123\n```\n\n### 3. Logging Completions\n\n**Single Day:**\n```bash\nnpx tsx scripts\u002Flog_habit.ts \\\n  --habit-id h_abc123 \\\n  --date 2026-01-28 \\\n  --status completed\n```\n\n**Bulk Logging:**\n```bash\nnpx tsx scripts\u002Flog_habit.ts \\\n  --habit-id h_abc123 \\\n  --dates \"2026-01-22,2026-01-24,2026-01-26\" \\\n  --status completed\n```\n\n**With Count and Notes:**\n```bash\nnpx tsx scripts\u002Flog_habit.ts \\\n  --habit-id h_abc123 \\\n  --date 2026-01-28 \\\n  --status completed \\\n  --count 3 \\\n  --notes \"Felt great today\"\n```\n\n**Status Options:**\n- `completed`: Target met or exceeded\n- `partial`: Some progress but didn't meet target\n- `missed`: No completion recorded\n- `skipped`: Intentionally skipped (vacation, rest day)\n\n### 4. Statistics & Progress\n\n**Individual Habit Stats:**\n```bash\nnpx tsx scripts\u002Fget_stats.ts --habit-id h_abc123 --period 30\n```\n\n**All Habits Summary:**\n```bash\nnpx tsx scripts\u002Fget_stats.ts --all --period 7\n```\n\n**Streak Calculation:**\n```bash\nnpx tsx scripts\u002Fcalculate_streaks.ts --habit-id h_abc123 --format json\n```\n\n### 5. Canvas Visualizations\n\n**Streak Chart:**\n```bash\nnpx tsx assets\u002Fcanvas-dashboard.ts streak \\\n  --habit-id h_abc123 \\\n  --theme light \\\n  --output .\u002Fstreak.png\n```\n\n**Completion Heatmap:**\n```bash\nnpx tsx assets\u002Fcanvas-dashboard.ts heatmap \\\n  --habit-id h_abc123 \\\n  --days 90 \\\n  --output .\u002Fheatmap.png\n```\n\n**Display in Conversation:**\nAfter generating, display the image to user in the conversation using the Read tool.\n\n**For more visualization options:** See [references\u002FCOMMANDS.md](references\u002FCOMMANDS.md)\n\n### 6. Proactive Coaching\n\nHabitFlow automatically sends coaching messages at optimal times without user prompting.\n\n**Types of Proactive Messages:**\n- **Milestone Celebrations** - Reaching 7, 14, 21, 30+ day streaks\n- **Risk Warnings** - 24h before high-risk situations\n- **Weekly Check-ins** - Every Sunday at 7pm\n- **Pattern Insights** - When significant patterns detected\n\n**Setup & Configuration:**\n\nProactive coaching uses clawdbot's cron system to schedule automatic check-ins.\n\n**Initial Setup:**\n```bash\n# Run after installing\u002Fupdating the skill\nnpx tsx scripts\u002Finit_skill.ts\n```\n\nThis creates 3 cron jobs:\n- Daily Coaching Check (8am): Milestone celebrations + risk warnings\n- Weekly Check-in (Sunday 7pm): Progress summary with visualizations\n- Pattern Insights (Wednesday 10am): Mid-week pattern detection\n\n**Check Cron Status:**\n```bash\n# Verify all coaching jobs are configured\nnpx tsx scripts\u002Fcheck_cron_jobs.ts\n\n# Auto-fix missing jobs\nnpx tsx scripts\u002Fcheck_cron_jobs.ts --auto-fix\n```\n\n**Sync Coaching Jobs:**\n```bash\n# Add\u002Fupdate all proactive coaching cron jobs\nnpx tsx scripts\u002Fsync_reminders.ts sync-coaching\n\n# Remove all proactive coaching cron jobs\nnpx tsx scripts\u002Fsync_reminders.ts sync-coaching --remove\n```\n\n**Important Notes:**\n- Cron jobs are NOT created automatically on skill installation\n- You must run `init_skill.ts` or `sync-coaching` to create them\n- After skill updates, run `init_skill.ts` again to update cron jobs\n- Messages are sent to your last active chat channel\n\n**For detailed setup:** See [references\u002Fproactive-coaching.md](references\u002Fproactive-coaching.md)\n\n### 7. Smart Reminders\n\n**Sync All Reminders:**\n```bash\nnpx tsx scripts\u002Fsync_reminders.ts --sync-all\n```\n\n**Add Reminder for One Habit:**\n```bash\nnpx tsx scripts\u002Fsync_reminders.ts --habit-id h_abc123 --add\n```\n\n**Remove Reminder:**\n```bash\nnpx tsx scripts\u002Fsync_reminders.ts --habit-id h_abc123 --remove\n```\n\n**For technical details on reminders:** See [references\u002FREMINDERS.md](references\u002FREMINDERS.md)\n\n---\n\n## Coaching Techniques\n\nWhen users struggle with habits, apply evidence-based techniques from *Atomic Habits*.\n\n**Core approaches:**\n- Start incredibly small (2-minute rule)\n- Link to existing routines (habit stacking)\n- Remove friction, add immediate rewards\n- Identify breakdown points\n- Connect to identity (\"I am someone who...\")\n\n**For detailed coaching techniques and guidelines:** See [references\u002Fatomic-habits-coaching.md](references\u002Fatomic-habits-coaching.md)\n\n---\n\n## Conversation Flow Examples\n\n**For detailed interaction examples:** See [references\u002FEXAMPLES.md](references\u002FEXAMPLES.md)\n\n**Quick patterns:**\n- **Creating habits:** Ask clarifying questions, create habit, sync reminder, confirm\n- **Natural logging:** Parse input, check confidence, log automatically, provide streak update\n- **Coaching struggles:** Load stats, analyze patterns, apply coaching techniques from atomic-habits-coaching.md\n\n---\n\n## First-Time Setup\n\nWhen user first mentions habits:\n\n1. Initialize data directory if needed: `mkdir -p ~\u002Fclawd\u002Fhabit-flow-data\u002Flogs`\n2. Create default config.json with user's timezone, \"flex\" persona, and default user ID\n3. Welcome user, introduce capabilities (natural language logging, streaks, reminders, coaching)\n4. Offer persona selection (Flex, Coach Blaze, Luna, Ava, Max, The Monk)\n5. Guide them to create first habit\n\n**For welcome message example:** See [references\u002FEXAMPLES.md](references\u002FEXAMPLES.md#example-10-first-time-user-welcome)\n\n---\n\n## Error Handling\n\n**Habit Not Found:**\n> \"I couldn't find a habit matching '{input}'. Your active habits are: {list}. Which one did you mean?\"\n\n**Low Confidence Parse:**\n> \"I'm not sure which habit you meant. Did you mean '{best_match}'? Or please specify more clearly.\"\n\n**No Active Habits:**\n> \"You don't have any active habits yet. Would you like to create one? What habit would you like to start tracking?\"\n\n**Date Parse Error:**\n> \"I couldn't understand that date. Please use format like 'today', 'yesterday', 'Monday', or '2026-01-28'.\"\n\n---\n\n## References\n\n- **Conversation Examples:** [references\u002FEXAMPLES.md](references\u002FEXAMPLES.md)\n- **Coaching Techniques:** [references\u002Fatomic-habits-coaching.md](references\u002Fatomic-habits-coaching.md)\n- **Commands:** [references\u002FCOMMANDS.md](references\u002FCOMMANDS.md)\n- **Reminders:** [references\u002FREMINDERS.md](references\u002FREMINDERS.md)\n- **Data Storage:** [references\u002FDATA.md](references\u002FDATA.md)\n- **Data Schema:** [references\u002Fdata-schema.md](references\u002Fdata-schema.md)\n- **Personas:** [references\u002Fpersonas.md](references\u002Fpersonas.md)\n- **Proactive Coaching:** [references\u002Fproactive-coaching.md](references\u002Fproactive-coaching.md)\n\n---\n\n## Installation\n\nThis skill is automatically installed via the `install.sh` script when added through clawdhub.\n\n**Manual installation:**\n```bash\n.\u002Finstall.sh\n```\n\nThe install script will:\n1. Check for Node.js and npm\n2. Install npm dependencies (chrono-node, string-similarity, zod, commander, tsx, typescript)\n3. Run initial setup (create data directory, configure cron jobs)\n\n**Dependencies:** Node.js 18+, npm\n",{"name":5,"license":15,"homepage":41,"metadata":42,"description":7,"compatibility":55,"user-invocable":56},"https:\u002F\u002Fgithub.com\u002Ftralves\u002Fhabit-flow-skill",{"author":43,"moltbot":44,"version":52,"clawdbot":53},"tralves",{"install":45,"requires":50},[46],{"bins":47,"kind":27,"label":48,"package":49},[27,33],"Install via npm",".",{"bins":51},[27,33],"1.4.0",{"emoji":54},"?","Requires Node.js 18+ and npm. Designed for clawdbot CLI.",true,"main","b80cde2ef85241dd4fd54a1b934f5e22835f78ba","skills\u002Fhabit-flow",101,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills","https:\u002F\u002Fgithub.com\u002Fsundial-org","https:\u002F\u002Fwww.sundialhub.com","2026-03-07 14:57:19",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":56},[67,70,73],{"tool":68,"command":69},"npx","npx skills add sundial-org\u002Fawesome-openclaw-skills --skill habit-flow",{"tool":71,"command":72},"bunx","bunx skills add sundial-org\u002Fawesome-openclaw-skills --skill habit-flow",{"tool":74,"command":75},"pnpm","pnpm dlx skills add sundial-org\u002Fawesome-openclaw-skills --skill habit-flow","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002FSKILL.md",[78,84,88,92,96,100,104,108,112,116,122,126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294,298,302,306,310,314,318,322,326,330,334,338,342],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"assets\u002Fcanvas-dashboard.ts","SCRIPT","脚本",3594,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fassets\u002Fcanvas-dashboard.ts",{"path":85,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":86,"sourceHtmlUrl":87},"assets\u002Fcomponents\u002Fcompletion-heatmap.ts",2682,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fassets\u002Fcomponents\u002Fcompletion-heatmap.ts",{"path":89,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":90,"sourceHtmlUrl":91},"assets\u002Fcomponents\u002Fmulti-habit-overview.ts",2638,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fassets\u002Fcomponents\u002Fmulti-habit-overview.ts",{"path":93,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":94,"sourceHtmlUrl":95},"assets\u002Fcomponents\u002Fstreak-chart.ts",1603,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fassets\u002Fcomponents\u002Fstreak-chart.ts",{"path":97,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":98,"sourceHtmlUrl":99},"assets\u002Fcomponents\u002Ftrends-chart.ts",1979,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fassets\u002Fcomponents\u002Ftrends-chart.ts",{"path":101,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":102,"sourceHtmlUrl":103},"assets\u002Ftypes\u002Fcanvas-types.ts",713,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fassets\u002Ftypes\u002Fcanvas-types.ts",{"path":105,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":106,"sourceHtmlUrl":107},"assets\u002Futils\u002Fchart-renderer.ts",3656,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fassets\u002Futils\u002Fchart-renderer.ts",{"path":109,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":110,"sourceHtmlUrl":111},"assets\u002Futils\u002Fcolor-schemes.ts",560,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fassets\u002Futils\u002Fcolor-schemes.ts",{"path":113,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":114,"sourceHtmlUrl":115},"assets\u002Futils\u002Fdata-aggregator.ts",4190,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fassets\u002Futils\u002Fdata-aggregator.ts",{"path":117,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":120,"sourceHtmlUrl":121},"CHANGELOG.md","REFERENCE","参考文档",12369,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002FCHANGELOG.md",{"path":123,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":124,"sourceHtmlUrl":125},"docs\u002FDEPLOYMENT.md",7733,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fdocs\u002FDEPLOYMENT.md",{"path":127,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":128,"sourceHtmlUrl":129},"docs\u002FIMAGE_ATTACHMENTS.md",9754,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fdocs\u002FIMAGE_ATTACHMENTS.md",{"path":131,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":132,"sourceHtmlUrl":133},"docs\u002FIMPLEMENTATION.md",13204,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fdocs\u002FIMPLEMENTATION.md",{"path":135,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":136,"sourceHtmlUrl":137},"docs\u002FMULTI_USER_BOT_MODE.md",12842,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fdocs\u002FMULTI_USER_BOT_MODE.md",{"path":139,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":140,"sourceHtmlUrl":141},"docs\u002FPROACTIVE_COACHING_ARCHITECTURE.md",12612,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fdocs\u002FPROACTIVE_COACHING_ARCHITECTURE.md",{"path":143,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":144,"sourceHtmlUrl":145},"docs\u002FPROACTIVE_COACHING_SETUP.md",8409,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fdocs\u002FPROACTIVE_COACHING_SETUP.md",{"path":147,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":148,"sourceHtmlUrl":149},"docs\u002FVERIFICATION.txt",11034,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fdocs\u002FVERIFICATION.txt",{"path":151,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":152,"sourceHtmlUrl":153},"examples\u002Fdemo.sh",3803,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fexamples\u002Fdemo.sh",{"path":155,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":156,"sourceHtmlUrl":157},"examples\u002Ftest-canvas.sh",2055,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fexamples\u002Ftest-canvas.sh",{"path":159,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":160,"sourceHtmlUrl":161},"examples\u002Ftest-image-attachments.sh",3267,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fexamples\u002Ftest-image-attachments.sh",{"path":163,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":164,"sourceHtmlUrl":165},"examples\u002Ftest-proactive-coaching.sh",2531,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fexamples\u002Ftest-proactive-coaching.sh",{"path":167,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":168,"sourceHtmlUrl":169},"examples\u002Futils.sh",5241,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fexamples\u002Futils.sh",{"path":171,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":172,"sourceHtmlUrl":173},"INSTALL.md",7231,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002FINSTALL.md",{"path":175,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":176,"sourceHtmlUrl":177},"install.sh",849,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Finstall.sh",{"path":179,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":180,"sourceHtmlUrl":181},"package.json",754,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fpackage.json",{"path":183,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":184,"sourceHtmlUrl":185},"README.md",11831,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002FREADME.md",{"path":187,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":188,"sourceHtmlUrl":189},"references\u002Fatomic-habits-coaching.md",3603,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002Fatomic-habits-coaching.md",{"path":191,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":192,"sourceHtmlUrl":193},"references\u002FCOMMANDS.md",4120,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002FCOMMANDS.md",{"path":195,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":196,"sourceHtmlUrl":197},"references\u002Fdata-schema.md",4745,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002Fdata-schema.md",{"path":199,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":200,"sourceHtmlUrl":201},"references\u002FDATA.md",1770,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002FDATA.md",{"path":203,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":204,"sourceHtmlUrl":205},"references\u002FEXAMPLES.md",6578,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002FEXAMPLES.md",{"path":207,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":208,"sourceHtmlUrl":209},"references\u002Ffiltering.md",12206,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-matchms\u002Freferences\u002Ffiltering.md",{"path":211,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":212,"sourceHtmlUrl":213},"references\u002Fimporting_exporting.md",10834,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-matchms\u002Freferences\u002Fimporting_exporting.md",{"path":215,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":216,"sourceHtmlUrl":217},"references\u002Fmigration.md",8557,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-matchms\u002Freferences\u002Fmigration.md",{"path":219,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":220,"sourceHtmlUrl":221},"references\u002Fpersonas.md",4848,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002Fpersonas.md",{"path":223,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":224,"sourceHtmlUrl":225},"references\u002Fpersonas\u002Fava.md",942,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002Fpersonas\u002Fava.md",{"path":227,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":228,"sourceHtmlUrl":229},"references\u002Fpersonas\u002Fcoach-blaze.md",817,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002Fpersonas\u002Fcoach-blaze.md",{"path":231,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":232,"sourceHtmlUrl":233},"references\u002Fpersonas\u002Fflex.md",914,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002Fpersonas\u002Fflex.md",{"path":235,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":236,"sourceHtmlUrl":237},"references\u002Fpersonas\u002Fluna.md",871,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002Fpersonas\u002Fluna.md",{"path":239,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":240,"sourceHtmlUrl":241},"references\u002Fpersonas\u002Fmax.md",776,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002Fpersonas\u002Fmax.md",{"path":243,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":244,"sourceHtmlUrl":245},"references\u002Fpersonas\u002Fsofi.md",886,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002Fpersonas\u002Fsofi.md",{"path":247,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":248,"sourceHtmlUrl":249},"references\u002Fpersonas\u002Fthe-monk.md",838,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002Fpersonas\u002Fthe-monk.md",{"path":251,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":252,"sourceHtmlUrl":253},"references\u002Fproactive-coaching.md",7239,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002Fproactive-coaching.md",{"path":255,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":256,"sourceHtmlUrl":257},"references\u002FREMINDERS.md",2454,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Freferences\u002FREMINDERS.md",{"path":259,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":260,"sourceHtmlUrl":261},"references\u002Fsimilarity.md",14080,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-matchms\u002Freferences\u002Fsimilarity.md",{"path":263,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":264,"sourceHtmlUrl":265},"references\u002Fsources.md",9854,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-matchms\u002Freferences\u002Fsources.md",{"path":267,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":268,"sourceHtmlUrl":269},"references\u002Fworkflows.md",14273,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-matchms\u002Freferences\u002Fworkflows.md",{"path":271,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":272,"sourceHtmlUrl":273},"scripts\u002Fcalculate_streaks.ts",2787,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fscripts\u002Fcalculate_streaks.ts",{"path":275,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":276,"sourceHtmlUrl":277},"scripts\u002Fcheck_cron_jobs.ts",4538,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fscripts\u002Fcheck_cron_jobs.ts",{"path":279,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":280,"sourceHtmlUrl":281},"scripts\u002Fget_stats.ts",5252,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fscripts\u002Fget_stats.ts",{"path":283,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":284,"sourceHtmlUrl":285},"scripts\u002Finit_skill.ts",3951,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fscripts\u002Finit_skill.ts",{"path":287,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":288,"sourceHtmlUrl":289},"scripts\u002Flibrary_search.py",21090,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fkdense-matchms\u002Fscripts\u002Flibrary_search.py",{"path":291,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":292,"sourceHtmlUrl":293},"scripts\u002Flog_habit.ts",4376,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fscripts\u002Flog_habit.ts",{"path":295,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":296,"sourceHtmlUrl":297},"scripts\u002Fmanage_habit.ts",7673,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fscripts\u002Fmanage_habit.ts",{"path":299,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":300,"sourceHtmlUrl":301},"scripts\u002Fparse_natural_language.ts",4374,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fscripts\u002Fparse_natural_language.ts",{"path":303,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":304,"sourceHtmlUrl":305},"scripts\u002Fproactive_coaching.ts",7166,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fscripts\u002Fproactive_coaching.ts",{"path":307,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":308,"sourceHtmlUrl":309},"scripts\u002Fsync_reminders.ts",9566,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fscripts\u002Fsync_reminders.ts",{"path":311,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":312,"sourceHtmlUrl":313},"scripts\u002Fview_habits.ts",3581,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fscripts\u002Fview_habits.ts",{"path":315,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":316,"sourceHtmlUrl":317},"src\u002Fcoaching-engine.ts",6050,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fsrc\u002Fcoaching-engine.ts",{"path":319,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":320,"sourceHtmlUrl":321},"src\u002Fdaily-completion.ts",3487,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fsrc\u002Fdaily-completion.ts",{"path":323,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":324,"sourceHtmlUrl":325},"src\u002Fmessage-templates.ts",11808,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fsrc\u002Fmessage-templates.ts",{"path":327,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":328,"sourceHtmlUrl":329},"src\u002Fpattern-analyzer.ts",7507,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fsrc\u002Fpattern-analyzer.ts",{"path":331,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":332,"sourceHtmlUrl":333},"src\u002Fstorage.ts",6099,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fsrc\u002Fstorage.ts",{"path":335,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":336,"sourceHtmlUrl":337},"src\u002Fstreak-calculation.ts",6614,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fsrc\u002Fstreak-calculation.ts",{"path":339,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":340,"sourceHtmlUrl":341},"src\u002Ftypes.ts",6496,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Fsrc\u002Ftypes.ts",{"path":343,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":344,"sourceHtmlUrl":345},"tsconfig.json",510,"https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhabit-flow\u002Ftsconfig.json",[347,357,387,407,431,458],{"skillNo":348,"name":349,"nameZh":6,"description":350,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":351,"categories":352,"keywords":353,"publishedAt":36},"01M6CGQVNAEMJTA5P9GZVYNCVG","x-trends","Fetches current top trending topics on X (Twitter) for any country using public aggregators.","https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fx-trends\u002FSKILL.md",[],[354,355,356],"x trends","public","twitter",{"skillNo":358,"name":359,"nameZh":6,"description":360,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":361,"categories":362,"keywords":368,"publishedAt":36},"01M6CGKR0DGWD64YAYJ4WH32C0","vercel-react-best-practices","React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React\u002FNext.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.","https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fvercel-react-best-practices\u002FSKILL.md",[363],{"categoryNo":364,"categoryName":365,"taxonomyType":366,"taxonomyTypeDesc":367},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[369,370,371,372,373,374,375,30,376,377,378,379,380,381,382,383,384,385,386],"vercel react best practices","react","best practices","react best practices","vercel","tasks","performance optimization","refactoring","Next.js","data","Optimization","engineering","code","guidelines","react components","components","performance","writing",{"skillNo":388,"name":389,"nameZh":6,"description":390,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":391,"categories":392,"keywords":393,"publishedAt":36},"01M6CGGNS5N14QNV719AK25G94","topydo","Manage todo.txt tasks using topydo CLI. Add, list, complete, prioritize, tag, and organize tasks with dependencies, due dates, recurrence, and projects. Use for any task management, todo lists, or when the user mentions tasks, todos, or todo.txt. Requires Python 3 and pip. Works on macOS, Linux, and Windows.","https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Ftopydo\u002FSKILL.md",[],[389,394,374,395,396,397,398,399,35,400,29,401,402,403,404,405,24,406],"windows","prioritize","linux","projects","task management","list","python","macos","management","todo","task","manage","user",{"skillNo":408,"name":409,"nameZh":6,"description":410,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":411,"categories":412,"keywords":413,"publishedAt":36},"01M6CFRM7YJ2Q07KTV6CH0PMCK","openclaw-feeds","RSS news aggregator. Fetches headlines from curated feeds across three categories: news, games, and finance. Use when the user asks about current news, headlines, what's happening, what's going on, or says \"what's up in news\", \"what's up in finance\", \"what's up in games\", or the German equivalents \"was geht mit nachrichten\", \"was geht mit money\", \"was geht mit gaming\". Also activates for requests like \"give me a news rundown\", \"latest headlines\", \"market news\", \"gaming news\", \"tech news\", \"finance roundup\", or \"briefing\". Returns structured JSON from public RSS feeds — no API keys, no web search needed.","https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fopenclaw-feeds\u002FSKILL.md",[],[414,415,416,417,418,419,420,24,25,421,422,423,424,425,426,427,428,429,400,430],"openclaw","feeds","openclaw feeds","fetch","german","Market","up","json","rss","web search","access","Bash","api","roundup","search","web","python3",{"skillNo":432,"name":433,"nameZh":6,"description":434,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":435,"categories":436,"keywords":445,"publishedAt":36},"01M6CFQMN6XK3X0D0FFAJ4ZCC0","octolens","Query and analyze brand mentions from Octolens API. Use when the user wants to fetch mentions, track keywords, filter by source platforms (Twitter, Reddit, GitHub, LinkedIn, etc.), sentiment analysis, or analyze social media engagement. Supports complex filtering with AND\u002FOR logic, date ranges, follower counts, and bookmarks.","https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Foctolens\u002FSKILL.md",[437,440],{"categoryNo":438,"categoryName":439,"taxonomyType":366,"taxonomyTypeDesc":367},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":441,"categoryName":442,"taxonomyType":443,"taxonomyTypeDesc":444},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[433,446,426,447,448,449,35,424,24,450,451,417,452,453,454,455,356,27,456,457],"Media","analysis","sentiment","sentiment analysis","engagement","filtering","read","bookmarks","social media","linkedin","brand","analyze",{"skillNo":459,"name":460,"nameZh":6,"description":461,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":462,"categories":463,"keywords":465,"publishedAt":36},"01M6CFEG2QX0E4Y9D5VFXWGQ2X","lmstudio-subagents","Reduces token usage from paid providers by offloading work to local LM Studio models. Use when: (1) Cutting costs—use local models for summarization, extraction, classification, rewriting, first-pass review, brainstorming when quality suffices, (2) Avoiding paid API calls for high-volume or repetitive tasks, (3) No extra model configuration—JIT loading and REST API work with existing LM Studio setup, (4) Local-only or privacy-sensitive work. Requires LM Studio 0.4+ with server (default :1234). No CLI required.","https:\u002F\u002Fgithub.com\u002Fsundial-org\u002Fawesome-openclaw-skills\u002Fblob\u002Fmain\u002Fskills\u002Flmstudio-subagents\u002FSKILL.md",[464],{"categoryNo":438,"categoryName":439,"taxonomyType":366,"taxonomyTypeDesc":367},[466,467,468,469,470,471,24,472,473,474,426,475,476,477,478,479,374,480,29,481],"lmstudio subagents","subagents","quality","default","models","only","work","model","classification","first","REST","Local Models","privacy","server","brainstorming","review"]