Intentions · the Intentions Format
Every hour is for something.
An open format for what a person means to do with their time. An intention carries a duration, a window and a reason, and it is flattened to a slot only when it must be. Written and read by AI harnesses, reviewed by people through git.
After Heidegger on datability: a “now” is never bare. It is always “now, that…”, a time for something. Being and Time, §79.
One plan, two fates
Ninety minutes on the budget, sometime this week, before the board pack goes out. The duration is known, the window is known, the reason is known, and the slot is not. What does your calendar do with that?
A slot says when. An intention says how long, within what, and what for.
iCalendar & JSCalendar
A start and an end, into which events are placed. The right picture for the moment two people must meet, and the wrong one for nearly everything before that moment.
Scheduling assistants
Built on the same picture. They find a slot for a meeting. What a person has before the meeting is fixed has no representation to search.
The tentative block
A slot pretending not to be one. It has to be invented to exist at all, and every move strips a little more of the reason it was made.
It ranks. It flags. It never chooses.
Resolution matches an intention’s demand against the availability of everyone and everything it needs, and returns candidate placements ranked by how much existing intention each would disturb. Selection is a recorded act by the person, or by a policy the person holds. A commitment appears only where another party is involved. A clash is a flag: surfaced, never decided.
Read by a second reader
A first implementation was written from the specification alone and raised thirteen issues where the text was ambiguous or silent. All thirteen are settled in the text as it now stands, four of them differently from what the implementation chose. Below is that binary’s own output on the example workspace in this site’s repository: one week of declared availability, one commitment already placed and declined by the other party, and every candidate placement it ranked for ninety minutes on the budget.
Start in your terminal
Install the CLI, make a workspace, and teach your agent the discipline: draft an intention, declare the supply, let the binary rank, and choose yourself.
$ brew install nodelogicau/tap/intentions
$ intentions init ./plans --author you --subject you
$ intentions skill install
$ intentions availability add --subject you --title "Mornings this week" \
--calendar this-week --clock 09:00/12:00 --duration PT3H
$ intentions intention add --title "Draft the budget narrative" \
--duration PT90M --calendar this-week
$ intentions resolve <id>
$ intentions select <id> --candidate 1
From there, your agent does the bookkeeping: the installed skill teaches it the verbs, every file it writes says it wrote it, and nothing becomes firm without you.
Today: an early draft of the specification with a
first implementation, the agent skill, and a local MCP server — the
.mcpb
bundle for Claude Desktop, or intentions serve --mcp for any
client. · Deferred, deliberately: federation
between workspaces, presence, and a retrospective record, which is DKF’s job.