Autonomously continues a maki session until the agent certifies that the user's original request is delivered and validated.
The plugin is independent of todo_write. At every TurnEnd, it sends a continuation unless the agent has called task_complete with a summary and concrete validation results, or task_blocked because progress genuinely requires external input.
curl -fsSL https://raw.githubusercontent.com/arxdeus/maki-poke/main/install.sh | shThe default destination is ${XDG_CONFIG_HOME:-$HOME/.config}/maki. Pass a directory to install elsewhere:
curl -fsSL https://raw.githubusercontent.com/arxdeus/maki-poke/main/install.sh | sh -s -- /path/to/project/.makiUninstall with:
curl -fsSL https://raw.githubusercontent.com/arxdeus/maki-poke/main/install.sh | sh -s -- --uninstall.\install.ps1Pass a configuration directory as the first argument. Uninstall with ./install.ps1 -Uninstall.
Load the plugin after the existing maki.setup() call:
require("maki_poke").setup({
default_on = false,
max_pokes = 0,
})max_pokes = 0 allows unlimited continuations. Set a positive value for a per-task circuit breaker. The plugin does not replace or require todo_write.
The module files must be available as:
lua/maki_poke.lua
lua/maki_poke_state.lua
Run /reload after installation.
The main agent receives a task_complete tool. It must provide:
summary: the fully delivered outcome;validation: one or more concrete checks and successful outcomes;limitations: optional non-blocking limitations.
A progress report, partial completion, or statement of the next step does not stop continuation. A successful task_complete call stops it for the current task. The next regular user turn automatically starts a new completion cycle.
task_blocked pauses continuation only when the agent supplies a specific external requirement and at least one concrete attempt already made. The next user turn or /poke rearm resumes the cycle.
The tools enforce that evidence is present, but cannot independently prove that reported evidence is truthful. The agent remains responsible for meaningful checks and blocker investigation.
/pokeor/poke on— enable, rearm, and immediately continue./poke rearm— rearm and immediately continue./poke off— disable continuation for the focused session./poke status— show state, phase, and accepted poke count.
- Auto-poke is disabled by default. Run
/poke onfor the focused session. Setdefault_on = trueto opt in automatically. TurnErrorclears an in-flight dispatch but does not itself start another continuation.- Async dispatches use generation IDs, so late results cannot mutate completed, blocked, disabled, reset, or rearmed cycles.
- If
TurnEndis missed, the session's transition toidledispatches the continuation as a fallback; duplicate events are suppressed. - Dispatch failures are shown in the UI and retained in
/poke status. - Synthetic continuations are visible regular user turns because maki's public plugin API cannot mark them as hidden.
- Runtime state resets after a full restart.
- This plugin targets the interactive maki UI;
maki.session.promptrequires a live session.