Skip to content
cccskills
FreePublished on 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".

The English summary is being prepared. Showing the original description.

Works withGitHub
See how to install

Files included (1)

  • SKILL.md7.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

a11y

Free

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.

The English summary is being prepared. Showing the original description.

FriendlyInternet/nuxt-crouton10Updated Oct 21, 2026

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

The English summary is being prepared. Showing the original description.

FriendlyInternet/nuxt-crouton10Updated Oct 21, 2026

audit

Free

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.

The English summary is being prepared. Showing the original description.

FriendlyInternet/nuxt-crouton10Updated Oct 21, 2026

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.

The English summary is being prepared. Showing the original description.

FriendlyInternet/nuxt-crouton10Updated Oct 21, 2026

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.

The English summary is being prepared. Showing the original description.

FriendlyInternet/nuxt-crouton10Updated Oct 21, 2026

commit

Free

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.

The English summary is being prepared. Showing the original description.

FriendlyInternet/nuxt-crouton10Updated Oct 21, 2026

See all skills by FriendlyInternet

Report a problem with this skill