150+ Free Text Expander Snippets
A hand-picked starter pack of 150+ snippets — for customer support, sales, marketing, writing, healthcare, legal work, recruiting, teaching, daily life, project management, developers, and the terminal. Copy what you need, or import the whole pack into Lightning Assist in one click.
How to use this pack
- Browse the categories below, hit Copy on any snippet that fits your work, and paste it into your text expander as a new entry. Each card shows the recommended trigger.
- Or click "Download all as JSON" — the file imports directly into Lightning Assist via Settings → Import Snippets.
- Edit triggers and bodies freely. The pack is meant as a starting point, not a rigid template.
Customer Support
Honest, human replies for tickets — no canned-response feel.
:hiHi [#name#], thanks for reaching out — happy to help.Personable opener that doesn't sound like a template.
:recThanks for the detailed report — we've reproduced this on our side and it's now ticketed. I'll follow up here as soon as the fix ships.Acknowledge a bug without overpromising.
:etaI don't have a firm ETA yet, but I'll come back to you within [#timeframe#] with a real update — even if the update is just "still working on it".Better than silence or a fake date.
:refundOf course — I've started the refund process. It usually clears in 5–10 business days depending on your bank. You'll get a confirmation email once it's issued.Don't make refunds painful; you'll never get the customer back if you do.
:escalate@TEAM_LEAD — escalating: customer [#name#], ticket [#id#], blocking issue: [#summary#]. Already tried: [#steps#]. Need: [#decision#].Internal hand-off that gives the lead everything in one read.
:featureThanks for suggesting this — I've logged it on our roadmap board. We weigh requests by how many people ask, so the more context you can share about your use case the more it helps us prioritise.Acknowledges without committing to ship.
:closeticketI'm going to mark this resolved on my side, but reply any time if it comes back and I'll reopen it instantly — no need to start a new ticket.Polite close that keeps the door open.
:gdprI've received your data access / deletion request and routed it to our compliance team. Per Article 12 GDPR, we'll respond in full within 30 days, usually faster.Standard GDPR acknowledgment that proves you know the rules.
:slaQuick update: we're aware of the issue, our team is actively investigating, and the next status update will be in [#minutes#] minutes. Live status: [#status_url#].Cadence reassurance during outages.
:thanksThanks for sticking with us through this — really appreciated. Have a great rest of your [#day#].Better than "have a nice day!".
:shippedHi [#name#] — circling back: the fix for [#issue#] shipped in version [#version#]. Could you give it another try when you have a minute and let me know how it works for you?Closes the loop on bugs. Most teams forget this step.
:workaroundWhile we work on a permanent fix, here's a quick workaround: [#workaround_steps#]. Not ideal, I know — we'll let you know the moment the proper fix lands.Acknowledges the workaround is not the final answer.
:csatOne quick favor: would you mind rating this conversation? Single click, takes 5 seconds: [#survey_link#]. Helps us a lot.Ask after a successful resolution, not during.
:paymentfailHi [#name#] — looks like the latest payment didn't go through (most often this is an expired card or address mismatch). You can update your payment method here: [#billing_url#]. No service interruption — just a heads-up so it doesn't pile up.Calm, non-alarming dunning email.
:complaintackI hear you, and you're right to be frustrated. [#specific_acknowledgment#]. Let me find out exactly what happened and come back with both an explanation and a plan to fix it. Give me until [#deadline#].Validates first, time-boxes the response.
Sales
Cold outreach, follow-ups, demos and closing.
:introHi [#name#] — I run growth at Lightning Assist. Saw you [#specific_thing#] and thought I'd reach out. We help [#target#] [#outcome#]. Worth a 15-min chat next week?Respects their time; opens with something specific you noticed.
:followupBumping this up — totally understand if the timing isn't right. If it is, here's the easiest way to start: [#link#]. If not, no need to reply.One follow-up. Then move on.
:demoConfirmed for [#day#] at [#time#] ([#tz#]). Calendar invite is on its way. I'll keep it under 20 min and show you exactly the [#focus_area#] flow you mentioned.Sets expectation so the demo doesn't drift.
:pricingPricing is straightforward: $5.99/month per user, no tiers, no usage caps, all features included. 14-day free trial — no card up front. Link: https://www.lightning-assist.com/pricingPricing should never be a paragraph.
:proposalRecap of what we discussed: • Goal: [#goal#] • Scope: [#scope#] • Timeline: [#timeline#] • Investment: [#price#] Let me know if anything is off and I'll revise.Catches misalignments before contracts.
:closelostHi [#name#] — circling back after about 6 months. We've shipped [#biggest_change#] since we last spoke. If the original blocker was [#their_blocker#], that's now solved. Worth another look?Long-tail re-engagement that doesn't feel pushy.
:referGlad it's working out! If you know anyone in [#their_industry#] who might benefit from [#value_prop#], I'd love an intro. We have a referral program too: [#link#].Best moment to ask is right after praise.
:invoiceNo problem — we can switch to [#net_terms#] terms or send invoices for [#billing_period#] cycles instead of monthly. Just confirm which one and I'll update the account today.Don't lose a sale over invoicing flexibility.
:calendarHere's my calendar — pick whatever works: [#calendar_link#]. If those times don't fit, just send 2-3 windows that do and I'll make one work.Always offer the manual fallback — some buyers hate calendar tools.
:reviveHi [#name#] — last we spoke you were [#their_state#]. Curious where things landed? Even a quick "not now" is helpful so I know where to put my energy.Non-pushy revival. Permission to say no makes more people reply.
:ndaWant me to send our standard mutual NDA before we go deeper, or are you fine talking under verbal NDA for now? Either works.Removes the awkward "is this confidential?" pause.
:budgetQuick question to make sure I'm pitching the right tier: what's the rough budget you're working with for [#category#] this year? Saves us both time vs. me throwing pricing options at the wall.Direct budget question framed as efficiency for them.
:customWe can do [#custom_term#] if it helps you say yes — for example, switching to annual billing for a [#discount#]% discount, or extending the trial by [#days#] days. Which would help most?Concrete options > vague "we can be flexible".
:churnHi [#name#] — saw you cancelled and wanted to reach out (no pressure to come back). What broke down for you? Even one line of feedback is gold and helps us not screw it up for the next person.Lead with humility, not retention pitch.
:bantDiscovery notes — [#account#]: • Budget: [#budget#] • Authority: [#decision_maker#] • Need: [#pain#] • Timeline: [#timeline#] • Champion: [#champion#] • Risks: [#risks#]Internal CRM note. Forces the rep to actually ask.
Marketing & Content
UTMs, alt text, meta tags, launch tweets and changelogs.
:utm?utm_source=[#source#]&utm_medium=[#medium#]&utm_campaign=[#campaign#]&utm_content=[#variant#]Always include content for A/B testing.
:altalt="[#describe_what_you_see_in_the_image_for_a_blind_person#]"Forces you to write descriptive alt text, not just "image".
:meta<title>[#primary_keyword#] | Lightning Assist</title> <meta name="description" content="[#description#]">Title under 60 chars; description under 155.
:lp1. Hero (problem → outcome in 8 words) 2. Social proof (logos / quote) 3. 3 benefits (icon + headline + line) 4. How it works (3 steps) 5. Objection handling (FAQ) 6. CTAA landing page that converts has these 6 sections in order.
:tweet🚀 Just shipped: [#thing#] • [#benefit_1#] • [#benefit_2#] • [#benefit_3#] Try it free: [#link#]Short, scannable, link last.
:blogctaWant to try Lightning Assist yourself? It's free for 14 days, no card needed → https://www.lightning-assist.com/downloadsFriendlier than "Sign up now!".
:changelog## [#version#] — [#date#] ### Added - ### Changed - ### Fixed -Keep-a-Changelog format. Users actually read these.
:pressLightning Assist is the AI text expander for Windows, Mac & Linux — turn keyboard shortcuts into full messages, code, and templates, then enhance them with built-in AI. Founded 2024 in Iași, Romania.Boilerplate every PR person asks for.
:hashtags#productivity #textexpander #automation #aitools #worksmarter #saaslife #remotework #devtoolsTweak per platform — Instagram tolerates more, LinkedIn fewer.
:ctasTry it free → Get started in 60s → See how it works → Watch the 90-second demo → Claim your free trial →A/B test two of these against each other every launch.
:bioBuilding [#product#] · helped [#count#] [#audience#] [#outcome#] · DMs open · [#location#]Specific numbers > generic "founder, builder".
:newsletterHey — [#first_name#] here. Quick one this week: [#tldr#]. Full story below ↓A scannable intro outperforms long preambles.
:podcastIn this episode of [#show#], [#guest#] joins us to talk about [#topic#]. We cover: • [#point_1#] • [#point_2#] • [#point_3#] Listen wherever you get podcasts: [#links#]Three bullet points = the search-friendly summary.
:ytdesc[#hook#] In this video: 00:00 [#section_1#] [#timestamp_2#] [#section_2#] [#timestamp_3#] [#section_3#] 🔗 Links: • [#link_1#] • [#link_2#] 📺 Subscribe: [#subscribe_url#]Timestamps boost retention + watch-page SEO.
:og<meta property="og:title" content="[#title#]"> <meta property="og:description" content="[#description#]"> <meta property="og:image" content="[#image_url#]"> <meta property="og:url" content="[#canonical_url#]"> <meta property="og:type" content="website">Without OG tags, your link looks broken on Slack/Discord/Twitter.
Writing & Email
Signatures, OOO, meeting requests, recaps, and apologies that actually land.
;sig[#your_name#] [#your_title#], Lightning Assist https://www.lightning-assist.comPlain-text sig — works in every client.
;ooHi — I'm out of office until [#return_date#] with limited email access. For urgent matters, please contact [#backup_email#]. I'll reply when I'm back.Clear, polite, no apology.
;meetHi [#name#] — would you have 20 min next week to talk about [#topic#]? Here's my calendar: [#link#]. Or feel free to suggest a time that works for you.Offers both options without forcing one.
;nopeThanks for thinking of me — really appreciate it. Going to pass on this one because [#reason#], but please keep me in mind for future stuff.Says no without burning the bridge.
;calc[#event_title#] 📅 [#date#] ⏰ [#start_time#]–[#end_time#] [#tz#] 📍 [#location_or_link#] Agenda: • • •A calendar invite that does NOT say "Let's sync".
;recapQuick recap from our call: **Decided:** • **Action items:** • [#owner#] — [#task#] — by [#date#] **Next sync:** [#when#]Send within an hour or it loses 80% of its value.
;lookbackThis week's wins: • This week's misses: • Next week's top 1: •Three sections, no more. Anything longer doesn't get re-read.
;apolI'm sorry — that's on me. Here's what went wrong: [#cause#]. Here's what I'm doing about it: [#action#]. Here's when you'll see it: [#date#].Three sentences: own it, fix it, time-box it.
;remindHi [#name#] — gentle nudge on [#what#]. No urgency, just keeping it on your radar. Let me know if anything's blocking you on it."Gentle" + "no urgency" = polite without being passive.
;oopsQuick correction to my earlier email: I said [#wrong_thing#], but it's actually [#right_thing#]. Sorry for any confusion.Own the mistake, fix it, move on.
;dblintroHi [#person_a#] and [#person_b#], Making the introduction. [#person_a#], meet [#person_b#] — [#person_b_short_bio#]. [#person_b#], [#person_a#] is [#person_a_short_bio#]. I'll let the two of you take it from here. [#your_name#]Standard double-intro. Always ask both first ("intro consent").
;loopinLooping in [#name#] for visibility — this is in their wheelhouse and they'll have a faster answer than I would.Justifies the new CC so they know why they're on the thread.
;rescheduleHi [#name#] — sorry, something came up and I'll need to reschedule our [#meeting_type#] on [#date#]. Could we move to [#alt_1#] or [#alt_2#] instead? If neither works, send me a few times and I'll make one fit.Two options + manual fallback removes back-and-forth.
;bumpJust bumping this — wanted to make sure it didn't get lost in your inbox. No rush at all if other things are louder right now.Single bump. Then move on — silence is an answer too.
;closelineLooking forward to hearing your thoughts.Better than "Best," — invites a reply without demanding one.
Healthcare & Medical
SOAP notes, prescriptions, vitals, referrals, and patient-friendly explanations.
:soapS (Subjective): O (Objective): Vitals: BP [#bp#], HR [#hr#], RR [#rr#], T [#temp#], SpO2 [#spo2#] A (Assessment): P (Plan):Standard SOAP structure for clinic visits.
:rxinstTake [#dose#] by mouth [#frequency#] for [#duration#] days. Take with food. Do not stop early even if you feel better. Side effects to watch for: [#side_effects#]. Call us if [#red_flags#].Patient-facing instructions in plain language.
:vitalsBP [#systolic#]/[#diastolic#] mmHg | HR [#hr#] bpm | RR [#rr#]/min | T [#temp#]°C | SpO2 [#spo2#]% RA | Pain [#pain#]/10One-line vitals capture for charting.
:hpiPatient is a [#age#]-year-old [#sex#] presenting with [#chief_complaint#], onset [#when#], [#duration#] duration. Quality: [#quality#]. Severity: [#severity#]/10. Modifying factors: [#better_worse#]. Associated symptoms: [#associated#]. Pertinent negatives: [#negatives#].History of Present Illness — covers the OPQRST mnemonic.
:apptconfConfirming your appointment with Dr. [#provider#] on [#date#] at [#time#]. Please arrive 15 min early to complete forms. Bring: photo ID, insurance card, and any current medications. Reply CANCEL to reschedule.Cuts no-shows when sent 24h ahead.
:noshowWe noticed you missed your [#date#] appointment with Dr. [#provider#]. We'd like to help you reschedule — reply with a few times that work for you, or call [#phone#]. No fee for one missed appointment.Empathetic, not punitive — most no-shows are circumstance, not disrespect.
:referralDear Dr. [#specialist#], Thank you for accepting [#patient_name#] (DOB [#dob#]) for evaluation of [#reason#]. Relevant history is summarized below; full records attached. Please feel free to reach me at [#contact#] with any questions. Kind regards, Dr. [#your_name#]Specialist referral that respects their time.
:educateYour [#test_or_scan#] showed [#finding#]. In plain language: [#plain_explanation#]. This is generally [#assessment#] and the next step is [#next_step#]. You don't need to worry about [#common_misconception#]. Reply here or call us if anything is unclear.Translate medical jargon into patient-readable English.
:fmhFamily medical history (note relation + age at diagnosis): - Heart disease: - Diabetes: - Cancer (specify type): - Stroke: - Hypertension: - Mental health: - Genetic conditions: - Other relevant:Drop into intake forms or chart prompts.
:dischrgDischarge summary for [#patient#], MRN [#mrn#]. Admission date: [#admit#] Discharge date: [#discharge#] Primary diagnosis: [#primary_dx#] Secondary: [#secondary_dx#] Hospital course: [#course#] Medications at discharge: - Follow-up: -Skeleton for hospital discharge documentation.
:rosReview of systems: • Constitutional: [#fever_chills_weight#] • HEENT: [#headache_vision#] • CV: [#chest_pain_palpitations#] • Resp: [#cough_sob#] • GI: [#nausea_pain#] • GU: [#dysuria_freq#] • MSK: [#joint_pain#] • Neuro: [#numbness_dizziness#] • Skin: [#rash#] • Psych: [#mood_sleep#]10-system ROS skeleton.
:pePhysical exam: Gen: [#general_appearance#] Vitals: see flowsheet HEENT: [#heent#] CV: [#heart#] Lungs: [#lungs#] Abdomen: [#abdomen#] Ext: [#extremities#] Neuro: [#neuro#] Skin: [#skin#]Standard PE structure for clinic notes.
:allergyDrug allergies: [#allergy_list#]. Reaction: [#reaction#]. Severity: mild / moderate / severe. Verified with patient on [#date#].Severity + verification date are the two fields most charts skip.
:workabsTo Whom It May Concern, This letter confirms that [#patient_name#] (DOB [#dob#]) was under my medical care from [#start_date#] to [#end_date#] and was unable to attend work/school during that period. They are now cleared to return [#with_or_without_restrictions#]. Dr. [#your_name#] [#contact#]Generic absence note that satisfies most HR/registrar requests.
:preopPre-op instructions for [#procedure#] on [#date#]: • Nothing by mouth after midnight (clear liquids OK until [#cutoff#]) • Stop [#medications_to_stop#] [#days_before#] days before • Continue [#medications_to_continue#] • Arrive [#arrival_time#] at [#location#] • Bring photo ID, insurance card, current medication list • Have someone available to drive you homePatient-facing pre-op checklist.
Legal
NDA boilerplate, demand letters, retainers, billing entries, and litigation hold notices.
:ndaopenThis Mutual Non-Disclosure Agreement ("Agreement") is made and entered into as of [#date#] by and between [#party_a#], a [#entity_type#] organized under the laws of [#jurisdiction_a#], and [#party_b#], a [#entity_type#] organized under the laws of [#jurisdiction_b#] (each a "Party," collectively the "Parties").Standard mutual NDA opener — adjust jurisdictions per matter.:rematterRe: [#matter_name#] — File No. [#file_no#] — [#client#] v. [#opposing_party#]Consistent file referencing across all correspondence.
:notlegalThe above reflects general information and is not legal advice for your specific situation. No attorney-client relationship is formed by this communication. Please consult counsel licensed in your jurisdiction before acting.Drop-in disclaimer for informal communications.
:retainerThank you for selecting [#firm_name#] to represent you in connection with [#matter#]. This letter confirms the terms of our engagement. Our hourly rates are: partner [#partner_rate#], associate [#associate_rate#], paralegal [#paralegal_rate#]. We require a retainer of [#retainer_amount#], applied against future billings.Fee engagement letter standard opener.
:demandThis firm represents [#client#] in connection with [#matter#]. Please direct all further communications to my attention. We hereby demand that you [#demanded_action#] on or before [#deadline#]. If we do not receive a satisfactory response by that date, we are instructed to pursue all available remedies, including [#remedies#].Pre-litigation demand opener.
:filecloseDear [#client#], With the [#event#] on [#date#], our representation in connection with [#matter#] is complete. We will retain your file for [#retention_period#] years per our records policy, after which it will be securely destroyed. Final invoice attached. Thank you for trusting us with this matter.Closing notice that keeps the door open for referrals.
:conflictConflict check requested: - Prospective client: [#name#] - Adverse parties: [#adverse#] - Related entities: [#related#] - Matter type: [#matter_type#] - Date needed by: [#deadline#] Please run and respond before I take further action.Internal CYA before opening a new matter.
:meetlegalConfirming our [#meeting_type#] meeting on [#date#] at [#time#] [#tz#]. [#location_or_link#]. Anticipated agenda: [#agenda#]. Please bring/have ready: [#prep#]. The meeting is privileged and confidential.Meeting note that asserts privilege upfront.
:invoiceleg[#date#] — [#attorney_initials#] — [#tenths_of_hour#] hr — [#description_of_work#]Standard tenths-of-hour billing format.
:holdThis is a litigation hold notice. Effective immediately, you are required to preserve all documents and electronic data — including emails, texts, files, and metadata — relating to [#subject_matter#]. Do not delete, modify, or destroy any such materials. This obligation continues until you receive written notice that the hold has been released. Failure to comply may result in serious legal consequences.Triggers preservation obligations across the org.
:motion[#movant_name#] ("Movant"), by and through undersigned counsel, hereby moves this Honorable Court for an order [#requested_relief#], and in support states as follows:Generic motion opener — works for most jurisdictions.:settleWithout prejudice to either party's position, my client is willing to resolve this matter for [#amount#], in full and final settlement of all claims, contingent on a mutual release and customary confidentiality. This offer expires [#deadline#].Always include the without-prejudice header.
:ipassignAssignor hereby irrevocably assigns to Assignee all right, title, and interest in and to the [#work_or_invention#], including all intellectual property rights therein, throughout the world, in perpetuity.Drop-in IP assignment for contractor/work-for-hire agreements.
:limliabIN NO EVENT SHALL [#party#]'S TOTAL LIABILITY UNDER THIS AGREEMENT EXCEED THE FEES PAID BY [#counterparty#] IN THE [#period#] MONTHS PRECEDING THE EVENT GIVING RISE TO THE CLAIM.Standard cap-on-liability clause.
:dpaThis Data Processing Addendum ("DPA") forms part of the Agreement between [#controller#] ("Controller") and [#processor#] ("Processor") and reflects the parties' agreement regarding the Processing of Personal Data under Applicable Data Protection Laws, including the GDPR.GDPR-compliant DPA opener for SaaS contracts.Recruiting & HR
Cold outreach, kind rejections, offer letters, onboarding emails, and exit interviews.
:coldHi [#candidate#] — I came across your profile and your work on [#specific_project#] caught my attention. We're hiring a [#role#] at [#company#] with [#key_perk#]. Open to a 15-min chat to see if it's interesting? No pressure either way.Specific opener > generic spray.
:rejcvHi [#candidate#], thank you for applying to the [#role#] role at [#company#]. After reviewing your background, we've decided to move forward with other candidates whose experience more closely matches what we're looking for. We genuinely appreciate the time you took to apply, and wish you the best.Honest, brief, kind. No "keep on file" lies.
:rejintvHi [#candidate#], thank you again for the time you spent interviewing for [#role#]. After careful consideration, we've decided to move forward with another candidate. This wasn't an easy decision — your [#strength#] stood out. If a more aligned role opens up, I'll reach out directly. Wishing you the best.Specific recognition makes the rejection sting less.
:offerHi [#candidate#] — delighted to share that we'd like to offer you the [#role#] position at [#company#]. Full details and offer letter attached. Headlines: base [#salary#], equity [#equity#], start date [#start_date#], manager [#manager#]. Happy to walk you through anything live — propose a time and I'll make it work.Excitement first, details second, friction last.
:schedHi [#candidate#] — congrats on moving to the next round! The next step is a [#duration#]-min [#interview_type#] interview with [#interviewer#] ([#interviewer_role#]). Here are 3 time slots that work; pick whichever is easiest: • [#slot_1#] • [#slot_2#] • [#slot_3#]Three slots > calendar link sometimes (more personal).
:refreqHi [#reference#] — I'm interviewing for [#role#] at [#company#] and your name came up as someone I'd love to list. Would you be comfortable being a reference for me? If yes, the recruiter is [#recruiter#] and they may reach out in the next 1–2 weeks. Either way, no pressure — appreciate you considering it.Asks for permission first instead of just listing them.
:onbWelcome to [#company#], [#name#] — we're thrilled to have you. For day one ([#date#]): • Arrive at [#time#], [#location#] • Ask for [#point_of_contact#] • Bring: [#things_to_bring#] • Dress: [#dress_code#] • Lunch is on us First-week schedule and accounts setup attached. Reply with any questions.A pre-day-1 email cuts day-1 anxiety dramatically.
:exitHi [#name#], before your last day on [#date#], we'd love a 30-min exit conversation — the goal is honest feedback on what worked, what didn't, and how we can be a better employer for the next person in your role. Confidential, no consequences. Pick any time: [#calendar_link#].Frames the exit interview as helping others, not justifying yourself.
:ackHi [#candidate#], thanks for applying to the [#role#] role at [#company#]. We've received your application and the hiring team will review it over the next [#timeframe#]. We'll only reach out if we'd like to move you forward — please don't take silence personally; volume is always higher than we'd like.Silence is the #1 candidate complaint. Acknowledge.
:promoTeam — please join me in congratulating [#name#] on their promotion to [#new_role#], effective [#date#]. Since joining [#years#] ago, [#name#] has [#specific_accomplishment_1#], [#specific_accomplishment_2#], and [#accomplishment_3#]. The role is well-earned. Cheers, [#name#]! 🎉Specific accomplishments > vague praise.
:leaveokHi [#name#], your [#leave_type#] request from [#start_date#] to [#end_date#] is approved. [#coverage_arrangement#] will cover for you. Enjoy the time off — see you back on [#return_date#].Confirmation + coverage clarity in one message.
:perfprepHi [#name#] — your [#period#] performance review is scheduled for [#date#]. To make this productive, please send me by [#prep_deadline#]: • 3 things you're proud of from this period • 1-2 areas where you want to grow • Any blockers I or the team should help unblock No formal write-up needed — bullet points are fine.Specific prep ask = specific review.
:raiseconsThanks for raising this with me. I want to look into it properly rather than answer off the cuff. Give me until [#deadline#] to come back with a clear yes/no plus reasoning. Either way, I appreciate you advocating for yourself.Buys you time without saying no, without saying yes.
:pipHi [#name#] — this email formally places you on a Performance Improvement Plan effective [#start_date#]. The PIP runs through [#end_date#]. Specific areas, expectations, and check-in cadence are in the attached document. Please review and acknowledge by [#ack_deadline#]. I'm here to help you succeed in this — let's make this productive.Tone matters: this is supportive, not punitive.
:kudosWant to call out [#name#] this week — [#specific_thing#]. [#why_it_mattered#]. Stuff like that doesn't go unnoticed. Thank you, [#name#].Specific praise. Public when possible, private when sensitive.
Education & Teaching
Grade comments, late-work policy, office hours, syllabus links, and recommendation letters.
:gradeAExcellent work, [#student#]. Your [#specific_strength#] was particularly strong — your argument about [#thesis#] was both well-supported and original. Consider submitting this for [#venue#].Specific praise > "great job!". Encourage next-level action.
:gradeCSolid effort, [#student#]. The structure was clear, and your handling of [#strength#] showed understanding. Two specific things to push to the next level: (1) [#actionable_1#], (2) [#actionable_2#]. Stop by office hours if you'd like to discuss.Actionable feedback > letter grade alone.
:lateassignHi [#student#], your [#assignment#] was due [#due_date#] and I haven't received it. Per the syllabus, late submissions lose [#penalty#] per day, capped at [#max_penalty#]. If something happened — illness, emergency, anything — please reply and we'll work something out.Policy + door open. Most late students have a real reason.
:academintHi [#student#], I'd like to discuss your [#assignment#] with you. There are passages that closely resemble published source material without attribution. Before any decisions are made, I'd like to hear your side. Please come by office hours on [#date#] or schedule another time.Don't accuse — invite a conversation. Often there's a citation mistake, not malice.
:ohOffice hours: [#day#] [#start#]–[#end#] [#tz#], [#location_or_link#]. No appointment needed for [#walk_in_topics#]. For [#deeper_topics#], please book a slot: [#calendar_link#]. Email if those don't work — I'll find time.Reduces "is OH still happening?" emails.
:syllabusThe full syllabus, including grading breakdown, late policy, attendance policy, and accommodations process, lives at [#syllabus_url#]. Most questions about logistics are answered there — please check before emailing. For policy clarifications I haven't covered, I'm always happy to help.Cuts repeat questions in half.
:examlogisticsExam logistics for [#exam_name#]: • Date: [#date#], [#time#] ([#duration#]) • Location: [#room#] • Allowed: [#allowed_materials#] • Not allowed: [#prohibited#] • Format: [#format#] — [#question_count#] questions • Accommodations: contact [#disability_office#] at least 7 days aheadComprehensive pre-exam brief.
:recDear [#recipient#], It is my pleasure to recommend [#student#] for [#program#]. I taught [#student#] in [#course#] during [#semester#], where they [#specific_accomplishment#]. In a class of [#class_size#], [#student#] was [#ranking#] for their [#quality#].Specific > generic. Include numbers when possible.
:rubricGrading rubric: • Argument & thesis (30%): [#description#] • Evidence & analysis (30%): [#description#] • Structure & flow (20%): [#description#] • Style & mechanics (20%): [#description#] Full descriptors: [#rubric_url#]Drop into syllabus + assignment prompts.
:extokHi [#student#], I've granted an extension on [#assignment#] until [#new_deadline#]. No need to explain further — just submit by the new date. Reach out if you need additional support beyond a deadline change.Sometimes the kindest reply is the shortest one.
:extnoHi [#student#], I've reviewed your extension request and unfortunately I can't grant it on this assignment. Per the syllabus, this one is firm because [#reason#]. The late penalty applies, but submit anyway — partial credit beats zero. If something larger is going on, please loop in [#dean_of_students#].Decline that protects the student's GPA + flags the right escalation path.
:grpworkGroup project guidelines for [#assignment#]: • Groups of [#size#], self-formed by [#deadline#] or assigned • Each member must contribute and document their contribution • Final submission includes a 1-page reflection signed by all members • Disputes: contact me before final submission, not after • Grading is individual based on contribution, not group-flatHeading off the "my group did nothing" complaint.
:cancHi all — class on [#date#] is canceled. We'll cover the planned material in [#alternate_format#] on [#alt_date#]. Reading for that session is unchanged. Apologies for the late notice.Don't over-apologize. Get to the make-up plan fast.
:midtermHi [#student#] — quick midterm summary: • Assignment 1: [#grade_1#] • Assignment 2: [#grade_2#] • Midterm exam: [#midterm#] • Participation: [#participation#] • Current course grade: [#current_grade#] To finish strong, focus on [#focus_area#]. Office hours if you want to talk strategy.Mid-semester check-in that prevents end-of-term surprises.
:essayhelpHi [#student#] — happy to help with your essay. To make office hours productive, please bring: 1. Your thesis in one sentence 2. Your outline or topic sentences for each paragraph 3. The specific section you're stuck on Don't bring a full draft expecting me to copy-edit — that's not the best use of either of our time, and you'll learn more from focused feedback.Sets expectations once = saves you 50 emails per term.
Personal & Daily
Address, phone, RSVP, birthday, sympathy — the snippets every adult should have ready.
:addr[#your_full_name#] [#street_address#] [#city#], [#state#] [#postal#] [#country#]For shipping forms, applications, etc.
:myphone[#your_phone_with_country_code#]Saves you re-typing it 10× a day.
:myemail[#your_email#]For forms that auto-correct your typing into nonsense.
:tyHi [#name#], Thank you so much for [#specific_thing#]. It really meant a lot — [#why_it_mattered#]. Hope to [#return_gesture#] soon. [#your_name#]A handwritten-feel thank-you takes 30 seconds with a snippet.
:gzHuge congrats on [#achievement#], [#name#]! [#specific_observation#] — you've earned this. Looking forward to seeing what's next.Specific observation > "congrats!".
:rsvpyesHi [#host#], thanks so much for the invite — I'd love to come. Please let me know if I can bring anything. Looking forward to seeing you on [#date#].Polite RSVP that offers to help.
:rsvpnoHi [#host#], thank you so much for thinking of me. I unfortunately can't make it on [#date#] — [#brief_reason#]. Have a wonderful time, and let's catch up soon.Decline that keeps the relationship warm.
:bdayHappy birthday, [#name#]! 🎉 Hope you're celebrating in exactly the way you want — and that [#age#] brings you [#specific_wish#]. Cheers to you.Personalize the specific wish — "more travel", "the new job", etc.
:sympathyDear [#name#], I just heard about [#loss#]. I'm so deeply sorry. [#specific_memory_or_thought_about_the_person_lost#]. Please know I'm thinking of you and your family — there's no need to reply. If there's anything you need, even just company, I'm a call away.No "let me know if you need anything" — be specific.
:iouGot this — won't be able to reply properly until [#when#]. Will come back with a real response then. Thanks for your patience.Better than ignoring or replying half-attentive.
:disputeI'd like to dispute a charge on my account dated [#date#] for [#amount#] from [#merchant#]. The charge is [#unauthorized_or_incorrect_amount_or_not_received#]. I have already attempted to resolve this with the merchant on [#contact_date#]. Supporting documentation attached. Account number ending in [#last_four#].Drop into your bank's dispute form.
:wifiWiFi: [#network_name#] Password: [#password#]Save your guests the awkward squinting at the router.
:dietQuick heads-up on dietary stuff for me: [#vegetarian_vegan_kosher_halal_allergies#]. Not picky beyond that — happy to work around whatever the kitchen makes easiest.Polite, non-demanding heads-up for hosts and restaurants.
:emerg[#full_name#] [#relationship#] Phone: [#phone#] Alt phone: [#alt_phone#] Email: [#email#]Drop into school/work/medical forms.
:greviewIf you had a good experience, would you mind leaving a quick Google review? Takes about 30 seconds and means the world to a small business. [#review_link#]Asks for the review without faking the experience.
Project Management
Standups, weekly status, risks, retros, scope-creep flags, and post-mortems.
:standupYesterday: - Today: - Blockers: - [#none_or_specific#]The classic three-line standup. Anything longer = it should be a meeting.
:status## [#project#] — week of [#date#] **Status:** 🟢 on track / 🟡 at risk / 🔴 blocked **Shipped this week:** - **Up next:** - **Risks/blockers:** - **Help needed:** -Color status forces honesty. "On track" lies eventually catch up.
:riskRisk: [#description#] • Probability: low / medium / high • Impact if it happens: low / medium / high • Owner: [#owner#] • Mitigation: [#mitigation#] • Trigger to escalate: [#trigger#]A risk without an owner is a wish.
:ai**Action:** [#what#] **Owner:** [#who#] **Due:** [#when#] **Definition of done:** [#measurable_outcome#]"Definition of done" is the line most action items skip.
:retro## Retro — [#sprint#] **Start doing:** - **Stop doing:** - **Continue doing:** - **Action items from this retro:** -Retros without action items are venting sessions.
:scopeHeads up — [#request#] is outside the current sprint scope. Options: 1. Add it to the next sprint backlog 2. Swap it in by removing [#what_to_drop#] 3. Defer indefinitely Which do you want to do? I won't move on it until I hear back.Visibility is everything. Quiet scope creep kills sprints.
:estRough estimate: [#days#]. This assumes [#assumptions#] and excludes [#exclusions#]. If those change, the estimate changes. Will refine after [#milestone#].Estimates are negotiations, not promises.
:asyncAsync update — no meeting needed. [#TLDR_one_line#]. Details: [#details#] What I need from you: [#ask_or_nothing#]. Deadline: [#date_or_no_rush#].Clear ask = clear answer. Vague update = silent thread.
:demo## Demo — [#feature#] [#date#] · [#duration#] 1. Why we built this ([#problem#]) — 2 min 2. Live demo — [#demo_duration#] min 3. Edge cases & known issues — 2 min 4. Q&A — [#qa_duration#] minDemos that ramble lose the room. Time-box every section.
:postmortem## Post-mortem: [#incident_title#] **Date:** [#date#] **Duration:** [#minutes#] min **Severity:** SEV-[#level#] **Customers impacted:** [#count#] ### What happened ### Timeline - [#time#] — ### Root cause ### What went well ### What we will change -Blameless post-mortem skeleton — outcomes, not finger-pointing.
:raidRAID log entry: • Type: Risk / Assumption / Issue / Dependency • Description: [#description#] • Owner: [#owner#] • Status: open / in progress / resolved • Impact: low / medium / high • Date raised: [#date#] • Last update: [#last_update#]Standard RAID format used in PRINCE2 and most enterprise PMOs.
:charterProject charter — [#project_name#] **Problem statement:** [#problem#] **Goal:** [#measurable_goal#] **Success criteria:** [#criteria#] **Out of scope:** [#out_of_scope#] **Timeline:** [#start#] → [#end#] **Sponsor:** [#sponsor#] **Lead:** [#lead#] **Budget:** [#budget#]One-pager that prevents 90% of mid-project scope arguments.
:launchLaunch checklist — [#feature#]: ☐ Code merged + deployed to production ☐ Feature flag flipped on for [#audience#] ☐ Marketing site copy updated ☐ Help docs published ☐ Support team briefed ☐ Analytics events firing ☐ Internal Slack post ☐ External announcement (blog/social) ☐ Customer outreach to top [#count#] accounts ☐ On-call rotation preppedGeneric enough to use for any feature launch.
:handoffProject handoff — [#project_name#] **Status:** [#status#] **Where things are:** [#current_state#] **Recent context:** [#recent_decisions#] **Open items:** - **Stakeholders:** - **Critical credentials/access:** [#secure_location#] **Watchouts:** [#known_landmines#] **My availability post-handoff:** [#availability#]A handoff doc is what separates good leavers from bad ones.
:slipHeads up — [#milestone#] is going to slip from [#original_date#] to [#new_date#]. Cause: [#root_cause#]. Mitigation: [#mitigation#]. Impact on dependent work: [#downstream_impact#]. Calling this out now so we can adjust together rather than discover it on the deadline.Slips become disasters when hidden. Surface them early.
Developer
Boilerplate, debug helpers, code-review and PR templates.
;logconsole.log('🔍', { });Drop-in JS debug print with an emoji marker so you can grep it later.;clogconsole.log('VARNAME →', VARNAME);Replace VARNAME twice — keeps the label and the value in sync.;trytry {
} catch (err) {
console.error(err);
}Cursor lands inside the try block.;afconst NAME = () => {
};Top-level arrow function declaration.;todo// TODO(YOUR_INITIALS, 2026):Inline TODO that survives blame and grep.
;fixme// FIXME(P1):Flag that the next person reading this code is going to have to deal with.
;ginode_modules/ .env .env.local .next/ out/ dist/ build/ *.log .DS_StoreA reasonable starter .gitignore for Node/Next.js.
;prdesc## Summary ## Why ## How to test ## Risks ## Out of scopeStandard 5-section PR description that reviewers actually read.
;bugrepro**Repro steps** 1. 2. 3. **Expected:** **Actual:** **Environment:** OS / browser / versionFor bug tickets — fills in the gap most people leave open.
;sqlSELECT COUNT(*) FROM TABLE_NAME WHERE ;Always run this before an UPDATE or DELETE.
;readme# [#project_name#] [#one_line_description#] ## Install ``` npm install ``` ## Usage ``` npm run dev ``` ## Scripts - `npm run build` — production build - `npm test` — run tests ## License [#license#]Bare-minimum README that still covers what new contributors need.
;commitconvfeat([#scope#]): [#short_summary_imperative_mood#] [#optional_longer_explanation#] Closes #[#issue_number#]Conventional Commits format — plays well with semantic-release.
;curlcurl -X POST https://[#endpoint#] \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer [#token#]' \
-d '{ "key": "value" }'Multi-line curl with auth header. Easy to read in commit history.;debouncefunction debounce(fn, ms = 300) {
let t;
return (...args) => {
clearTimeout(t);
t = setTimeout(() => fn(...args), ms);
};
}The 6-line debounce that nobody actually memorizes.;envexDATABASE_URL=postgres://user:pass@host:5432/dbname REDIS_URL=redis://localhost:6379 NODE_ENV=development PORT=3000 [#API_KEY_NAME#]=[#your_key_here#]Always commit a .env.example. Never commit a .env.
Terminal & Shell
Git, Docker and disk-space rescue commands you forget at the worst moment.
;gstgit status -sbShort branch + status format — paste into chat without spam.
;gloggit log --oneline --decorate --graph --all -20Visual tree of last 20 commits across branches.
;gundogit reset --soft HEAD~1Soft reset — your changes stay staged, only the commit goes.
;dprunedocker system prune -af --volumesReclaim disk space from stopped containers + unused images.
;lstopdu -ah . 2>/dev/null | sort -rh | head -20Quickly find what's eating disk space.
;portkilllsof -ti:PORT_NUMBER | xargs kill -9Replace PORT_NUMBER. Use when "address already in use".
;grephisthistory | grep '[#search_term#]'Find that one command you ran 3 weeks ago and forgot.
;tartar -czf [#archive_name#].tar.gz [#folder_or_file#]c=create, z=gzip, f=file. The classic.
;sshconfHost [#alias#] HostName [#hostname_or_ip#] User [#username#] IdentityFile ~/.ssh/[#key_name#] Port [#port#]Drop into ~/.ssh/config — then just `ssh alias`.
;ipinfocurl -s https://ipinfo.io/json | jqQuick public-IP + geo lookup.
;dudirsdu -sh */ | sort -rh | head -20Sorted human-readable size of dirs in cwd. Top 20 offenders.
;watchwatch -n 1 [#command#]Re-run a command on a loop. Great for `kubectl get pods` etc.
License
Free to use, modify, and share. No attribution required. If the pack saves you time and you want to give credit anyway, link to https://www.lightning-assist.com/snippets-starter-pack — that helps other people find it too.
Found this useful? Share it.
If this pack saved you time, share it on Hacker News, Reddit r/productivity, dev.to, or your team Slack. The more people use Lightning Assist for snippets, the more snippets we can curate and ship for free.