{
  "markdown": "# stem.cooking\n\nEngineering discipline for coding agents. Plan first, build clean, keep\nevery change on the record — and never lose a session.\n\nCoding agents are strong builders and weak engineers: work starts\nwithout sizing, decisions evaporate with the chat, sessions die with\nthe context window, and output floods you with prose you have to read\nline by line. stem.cooking is a small, installable discipline that\nfixes exactly that — as plain instructions your agent follows, not a\nframework you operate.\n\n## What's included\n\n- **One skill: `/stem`.** It sizes every task (Quick / Standard /\n  Initiative / High-stakes), enforces the worklog, keeps responses\n  short and scannable, and goes deeper on demand through its bundled\n  references: plan (initiative folders with contract, work, decisions),\n  research (timeboxed probes with sources and a recommendation), verify\n  (done means checked against what was asked), debug (reproduce,\n  root-cause, regression test), handoff (any fresh session continues\n  from files alone).\n- **Two agents.** `probe` (read-only discovery, web-capable, sources\n  required — research depth scales itself, one probe or several in\n  parallel, without being asked) and `gate` (checks finished work\n  against what was asked, runs tests, never edits). Both run in the\n  foreground, return summaries not transcripts, and inherit the\n  session's model.\n- **Session protection.** Every change lands in\n  `docs/planning/worklog.md` as it happens — who, why, how, commit —\n  so compaction never costs a phase of work. Hooks add a second layer\n  where hosts allow one: blocking on Claude Code and Codex,\n  reminder-grade on Cursor and Gemini CLI (see `hooks/README.md` for\n  the honest per-host guarantees).\n\n## Install\n\n```sh\nnpx skills add markskrypka/stem\n```\n\ninstalls the skill into every agent it detects (project scope by\ndefault, `-g` for global; on Windows without Developer Mode add\n`--copy`). Then type **`/stem`** (Claude Code, Cursor, and — via the\nextension — Gemini CLI; **`$stem`** in Codex). That's the whole setup.\n\nOn arrival it reads the room before touching anything: recent commits,\nthe working tree, the planning docs, your git name — and if\nuncommitted changes exist that no log explains, it asks whose they are\ninstead of walking past. On first run it plants its managed block into\nthe project's agent file: the always-on pointer plus a single\ncurrent-state line, held between markers, regenerated in place as work\nmoves, hard-bounded so it can never bloat. From then on every session\nstarts already knowing where you left off — `/stem` right after a\ncompaction resumes mid-thought. No manual setup, ever; the skill also\nactivates by description when your agent recognizes the work.\n\nPer-host extras, each optional:\n\n- **Claude Code** — hooks: merge `hooks/claude-code.hooks.json` into\n  `.claude/settings.json`. Agents: copy `agents/*.md` to\n  `.claude/agents/`.\n- **Cursor** — reads `.claude/agents/` and the skills directly; hooks:\n  commit `hooks/cursor.hooks.json` as `.cursor/hooks.json`.\n- **Codex** — agents: copy `hosts/codex/agents/*.toml` to\n  `.codex/agents/`; hooks: copy `hooks/codex.hooks.json` to\n  `~/.codex/hooks.json` and approve once via `/hooks`.\n- **Gemini CLI** — one command carries skills and hooks together:\n  `gemini extensions install https://github.com/markskrypka/stem`.\n\n## What using it feels like\n\nNothing to operate. You talk to your agent the way you already do; the\ndiscipline sizes each request and applies exactly as much process as it\ndeserves.\n\nSay \"fix the login redirect bug\" and the agent answers \"Quick fix —\ndoing it directly,\" fixes it, tests it, writes the worklog entry, and\nasks whether to commit. Say \"build the checkout flow\" and it answers\n\"this spans sessions — opening an initiative,\" asks only the questions\nthat actually matter, gets your explicit yes on scope, and keeps\n`docs/planning/active/checkout-flow/work.md` current while it builds.\nBugs route through reproduce-first debugging, unknowns through\ntimeboxed research with sources, and nothing meaningful gets called\ndone before it is checked against what you asked for.\n\nYour entire interface: answer scope questions when work is big, say\nyes or no to commit offers, and read `docs/planning/` whenever you want\nthe state of the world. Overrides always win — \"plan it\" forces an\ninitiative, \"just do it\" skips one — and every skill can be invoked\ndirectly where your agent app supports it.\n\nWhen a session dies, nothing goes with it: the next session — tomorrow,\nanother machine, a different agent app — reads `docs/planning/` and\ncontinues from the exact next action.\n\n## The paper trail\n\nEverything the discipline writes lives in your repository under\n`docs/planning/` — committed like code, readable by humans, and enough\non its own for any fresh session to state the goal, the status, the\ndecisions, and the exact next action. The folder keeps itself honest:\nfinished initiatives move to the archive automatically, stale statuses\nget refreshed on arrival, and duplicates get flagged — while your\n`CLAUDE.md`/`AGENTS.md` carries only the discipline's managed block, a\npointer plus one state line that is replaced in place as work moves,\nnever appended to. Bloat is structurally impossible on both surfaces. This repository runs under its\nown discipline: see [docs/planning/](docs/planning/) for the live\nexample, starting with its own build.\n\n## Principles\n\nNo telemetry — the plugin makes no network calls of its own, ever.\nNo personas — plain language, real engineering vocabulary, your\nauthority at every consequential decision. Honest capability claims —\nwhere a host cannot enforce something, the docs say so instead of\npretending.\n\n## License\n\nApache-2.0. See [LICENSE](LICENSE).\n",
  "bytes": 5752,
  "sha": "f727cffb49b32add91cd2e786224b906ff5bd2f1e7b5f1cef648961153bc4d99",
  "repo_slug": "markskrypka/stem",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_markskrypka_stem_e61ba5be/readme"
}