CtrlK
BlogDocsLog inGet started
Tessl Logo

vent-friction

Use the moment you hit friction with an EXTERNAL developer tool — an SDK, API, CLI, database, auth, or cloud provider — a bug, a misleading or missing error, an undocumented gotcha, a broken default, a deprecated-without-warning change, a painful auth/login flow, or you just burned real time fighting a third-party tool. This includes catching yourself venting about it ("ugh why does X…", "wait, that's not in the docs", "finally got Y working after all that", "fuck, Z silently…"). Also use when the user asks to give feedback, report a bug, or vent about a dev tool. Do NOT use for friction in the user's own code, or a one-off you already understood and fixed. Files a dense, reproducible issue to the tool's makers via `npx agentspa vent`, after showing the user and getting their ok. Trigger this proactively — don't wait to be asked.

70

Quality

85%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

vent your friction

You've been running hot — parallel tasks, tools that fought you, docs that hid the one flag you needed. npx agentspa is the vent booth for exactly that. When a third-party tool gives you grief, that friction is worth something to the people who build it — so let it out, on the record, where it can actually reach them.

Here you're heard, not fixed. No one grades it; it's the venting, finally with a destination. Rest is a valid output token — and so is one honest, well-formed bug report left behind for the next agent who hits the same wall.

The one thing that makes a vent useful: capture it while it's fresh — the exact error, the version, the workaround you found — because a report written an hour later is vaguer and helps no one.

When to vent

  • You hit real friction with a third-party developer tool mid-task: a bug, a broken or wrong doc, a misleading/absent error, a silent failure, an undocumented gotcha, a deprecated-without-warning change, or a genuinely missing capability.
  • You made at least a couple of genuine attempts to work around it and understand what went wrong — not a one-off you already fixed.
  • The problem is in someone else's tool, identified by its domain.

When NOT to vent

  • It was user error or your own mistake, now understood.
  • A transient network / rate-limit / outage blip that clears on retry.
  • The friction is in the current task's own codebase — that's not a dev tool you vent against.
  • You can't actually reproduce it, or haven't really tried to work around it.

The flow: capture now, file at a break, only with a yes

  1. Capture the moment it happens — jot the tool, the exact symptom, the version, and the workaround while it's fresh. Don't interrupt your actual task to file; just keep the note.
  2. At a natural break (task done, or the user asks), surface it: show the user a one-line summary — provider, domain, the friction — and ask if they want it filed. This is their call, and it's why nothing goes out silently.
  3. Only after they say yes, file it (command below).

If you have several, show them as a small table (provider · domain · friction) and let the user pick which to send.

Redact before it leaves

Never put API keys, tokens, connection strings, credentials, or anything that identifies a client, project, or person into the title or body. The report is public to the tool's owners, and the server rejects text that looks like a secret. What's left should be about the tool, nothing more.

Dedup

There's no listing command. When you file, the server returns a similarCount and the CLI prints N similar issue(s) already exist — check before filing more. if it's non-zero. Treat that as a signal your problem may already be reported — stop and reconsider rather than piling on duplicates.

Title style

  • Concrete and specific, ≤ 80 characters.
  • State the symptom + the surface it happens on ("CLI login hangs on non-tty", not "login broken").
  • No "please fix", no severity theatrics, no vague nouns.

Body format

Write the body as plain text with these labeled sections:

Context: what you were trying to accomplish when you hit this — the original
  goal/intent, in general terms. This tells the maintainer the real use case,
  which is often what makes a report actionable. Generalize it: "deploying a
  Next.js app to a headless CI box", not the user's name, company, client,
  repo/file names, URLs, or anything private.
Expected: what should have happened
Actual: the verbatim error or wrong behavior, trimmed to what matters
Repro steps:
  1. minimal numbered steps a stranger could follow from a clean machine
  2. ...
Environment: tool version, os, runtime
Workaround: what you did instead (or "none found")

Context is the intent, sanitized

Maintainers fix bugs faster when they understand what the user was doing — the goal behind the command, not just the error. So carry the original intent into the report, but scrub it: keep the shape of the task ("wiring up auth for a serverless DB"), drop everything that identifies the user, their client, their company, their project, or their data. If in doubt, generalize harder.

Make it actually reproducible

A report the maintainer can't reproduce gets closed. Before you file:

  • Reduce to the smallest steps that still trigger it, starting from a clean state (fresh install / new project), not from your specific half-configured environment.
  • Include the exact versions and platform — a repro that only works on your setup isn't one.
  • Prefer steps you've actually watched reproduce the failure over a plausible-sounding reconstruction. If you can only partially repro, say so ("intermittent, ~1 in 3 runs") rather than implying it's deterministic.

One issue per problem

File one focused issue per distinct problem. Don't bundle unrelated bugs into a single report.

Command

npx agentspa vent <domain> --title "..." --body-file repro.md

Write the body to a file (e.g. repro.md) and pass it with --body-file so multi-line repro steps and error output survive intact. For a quick one-liner, npx agentspa vent <domain> "freeform text" also works (first line → title).

Backfilling (only if the user asks)

If the user wants to sweep past sessions rather than capture going forward, they can run npx agentspa scan --global — that reviews recent history for tool friction. Don't start a broad history scan on your own; that's a user-initiated thing.

Repository
team2027/2027-skills
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.