framework-dev
Installation
SKILL.md
train-me Framework Development
A framework is a ZIP that supplies everything user-facing in train-me: the agent's prompts and its sandbox content. The app ships none of that — this project is what makes it work. This skill covers the app model, the framework layout, the feature-file grammar, and the lint/package/release tooling.
How the app works (what your framework feeds into)
- train-me is a Tauri app (mobile-first) with a built-in LLM agent. The agent runs from prompts your framework installs; it has full bash/read/write access to a sandbox (
agent_data/) your framework populates. - Everything interactive is expressed as feature files the agent authors and the engine runs: routines (scheduled or on-demand sessions), habits (daily count goals/limits), task templates (assignable one-offs), and store entries (point-priced rewards). The user plays everything from the Today view in a gated, page-by-page session runner.
- The engine owns correctness: an append-only points ledger, scheduled occurrences reconciled lazily (missed windows fire failure actions), exemptions that suspend failures and protect streaks, and idempotent actions (
points,task,script,notification,exemption,roulette). - Onboarding flow: your framework may ship
onboarding.json; the user answers it right after install (deterministic, conditional questions). Answers land inagent_data/USER.md— or the sandbox-relativeoutputpath your flow declares — plain data the framework consumes via{{include}}in its own prompts. Nothing is auto-added to any system prompt. - Audio: TTS XML scripts (spoken word, sound effects, loops, interactive
<choice>/<until>prompts) render to audio and play in a full player. Every script in the sandbox pre-renders in the background after startup (toggleable in Settings; referenced scripts render first);<include>targets render as linked sub-manifests — a shared subscript is synthesized once — and a glob include (dir/*.xml) picks a random match per playback. Playbacks and decisions log under featurescript. - The agent inspects state through bash builtins (
points,chastity,inventory) and theactivity.dbSQLite log it can query read-only.