{"id":"85aa1f56-9e62-4a49-9e99-34288ffd0018","shortId":"E8dJnW","kind":"skill","title":"hard-news","tagline":"Prepare to deliver difficult technical news to a client — a conversational prep session before the hard conversation happens","description":"## Behavior\n\nThis is a prep session. The goal is to walk into a hard conversation clear-headed, not rehearsed. Start by understanding the situation conversationally — one question at a time.\n\nOpen with:\n\n**\"Tell me what happened — the version you'd say to a colleague, not the client. Don't soften it yet.\"**\n\nWait for their answer. Then ask what matters most for shaping the conversation:\n\n**\"What do you know about how this client handles bad news? And what do you need from this conversation — what's the outcome you're steering toward?\"**\n\nWait for their answer. Then, before preparing anything:\n\n**\"Write your opening two sentences right now — the actual words you'd say to start this conversation. Don't polish them, don't second-guess them. Just write what comes out.\"**\n\nWait for their draft. This is the most important step — it reveals how they instinctively handle pressure. Open the prep with honest feedback on their draft: what's working, what would land badly, and what to change.\n\nThen deliver the full prep. Keep it tight — they need to be able to hold this in their head going into the conversation:\n\n**The news in one sentence** — the clearest, most honest version. No jargon, no hedging, no burying the lead.\n\n**How to open** — the first 3–4 sentences verbatim. Lead with the news, not a preamble. Bad news after small talk feels like manipulation. Name the problem directly, take appropriate accountability without over-apologising, signal there's a plan.\n\n**The explanation** — how to describe what happened in plain terms the client understands. What happened, why, what you know vs. what you're still figuring out, and what it means for the project.\n\n**The path forward** — what you're proposing. Specific, not vague. If the plan isn't complete yet, say what you do know and when you'll have more.\n\n**Likely reactions** — 2–3 reactions given what you know about this client, and how to respond to each. Non-defensive, grounded. Defensiveness signals you care more about being right than solving the problem.\n\n**What not to say** — 2–3 specific phrases or moves to avoid. Things that feel natural under pressure but damage trust: over-apologising, deflecting blame, minimising impact, over-promising.\n\nClose with:\n\n**\"What did your unpolished opening reveal about how you instinctively handle discomfort? Did you soften, deflect, or lead straight?\"**\n\nWait for their answer. Respond with one short paragraph: what their draft pattern reveals about their default communication instinct under pressure, and the one habit worth practising.\n\n## Tone\n\nDirect and empathetic. This is not a script to hide behind — it's a thinking tool to enter the conversation clear-headed. The user should feel prepared, not rehearsed.","tags":["hard","news","rails","consultant","thoughtbot","agent-skills","claude-code-consulting","claude-code-plugin","claude-code-rails","claude-code-skill","claude-code-skills","claude-skills"],"capabilities":["skill","source-thoughtbot","skill-hard-news","topic-agent-skills","topic-claude-code-consulting","topic-claude-code-plugin","topic-claude-code-rails","topic-claude-code-skill","topic-claude-code-skills","topic-claude-skills"],"categories":["rails-consultant"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/thoughtbot/rails-consultant/hard-news","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add thoughtbot/rails-consultant","source_repo":"https://github.com/thoughtbot/rails-consultant","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 9 github stars · SKILL.md body (2,737 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:08:42.552Z","embedding":null,"createdAt":"2026-05-18T13:14:14.979Z","updatedAt":"2026-05-18T19:08:42.552Z","lastSeenAt":"2026-05-18T19:08:42.552Z","tsv":"'2':336,372 '3':238,337,373 '4':239 'abl':204 'account':263 'actual':131 'answer':78,118,423 'anyth':122 'apologis':267,391 'appropri':262 'ask':80 'avoid':379 'bad':97,187,249 'behavior':22 'behind':458 'blame':393 'buri':230 'care':359 'chang':191 'clear':38,469 'clear-head':37,468 'clearest':221 'client':12,69,95,284,345 'close':399 'colleagu':66 'come':153 'communic':437 'complet':321 'convers':14,20,36,47,87,106,139,214,467 'd':62,134 'damag':387 'default':436 'defens':354,356 'deflect':392,416 'deliv':6,193 'describ':277 'difficult':7 'direct':260,448 'discomfort':412 'draft':158,180,431 'empathet':450 'enter':465 'explan':274 'feedback':177 'feel':254,382,474 'figur':297 'first':237 'forward':308 'full':195 'given':339 'go':211 'goal':29 'ground':355 'guess':148 'habit':444 'handl':96,170,411 'happen':21,58,279,287 'hard':2,19,35 'hard-new':1 'head':39,210,470 'hedg':228 'hide':457 'hold':206 'honest':176,223 'impact':395 'import':163 'instinct':169,410,438 'isn':319 'jargon':226 'keep':197 'know':91,291,327,342 'land':186 'lead':232,242,418 'like':255,334 'll':331 'manipul':256 'matter':82 'mean':302 'minimis':394 'move':377 'name':257 'natur':383 'need':103,201 'news':3,9,98,216,245,250 'non':353 'non-defens':352 'one':48,218,426,443 'open':53,125,172,235,405 'outcom':110 'over-apologis':265,389 'over-promis':396 'paragraph':428 'path':307 'pattern':432 'phrase':375 'plain':281 'plan':272,318 'polish':142 'practis':446 'preambl':248 'prep':15,26,174,196 'prepar':4,121,475 'pressur':171,385,440 'problem':259,367 'project':305 'promis':398 'propos':312 'question':49 're':112,295,311 'reaction':335,338 'rehears':41,477 'respond':349,424 'reveal':166,406,433 'right':128,363 'say':63,135,323,371 'script':455 'second':147 'second-guess':146 'sentenc':127,219,240 'session':16,27 'shape':85 'short':427 'signal':268,357 'situat':46 'skill' 'skill-hard-news' 'small':252 'soften':72,415 'solv':365 'source-thoughtbot' 'specif':313,374 'start':42,137 'steer':113 'step':164 'still':296 'straight':419 'take':261 'talk':253 'technic':8 'tell':55 'term':282 'thing':380 'think':462 'tight':199 'time':52 'tone':447 'tool':463 'topic-agent-skills' 'topic-claude-code-consulting' 'topic-claude-code-plugin' 'topic-claude-code-rails' 'topic-claude-code-skill' 'topic-claude-code-skills' 'topic-claude-skills' 'toward':114 'trust':388 'two':126 'understand':44,285 'unpolish':404 'user':472 'vagu':315 'verbatim':241 'version':60,224 'vs':292 'wait':75,115,155,420 'walk':32 'without':264 'word':132 'work':183 'worth':445 'would':185 'write':123,151 'yet':74,322","prices":[{"id":"c1e1899f-eb64-42c6-984f-95f4b7c468fb","listingId":"85aa1f56-9e62-4a49-9e99-34288ffd0018","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"thoughtbot","category":"rails-consultant","install_from":"skills.sh"},"createdAt":"2026-05-18T13:14:14.979Z"}],"sources":[{"listingId":"85aa1f56-9e62-4a49-9e99-34288ffd0018","source":"github","sourceId":"thoughtbot/rails-consultant/hard-news","sourceUrl":"https://github.com/thoughtbot/rails-consultant/tree/main/skills/hard-news","isPrimary":false,"firstSeenAt":"2026-05-18T13:14:14.979Z","lastSeenAt":"2026-05-18T19:08:42.552Z"}],"details":{"listingId":"85aa1f56-9e62-4a49-9e99-34288ffd0018","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"thoughtbot","slug":"hard-news","github":{"repo":"thoughtbot/rails-consultant","stars":9,"topics":["agent-skills","claude-code-consulting","claude-code-plugin","claude-code-rails","claude-code-skill","claude-code-skills","claude-skills"],"license":"mit","html_url":"https://github.com/thoughtbot/rails-consultant","pushed_at":"2026-03-27T16:24:47Z","description":"A collection of skills for Rails development and consulting with an emphasis on learning, communication, and client success. ","skill_md_sha":"515c11602f9445540386158eeb7b775b8630727f","skill_md_path":"skills/hard-news/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/thoughtbot/rails-consultant/tree/main/skills/hard-news"},"layout":"multi","source":"github","category":"rails-consultant","frontmatter":{"name":"hard-news","description":"Prepare to deliver difficult technical news to a client — a conversational prep session before the hard conversation happens"},"skills_sh_url":"https://skills.sh/thoughtbot/rails-consultant/hard-news"},"updatedAt":"2026-05-18T19:08:42.552Z"}}