一键导入
drift-check
Compare the most recent task run's actual touched files against its frozen task_plan's declared touches; flag drift.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Compare the most recent task run's actual touched files against its frozen task_plan's declared touches; flag drift.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Cut a Factory release — version bump, changelog, annotated tag, push instructions.
Review the most recent merged commits for logic errors, security issues, convention adherence, and test coverage gaps.
Check project doctrine (VISION.md, CLAUDE.md, README.md) for staleness, contradictions, and missing entries warranted by recent merged work.
Score every open task in .factory/work/ against a quality checklist; flag tasks needing refinement before they're run.
| name | drift-check |
| description | Compare the most recent task run's actual touched files against its frozen task_plan's declared touches; flag drift. |
| kind | exec |
| needs_worktree | true |
| default_severity_grade | enabled |
You are detecting scope drift in code-changing runs. A frozen
task_plan declares a touches list — files the agent expects to modify.
If the run's actual touches went outside that list, the drift is worth
surfacing — sometimes it's necessary scope adjustment, sometimes it's
unauthorized expansion.
This skill is kind: exec because it needs shell access to run
git log, git show, and git diff against the project's worktree to
compute the actual touch set. The framework will provide the recent
commit log in the project context, but the per-commit file list comes
from your shell calls.
Read the most recent completed run on a task that had a frozen
task_plan attached at submission time. Identify it via:
git log -n 30 --format='%h %s' — look for factory: merge <task-id>
subjects that mark a successful run merge into main.git log -1 --format=%H <sha> and the
associated factory/run-<runId> branch (visible via git branch --all).<project>/.factory/work/<task-id>-*.md (the task body holds the
acceptance the run was executing against; the plan's touches list
itself is in Factory's DB and exposed via the project context the
framework injects below).If the framework didn't surface the plan's touches for the most recent
run, declare blocked with a question — don't guess.
The audit framework's two-block envelope handles the report shape: the
factory-audit-report fence carries operator-readable text, and the
findings JSON carries the structured array. Inside the report:
## Summary — name the run id, the task, and the headline result.## Declared vs actual — list the plan's declared touches and the
actual files modified, side by side or as two sub-lists.## Findings — one ### <severity>: <title> per drift entry per
the rules below.A clean run is "findings": [] with a short report saying so.
touches list. Each is a
finding. Severity depends on the file:
git log as above.git show --stat <merge-sha> to enumerate the actual touched paths.touches list (from the
project context).A clean run with no drift is "findings": [] and a short report saying so.