跳到正文
cccskills
免费在 GitHub 公开

owner-brief

Shape every agent comment as a short typed brief the owner can triage in seconds — 🔴 issue · 💡 proposal · ✅ done · 🔀 choice · 🛠 action · 👀 review — with all the depth collapsed behind it. Enforced by the require-owner-brief hook. Use before posting ANY GitHub comment as an agent, or when asked to "make this shorter", "brief me", "just tell me what I need to do".

中文简介正在准备中。当前显示原文说明。

集成工具GitHub
查看安装方法

包含的文件(1)

  • SKILL.md7.0 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

The owner brief — one line they act on, everything else collapsed

The owner reads these on a phone, holding ~20 async threads. The depth is not the problem and is never cut — the problem is that it arrives as the notification, so every ping costs a full read.

So: lead with a typed brief, collapse the rest. Same comment, same content, different order.

The six types

Pick exactly one. The last three are ask-human's existing shapes — this is one vocabulary, not a parallel system; reach for that skill's templates when the brief is a hold.

typemeanstypical follow-upmay @mention?
🔴Issuesomething is broken or wrongyou decide whether it's worth fixing nowyes
💡Proposala suggestion you can take or dropyes / no / lateryes
✅Donelanded and verifiednothingno
🔀Choicea real fork, needs your pickA / Byes
🛠Actionyou must do something the agent can'tdo it, then commentyes
👀Reviewapprove or reject a diff/preview✅ / lgtm / changesyes

If two apply, pick the one that describes what you need back, not what you did. A bug you already fixed is ✅, not 🔴.

The other half: don't spend a mention on nothing

An @mention is a request for action. Spending one on an FYI teaches the owner to ignore mentions, which costs far more than the notification. The gate refuses a ✅ carrying a live mention.

Where the noise actually came from. Over the last 100 comments, 29 would notify the owner and 17 of those carried no ask at all — their only mention was the mandatory provenance disclaimer, posted from @pmcp's account. It sits in a blockquote, so a reader never sees it, and GitHub notifies anyway. That was 59% of every ping.

So the disclaimer now writes the handle in a code span:

> 🤖 **Claude Code** · interactive agent · posted from `@pmcp`'s account (not Maarten)

It renders identically and does not notify. Backticking it across the templates removes those 17 pings; the 12 that remain are genuine asks.

GitHub notifies for a mention inside a blockquote and inside <details>. Code spans and fenced blocks are the only places it doesn't. So "hide it in the collapsed section" does not make a mention silent — backtick it, or don't write it.

The shape

Visible part ≤700 chars and ≤10 non-empty lines:

🔴 **<one line: what happened>**
> 🤖 <provenance header — its own hook requires this>

**You:** <the single next action — or "nothing, FYI">
**Depth:** <link to the full comment / PR / run / report>

<details><summary>Findings / patch / evidence</summary>

…everything you were about to write, at any length…

</details>

**You:** is the load-bearing line. If you can't state one next action, you don't yet know what you're asking for — work that out before posting.

Say the visible part plainly (the word-choice layer)

Structure is only half. A brief that is the right shape and still full of repo jargon fails just as hard — the owner said so, repeatedly: "i have no idea what you said", "thats unreadable", "this is gibberish to me". The rule is in AGENTS.md (Plain language); here is what it looks like, from real messages this session:

❌ what was written✅ plain
"work the second group down — re-dispatch the tasks, verify/close the stale ones — so the filter converges to just the 8 that are genuinely yours""8 of these aren't really waiting for you — they got the wrong label. Want me to clean them up? yes / no"
"the sweep will tag the nine stranded PRs status:needs-merge for one-click merging""nine finished PRs will show up needing one tap to merge"
"#2095 keeps it that way going forward"(cut it — the owner doesn't run the plumbing)
"re-dispatch the task to the pipeline""hand it back to run again"

The pattern in every miss: naming the mechanism (the sweep, the filter, the label, the issue number) instead of the outcome (what the owner sees or does). Read the visible part aloud as if to someone who's never seen this repo; any phrase that needs a footnote gets rewritten.

What doesn't count against the limits

Nothing inside <details>, a code fence, the provenance blockquote, an HTML comment marker, or the generated-by footer. Collapse it, don't cut it — if the escape hatch weren't real, agents would delete content instead of moving it, which is worse than the wall.

A comment with no 🤖 header (a human's) is untouched at any length.

Two failure modes

Burying the ask. #2054 posted a patch-to-apply under a question heading, and the gate announced "asked you a question" above 4,372 characters containing no question. The type marker exists so this can't happen: it says what's wanted before anything else is read.

Splitting the thread. Don't post the brief and the depth as two comments — one comment, brief in front, depth in <details>. Two comments doubles the notifications, which is the problem, not the fix.

Enforcement

require-owner-brief (PreToolUse on add_issue_comment) blocks a non-conforming agent comment and prints the vocabulary + the collapse rule. The decision is scripts/owner-brief.mjs — pure, unit-tested, and checked against the real comment corpus.

Why the trigger is "is this an agent comment" and not "does it @mention the owner": the @mention rule was the obvious design and measuring killed it. Of the 29 owner-mentioning comments in the last 100, 17 carry @pmcp only inside the mandatory provenance disclaimer — exactly the long reports being complained about. An @mention gate would have waved the offenders through and constrained only the dozen that already used a standalone address.

Why these limits: across 93 agent comments the visible part runs 0 · 114 · 330 · 591 · 25497 chars and 0 · 1 · 3 · 6 · 217 lines. The median is already 330 chars / 3 lines; 700c/10L refuses the walls, not the norm. The line limit reuses the ~10 lines ask-human already states rather than inventing a second number.

Relationship to ask-human

ask-human covers the blocking subset (🔀 / 🛠 / 👀) in depth: the Needs: line, the recommendation-first rule, the medium-selection table, status:blocked, push-before-you-block. This skill is the wrapper that makes every comment — including the non-blocking 🔴 / 💡 / ✅ — arrive in the same scannable shape. When the brief is a hold, use ask-human's template inside it.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

a11y

免费

Accessibility review for Vue surfaces — the code-cleaning analog of /code-review and /simplify, pointed at WCAG/ARIA. Reviews just your diff (or a package/file), rates findings by severity, and either comments inline on the PR (--comment) or applies the safe fixes for you (--fix). Steers the depth-aware `a11y` subagent. Use when asked to "check accessibility", "a11y this", "audit ARIA/keyboard", or run /a11y.

中文简介正在准备中。当前显示原文说明。

FriendlyInternet/nuxt-crouton102026年10月21日 更新

ask-human

免费

Emit a blocking question the owner can read in ~10 seconds and answer in one reply — the scannable, recommendation-first handoff every agent posts when it hits a fork it can't own. Leads with the one decision + a recommendation, carries the 🤖 provenance header, doubles as the

中文简介正在准备中。当前显示原文说明。

FriendlyInternet/nuxt-crouton102026年10月21日 更新

audit

免费

Audit packages for documentation completeness, detect drift between code and docs, and maintain documentation quality across the monorepo. Use when checking package docs, running audits, or reviewing documentation health.

中文简介正在准备中。当前显示原文说明。

FriendlyInternet/nuxt-crouton102026年10月21日 更新

Author a placeable layout block that looks right at ANY pane size. The one hard rule — size to the PANE with container queries (@container), never the viewport — plus list/form playbooks and the sizing contract (minWidth etc.) the viability metric reads. Use when adding/converting a croutonLayoutBlocks block, or when a block overflows/breaks in a narrow pane.

中文简介正在准备中。当前显示原文说明。

FriendlyInternet/nuxt-crouton102026年10月21日 更新

When a bug or regression is reported, the FIRST step — before fixing — is to research how and when it was introduced (git archaeology), then record that finding on the tracking issue/PR. Use the moment a bug, error, broken build, or "this used to work" is reported, before writing a fix. Produces a first-bad-commit (or "not a code regression") note you paste onto the issue.

中文简介正在准备中。当前显示原文说明。

FriendlyInternet/nuxt-crouton102026年10月21日 更新

commit

免费

Smart, granular git commits following monorepo conventions. Analyzes changes, filters to session-relevant files, groups by intent, and uses conventional commit format. Use when committing code changes.

中文简介正在准备中。当前显示原文说明。

FriendlyInternet/nuxt-crouton102026年10月21日 更新

查看 FriendlyInternet 的全部技能

报告此技能的问题