Skip to content

lovettbarron/openclaw-practic

Repository files navigation

Practic

An OpenClaw plugin that acts as an executive function prosthetic for skill practice. It provides body-doubling, scaffolded daily sessions, and gentle accountability for users with ADHD and executive function challenges who are learning skills like instruments or languages.

Core Value

On a low-motivation day, practic provides enough external structure -- the nudge, the plan, the step-by-step guidance -- that the user practices instead of skipping. Lowering the bar beats a zero.

What It Does

  • Scaffolded practice sessions -- step-by-step guidance through warmup, main work, and cool-down with check-ins
  • Energy-aware modes -- "light day" lowers the bar instead of skipping; a 10-minute session beats a zero
  • Homework capture -- capture assignments after lessons and distribute them across practice days
  • Item frequency modes -- items can be "distributed" (spread across the week, e.g. Danish homework) or "every-session" (practiced every day, e.g. guitar scales)
  • Weekly planning -- generates a day-by-day practice plan with checkboxes, viewable in Obsidian
  • Daily nudges -- heartbeat-triggered reminders at your preferred practice time per discipline
  • Gentle resume -- after a break, references your last positive session instead of highlighting the gap
  • Lesson prep reminders -- the day before a scheduled lesson, suggests what to review
  • Item tracking -- tracks songs, exercises, and chapters with spaced repetition suggestions
  • Goal countdown -- set a recital, exam, or trip date and get focus cues woven into sessions
  • Shake it up -- variety injection picks underplayed items when practice feels stale
  • Teacher reports -- lesson-to-lesson practice summaries with structured metrics, ready to share before a lesson
  • Weekly reflections -- auto-generated end-of-week narrative appended to the weekly plan, synthesized by the local model
  • Skip/break handling -- "skip today" or "need a week off" acknowledged without guilt or judgment
  • Multi-discipline -- separate vault folders for each skill (guitar, Danish, etc.)

Architecture

Practic runs as a stateless MCP server that OpenClaw calls via HTTP. All state lives in an Obsidian vault as markdown files with YAML frontmatter.

OpenClaw (Haiku)  -->  /mcp  -->  Practic MCP Server  -->  Obsidian Vault
                                        |
OpenClaw Heartbeat  -->  nudge tools  --+
                                        |
Ollama (qwen3.6:27b)  <--  report/reflection data  --+
  • MCP server (Express + @modelcontextprotocol/sdk v1) exposes practice tools
  • Obsidian vault stores daily logs, weekly plans, item registries, reports, and config per discipline
  • Heartbeat tasks call MCP tools to determine when and what to nudge
  • Subagent (Ollama qwen3.6:27b) synthesizes teacher reports and weekly reflections from aggregated data

Vault Structure

/practice/
  guitar/
    weekly/2026-W19.md      # Weekly plan with day-by-day checkboxes + reflection
    daily/2026-05-07.md     # Daily practice log
    items.md                # Item registry (songs, exercises, scales)
    goals.md                # Active goal and archived goals
    config.md               # Lesson schedule, preferences, nudge time
  danish/
    ...same structure...
  reports/
    guitar-2026-05-08.md    # Teacher report (lesson-to-lesson period)

Tech Stack

Technology Version Purpose
TypeScript ^5.9 Language (strict mode)
Node.js 22 LTS Runtime
Express ^4.22 HTTP server
@modelcontextprotocol/sdk ^1.29 MCP protocol
Zod ^3.25 Input validation
gray-matter ^4.0 YAML frontmatter parsing
date-fns ^4.1 Date arithmetic

MCP Tools

Practic exposes 25 tools across 8 modules. OpenClaw's agent calls these via the /mcp endpoint.

Module Tools Purpose
Session start_session, complete_session Begin/end a scaffolded practice session with warmup, main work, cool-down
Items list_items, add_item, update_item Manage the item registry (songs, exercises, scales, chapters)
Logs get_daily_log, skip_day Read today's practice log or record a skip
Breaks set_break, get_break_status, list_disciplines Schedule time off and check discipline availability
Planning capture_homework, generate_weekly_plan, get_weekly_plan, set_lesson_schedule Homework distribution, weekly plan generation, lesson config
Nudges check_nudge_status, get_resume_nudge, get_lesson_prep Heartbeat-driven reminders and lesson prep suggestions
Goals set_goal, get_goal, archive_goal, shake_it_up Performance goals with countdown cues and variety injection
Reports generate_teacher_report, save_teacher_report, get_reflection_data, save_reflection Practice reports for teachers and weekly reflections appended to plans

Setup

npm install
npm run dev

The server starts on PORT (default 3000) and expects VAULT_PATH to point to your Obsidian vault.

VAULT_PATH=/path/to/obsidian/vault PORT=3000 npm run dev

Environment variables:

Variable Default Description
VAULT_PATH /home/node/vault Path to the Obsidian vault root
PORT 3000 HTTP server port

Deployment

Designed to run as a container in K3s alongside OpenClaw:

# Build the image
docker build -t mcp-practic .

# Or use the build helper
./build-and-push.sh [image-name] [tag]

K8s manifests are in deploy/. You'll want to customize these for your cluster:

  • deploy/deployment.yaml -- update image, nodeSelector, TZ, and imagePullSecrets for your environment
  • deploy/openclaw-patches/ -- replace placeholder usernames in AGENTS-practice.md and HEARTBEAT-practice.yaml
kubectl apply -k deploy/

OpenClaw Integration

The deploy/openclaw-patches/ directory contains the config fragments to add to OpenClaw's configmap:

  • openclaw-mcp-registration.json -- MCP server registration block
  • AGENTS-practice.md -- Agent instructions for the practice workflow
  • HEARTBEAT-practice.yaml -- Heartbeat task definitions for daily nudges

See deploy/openclaw-patches/README.md for step-by-step integration instructions.

Design Principles

  • Friction is the enemy -- every interaction should be as low-effort as possible
  • Lowering the bar > skipping -- "light day" is always an option
  • No guilt, no judgment -- missed days are acknowledged without pressure
  • External structure compensates for internal executive function gaps
  • Praise completion, don't punish absence

License

MIT

About

Openclaw skill for working with repeated practice and lessons

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors