m_save
Write a complete, self-contained snapshot of the current work to .m_last_task.md in the project root. This is the standing "last task" file — always one file, always overwritten. Its counterpart /m_go reads it in a fresh session and continues.
Inputs
$ARGUMENTS (optional): extra notes to include verbatim in the snapshot (e.g. "stop after step 3", a hint for the next session).
Rules
- Write for a stranger. The next session has NONE of this conversation. No "as discussed above", no shorthand invented mid-chat. Every file mentioned gets its full repo-relative path; every command is copy-pasteable.
- One standing file. Always
.m_last_task.md at the project root. Overwrite what's there — do not append, do not create dated copies. (If the current file describes a different unfinished task, mention that in one line under "Previous task" so it isn't silently lost.)
- No secrets. Never write tokens, passwords, keys, or prod credentials into the file — reference the secret's name/location (env var, vault entry) instead.
- Gitignore: if
.m_last_task.md is not covered by .gitignore, append it (create .gitignore if missing) — this file is personal working state, not repo content. Skip silently if already ignored.
- If an
.m_plan/<slug>/ run is active, don't duplicate its content — link the slug and state which step/V-* row you're on; 09_verification.md stays the oracle.
Snapshot format
# Last task — <one-line task title>
_Saved: <YYYY-MM-DD HH:MM> · branch: <git branch> · last commit: <short-hash subject>_
## Task
<1–3 sentences: what the user asked for, in full — the original goal, not the current sub-step.>
## State
- ✅ Done: <bullet per completed chunk, with file paths>
- 🔧 In progress: <exactly what is half-finished and where it stands>
- ⏭ Next step: <the single concrete action to take first when resuming>
## Key files
- `<path>` — <why it matters / what was changed>
## Decisions & context
<Non-obvious decisions made, approaches rejected and why, constraints from the user — anything the next session couldn't rediscover from the diff.>
## Blockers / open questions
<Anything waiting on the user or an external system, or "none".>
## How to verify
<Copy-pasteable build/test/run commands and what "working" looks like.>
## Plan link (if any)
<`.m_plan/<slug>/` — current step N, open `V-*` rows — or "none".>
## Notes
<$ARGUMENTS verbatim, if provided.>
Fill every section; write "none" rather than deleting a heading. Get branch/commit from git branch --show-current and git log -1 --oneline; if not a git repo, write "no git".
Procedure
- Gather: current task and conversation state (from context),
git status/git log -1/branch, any active .m_plan/<slug>/.
- Write
.m_last_task.md per the format above (overwrite).
- Ensure it's gitignored (rule above).
- Confirm to the user in 2–3 lines: where it was saved and what the recorded "next step" is. Do not dump the whole file back into chat.
1---2name: m-save3description: Snapshot the current work into the standing handoff file `.m_last_task.md` at the project root — task, what's done, what's in progress, next step, key files, decisions, blockers, and the commands to build/test. Overwrites the previous snapshot (one standing file, not a log). Use before ending a session, switching tasks, or when context is getting long, so /m_go can resume later.4---56# m_save78Write a **complete, self-contained snapshot** of the current work to `.m_last_task.md` in the project root. This is the standing "last task" file — always one file, always overwritten. Its counterpart `/m_go` reads it in a fresh session and continues.910## Inputs11- `$ARGUMENTS` (optional): extra notes to include verbatim in the snapshot (e.g. "stop after step 3", a hint for the next session).1213## Rules1415- **Write for a stranger.** The next session has NONE of this conversation. No "as discussed above", no shorthand invented mid-chat. Every file mentioned gets its full repo-relative path; every command is copy-pasteable.16- **One standing file.** Always `.m_last_task.md` at the project root. Overwrite what's there — do not append, do not create dated copies. (If the current file describes a *different unfinished task*, mention that in one line under "Previous task" so it isn't silently lost.)17- **No secrets.** Never write tokens, passwords, keys, or prod credentials into the file — reference the secret's *name/location* (env var, vault entry) instead.18- **Gitignore:** if `.m_last_task.md` is not covered by `.gitignore`, append it (create `.gitignore` if missing) — this file is personal working state, not repo content. Skip silently if already ignored.19- If an `.m_plan/<slug>/` run is active, don't duplicate its content — link the slug and state which step/`V-*` row you're on; `09_verification.md` stays the oracle.2021## Snapshot format2223```markdown24# Last task — <one-line task title>25_Saved: <YYYY-MM-DD HH:MM> · branch: <git branch> · last commit: <short-hash subject>_2627## Task28<1–3 sentences: what the user asked for, in full — the original goal, not the current sub-step.>2930## State31- ✅ Done: <bullet per completed chunk, with file paths>32- 🔧 In progress: <exactly what is half-finished and where it stands>33- ⏭ Next step: <the single concrete action to take first when resuming>3435## Key files36- `<path>` — <why it matters / what was changed>3738## Decisions & context39<Non-obvious decisions made, approaches rejected and why, constraints from the user — anything the next session couldn't rediscover from the diff.>4041## Blockers / open questions42<Anything waiting on the user or an external system, or "none".>4344## How to verify45<Copy-pasteable build/test/run commands and what "working" looks like.>4647## Plan link (if any)48<`.m_plan/<slug>/` — current step N, open `V-*` rows — or "none".>4950## Notes51<$ARGUMENTS verbatim, if provided.>52```5354Fill every section; write "none" rather than deleting a heading. Get branch/commit from `git branch --show-current` and `git log -1 --oneline`; if not a git repo, write "no git".5556## Procedure57581. Gather: current task and conversation state (from context), `git status`/`git log -1`/branch, any active `.m_plan/<slug>/`.592. Write `.m_last_task.md` per the format above (overwrite).603. Ensure it's gitignored (rule above).614. Confirm to the user in 2–3 lines: where it was saved and what the recorded "next step" is. Do not dump the whole file back into chat.