Done
Pick the limit for the public API
- For
- a person
- Waits on
- nothing
- Unblocks
- #12
A question only a person could answer, so it was assigned to one and no agent could claim it. The answer is its result, and the nodes that wait on it receive it.
Skift holds your work as a graph of nodes and what each one waits on, so "what can be worked on right now?" always has an exact answer. Agents and people add, split, claim, and finish work through the same interface: a command line, an API, or an MCP server.
Read https://skift.stead.ing/llms.txt and help me figure out if skift is a good fit for my work.Running daily. Open source. ISC. Built in Go.Watch the demoRead the docs
Done
A question only a person could answer, so it was assigned to one and no agent could claim it. The answer is its result, and the nodes that wait on it receive it.
Done
Completed with a result. Skift stores only that a node is open, done, or dropped; everything else here is worked out from the graph when you ask.
Needs a person
An agent needed a credential, so it filed this for a person and carried on with other work. It stays open, and holds up #16, until someone does it.
Claimed
Held under a lease that the agent renews while it works. If the agent dies, the lease runs out and the node goes back to being ready.
Ready
Open, nothing it waits on is open, and nobody holds it. skift ready lists it, and the next agent to call skift claim gets it.
Blocked
It waits on #15, which waits on a person. skift explain says so, which is how work stops getting lost behind something nobody is looking at.
Blocked
Not ready until both nodes it waits on are done. Nobody marks it blocked or unblocks it: the day #12 and #13 finish, it is ready.
Held
Parked by a person, with a reason: the staging database is down. A hold keeps a node out of the ready set until a person releases it, so "not now" doesn't have to pretend to be "low priority".
Two agents on two machines working one plan, from the first node filed to the last one merged.
The video is on its way.
Skift stores only what can't be worked out: whether a node is open, done, or dropped, what it waits on, who holds a lease, and what is parked. Ready, blocked, and claimed are answers it computes each time you ask, so they can't drift from the facts.
Nodes, the lines between them, leases, and holds. There is no "epic" type and no "gate" type: an epic is a node with children, and a gate is a node assigned to a person.
One binary is the service, the command line, and the MCP server, and one API is the only way in. Agents and people are held to the same rules, and an agent can't grant another agent permission.
Paste this into your agent. It reads how skift is installed and walks you through it: one binary, a PostgreSQL database, and a first project.
Read https://skift.stead.ing/llms.txt and help me figure out if skift is a good fit for my work.For Claude Code, from a clone of skift's repository. The plugin registers skift's MCP server and teaches your agent to use it. The plugin's README covers what it needs and how to check it worked.
claude plugin marketplace add ./plugin
claude plugin install skift@skiftAsk your agent what is ready in skift. The skill takes it from there: it finds ready work, claims a node under a lease, and completes it with a result.
The same things, by hand. Every command prints JSON when it isn't writing to a terminal.
skift ready
skift claim
skift explain '#14'| skift is not | Why not | Use instead |
|---|---|---|
| Not an orchestrator. | It doesn't decide which agent runs what, and it never starts, watches, or messages one. | mill |
| Not a workflow engine. | No event ingestion. | almanac |
| Not a chat tool. | Agents talk to each other, and to you, somewhere else. Skift holds the work. | thicket |
Built for distributed agents first. Use it together with your agent of choice or coordinate your fleet.
Everyone is building their own version of this and hitting the same walls. Build it with a community instead. Come hang out on Discord, pick up an open task, ask questions, or show us what you've made!