上下文哨兵 · 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
- Measure — estimate turns, tool calls, distinct topics
- Assess — healthy / getting noisy / polluted / critical
- 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. - 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: 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:
- Pick filename:
<type>_<topic>.md(e.g.feedback_output_paths.md). - Write with the required frontmatter (
name,description,type). - For
feedback/projecttypes, include**Why:**and**How to apply:**lines. - Update
MEMORY.mdwith one-line pointer under 150 chars. - Report the absolute + relative path.
Action: Edit Global CLAUDE.md (confirm-first)
Target: <resolved-agent-home>/CLAUDE.md.
Procedure:
- Read the file.
- Locate the best section for the addition (match existing heading like "输出规范", "网络 / 代理", "Debugging Discipline"; or create a new section if none fits).
- Show the proposed diff as a fenced block with
-/+lines. - Ask: "执行这个修改?(yes/no)"
- 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-configfor 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:
SKILL_AUTO_CONTEXT_AGENT_HOME.- Shared profile
${SKILL_PROFILE_PATH:-$HOME/.skill-publisher/skills/profile.json}keys:agent.home,claude.home, orruntime.agent_home. - 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 驱动任务中提出修改意见时,继续当前产物前必须执行:
- 先判断意见是
task-specific(仅本次)还是reusable(可跨任务复用)。 task-specific只修改当前任务,不改 Skill。reusable先确定作用域:领域规则先更新对应 canonical Skill;适用于所有 Skill 的规则先更新共享规范。- 完成规则更新、版本、lint 与分发核验后,再把修改应用到当前任务。
reusable修改会使此前的“确认”“继续”“发吧”失效;完成当前产物修改和回读后必须停下,等待用户下一步指示,不自动进入发布、提交或其他外部写入。