---
name: eck:pause-feature
version: "0.7.4"
description: "Park the active feature to work on something else. Resume later with /eck:resume-feature."
disable-model-invocation: false
---

# Pause Feature

Park the active feature so you can switch to a different one. Resume later with `/eck:resume-feature`.

> Feature-level context switch — preserves lifecycle progress in `.claude/lifecycle.json`.

---

## Visual Framework

Follow these conventions for all terminal output displayed to the user via the Bash tool.

### Output Mode Awareness

Before producing output, read the user's preferred output mode:

```bash
cat $ECK_HOME/user-preferences.json 2>/dev/null
```

Extract the `outputMode` field and adapt verbosity:

- **guided** — Add explanatory prose after key steps. Describe what is happening and why.
- **standard** (default) — Balanced. Show steps with brief context for non-obvious decisions.
- **concise** — Steps and summary box only. No prose, no explanations.

If the file is missing or `outputMode` is absent, use **standard**.

### ANSI Colors

Declare these variables at the top of **every** Bash tool call (shell state does not persist between calls):

```bash
source $ECK_HOME/colors.sh
```

Every color sequence **must** end with `${RESET}`. No exceptions.

### Stage Banners

Mark major stage transitions with a bold banner. One blank line before and after.

```bash
echo ""
printf '%b\n' "${ORANGE}${BOLD}STAGE NAME${RESET}"
echo ""
```

### Status Symbols

| Symbol | Meaning          | Color       |
| ------ | ---------------- | ----------- |
| `[*]`  | Active / running | `${CYAN}`   |
| `[x]`  | Completed        | `${GREEN}`  |
| `[!]`  | Error            | `${RED}`    |
| `[-]`  | Skipped          | `${DIM}`    |
| `[>]`  | In progress      | `${YELLOW}` |
| `[ ]`  | Pending          | `${DIM}`    |

No emoji in output. Use only these bracket symbols for status.

### Summary Boxes

Display at checkpoints and at the end of the skill. One blank line before and after.

### Error Format

```bash
printf '%b\n' "${RED}[!]${RESET} Error message here"
printf '%b\n' "    ${DIM}Recovery guidance here.${RESET}"
```

### Spacing Rules

- One blank line before and after stage banners and summary boxes.
- No blank lines within step lists.
- Maximum output line width: 70 characters.

---

## Task Registration

| Stage | Subject          | Active Form     | Statusline    |
| ----- | ---------------- | --------------- | ------------- |
| 1     | Stage 1: Park    | Parking feature | Park (1/2)    |
| 2     | Stage 2: Confirm | Confirming park | Confirm (2/2) |

### Statusline Stage Updates

At the **start** of each stage, update the statusline:

```bash
bash $ECK_HOME/update-stage.sh "{Statusline text from table}"
```

At **skill completion** (success or error), reset:

```bash
bash $ECK_HOME/update-stage.sh
```

---

## Usage

```
/eck:pause-feature
```

No arguments needed — parks whatever feature is currently active.

---

## Stage 1: Park

### Inputs

- `.claude/lifecycle.json` via `update-lifecycle.js read`

### Activities

1. Read lifecycle state:
   ```bash
   node $ECK_HOME/update-lifecycle.js read
   ```
2. If no `active_feature`, stop with error:
   ```
   [!] No active feature to park
       Select a feature with /eck:select-feature, resume one
       with /eck:resume-feature, or create one with
       /eck:create-feature.
   ```
   -> STOP (reset statusline first)
3. Capture snapshot from the active feature:
   - Active <KEY>-XXX from `active_feature` field
   - Feature display name from lifecycle.json
   - Step statuses (which are done, which was active)
4. Deactivate the feature:
   ```bash
   node $ECK_HOME/update-lifecycle.js deactivate
   ```
5. Get the queue of parked features:
   ```bash
   node $ECK_HOME/update-lifecycle.js queue
   ```

### Outputs

- `active_feature` is null in lifecycle.json
- The previously-active step is reverted to pending
- All done steps are preserved

### Exit Criteria

- Feature deactivated successfully
- Queue count retrieved

---

## Stage 2: Confirm

### Inputs

- Snapshot from Stage 1 (<KEY>-XXX, feature display name, step statuses)
- Queue count from Stage 1

### Activities

1. Build a progress breadcrumb from the step statuses. Use `[x]` for done/skipped steps and `[ ]` for pending/gated steps. Example: `[x] Spec  [x] Design  [ ] Dev  [ ] Val  [ ] Deploy`
2. Display summary box:

   ```
   Feature Parked

   Feature         {KEY}-XXX {display_name}
   Stopped at      {step_that_was_active} ({done_count}/5 done)
   Progress        [x] Spec  [x] Design  [ ] Dev  [ ] Val  [ ] Deploy
   Parked features {queue_count} in queue

   Resume with: /eck:resume-feature
   ```

3. Log activity:
   ```bash
   node $ECK_HOME/log-activity.js --skill "eck:pause-feature" --outcome "success" --summary "Parked {KEY}-XXX {display_name}"
   ```
4. Reset statusline:
   ```bash
   bash $ECK_HOME/update-stage.sh
   ```

### Outputs

- Summary displayed to user

### Exit Criteria

- User sees confirmation with resume guidance

---

## Error Handling

- If `update-lifecycle.js deactivate` fails, show the error output and stop
- If no lifecycle.json exists at all, treat as "no active feature"
- At completion (success or error), always reset statusline
