---
name: stage
description: "Stage implementation changes for commit with precise file selection. Use when the user asks to \"stage changes\", \"stage files\", \"add files to staging\", or \"prepare changes for commit\"."
---

# Stage Changes

Stage implementation changes with precise file selection.

## Step 1: Identify Changes

Run `git status` to see all modified, added, and deleted files.

## Step 2: Stage Files

Stage only the files relevant to the current task:

```bash
git add <file1> <file2> ...
```

- Do not use `git add -A`, `git add .`, or `git add -u` — all three sweep in unrelated changes
- If a file contains both relevant and unrelated changes, write `git diff <file>` to a patch file, back the unrelated changes out of it (delete their `+` lines and turn their `-` lines into context lines), and stage it with `git apply --cached --recount <patch>`
- Never stage files containing secrets (`.env`, credentials, API keys). Warn if detected.

## Step 3: Verify

Run `git status` and `git diff --cached` to verify the staging area contains exactly the intended changes.

Then call `update_plan` to mark this step completed and continue with the next step of the active workflow.
