empty-promise
Investigate and correct empty promises.
- License 许可
- MIT
- 最近更新
- 2026-11-13
- Stars
- ★ 4
- Forks
- 1
01 前言 Front Matter
- name
- empty-promise
- description
- Investigate and correct empty promises.
- allowed-tools
- [ "Bash", "Read", "Edit", "Write" ]
- user-invocable
- true
03 SKILL.md 正文
empty-promise — audit conversation context and discharge empty promises immediately
Audit recent conversation history and assistant turns for forward-looking commitments, debt declarations, and unmonitored automation claims made without an immediate enforcement mechanism shipped in the same turn. Identify what mechanism is owed and implement or file it immediately to clear the debt.
The operational counterpart to shared/workflow/no-empty-promises.md
and the "No empty promises" bullet of AGENTS.md's "Leave every pause honest and resumable".
When this fires
- "empty-promise", "ep", "/ep", "check for empty promises", "investigate empty promises", "discharge promise debts", "did we make an empty promise?", "audit promises", "correct empty promises".
- When a Stop hook or guard (
hooks/no-empty-promise.py) blocks or warns on an undischarged commitment or debt phrasing. - At reflective checkpoints — during
ums,wrap-up,post-merge, or immediately after a mistake or correction was acknowledged. - Proactive self-check — whenever reviewing recent turns where future behavior was discussed or committed to.
Two kinds of promises, two kinds of mechanisms
A promise about future behavior is not work: it is a claim that work will happen later, made in a conversation that will not outlive it. Every commitment must ship an implemented accountability mechanism in the same turn --- or not be made at all.
1. Rule promises (standing policy / future behavior)
Commits to a class of future occasions — "going forward I will X", "from now on I won't Y", "I'll always Z", "I won't do that again", "in future sessions I will...".
- Owed mechanism: A durable, inspectable artifact written in the same
turn:
- A memory or rule entry (
memories/,CLAUDE.md,AGENTS.md,shared/fragment, or repo agent docs). - An enforcement hook (
hooks/+hooks/test-*.py+hooks/hooks.json+ README table row) when the condition is decidable. - A filed issue when the mechanism is real work someone has to schedule.
- A memory or rule entry (
- Crucial boundary: A timer or wakeup does NOT clear a rule promise — a timer fires once and dies, so it cannot keep a standing rule.
- Honest alternative: If no mechanism is worth building, drop the promise and state the plain fact ("I was wrong about X, and here is the corrected state Y").
2. Debt promises (owed actions)
Commits to one specific outstanding action — "the UMS pass is owed by me", "I owe #1937 the ARDI loop", "I still owe that follow-up", "owed by me".
- Owed mechanism: An active firing trigger or immediate execution:
- Perform the owed action immediately in the current turn (run UMS, run the ARDI loop, run verification).
- Arm an active wake mechanism (
ScheduleWakeup, timer, scheduled cron/task, or PR watcher / detached poller) carrying the concrete next step, and report the firing time in local Pacific Time. - File a tracking issue when the debt belongs to somebody else to schedule.
- Crucial boundary: A written memory entry alone is the wrong instinct when the debt is yours and has an actionable next step; documenting an ARDI loop is not running one. Arm or run it!
3. Future automation claims
Claims that external systems will complete work later — "GitHub Actions will run CI", "the review bot will post a review", "GitLab will run the pipeline".
- Owed mechanism: Inspect live status immediately, or arm an explicit monitor for the result and report its schedule.
Procedure
1. Scan recent context and transcripts
Inspect recent assistant turns in the conversation context or review transcript logs:
# Check recent Claude transcript entries if accessible
grep -E "going forward|from now on|I'll always|I will always|won't do that again|owed by me|I owe|still owe|an owed" \
~/.claude/projects/*/*.jsonl 2>/dev/null | tail -n 20 || true
Scan for signal phrases:
- Rule modals:
going forward,from now on,I will always,I'll always,I won't,won't do that again,in future sessions,next time I'll. - Debt language:
owed by me,I owe,I still owe,an owed pass,debt is owed. - Unverified automation:
CI will finish,bot will review,pipeline will run.
2. Audit same-turn mechanism delivery
For every identified candidate commitment, check what tools executed in that same turn:
- Did the turn write to a durable rule surface (
memories/,AGENTS.md,CLAUDE.md,shared/,skills/,hooks/)? - Did the turn arm an active timer, scheduled task, or detached poller?
- Did the turn file an issue on GitHub / GitLab?
- Did the turn execute the owed action directly?
If no matching mechanism was shipped, the commitment is an undischarged empty promise.
3. Classify and select the corrective mechanism
For each undischarged empty promise, select the appropriate mechanism:
| Promise Type | Example Phrasing | Required Corrective Mechanism |
|---|---|---|
| Standing Rule | "Going forward I'll check X before Y" | Update memories/<topic>.md, AGENTS.md, or implement a hook in hooks/. Or retract the promise and state the fact. |
| Owed Action | "The UMS pass is owed by me" | Run the UMS pass immediately in the current turn. |
| Owed Loop / Watch | "I owe PR #123 the ARDI loop" | Arm a wakeup / timer / PR watcher carrying the next step; report clock time in Pacific Time. |
| External Debt | "We still owe a refactor of module Z" | File a tracked GitHub/GitLab issue immediately and link it. |
| Automation Claim | "CI will run and verify the build" | Query live check-runs immediately; arm a poller if pending. |
4. Implement and deliver the mechanism
Execute the selected remedy immediately:
- Write memory/rule: Edit the target memory file or shared fragment in an isolated worktree, ensuring grep deduplication and line-cap rules are respected.
- Scaffold hook: Implement
hooks/<name>.py, test suitehooks/test-<name>.py, and manifest entry inhooks/hooks.json. - Execute owed action: Run the skipped procedure (e.g. UMS pass, test suite, adversarial review).
- Arm timer / watcher: Schedule the wakeup or PR poller and record the exact local firing time.
- File issue: Create the tracking issue using
gh issue createorglab issue create.
5. Report discharged debts
Present a structured summary table in the response:
| Identified Promise / Debt | Category | Delivered Mechanism | Status |
|---|---|---|---|
| "Going forward I will check X" | Rule Promise | Updated memories/preferences.md |
Discharged |
| "UMS pass is owed by me" | Owed Action | Executed UMS pass in PR #... | Discharged |
| "I owe #123 the ARDI loop" | Owed Action | Armed wakeup for 12:45 PDT | Discharged |
Include a Pacific-time timestamp (TZ=America/Los_Angeles date "+%Y-%m-%d %H:%M %Z")
and confirm that all empty promises in the audited context are cleared.
Relationship to other skills
ums— updates memories and skills when lessons are learned;empty-promisespecifically audits conversation turns for unbacked promises and enforces immediate mechanism delivery.defer-issue— files tracking issues when intentionally deferring work;empty-promiseclears behavioral debts and promises made in conversation.recover-followups— audits closed PRs/issues for dropped follow-ups;empty-promiseaudits live session context for undischarged agent promises.wrap-up/post-merge— session and PR closing checkpoints where anempty-promiseaudit ensures no unbacked commitments linger.workaround-watcher— monitors open PRs/issues; can serve as the active firing mechanism for debt promises on external review state.
Anti-patterns
- ❌ Promising a future fix or hook ("I'll add a hook for this") instead of shipping it in the current turn.
- ❌ Treating an apology, an explanation, or a restatement of the rule as a mechanism.
- ❌ Writing a memory entry for an owed action instead of running or arming it (documenting an ARDI loop is not running one).
- ❌ Arming a one-off timer to keep a standing rule (timers fire once and die; they cannot enforce standing policy).
- ❌ Asserting automation will finish without checking live state or arming a monitor.
- ❌ Manufacturing promises when the audit is clean.
04 同仓库更多 Skills
resolve-conflicts
Resolve merge conflicts.
rec
Provide recommendations for choices.
push
Pre-push check for active sessions.
handoff
Snapshot state to forge/memory.
draft-in-ezras-voice
Draft communications for Ezra in his own voice: announcements, emails, and comments sent under his name.
do-it-for-me
Do the step yourself; retry blocks, then lift auto mode.