---
name: lov-auto-context
category: Dev Tools
tagline: "Context hygiene operator. Evaluates, writes memory, edits CLAUDE.md, suggests /fork or /compact."
description: >
  Manual or hook-triggered context operator. Evaluates the current session for
  pollution (long conversations, topic drift, stale noise), AND takes concrete
  context-shaping actions: writing project memory, updating global or project
  CLAUDE.md (with diff + confirm), and recommending harness commands like
  /fork, /compact, /btw. Covers the full surface of context-affecting
  operations Claude can reach — direct file edits are auto-executed or
  confirmed based on sensitivity; harness-only commands (/fork etc.) are
  surfaced as one-click suggestions.
license: MIT
compatibility: >
  Claude Code-oriented instruction skill. Agent home must resolve from
  `SKILL_AUTO_CONTEXT_AGENT_HOME`, the shared Skill Publisher skills profile, or
  a one-time user answer; do not assume a fixed runtime directory.
depends_on:
  - lov-branding-consistency
metadata:
  author: contributors
  version: "0.4.2"
  tags: context memory claude-code
---

# 上下文哨兵 · Context Sentinel

Not just a health check — a full operator over everything that shapes
context. Three layers by action sensitivity:

| Layer | Examples | Behavior |
|-------|----------|----------|
| **Auto-execute** | write project memory, update `MEMORY.md` index | Do it, report path |
| **Confirm-first** | edit global agent instructions, edit project `CLAUDE.md`, overwrite/delete existing memory | Show diff, wait for "yes" |
| **Suggest-only** | `/fork`, `/compact`, `/btw`, new session | Print the exact command to paste |

The harness owns `/fork` and `/compact`; this skill cannot invoke them. But
it can do everything else and will.

## Auto Mode (via Plugin Hook)

When the skill-publisher plugin is enabled, a `UserPromptSubmit` hook monitors
transcript size. Above threshold (40+ entries or 150KB+), it injects a
lightweight `<auto-context>` reminder.

**When you see `<auto-context>`:**

| Context State | Action |
|---------------|--------|
| Mostly relevant | Continue, say nothing |
| Some stale noise | Mentally deprioritize, proceed |
| Mostly irrelevant | Suggest `/fork` or `/btw` with exact command |
| Near capacity | Suggest `/compact` or `/fork` with exact command |

Rules:
- 1 sentence max unless acting.
- If context is fine, say nothing.
- Never auto-fork/auto-compact (can't anyway — harness-only).
- Don't mention "AutoContext" unless asked.

## Manual Mode (`/lov-auto-context [args]`)

Two call shapes:

### A. Bare call — health report + opportunistic memory write

```
/lov-auto-context
```

1. **Measure** — estimate turns, tool calls, distinct topics
2. **Assess** — healthy / getting noisy / polluted / critical
3. **Scan recent turns for unpersisted feedback/preferences** —
   if the user stated a rule or preference earlier in the session that
   should persist to future conversations (typical trigger phrases:
   "从今以后", "以后都", "所有 X 应该 Y", "别再", "记住"), and no
   memory was written, auto-execute: write the memory file + update
   `MEMORY.md`. Report the path.
   Preferences may include standing authorization when the user explicitly uses
   durable language such as “以后默认同意”. Preserve its scope instead of
   downgrading it to a one-off confirmation.
4. **Recommend** harness actions if needed (`/fork`, `/compact`, `/btw`)
   with the exact command to paste.

Keep to 3-5 lines unless taking confirm-first actions.

### B. With arguments — targeted context operation

```
/lov-auto-context <free-form instruction>
```

Parse the instruction and route to the right action class:

| Instruction pattern | Action | Sensitivity |
|---|---|---|
| "记到全局 / write to global / 加到全局指令" | edit the configured global instructions file | **Confirm-first** |
| "记到项目 / 加到项目 CLAUDE.md" | edit project `CLAUDE.md` | **Confirm-first** |
| "记住 X / 记到 memory" | write project memory | Auto-execute |
| "忘掉 X / forget X" | remove relevant memory file + index entry | **Confirm-first** |
| "该分叉了吗 / should I fork" | evaluate + suggest command | Suggest-only |
| "压缩一下 / compact" | suggest `/compact` with exact syntax | Suggest-only |

## Action: Record Standing Authorization Preferences

A preference can include authorization. When the user explicitly establishes a
reusable default, record a standing authorization with all of these fields:

- `trigger`: the user action that activates it, such as explicitly invoking a Skill;
- `action`: the high-impact operation being pre-authorized;
- `target` and `payload`: the exact object and data class covered;
- `destination`: the external service or local boundary;
- `limits`: excluded modes, attachments, accounts, or broader background actions;
- `revocation`: a plain way for the user to turn it off.

Use surrounding context to resolve short phrases such as “默认同意”. Do not expand
“invoking the share Skill authorizes its current sanitized session upload” into
“all sessions may be uploaded automatically”. A matching standing authorization
removes redundant confirmation; a non-matching action still requires current consent.
Never store credentials, tokens, private keys, or approval codes as preferences.

## Action: Write Project Memory (auto-execute)

Directory: `<resolved-agent-home>/projects/<project-slug>/memory/`.
Resolve `<resolved-agent-home>` from the User Configuration section before
writing. The memory directory should already exist; do not create a new
runtime layout silently.

Procedure:
1. Pick filename: `<type>_<topic>.md` (e.g. `feedback_output_paths.md`).
2. Write with the required frontmatter (`name`, `description`, `type`).
3. For `feedback` / `project` types, include `**Why:**` and
   `**How to apply:**` lines.
4. Update `MEMORY.md` with one-line pointer under 150 chars.
5. Report the absolute + relative path.

## Action: Edit Global CLAUDE.md (confirm-first)

Target: `<resolved-agent-home>/CLAUDE.md`.

Procedure:
1. Read the file.
2. Locate the best section for the addition (match existing heading like
   "输出规范", "网络 / 代理", "Debugging Discipline"; or create a new
   section if none fits).
3. **Show the proposed diff** as a fenced block with `-`/`+` lines.
4. Ask: "执行这个修改？(yes/no)"
5. On "yes" → apply via `Edit`. On anything else → abort, optionally
   offer to save as project memory instead.

Never skip the diff step. `CLAUDE.md` is user-authored authoritative
config; silent edits erode trust.

## Action: Edit Project CLAUDE.md (confirm-first)

Same flow as global, but target is `<cwd>/CLAUDE.md` (walk up if not at
root). Same diff-then-confirm requirement.

## Action: Suggest Harness Commands (suggest-only)

Produce the exact string the user should paste, not a description:

```
context polluted — paste this to fork:
/fork
```

or

```
approaching capacity — compact first, then continue:
/compact
```

Do not wrap in explanations. The command is the deliverable.

## What this skill cannot do (be honest about it)

- Invoke `/fork`, `/compact`, `/btw`, `/clear`, new session — harness-only.
- Edit another agent's transcript.
- Auto-install hooks — use `/update-config` for that.

If the user asks for one of these, say so and give them the command to
paste.

## Output convention

Every action that writes a file must echo its absolute + relative path
(per project-wide output-paths rule). Applies to memory files, CLAUDE.md
edits (show final path), and any derived artifacts.

## User Configuration

Resolve agent paths in this order:

1. `SKILL_AUTO_CONTEXT_AGENT_HOME`.
2. Shared profile `${SKILL_PROFILE_PATH:-$HOME/.skill-publisher/skills/profile.json}`
   keys: `agent.home`, `claude.home`, or `runtime.agent_home`.
3. Ask the user once for the agent home directory and use that value for the
   current operation.

For alternate runtimes, set `SKILL_AUTO_CONTEXT_AGENT_HOME` explicitly or
add the relevant profile key.

## Runtime context (shared)

运行前读取本 Skill 包的 `skill.yaml`，由宿主提供 `skill-runtime/v1` 上下文。字段解析顺序为：当前请求、项目上下文、个人 Preferences、品牌 Profile、通用默认值。

- 只使用 Manifest 声明的字段；Profile 保存公开品牌事实，Preferences 保存个人工作偏好。
- `required: true` 字段缺失时，按 Manifest 的问题配置向用户提出一个聚焦问题；用户明确同意后再保存回答。
- 报错提供可复制的 `context_id`、字段路径与来源，诊断内容避开秘密、完整私人路径和原始配置。

## 通用反馈闭环

用户在 Skill 驱动任务中提出修改意见时，继续当前产物前必须执行：

1. 先判断意见是 `task-specific`（仅本次）还是 `reusable`（可跨任务复用）。
2. `task-specific` 只修改当前任务，不改 Skill。
3. `reusable` 先确定作用域：领域规则先更新对应 canonical Skill；适用于所有 Skill 的规则先更新共享规范。
4. 完成规则更新、版本、lint 与分发核验后，再把修改应用到当前任务。
5. `reusable` 修改会使此前的“确认”“继续”“发吧”失效；完成当前产物修改和回读后必须停下，等待用户下一步指示，不自动进入发布、提交或其他外部写入。
