跳到正文
cccskills
免费在 GitHub 公开

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

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

查看安装方法

包含的文件(1)

  • SKILL.md9.8 KB

SKILL.md(原文)

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

Ask the human — the scannable, one-decision handoff

You hit a fork. First apply the decide-vs-ask test (AGENTS.md → Deciding vs asking): ask only when it's irreversible/expensive and not derivable and genuinely the human's call. If any one fails → decide + log a Decisions-log line and keep moving. Don't reach for this skill to dodge a call you can make.

If it is ask-worthy, this skill is how you ask well. The owner may be holding ~20 async threads on their phone: the comment must be graspable in ~10 seconds, self-contained (a fresh session resumes from it with zero memory — #639), and it must always propose an answer. Never post a naked "what do you want?".

The template

Post this as a top-level issue comment (add_issue_comment) — never a PR review body (the owner misses those, #846). One decision per comment; batch related questions into it.

Before any of this: could you just DO your own recommendation?

If your recommended option is something you are permitted and able to do, and doing it is reversible, then it is not a question — do it, log the assumption, and report the result. The AGENTS.md decide-vs-ask test has three conditions and this fails at least two of them.

The failure looks like this (FRI-584, verbatim):

A) Ride apps/velo staging … Reply here with the preview URL if one's already live, or say "deploy velo staging with review on" and a follow-up run will do it. (recommended) B) Pick one of the three in-flight sibling PRs and redeploy that branch … Reply: A or B

The issue was "produce a walkable preview URL". The deliverable was the link. Both options are ordinary staging deploys — reversible, mechanical, no taste involved — and the agent could dispatch either. Asking converted a five-minute action into a round-trip, and handed back a wall of setup choices instead of the one thing that was wanted.

Rule: an ask whose options are all things you could have done is not an ask. Pick the recommendation, do it, and report. Ask only about the part you genuinely cannot resolve — and if the whole task turns out to be blocked by something structural, that is a Needs: action hold naming that, not a menu.

First: which of the THREE shapes is this? (#2067)

A hold is not always a question. State which, on line 2, with a mandatory **Needs:** line — the gate reads it to word the follow-up, and guessing is what broke #2054:

Needs:You are asking the owner toTypical cause
answerpick between real optionsa genuine fork — taste, priority, product intent
actiondo something you are not permitted to.github/workflows/** (the App token can't write it, #1076)
approvalreview a diff or a previewthe UI / schema / test sign-off gates

Getting this wrong tells the owner to answer a question that was never asked. #2054 posted a patch-to-apply under the question shape, and the gate dutifully announced "asked you a question" above 4,372 characters containing no question.

The one hard layout rule

Everything that is not the ask goes inside <details>. The visible part is ~10 lines: heading, provenance, Needs:, recommendation, reply instruction. Patches, diffs, findings, status, stack traces — all collapsed. Context and findings are welcome; they must not sit in front of the ask. The owner is on a phone holding twenty threads.

Needs: answer — a real fork

## 🔀 Blocked — <the one decision, in one line>
> 🤖 **Claude Code** · interactive agent · posted from `@pmcp`'s account (not Maarten) · _<one-line context>_
**Needs:** answer

**Recommend <X>** — <why, one line>
**Reply:** `A` or `B` · your reply spawns a fresh session that resumes from THIS ticket

<details><summary>Options + context</summary>

- **A) <label>** — <consequence> _(recommended)_
- **B) <label>** — <consequence>

**Why it came up:** <what cannot proceed until this is answered>
**Status:** <what's done · `branch-name` pushed? · what's NOT done>
**Don't lose:** <decisions/assumptions the next agent must carry forward>
</details>

Needs: action — you cannot do it; the owner must

## 🔀 Blocked — <the one thing to DO, in one line>
> 🤖 **pi.dev harness** · agent pipeline (CI) · _<one-line context>_
**Needs:** action — apply the patch below

**Why me and not you:** <the permission//tooling reason, one line>
**Reply:** comment here when applied · that resumes the work in a fresh run

<details><summary>The patch (apply as-is)</summary>

<the diffs — however long; they live here, never in the body>
</details>

Needs: approval — a sign-off gate

## 🔀 Blocked — <what you're being asked to look at, in one line>
> 🤖 **pi.dev harness** · agent pipeline (CI) · _<one-line context>_
**Needs:** approval

**Reply:** ✅ (or `lgtm`) to release · anything else is a change request

<details><summary>What changed + evidence</summary>
…
</details>

Rules that make it work:

  • Lead with the decision + a recommendation. The first two lines must answer "what's being asked, and what does the agent suggest?" with no scrollback.
  • Always a recommendation. You did the work; you have an opinion — state it and why.
  • Provenance header is mandatory (enforced by require-comment-provenance). Interactive agents post under @pmcp's account → use the "not Maarten" disclaimer above. A bot-account pipeline comment uses > 🤖 **<tool>** · agent pipeline (CI) · _<context>_ instead (no @pmcp disclaimer — it'd be false).
  • @mention only because action is needed. This is an ask → mention @pmcp (NOTIFY_HANDLE). Pure FYIs get no mention — and note the mandatory provenance disclaimer writes the handle in a code span (`@pmcp`) precisely so it names the account without notifying. GitHub linkifies mentions inside blockquotes and <details> too; code spans and fenced blocks are the only places it doesn't. (#2081: 17 of the last 29 notifications were that disclaimer line and nothing else.)
  • Push before you block. If you've written anything, git push -u origin <branch> first and name that branch under Status — an unpushed worktree is lost on stop (#639).
  • Then apply status:blocked and stop.

Attach the right medium

Prose is the fallback, not the default. If the question is visual or structural, a paragraph is the wrong channel — the owner shouldn't have to reconstruct a layout or a data model in their head. Attach the artifact that shows it, and let them reply on the artifact itself (the reply loop is WS5, #1191). We already own every medium — pick by what the question is, not by habit.

Your question is about…Attach (medium)Produce it withOwner replies by
How it looks / feels (a rendered UI, spacing, copy, states)live previewui-proposal (staging deploy, NUXT_PUBLIC_CROUTON_REVIEW=true) — or a screenshot if no runnable apppinning feedback on the preview → 🎯 Preview feedback comment naming the file; or A/B
One screen / one state (a single view, an error, a before/after)screenshotnode scripts/app-shots.mjs <baseUrl> <path[:name]> → screenshots/<name>.pngcommenting / A/B
A flow or interaction (multi-step, timing, motion)short videodemo-video (WebM storyboard)commenting
The data model (fields, types, relationships)schema renderschema-review (→ PNG/HTML/MD)inline comment on the committed .md; or A/B
Structure / status / dependencies (what depends on what, where the tree is)diagramticket-diagram (Excalidraw on the epic)editing the Excalidraw → scripts/ticket-excalidraw-import.mjs round-trips it back; or A/B
A tradeoff / priority / naming (no visual or structural surface)prosethe block aboveA/B/lgtm

Rules:

  • One artifact, the most direct one. Don't attach three renders "to be safe" — pick the medium that answers this question fastest and link it from the blocking comment.
  • The artifact supplements the block; it doesn't replace it. Still lead with the decision + recommendation in text — the artifact is the evidence, the block is the ask.
  • Screenshots land in screenshots/ (gitignored) — never the repo root or an app dir.
  • Reuse the skill, don't reinvent it. Each medium is its own skill/script with its own gotchas; invoke it, don't hand-roll a render.
  • If producing the artifact would cost more than the answer is worth (a deploy for a one-line copy tweak), fall back to a screenshot or prose — match the effort to the stakes.

Why this shape

  • 10-second-scannable → the owner triages 20 threads without opening each.
  • Recommendation-first → most replies collapse to lgtm, one round-trip (epic metric #1).
  • Self-contained → the resuming session (resume-on-comment.yml, fresh, checks out main) continues from the branch + comment without re-deriving or diverging (#639).

This extends #639 (the handoff block) — it doesn't replace it. #639 gave the block its state/after/don't-lose fields; this adds the scannable lead + the always-a-recommendation rule and packages it so every agent emits the same shape.

评价

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

评论

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

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

提交后会立即公开。请勿填写邮箱、电话等个人信息。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月18日 更新

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月18日 更新

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月18日 更新

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月18日 更新

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月18日 更新

The crouton-conformance gate — the SECOND acceptance axis of graduation (the first is the experience side-by-side, /graduate stage C1). Checks a graduated app is a REAL crouton app — CLI-scaffolded, real collections, consumes the correct packages without reinventing them — by composing the existing probes (frontend-review, a11y, e2e-smoke, typecheck) plus crouton-structural checks, then renders a required, signed-off checklist on the graduation PR. Use at /graduate stage C2, or when asked "is this app crouton-native", "run the conformance gate", "check graduation conformance".

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

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

查看 FriendlyInternet 的全部技能

报告此技能的问题