| name | goal-monitor |
| tier | 2 |
| description | Enforces Law 2 (Plan Is Sacred) of the 7 Laws of AI Agent Discipline. Detects when a session has drifted away from its stated goal by scoring recent tool activity against the '## Goal' section of task_plan.md, so drift is caught mid-session instead of at end-of-session reflection. |
| origin | continuous-improvement |
| user-invocable | true |
Goal Monitor — Continuous Drift Detection
A "Clear Goal" discipline: a stated goal is only useful if something keeps checking the work against it. task_plan.md captures the goal once; this skill turns it into a recurring check so a session that has quietly wandered off into unrelated files surfaces the drift while there is still budget to course-correct.
When to Activate
- After a long stretch of edits, before claiming progress on the original goal.
- When you suspect the work has sprawled across unrelated areas of the codebase.
- Before a checkpoint or handoff, to confirm the session stayed on its stated goal.
- Any time the goal in
task_plan.md and the actual tool activity might have diverged.
Core Concept
Law 2 says the plan is sacred. But "sacred" is hollow if nothing measures adherence. Goal Monitor scores the most recent observations against the goal and reports one of three states:
ON GOAL — recent activity relates to the goal (score >= threshold)
DRIFT — most recent activity is unrelated, or touched forbidden paths
NO DATA — not enough observations in the window yet
The score is the fraction of recent observations whose tool name, input, or output references a goal keyword — or whose edited path falls under a goal-scope glob.
Goal Source
The check reads, in order:
task_plan.md in the project root (seeded by ci_plan_init / /planning-with-files).
~/.claude/instincts/<project-hash>/goal.md (fallback for non-repo sessions).
- An explicit
goal_file argument, if provided.
The plan needs a ## Goal section. Two optional sections sharpen the signal:
## Goal
Implement OAuth login with JWT session tokens for the auth service.
## Goal Keywords
oauth, jwt, login, session
## Goal Scope
paths: src/auth/**, test/auth/**
forbidden: src/marketing/**
When ## Goal Keywords is absent, keywords are auto-extracted from the goal prose (stopwords and short tokens dropped). ## Goal Scope is optional: paths globs count as on-goal matches; forbidden globs are a hard drift signal even when keywords also match.
How to Invoke
The check is exposed as the ci_goal_check MCP tool (expert mode) and the /goal-check slash command:
ci_goal_check # score the last 30 observations against task_plan.md
ci_goal_check limit=50 # widen the window
ci_goal_check goal_file=docs/x.md # score against a specific plan file
Acting on the Result
- ON GOAL — proceed; the plan and the work agree.
- DRIFT — stop and decide explicitly: either steer back to the goal, or, if the goal has legitimately changed, update the
## Goal section so the plan stays the single source of truth. Do not silently let the work and the plan disagree — that is exactly the Law 2 violation this skill exists to catch.
- NO DATA — keep working; the observation window is still filling.
Limitations
- Keyword scoring is lexical, not semantic: a goal that says "login" will not match activity that only ever says "authentication". Add synonyms to
## Goal Keywords when vocabulary diverges.
- A deliberately broad goal ("refactor the whole repo") will score nearly everything as on-goal. Use
## Goal Scope to add precision when the goal is narrow.
Pairs With
proceed-with-the-recommendation (orchestrator, Law 2) — run a goal check at phase boundaries to confirm the plan still matches the work.
- planning-with-files — the
## Goal section this skill reads is the same one that workflow writes.
strategic-compact — before compacting a long session, a goal check confirms what the session was actually about.