用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/ever-just/agentskills --skill production-revert-discipline命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | production-revert-discipline |
| description | Revert a deployed feature safely on a stateful platform (Odoo, Django, |
git revert is easy; a safe production rollback is not. On a stateful platform the
code is only half the deployment — databases have installed modules, applied
migrations, created records, and users have learned URLs. A revert PR that is
technically clean can still ship surprises. This skill is the checklist that turns
"revert that commit" into a correct, honestly-described rollback.
Don't revert "yesterday's stuff" — bind the symptom to one commit:
git log --since="3 days ago" --oneline # candidates in the window
git log -S "string tied to the symptom" --oneline # the introducing commit
git show <sha> --stat # confirm it touches the surface
If server access is unavailable, attribute via the deploy pipeline's logs first
(see deploy-log-forensics). Confirm the commit caused the behavior rather than
exposed pre-existing core/vendor behavior — reverting an exposer removes the route
to the surface, not the surface itself.
A revert conflicts with history semantically before it conflicts textually:
git log <culprit>..HEAD --oneline -- <paths culprit touched> # later commits, same files
git grep -l "<symbol added by culprit>" -- ':!<culprit paths>' # later code using its symbols
If later commits build on the culprit's models/fields/APIs, a plain revert breaks them — you're now doing a partial revert or a fix-forward instead. Say so explicitly.
git revert --no-edit <sha>
# syntax-only verification floor when you can't boot the app in-session:
python3 -m py_compile $(git diff --name-only HEAD~1 | grep '\.py$')
for f in $(git diff --name-only HEAD~1 | grep '\.xml$'); do xmllint --noout "$f"; done
Run whatever static validation the repo has (addon validators, linters, CI locally). State plainly in the PR what was and wasn't verified ("syntax checks only; this sandbox cannot boot the app").
A revert PR body must answer, for the person merging it:
An unmerged revert PR on an active repo rots in days: the base branch moves, adjacent files evolve, and the org may de-facto decide to keep the feature (fix-forward) while the revert sits open. Before merging a revert older than a few days: re-diff it against current base, re-run step 2, and check whether later commits already fixed the symptom. If the platform kept and built on the feature, close the revert PR — merging it would now rip out newer work. Closing a stale revert is a success outcome, not a failure; say why in a closing comment.
-m 1 needed, different blast radius).deploy-log-forensics — attribute the culprit before reverting it.web-deploy-verification — verify the rollback actually reached production.finding-forensic-remediation — when the answer is fix-forward, not revert.