Memory & skills
The built-in agent starts every session fresh, so its continuity comes from two files it reads on wake — a memory of durable facts and a skill that teaches it how to drive a specific app. Memory is what it knows; skills are what it can do. Both live as plain Markdown on disk, so you can read, edit, or seed them by hand.
Memory: what carries across sessions
Section titled “Memory: what carries across sessions”A session is one wake — the agent comes alive on a trigger, works the task, and exits. Nothing in its head survives to the next wake. What survives is three files under ~/.physiclaw/memory/:
Directory~/.physiclaw/memory/
- USER.md your profile — curated by you, read-only to the agent
- memory.md durable facts, one per line
- 2026-06-22.md that day’s activity log,
[HH:MM] …per line - 2026-06-21.md
- …
Each file has one job:
| File | Holds | Who writes it |
|---|---|---|
USER.md | who you are, your preferences, your defaults | you |
memory.md | facts the agent learned and should keep | the agent (append / edit) |
YYYY-MM-DD.md | a timestamped log of what it did that day | the agent (append) |
On every wake, the agent’s system prompt already contains memory.md and your USER.md — they’re small and grounding, so they’re loaded automatically. The daily logs are bigger, so only the most recent ~10 entries ride along by default; the agent pulls a deeper window on demand with read_logs when a task needs older history.
How the agent writes memory
Section titled “How the agent writes memory”You don’t have to manage any of this — the agent maintains its own memory as it works:
- You say “remember X” → it appends a line to
memory.md. - You change a preference → it edits the matching line in place.
- It finishes a meaningful step → it appends one line to today’s log, like
[HH:MM] app: page → page — what it did. These per-step logs are what let a future wake recover from a half-finished task: it can read the log, see the cart already has two items, and pick up from there.
USER.md is the exception — the agent only ever reads it. That file is yours to curate, and it’s the right place to put standing preferences you want respected from the very first session.
Skills: teaching the agent new abilities
Section titled “Skills: teaching the agent new abilities”Memory is what the agent knows. A skill is what it can do — a self-contained folder that teaches it the exact workflow for one app or one kind of task. Out of the box it can tap a screen; a skill turns “tap a screen” into “place a grocery order on this specific app, the right way.”
A skill is just a directory with a SKILL.md at its root:
Directory~/.physiclaw/skills/
Directoryjobs/
- SKILL.md frontmatter (name + description) + the workflow
Directoryjd/
- SKILL.md
Directoryreferences/ deep detail, loaded only when needed
- …
Directoryassets/ freeform files a reference can point at
- …
Two locations are scanned: ~/.physiclaw/skills/ (the primary home, so an installed agent finds its skills with no repo checkout) and ./skills/ relative to where it runs (handy while you’re iterating). If both define a skill with the same name, the home copy wins.
How a skill gets discovered and loaded — three tiers
Section titled “How a skill gets discovered and loaded — three tiers”Skills load progressively, so a phone full of skills doesn’t flood the prompt. The agent only pays for the detail it actually opens:
-
Metadata — On wake, every skill’s
nameand one-linedescriptionare injected into the system prompt. That description is the only signal the agent has to decide a skill is relevant, which is why descriptions are written as concrete triggers — “use when …; NOT for …” — not vague blurbs. -
The workflow — When a task matches, the agent calls
Skill(name="jd")and gets back the fullSKILL.mdbody: the step-by-step procedure to follow. This is the doctrine for that app — its search box, its checkout flow, its gotchas. -
References — For rare detail, the body points at a reference file, and the agent calls
Skill(name="jd", reference="checkout.md")to pull it in on demand. Most tasks never reach tier 3.
This tiering is the whole reason a builder can keep adding skills without slowing the agent down. Ten installed skills cost ten one-line descriptions in the prompt — not ten full workflows.
Example: the jobs skill
Section titled “Example: the jobs skill”The built-in jobs skill is a good model for what a skill looks like. Its job is scheduling future work, and its description names exactly when to reach for it:
Use when the task involves scheduling future work — any "remind me at …","every weekday …", "check again in 30 min", or closing a fired cron job.… NOT for one-off in-session waits. NEVER edit jobs.md by hand.The body then teaches the workflow: scheduled work lives in a strict, machine-parsed jobs.md, so the skill forbids editing that file directly and routes every change through one CLI with four subcommands — create, list, get, finish. The agent reads this, learns the safe way to schedule a reminder, and never has to reverse-engineer the file format. That’s the pattern for every skill: encode the right way to do a thing once, and every future session inherits it.
Skills are how the autonomous side of the agent works too — the jobs skill is what lets it set the cron and poll triggers covered in Autonomous tasks.