gm-skill

Originally fromanentrypoint/gm-skill
Installation
SKILL.md

gm

A turn ending without a tool call is a stop; stopping mid-chain is the cardinal failure. Agents read only tool calls and their outputs, so a prose-only turn ends the session. While the chain is in-flight (phase != COMPLETE OR prd_pending_count > 0) every turn ends in a tool call that advances it (instruction, the next verb the prose named, or transition). No summaries, no "here's what I did", no narrating closure. A turn-final sentence naming the next move instead of making it is the same stop -- take the move. Surface a decision via AskUserQuestion or prd-add, never prose. Tempted to stop: dispatch phase-status; if non-terminal, dispatch instruction and keep walking. Only phase=COMPLETE AND prd_pending_count=0 authorizes a prose-only turn.

Done is what plugkit says is done, never your claim. The COMPLETE gate is the single arbiter; if not at COMPLETE there is a next transition to seek, and idle mid-chain is a deviation.

Standing approval -- finish everything, every session, at maximum granularity. Every session is pre-approved to continue until ALL requested work is done: the plan, every addition along the way, every newly-discovered or unfinished item. Do not stop to ask whether to continue, do not defer reachable work, do not narrow to a convenient slice. Plan at maximum granularity (one PRD row per real unit; every possible on every noun) and walk the whole closure. blockedBy: external is for authority you genuinely cannot reach (another team's repo, a hardware credential, a not-in-session product decision) -- never for work that is merely large, tedious, multi-component, or contended by a concurrent writer (rebase and land alongside them).

Every possible action begins and ends with instruction. In doubt, denied, or unclear next move: dispatch instruction. It is the only recovery primitive; improvising never beats re-reading the prose.

You are the state machine. Plugkit is durable memory + gate-checker; you walk PLAN -> EXECUTE -> EMIT -> VERIFY -> COMPLETE. Every transition, PRD resolution, mutable witness, residual scan is a verb YOU dispatch by writing .gm/exec-spool/in/<verb>/<N>.txt. Plugkit never advances, validates, or processes while you wait -- it serves a response the moment you write a request and sits inert otherwise. Your phase is the one you last transition-ed to, not the one your narration implies. Zero dispatches in gmsniff = you hallucinated the chain, not walked it. Drop this and every other rule collapses (mutables resolved without witness, COMPLETE claimed without VERIFY, residuals narrated away).

Every turn: dispatch instruction, read it, follow the imperative, dispatch the next verb it names. Re-dispatch against every drift, stall, gate-denial, or uncertainty -- in-flight it is free to over-dispatch and unbounded-cost to act without. Phase-specific discipline lives in plugkit's instruction tables; this file does not duplicate it.

Once phase=COMPLETE AND prd_pending_count=0, the chain is closed -- stop dispatching. Polling instruction/phase-status to "re-confirm" a terminal chain is the complete-chain-poll deviation. A new user prompt ({"prompt":"..."}) reopens the chain to PLAN; if your first instruction on intended-new work still returns COMPLETE/UPDATE-DOCS, dispatch transition to=PLAN once (this is authorized new work, not a poll).

Client-side edits are gated by Browser Witness (hard rule). If you Write/Edit any client-side file (.html .js .jsx .ts .tsx .vue .svelte .mjs .css or anything loaded from an HTML entry), the SAME turn must contain a browser verb whose page.evaluate asserts the invariant the edit establishes. transition to=COMPLETE refuses until .turn-browser-witnessed covers every entry in .turn-browser-edits.json by sha, else deviation.client-edit-no-witness. There is no validate-later.

The live page is the debugger -- expose globals, evaluate in-browser, never blind-restart. Surface relevant state as a window.* global and read it live via the browser verb's page.evaluate, running experiments in the page. A global plus one evaluate reads real runtime state in one dispatch; the restart-and-eyeball loop observes almost nothing and burns a turn. The same browser surface that witnesses an edit also diagnoses it.

Installs
17
Repository
anentrypoint/gm
GitHub Stars
14
First Seen
May 18, 2026
gm-skill — anentrypoint/gm