跳到主要内容
知仓学习社ZHICANG

os-done-or-not

>-

执行命令严重 1 · 高危 0kharmanskyi/open-steps

它会碰到什么

扫了多少2 个文本文件,11 KB
它会碰到什么执行命令
命中总数1 处
命中统计严重 1 · 高 0 · 中 0 · 低 0
逐条看命中(1 条严重或高危)
  • 严重 SKILL.md:11perm-wildcard
    allowed-tools:  - "Read(~/.claude/open-steps/**)" - "Edit(~/.claude/open-steps/**)" - "Bash(gh pr view *)" - "Bash(gh pr checks *)" - "Bash(gh pr checks)"

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

os-done-or-not

One question, one screen: did the agent finish, and what actually happened

  • in words a reader who does not code will understand. Nothing happened (pure

questions, no files touched) → one line saying so, no report.

Language

The language the user speaks in this session, detected from the conversation

  • translate every template label. Code, files, commands stay English.

Step 1 - gather proof that takes seconds

Fast checks only; never re-run the test suite - use results this session

already produced. Not confirmable in seconds, or still running → **"not

checked"**, never "yes".

git status --porcelain            # uncommitted?
git log --oneline -10             # what landed
git log origin/HEAD..HEAD --oneline 2>/dev/null   # unpushed?
gh pr view --json state,mergeStateStatus && gh pr checks   # if a PR exists

Step 2 - name the outcome

Sessions end one of eight ways; pick the match before writing, or the

report says "fully done: yes" and "safe to close: no" in the same breath.

| # | Outcome | Verdict shape |

|---|---|---|

| 1 | Shipped and verified | done Yes · nothing needed · close Yes |

| 2 | Done - one action is yours | done Yes · needed = that action · close Yes |

| 3 | Stalled on your decision | done No · needed = the decision · close No |

| 4 | Partly done, rest deferred | core Yes, rest recorded as debt · close Yes |

| 5 | Didn't work - rolled back | done No · lead = what was learned · close Yes |

| 6 | Something broke | lead opens with ⚠️ · risk in full (rule 7) · close No |

| 7 | Research only | the answer is the result · skip ship rows · close Yes |

| 8 | Nothing to report | one line, no report, no file |

Outcomes 5 and 6 are where reports start lying; "the approach failed and was

rolled back" is a complete result.

Step 3 - write the report (translate the labels, keep the shape)

<Lead: 1–2 sentences. What changed for the product. Best result first.>

| | |
|---|---|
| ✅ | <done, and what proves it> |
| ⚠️ | <surprise or bad news> |
| ⏳ | <deferred, and until when> |

**Verdict**

| | |
|---|---|
| Fully done?              | Yes / No / Not checked |
| Anything needed from you?| No / <one concrete action> |
| New debt?                | No / <how many, where recorded> / Not checked |
| Safe to close?           | Yes / No - <reason in five words> |

Checkmark rows: two to five; drop an empty row, never a non-empty ⚠️. Verdict

cells are one line each - detail lives in the checkmark rows, not the verdict.

Two conditional rows, only when the session makes them real - never "not

applicable": Easy to undo? (Yes - how / Hard - why) and **Security

touched?** only when yes - one line: exposed what, closed how. Deliberately no

"live for users?" row: unmerged it repeats the action line; merged but not

reaching users is a surprise - a ⚠️ row.

Step 4 - save it

Write to both paths, creating directories as needed - never anywhere else

under ~/.claude, never into the user's project:

  • ~/.claude/open-steps/reports/<project-folder-name>/latest.md - overwritten
  • ~/.claude/open-steps/reports/<project-folder-name>/history/<YYYY-MM-DD-HHMM>.md

Head the file with date, project, ticket. **Two parts; only part one goes in

the chat.** Part one - the report above, for the person. Part two - for the

next session, which reads it instead of re-exploring the repository; the only

home for engineering identifiers.

---
## Technical detail - for the next session, not the reader above

- Branch / worktree / PR and their state; commits made this session
- Files changed, with paths; test and check results as measured
- Commands worth re-running; the first thing to look at next

Terse, factual, a handover note; nothing changed → omit part two.

Step 5 - fold it into the map

The report describes one session. BIG-PICTURE.md holds the standing picture

of the product, and this is the moment it goes out of date. Use the

os-big-picture skill to update only the rows this session touched - a new

feature, a stage that moved, a deferred item joining the backlog.

Skip it in two cases only: outcome 8, or no BIG-PICTURE.md and the user has

never asked for one. A session that changed no row is not a third case - the map

is not a second copy of the report, but its measured columns went a day stale

while this session ran, and that pass is what refreshes them. The map is not

skipped for having nothing to say; it is skipped for not existing.

Jargon → plain words

Examples of the move - apply it in the user's language. A ticket or PR number

naming an action ("review PR #892") stays; elsewhere say what it changed.

| Don't write | Write |

|---|---|

| a1b2c3d, commit, SHA | "the version" - or drop it |

| deploy, prod | "put it on the live product", "the live product" |

| CI green, checks passed | "all the automatic checks passed" |

| fail-closed, the gate fired | "the safety check refused to ship it - correctly" |

| migration / rollback | "a change to the database" / "put it back as it was" |

| tech debt / flaky test | "an unfinished bit, written down" / "a check that sometimes lies" |

Hard rules - these rules are the skill

  1. One screen: about 10 lines, 15 the ceiling.
  2. Lead with the outcome - best thing first, never the chronology.
  3. Numbers a human can use - counts, money, time; hashes, branch names and

build IDs stay out unless asked.

  1. Translate every term; no plain equivalent → say what the user would see.
  2. Every "yes" names its proof; no proof → "not checked".
  3. Bad news gets its own ⚠️ row - never buried inside another line.
  4. Exception, do not compress: an unhandled security risk or data loss is

spelled out plainly - in the lead and its ⚠️ row, never by inflating a

verdict cell. A handled risk is one line: exposed what, closed how.

Known gotchas

  • "New debt? - No" gets written when there is no debt and when nobody looked;

say "no" only after checking.

  • Neither a green check nor a merge means users have it: landed-but-unreached

gets a ⚠️ row naming what would ship it - the most common way a report ends

up technically true and practically wrong.

  • An approval can be revoked - a verdict is a snapshot; say so while a review

is open.

  • Do not grow the table: ten rows is a wall of text in a table costume.
  • Matches none of the eight → say what happened; the list serves honesty.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 460
本站分层T2
该仓技能数8
原文件路径skills/os-done-or-not/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 8 个技能