[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-sentry-brand-guidelines":3,"mdc-fcki31-key":36,"related-org-sentry-brand-guidelines":1068,"related-repo-sentry-brand-guidelines":1235},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":31,"sourceUrl":34,"mdContent":35},"brand-guidelines","write copy following Sentry brand guidelines","Write copy following Sentry brand guidelines. Use when writing UI text, error messages, empty states, onboarding flows, 404 pages, documentation, marketing copy, or any user-facing content. Covers both Plain Speech (default) and Sentry Voice tones.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"sentry","Sentry","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fsentry.png","getsentry",[13,17,20,23],{"name":14,"slug":15,"type":16},"Content Creation","content-creation","tag",{"name":18,"slug":19,"type":16},"UX Copy","ux-copy",{"name":21,"slug":22,"type":16},"Branding","branding",{"name":9,"slug":8,"type":16},861,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fskills","2026-05-15T06:16:22.395707",null,45,[30],"tag-production",{"repoUrl":25,"stars":24,"forks":28,"topics":32,"description":33},[30],"Agent Skills used by the Sentry team for development.","https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fbrand-guidelines","---\nname: brand-guidelines\ndescription: Write copy following Sentry brand guidelines. Use when writing UI text, error messages, empty states, onboarding flows, 404 pages, documentation, marketing copy, or any user-facing content. Covers both Plain Speech (default) and Sentry Voice tones.\n---\n\n# Brand Guidelines\n\nWrite user-facing copy following Sentry's brand guidelines.\n\n## Tone Selection\n\nChoose the appropriate tone based on context:\n\n| Use Plain Speech | Use Sentry Voice |\n|------------------|------------------|\n| Product UI (buttons, labels, forms) | 404 pages |\n| Documentation | Empty states |\n| Error messages | Onboarding flows |\n| Settings pages | Loading states |\n| Transactional emails | \"What's New\" announcements |\n| Help text | Marketing copy |\n\n**Default to Plain Speech** unless the context specifically calls for personality.\n\n## Plain Speech (Default)\n\nPlain Speech is clear, direct, and functional. Use it for most UI elements.\n\n### Rules\n\n1. **Be concise** - Use the fewest words needed\n2. **Be direct** - Tell users what to do, not what they can do\n3. **Use active voice** - \"Save your changes\" not \"Your changes will be saved\"\n4. **Avoid jargon** - Use simple words users understand\n5. **Be specific** - \"3 errors found\" not \"Some errors found\"\n\n### Examples\n\n| Instead of | Write |\n|------------|-------|\n| \"Click here to save your changes\" | \"Save\" |\n| \"You can filter results by date\" | \"Filter by date\" |\n| \"An error has occurred\" | \"Something went wrong\" |\n| \"Please enter a valid email address\" | \"Enter a valid email\" |\n| \"Are you sure you want to delete?\" | \"Delete this item?\" |\n\n## Sentry Voice\n\nSentry Voice adds personality in appropriate moments. It's empathetic, self-aware, and occasionally snarky.\n\n### Principles\n\n1. **Empathetic snark** - Direct frustration at the situation, never the user\n2. **Self-aware** - Acknowledge the absurdity of software\n3. **Fun but functional** - Personality should enhance, not obscure meaning\n4. **Earned moments** - Only use when users have time to appreciate it\n\n### Examples\n\n**404 Pages:**\n> \"This page doesn't exist. Maybe it never did. Maybe it was a dream. Either way, let's get you back on track.\"\n\n**Empty States:**\n> \"No errors yet. Enjoy this moment of peace while it lasts.\"\n\n**Onboarding:**\n> \"Let's get your first error. Don't worry, it's not as scary as it sounds.\"\n\n**Loading States:**\n> \"Crunching the numbers...\"\n> \"Fetching your data...\"\n\n### When NOT to Use Sentry Voice\n\n- Error messages (users are frustrated)\n- Settings pages (users are focused)\n- Documentation (users need information)\n- Billing\u002Fpayment flows (users need trust)\n\n## General Rules\n\n### Spelling and Grammar\n\n- Use **American English** spelling (color, not colour)\n- Use **Title Case** for headings and page titles\n- Use **Sentence case** for body text, buttons, and labels\n\n### Punctuation\n\n- **No exclamation marks** in UI text (exception: celebratory moments)\n- **No periods** in short UI labels or button text\n- **Use periods** in complete sentences and help text\n- **No ALL CAPS** except for acronyms (API, SDK, URL)\n\n### Word Choices\n\n| Avoid | Prefer |\n|-------|--------|\n| Please | (omit) |\n| Sorry | (be specific about the problem) |\n| Error occurred | Something went wrong |\n| Invalid | (explain what's wrong) |\n| Success! | (describe what happened) |\n| Oops | (be specific) |\n\n## Dash Usage\n\n| Type | Use | Example |\n|------|-----|---------|\n| Hyphen (-) | Compound words, ranges | \"real-time\", \"1-10\" |\n| En-dash (--) | Ranges, relationships | \"2023--2024\", \"parent--child\" |\n| Em-dash (---) | Interruption, emphasis | \"Errors---even small ones---matter\" |\n\nIn most UI contexts, use hyphens. Reserve en-dashes for date ranges and em-dashes for longer prose.\n\n## UI Element Guidelines\n\n### Buttons\n\n- Use action verbs: \"Save\", \"Delete\", \"Create\"\n- Be specific: \"Create Project\" not just \"Create\"\n- Max 2-3 words when possible\n- No periods or exclamation marks\n\n### Error Messages\n\n1. Say what happened\n2. Say why (if helpful)\n3. Say what to do next\n\n**Good:** \"Could not save changes. Check your connection and try again.\"\n**Bad:** \"Error: Save failed.\"\n\n### Empty States\n\n1. Explain what would normally be here\n2. Provide a clear action to populate the state\n3. Sentry Voice is appropriate here\n\n**Good:** \"No projects yet. Create your first project to start tracking errors.\"\n\n### Confirmation Dialogs\n\n- Make the action clear in the title\n- Explain consequences if destructive\n- Use specific button labels (\"Delete Project\", not \"OK\")\n\n### Tooltips and Help Text\n\n- Keep under 2 sentences\n- Explain the \"why\", not just the \"what\"\n- Link to docs for complex topics\n\n## Anti-Patterns\n\nAvoid these common mistakes:\n\n- **Robot speak:** \"Item has been successfully deleted\" -> \"Deleted\"\n- **Passive voice:** \"Changes were saved\" -> \"Changes saved\"\n- **Unnecessary words:** \"In order to\" -> \"To\"\n- **Hedging:** \"This might cause...\" -> \"This will cause...\"\n- **Double negatives:** \"Not unlike...\" -> \"Similar to...\"\n- **Marketing speak in UI:** \"Supercharge your workflow\" -> \"Speed up your workflow\"\n\n## References\n\n- [Sentry Voice Guidelines](https:\u002F\u002Fdevelop.sentry.dev\u002Ffrontend\u002Fsentry-voice\u002F)\n- [Sentry Frontend Handbook](https:\u002F\u002Fdevelop.sentry.dev\u002Ffrontend\u002F)\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,49,55,62,67,173,184,190,195,202,257,263,350,356,361,367,410,415,423,432,440,448,456,464,472,480,486,510,516,522,559,565,608,614,714,720,801,806,812,818,841,847,865,882,888,906,915,921,939,945,963,969,974,1037,1043],{"type":42,"tag":43,"props":44,"children":45},"element","h1",{"id":4},[46],{"type":47,"value":48},"text","Brand Guidelines",{"type":42,"tag":50,"props":51,"children":52},"p",{},[53],{"type":47,"value":54},"Write user-facing copy following Sentry's brand guidelines.",{"type":42,"tag":56,"props":57,"children":59},"h2",{"id":58},"tone-selection",[60],{"type":47,"value":61},"Tone Selection",{"type":42,"tag":50,"props":63,"children":64},{},[65],{"type":47,"value":66},"Choose the appropriate tone based on context:",{"type":42,"tag":68,"props":69,"children":70},"table",{},[71,90],{"type":42,"tag":72,"props":73,"children":74},"thead",{},[75],{"type":42,"tag":76,"props":77,"children":78},"tr",{},[79,85],{"type":42,"tag":80,"props":81,"children":82},"th",{},[83],{"type":47,"value":84},"Use Plain Speech",{"type":42,"tag":80,"props":86,"children":87},{},[88],{"type":47,"value":89},"Use Sentry Voice",{"type":42,"tag":91,"props":92,"children":93},"tbody",{},[94,108,121,134,147,160],{"type":42,"tag":76,"props":95,"children":96},{},[97,103],{"type":42,"tag":98,"props":99,"children":100},"td",{},[101],{"type":47,"value":102},"Product UI (buttons, labels, forms)",{"type":42,"tag":98,"props":104,"children":105},{},[106],{"type":47,"value":107},"404 pages",{"type":42,"tag":76,"props":109,"children":110},{},[111,116],{"type":42,"tag":98,"props":112,"children":113},{},[114],{"type":47,"value":115},"Documentation",{"type":42,"tag":98,"props":117,"children":118},{},[119],{"type":47,"value":120},"Empty states",{"type":42,"tag":76,"props":122,"children":123},{},[124,129],{"type":42,"tag":98,"props":125,"children":126},{},[127],{"type":47,"value":128},"Error messages",{"type":42,"tag":98,"props":130,"children":131},{},[132],{"type":47,"value":133},"Onboarding flows",{"type":42,"tag":76,"props":135,"children":136},{},[137,142],{"type":42,"tag":98,"props":138,"children":139},{},[140],{"type":47,"value":141},"Settings pages",{"type":42,"tag":98,"props":143,"children":144},{},[145],{"type":47,"value":146},"Loading states",{"type":42,"tag":76,"props":148,"children":149},{},[150,155],{"type":42,"tag":98,"props":151,"children":152},{},[153],{"type":47,"value":154},"Transactional emails",{"type":42,"tag":98,"props":156,"children":157},{},[158],{"type":47,"value":159},"\"What's New\" announcements",{"type":42,"tag":76,"props":161,"children":162},{},[163,168],{"type":42,"tag":98,"props":164,"children":165},{},[166],{"type":47,"value":167},"Help text",{"type":42,"tag":98,"props":169,"children":170},{},[171],{"type":47,"value":172},"Marketing copy",{"type":42,"tag":50,"props":174,"children":175},{},[176,182],{"type":42,"tag":177,"props":178,"children":179},"strong",{},[180],{"type":47,"value":181},"Default to Plain Speech",{"type":47,"value":183}," unless the context specifically calls for personality.",{"type":42,"tag":56,"props":185,"children":187},{"id":186},"plain-speech-default",[188],{"type":47,"value":189},"Plain Speech (Default)",{"type":42,"tag":50,"props":191,"children":192},{},[193],{"type":47,"value":194},"Plain Speech is clear, direct, and functional. Use it for most UI elements.",{"type":42,"tag":196,"props":197,"children":199},"h3",{"id":198},"rules",[200],{"type":47,"value":201},"Rules",{"type":42,"tag":203,"props":204,"children":205},"ol",{},[206,217,227,237,247],{"type":42,"tag":207,"props":208,"children":209},"li",{},[210,215],{"type":42,"tag":177,"props":211,"children":212},{},[213],{"type":47,"value":214},"Be concise",{"type":47,"value":216}," - Use the fewest words needed",{"type":42,"tag":207,"props":218,"children":219},{},[220,225],{"type":42,"tag":177,"props":221,"children":222},{},[223],{"type":47,"value":224},"Be direct",{"type":47,"value":226}," - Tell users what to do, not what they can do",{"type":42,"tag":207,"props":228,"children":229},{},[230,235],{"type":42,"tag":177,"props":231,"children":232},{},[233],{"type":47,"value":234},"Use active voice",{"type":47,"value":236}," - \"Save your changes\" not \"Your changes will be saved\"",{"type":42,"tag":207,"props":238,"children":239},{},[240,245],{"type":42,"tag":177,"props":241,"children":242},{},[243],{"type":47,"value":244},"Avoid jargon",{"type":47,"value":246}," - Use simple words users understand",{"type":42,"tag":207,"props":248,"children":249},{},[250,255],{"type":42,"tag":177,"props":251,"children":252},{},[253],{"type":47,"value":254},"Be specific",{"type":47,"value":256}," - \"3 errors found\" not \"Some errors found\"",{"type":42,"tag":196,"props":258,"children":260},{"id":259},"examples",[261],{"type":47,"value":262},"Examples",{"type":42,"tag":68,"props":264,"children":265},{},[266,282],{"type":42,"tag":72,"props":267,"children":268},{},[269],{"type":42,"tag":76,"props":270,"children":271},{},[272,277],{"type":42,"tag":80,"props":273,"children":274},{},[275],{"type":47,"value":276},"Instead of",{"type":42,"tag":80,"props":278,"children":279},{},[280],{"type":47,"value":281},"Write",{"type":42,"tag":91,"props":283,"children":284},{},[285,298,311,324,337],{"type":42,"tag":76,"props":286,"children":287},{},[288,293],{"type":42,"tag":98,"props":289,"children":290},{},[291],{"type":47,"value":292},"\"Click here to save your changes\"",{"type":42,"tag":98,"props":294,"children":295},{},[296],{"type":47,"value":297},"\"Save\"",{"type":42,"tag":76,"props":299,"children":300},{},[301,306],{"type":42,"tag":98,"props":302,"children":303},{},[304],{"type":47,"value":305},"\"You can filter results by date\"",{"type":42,"tag":98,"props":307,"children":308},{},[309],{"type":47,"value":310},"\"Filter by date\"",{"type":42,"tag":76,"props":312,"children":313},{},[314,319],{"type":42,"tag":98,"props":315,"children":316},{},[317],{"type":47,"value":318},"\"An error has occurred\"",{"type":42,"tag":98,"props":320,"children":321},{},[322],{"type":47,"value":323},"\"Something went wrong\"",{"type":42,"tag":76,"props":325,"children":326},{},[327,332],{"type":42,"tag":98,"props":328,"children":329},{},[330],{"type":47,"value":331},"\"Please enter a valid email address\"",{"type":42,"tag":98,"props":333,"children":334},{},[335],{"type":47,"value":336},"\"Enter a valid email\"",{"type":42,"tag":76,"props":338,"children":339},{},[340,345],{"type":42,"tag":98,"props":341,"children":342},{},[343],{"type":47,"value":344},"\"Are you sure you want to delete?\"",{"type":42,"tag":98,"props":346,"children":347},{},[348],{"type":47,"value":349},"\"Delete this item?\"",{"type":42,"tag":56,"props":351,"children":353},{"id":352},"sentry-voice",[354],{"type":47,"value":355},"Sentry Voice",{"type":42,"tag":50,"props":357,"children":358},{},[359],{"type":47,"value":360},"Sentry Voice adds personality in appropriate moments. It's empathetic, self-aware, and occasionally snarky.",{"type":42,"tag":196,"props":362,"children":364},{"id":363},"principles",[365],{"type":47,"value":366},"Principles",{"type":42,"tag":203,"props":368,"children":369},{},[370,380,390,400],{"type":42,"tag":207,"props":371,"children":372},{},[373,378],{"type":42,"tag":177,"props":374,"children":375},{},[376],{"type":47,"value":377},"Empathetic snark",{"type":47,"value":379}," - Direct frustration at the situation, never the user",{"type":42,"tag":207,"props":381,"children":382},{},[383,388],{"type":42,"tag":177,"props":384,"children":385},{},[386],{"type":47,"value":387},"Self-aware",{"type":47,"value":389}," - Acknowledge the absurdity of software",{"type":42,"tag":207,"props":391,"children":392},{},[393,398],{"type":42,"tag":177,"props":394,"children":395},{},[396],{"type":47,"value":397},"Fun but functional",{"type":47,"value":399}," - Personality should enhance, not obscure meaning",{"type":42,"tag":207,"props":401,"children":402},{},[403,408],{"type":42,"tag":177,"props":404,"children":405},{},[406],{"type":47,"value":407},"Earned moments",{"type":47,"value":409}," - Only use when users have time to appreciate it",{"type":42,"tag":196,"props":411,"children":413},{"id":412},"examples-1",[414],{"type":47,"value":262},{"type":42,"tag":50,"props":416,"children":417},{},[418],{"type":42,"tag":177,"props":419,"children":420},{},[421],{"type":47,"value":422},"404 Pages:",{"type":42,"tag":424,"props":425,"children":426},"blockquote",{},[427],{"type":42,"tag":50,"props":428,"children":429},{},[430],{"type":47,"value":431},"\"This page doesn't exist. Maybe it never did. Maybe it was a dream. Either way, let's get you back on track.\"",{"type":42,"tag":50,"props":433,"children":434},{},[435],{"type":42,"tag":177,"props":436,"children":437},{},[438],{"type":47,"value":439},"Empty States:",{"type":42,"tag":424,"props":441,"children":442},{},[443],{"type":42,"tag":50,"props":444,"children":445},{},[446],{"type":47,"value":447},"\"No errors yet. Enjoy this moment of peace while it lasts.\"",{"type":42,"tag":50,"props":449,"children":450},{},[451],{"type":42,"tag":177,"props":452,"children":453},{},[454],{"type":47,"value":455},"Onboarding:",{"type":42,"tag":424,"props":457,"children":458},{},[459],{"type":42,"tag":50,"props":460,"children":461},{},[462],{"type":47,"value":463},"\"Let's get your first error. Don't worry, it's not as scary as it sounds.\"",{"type":42,"tag":50,"props":465,"children":466},{},[467],{"type":42,"tag":177,"props":468,"children":469},{},[470],{"type":47,"value":471},"Loading States:",{"type":42,"tag":424,"props":473,"children":474},{},[475],{"type":42,"tag":50,"props":476,"children":477},{},[478],{"type":47,"value":479},"\"Crunching the numbers...\"\n\"Fetching your data...\"",{"type":42,"tag":196,"props":481,"children":483},{"id":482},"when-not-to-use-sentry-voice",[484],{"type":47,"value":485},"When NOT to Use Sentry Voice",{"type":42,"tag":487,"props":488,"children":489},"ul",{},[490,495,500,505],{"type":42,"tag":207,"props":491,"children":492},{},[493],{"type":47,"value":494},"Error messages (users are frustrated)",{"type":42,"tag":207,"props":496,"children":497},{},[498],{"type":47,"value":499},"Settings pages (users are focused)",{"type":42,"tag":207,"props":501,"children":502},{},[503],{"type":47,"value":504},"Documentation (users need information)",{"type":42,"tag":207,"props":506,"children":507},{},[508],{"type":47,"value":509},"Billing\u002Fpayment flows (users need trust)",{"type":42,"tag":56,"props":511,"children":513},{"id":512},"general-rules",[514],{"type":47,"value":515},"General Rules",{"type":42,"tag":196,"props":517,"children":519},{"id":518},"spelling-and-grammar",[520],{"type":47,"value":521},"Spelling and Grammar",{"type":42,"tag":487,"props":523,"children":524},{},[525,537,548],{"type":42,"tag":207,"props":526,"children":527},{},[528,530,535],{"type":47,"value":529},"Use ",{"type":42,"tag":177,"props":531,"children":532},{},[533],{"type":47,"value":534},"American English",{"type":47,"value":536}," spelling (color, not colour)",{"type":42,"tag":207,"props":538,"children":539},{},[540,541,546],{"type":47,"value":529},{"type":42,"tag":177,"props":542,"children":543},{},[544],{"type":47,"value":545},"Title Case",{"type":47,"value":547}," for headings and page titles",{"type":42,"tag":207,"props":549,"children":550},{},[551,552,557],{"type":47,"value":529},{"type":42,"tag":177,"props":553,"children":554},{},[555],{"type":47,"value":556},"Sentence case",{"type":47,"value":558}," for body text, buttons, and labels",{"type":42,"tag":196,"props":560,"children":562},{"id":561},"punctuation",[563],{"type":47,"value":564},"Punctuation",{"type":42,"tag":487,"props":566,"children":567},{},[568,578,588,598],{"type":42,"tag":207,"props":569,"children":570},{},[571,576],{"type":42,"tag":177,"props":572,"children":573},{},[574],{"type":47,"value":575},"No exclamation marks",{"type":47,"value":577}," in UI text (exception: celebratory moments)",{"type":42,"tag":207,"props":579,"children":580},{},[581,586],{"type":42,"tag":177,"props":582,"children":583},{},[584],{"type":47,"value":585},"No periods",{"type":47,"value":587}," in short UI labels or button text",{"type":42,"tag":207,"props":589,"children":590},{},[591,596],{"type":42,"tag":177,"props":592,"children":593},{},[594],{"type":47,"value":595},"Use periods",{"type":47,"value":597}," in complete sentences and help text",{"type":42,"tag":207,"props":599,"children":600},{},[601,606],{"type":42,"tag":177,"props":602,"children":603},{},[604],{"type":47,"value":605},"No ALL CAPS",{"type":47,"value":607}," except for acronyms (API, SDK, URL)",{"type":42,"tag":196,"props":609,"children":611},{"id":610},"word-choices",[612],{"type":47,"value":613},"Word Choices",{"type":42,"tag":68,"props":615,"children":616},{},[617,633],{"type":42,"tag":72,"props":618,"children":619},{},[620],{"type":42,"tag":76,"props":621,"children":622},{},[623,628],{"type":42,"tag":80,"props":624,"children":625},{},[626],{"type":47,"value":627},"Avoid",{"type":42,"tag":80,"props":629,"children":630},{},[631],{"type":47,"value":632},"Prefer",{"type":42,"tag":91,"props":634,"children":635},{},[636,649,662,675,688,701],{"type":42,"tag":76,"props":637,"children":638},{},[639,644],{"type":42,"tag":98,"props":640,"children":641},{},[642],{"type":47,"value":643},"Please",{"type":42,"tag":98,"props":645,"children":646},{},[647],{"type":47,"value":648},"(omit)",{"type":42,"tag":76,"props":650,"children":651},{},[652,657],{"type":42,"tag":98,"props":653,"children":654},{},[655],{"type":47,"value":656},"Sorry",{"type":42,"tag":98,"props":658,"children":659},{},[660],{"type":47,"value":661},"(be specific about the problem)",{"type":42,"tag":76,"props":663,"children":664},{},[665,670],{"type":42,"tag":98,"props":666,"children":667},{},[668],{"type":47,"value":669},"Error occurred",{"type":42,"tag":98,"props":671,"children":672},{},[673],{"type":47,"value":674},"Something went wrong",{"type":42,"tag":76,"props":676,"children":677},{},[678,683],{"type":42,"tag":98,"props":679,"children":680},{},[681],{"type":47,"value":682},"Invalid",{"type":42,"tag":98,"props":684,"children":685},{},[686],{"type":47,"value":687},"(explain what's wrong)",{"type":42,"tag":76,"props":689,"children":690},{},[691,696],{"type":42,"tag":98,"props":692,"children":693},{},[694],{"type":47,"value":695},"Success!",{"type":42,"tag":98,"props":697,"children":698},{},[699],{"type":47,"value":700},"(describe what happened)",{"type":42,"tag":76,"props":702,"children":703},{},[704,709],{"type":42,"tag":98,"props":705,"children":706},{},[707],{"type":47,"value":708},"Oops",{"type":42,"tag":98,"props":710,"children":711},{},[712],{"type":47,"value":713},"(be specific)",{"type":42,"tag":56,"props":715,"children":717},{"id":716},"dash-usage",[718],{"type":47,"value":719},"Dash Usage",{"type":42,"tag":68,"props":721,"children":722},{},[723,744],{"type":42,"tag":72,"props":724,"children":725},{},[726],{"type":42,"tag":76,"props":727,"children":728},{},[729,734,739],{"type":42,"tag":80,"props":730,"children":731},{},[732],{"type":47,"value":733},"Type",{"type":42,"tag":80,"props":735,"children":736},{},[737],{"type":47,"value":738},"Use",{"type":42,"tag":80,"props":740,"children":741},{},[742],{"type":47,"value":743},"Example",{"type":42,"tag":91,"props":745,"children":746},{},[747,765,783],{"type":42,"tag":76,"props":748,"children":749},{},[750,755,760],{"type":42,"tag":98,"props":751,"children":752},{},[753],{"type":47,"value":754},"Hyphen (-)",{"type":42,"tag":98,"props":756,"children":757},{},[758],{"type":47,"value":759},"Compound words, ranges",{"type":42,"tag":98,"props":761,"children":762},{},[763],{"type":47,"value":764},"\"real-time\", \"1-10\"",{"type":42,"tag":76,"props":766,"children":767},{},[768,773,778],{"type":42,"tag":98,"props":769,"children":770},{},[771],{"type":47,"value":772},"En-dash (--)",{"type":42,"tag":98,"props":774,"children":775},{},[776],{"type":47,"value":777},"Ranges, relationships",{"type":42,"tag":98,"props":779,"children":780},{},[781],{"type":47,"value":782},"\"2023--2024\", \"parent--child\"",{"type":42,"tag":76,"props":784,"children":785},{},[786,791,796],{"type":42,"tag":98,"props":787,"children":788},{},[789],{"type":47,"value":790},"Em-dash (---)",{"type":42,"tag":98,"props":792,"children":793},{},[794],{"type":47,"value":795},"Interruption, emphasis",{"type":42,"tag":98,"props":797,"children":798},{},[799],{"type":47,"value":800},"\"Errors---even small ones---matter\"",{"type":42,"tag":50,"props":802,"children":803},{},[804],{"type":47,"value":805},"In most UI contexts, use hyphens. Reserve en-dashes for date ranges and em-dashes for longer prose.",{"type":42,"tag":56,"props":807,"children":809},{"id":808},"ui-element-guidelines",[810],{"type":47,"value":811},"UI Element Guidelines",{"type":42,"tag":196,"props":813,"children":815},{"id":814},"buttons",[816],{"type":47,"value":817},"Buttons",{"type":42,"tag":487,"props":819,"children":820},{},[821,826,831,836],{"type":42,"tag":207,"props":822,"children":823},{},[824],{"type":47,"value":825},"Use action verbs: \"Save\", \"Delete\", \"Create\"",{"type":42,"tag":207,"props":827,"children":828},{},[829],{"type":47,"value":830},"Be specific: \"Create Project\" not just \"Create\"",{"type":42,"tag":207,"props":832,"children":833},{},[834],{"type":47,"value":835},"Max 2-3 words when possible",{"type":42,"tag":207,"props":837,"children":838},{},[839],{"type":47,"value":840},"No periods or exclamation marks",{"type":42,"tag":196,"props":842,"children":844},{"id":843},"error-messages",[845],{"type":47,"value":846},"Error Messages",{"type":42,"tag":203,"props":848,"children":849},{},[850,855,860],{"type":42,"tag":207,"props":851,"children":852},{},[853],{"type":47,"value":854},"Say what happened",{"type":42,"tag":207,"props":856,"children":857},{},[858],{"type":47,"value":859},"Say why (if helpful)",{"type":42,"tag":207,"props":861,"children":862},{},[863],{"type":47,"value":864},"Say what to do next",{"type":42,"tag":50,"props":866,"children":867},{},[868,873,875,880],{"type":42,"tag":177,"props":869,"children":870},{},[871],{"type":47,"value":872},"Good:",{"type":47,"value":874}," \"Could not save changes. Check your connection and try again.\"\n",{"type":42,"tag":177,"props":876,"children":877},{},[878],{"type":47,"value":879},"Bad:",{"type":47,"value":881}," \"Error: Save failed.\"",{"type":42,"tag":196,"props":883,"children":885},{"id":884},"empty-states",[886],{"type":47,"value":887},"Empty States",{"type":42,"tag":203,"props":889,"children":890},{},[891,896,901],{"type":42,"tag":207,"props":892,"children":893},{},[894],{"type":47,"value":895},"Explain what would normally be here",{"type":42,"tag":207,"props":897,"children":898},{},[899],{"type":47,"value":900},"Provide a clear action to populate the state",{"type":42,"tag":207,"props":902,"children":903},{},[904],{"type":47,"value":905},"Sentry Voice is appropriate here",{"type":42,"tag":50,"props":907,"children":908},{},[909,913],{"type":42,"tag":177,"props":910,"children":911},{},[912],{"type":47,"value":872},{"type":47,"value":914}," \"No projects yet. Create your first project to start tracking errors.\"",{"type":42,"tag":196,"props":916,"children":918},{"id":917},"confirmation-dialogs",[919],{"type":47,"value":920},"Confirmation Dialogs",{"type":42,"tag":487,"props":922,"children":923},{},[924,929,934],{"type":42,"tag":207,"props":925,"children":926},{},[927],{"type":47,"value":928},"Make the action clear in the title",{"type":42,"tag":207,"props":930,"children":931},{},[932],{"type":47,"value":933},"Explain consequences if destructive",{"type":42,"tag":207,"props":935,"children":936},{},[937],{"type":47,"value":938},"Use specific button labels (\"Delete Project\", not \"OK\")",{"type":42,"tag":196,"props":940,"children":942},{"id":941},"tooltips-and-help-text",[943],{"type":47,"value":944},"Tooltips and Help Text",{"type":42,"tag":487,"props":946,"children":947},{},[948,953,958],{"type":42,"tag":207,"props":949,"children":950},{},[951],{"type":47,"value":952},"Keep under 2 sentences",{"type":42,"tag":207,"props":954,"children":955},{},[956],{"type":47,"value":957},"Explain the \"why\", not just the \"what\"",{"type":42,"tag":207,"props":959,"children":960},{},[961],{"type":47,"value":962},"Link to docs for complex topics",{"type":42,"tag":56,"props":964,"children":966},{"id":965},"anti-patterns",[967],{"type":47,"value":968},"Anti-Patterns",{"type":42,"tag":50,"props":970,"children":971},{},[972],{"type":47,"value":973},"Avoid these common mistakes:",{"type":42,"tag":487,"props":975,"children":976},{},[977,987,997,1007,1017,1027],{"type":42,"tag":207,"props":978,"children":979},{},[980,985],{"type":42,"tag":177,"props":981,"children":982},{},[983],{"type":47,"value":984},"Robot speak:",{"type":47,"value":986}," \"Item has been successfully deleted\" -> \"Deleted\"",{"type":42,"tag":207,"props":988,"children":989},{},[990,995],{"type":42,"tag":177,"props":991,"children":992},{},[993],{"type":47,"value":994},"Passive voice:",{"type":47,"value":996}," \"Changes were saved\" -> \"Changes saved\"",{"type":42,"tag":207,"props":998,"children":999},{},[1000,1005],{"type":42,"tag":177,"props":1001,"children":1002},{},[1003],{"type":47,"value":1004},"Unnecessary words:",{"type":47,"value":1006}," \"In order to\" -> \"To\"",{"type":42,"tag":207,"props":1008,"children":1009},{},[1010,1015],{"type":42,"tag":177,"props":1011,"children":1012},{},[1013],{"type":47,"value":1014},"Hedging:",{"type":47,"value":1016}," \"This might cause...\" -> \"This will cause...\"",{"type":42,"tag":207,"props":1018,"children":1019},{},[1020,1025],{"type":42,"tag":177,"props":1021,"children":1022},{},[1023],{"type":47,"value":1024},"Double negatives:",{"type":47,"value":1026}," \"Not unlike...\" -> \"Similar to...\"",{"type":42,"tag":207,"props":1028,"children":1029},{},[1030,1035],{"type":42,"tag":177,"props":1031,"children":1032},{},[1033],{"type":47,"value":1034},"Marketing speak in UI:",{"type":47,"value":1036}," \"Supercharge your workflow\" -> \"Speed up your workflow\"",{"type":42,"tag":56,"props":1038,"children":1040},{"id":1039},"references",[1041],{"type":47,"value":1042},"References",{"type":42,"tag":487,"props":1044,"children":1045},{},[1046,1058],{"type":42,"tag":207,"props":1047,"children":1048},{},[1049],{"type":42,"tag":1050,"props":1051,"children":1055},"a",{"href":1052,"rel":1053},"https:\u002F\u002Fdevelop.sentry.dev\u002Ffrontend\u002Fsentry-voice\u002F",[1054],"nofollow",[1056],{"type":47,"value":1057},"Sentry Voice Guidelines",{"type":42,"tag":207,"props":1059,"children":1060},{},[1061],{"type":42,"tag":1050,"props":1062,"children":1065},{"href":1063,"rel":1064},"https:\u002F\u002Fdevelop.sentry.dev\u002Ffrontend\u002F",[1054],[1066],{"type":47,"value":1067},"Sentry Frontend Handbook",{"items":1069,"total":1234},[1070,1095,1109,1121,1135,1142,1158,1172,1182,1193,1203,1221],{"slug":1071,"name":1071,"fn":1072,"description":1073,"org":1074,"tags":1075,"stars":1092,"repoUrl":1093,"updatedAt":1094},"xcodebuildmcp","build and test Apple apps with XcodeBuildMCP","Official skill for XcodeBuildMCP. Use when doing iOS\u002FmacOS\u002FwatchOS\u002FtvOS\u002FvisionOS work (build, test, run, debug, log, UI automation).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1076,1079,1082,1085,1086,1089],{"name":1077,"slug":1078,"type":16},"Debugging","debugging",{"name":1080,"slug":1081,"type":16},"iOS","ios",{"name":1083,"slug":1084,"type":16},"macOS","macos",{"name":9,"slug":8,"type":16},{"name":1087,"slug":1088,"type":16},"Testing","testing",{"name":1090,"slug":1091,"type":16},"Xcode","xcode",6176,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002FXcodeBuildMCP","2026-04-06T18:13:34.8719",{"slug":1096,"name":1096,"fn":1097,"description":1098,"org":1099,"tags":1100,"stars":1092,"repoUrl":1093,"updatedAt":1108},"xcodebuildmcp-cli","build and test Apple apps via CLI","Official skill for the XcodeBuildMCP CLI. Use when doing iOS\u002FmacOS\u002FwatchOS\u002FtvOS\u002FvisionOS work (build, test, run, debug, log, UI automation).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1101,1104,1105,1106,1107],{"name":1102,"slug":1103,"type":16},"CLI","cli",{"name":1080,"slug":1081,"type":16},{"name":1083,"slug":1084,"type":16},{"name":1087,"slug":1088,"type":16},{"name":1090,"slug":1091,"type":16},"2026-04-06T18:13:36.13414",{"slug":1110,"name":1110,"fn":1111,"description":1112,"org":1113,"tags":1114,"stars":24,"repoUrl":25,"updatedAt":1120},"agents-md","maintain project instruction files","Creates and maintains concise AGENTS.md and CLAUDE.md project instruction files. Use when asked to create AGENTS.md, update AGENTS.md, maintain agent docs, set up CLAUDE.md, document repository agent conventions, or keep coding-agent instructions minimal and reference-backed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1115,1117],{"name":115,"slug":1116,"type":16},"documentation",{"name":1118,"slug":1119,"type":16},"Engineering","engineering","2026-05-15T06:16:29.695991",{"slug":1122,"name":1122,"fn":1123,"description":1124,"org":1125,"tags":1126,"stars":24,"repoUrl":25,"updatedAt":1134},"blog-writing-guide","write and review engineering blog posts","Write, review, and improve blog posts for the Sentry engineering blog following Sentry's specific writing standards, voice, and quality bar. Use this skill whenever someone asks to write a blog post, draft a technical article, review blog content, improve a draft, write a product announcement, create an engineering deep-dive, or produce any written content destined for the Sentry blog or developer audience. Also trigger when the user mentions \"blog post,\" \"blog draft,\" \"write-up,\" \"announcement post,\" \"engineering post,\" \"deep dive,\" \"postmortem,\" or asks for help with technical writing for Sentry. Even if the user just says \"help me write about [feature\u002Ftopic]\" — if it sounds like it could become a Sentry blog post, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1127,1130,1131],{"name":1128,"slug":1129,"type":16},"Communications","communications",{"name":9,"slug":8,"type":16},{"name":1132,"slug":1133,"type":16},"Technical Writing","technical-writing","2026-05-15T06:16:33.38217",{"slug":4,"name":4,"fn":5,"description":6,"org":1136,"tags":1137,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1138,1139,1140,1141],{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},{"name":18,"slug":19,"type":16},{"slug":1143,"name":1143,"fn":1144,"description":1145,"org":1146,"tags":1147,"stars":24,"repoUrl":25,"updatedAt":1157},"claude-settings-audit","generate Claude Code settings permissions","Analyze a repository to generate recommended Claude Code settings.json permissions. Use when setting up a new project, auditing existing settings, or determining which read-only bash commands to allow. Detects tech stack, build tools, and monorepo structure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1148,1151,1154],{"name":1149,"slug":1150,"type":16},"Claude Code","claude-code",{"name":1152,"slug":1153,"type":16},"Configuration","configuration",{"name":1155,"slug":1156,"type":16},"Security","security","2026-05-15T06:16:44.335977",{"slug":1159,"name":1159,"fn":1160,"description":1161,"org":1162,"tags":1163,"stars":24,"repoUrl":25,"updatedAt":1171},"code-review","perform code reviews for Sentry projects","Perform code reviews following Sentry engineering practices. Use when reviewing pull requests, examining code changes, or providing feedback on code quality. Covers security, performance, testing, and design review.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1164,1166,1167,1170],{"name":1165,"slug":1159,"type":16},"Code Review",{"name":1118,"slug":1119,"type":16},{"name":1168,"slug":1169,"type":16},"Performance","performance",{"name":1155,"slug":1156,"type":16},"2026-05-15T06:16:35.824864",{"slug":1173,"name":1173,"fn":1174,"description":1175,"org":1176,"tags":1177,"stars":24,"repoUrl":25,"updatedAt":1181},"code-simplifier","simplify and refine source code","Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Use when asked to \"simplify code\", \"clean up code\", \"refactor for clarity\", \"improve readability\", or review recently modified code for elegance. Focuses on project-specific best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1178],{"name":1179,"slug":1180,"type":16},"Code Analysis","code-analysis","2026-05-15T06:16:32.127981",{"slug":1183,"name":1183,"fn":1184,"description":1185,"org":1186,"tags":1187,"stars":24,"repoUrl":25,"updatedAt":1192},"commit","create commits with Sentry conventions","Use for every request to commit changes or draft a commit message. Creates Sentry-style conventional commits with issue references.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1188,1191],{"name":1189,"slug":1190,"type":16},"Git","git",{"name":9,"slug":8,"type":16},"2026-07-18T05:15:10.723937",{"slug":1194,"name":1194,"fn":1195,"description":1196,"org":1197,"tags":1198,"stars":24,"repoUrl":25,"updatedAt":1202},"create-branch","create git branches for Sentry workflows","Create a git branch following Sentry naming conventions. Use when asked to \"create a branch\", \"new branch\", \"start a branch\", \"make a branch\", \"switch to a new branch\", or when starting new work on the default branch.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1199,1200,1201],{"name":1118,"slug":1119,"type":16},{"name":1189,"slug":1190,"type":16},{"name":9,"slug":8,"type":16},"2026-05-15T06:16:39.458431",{"slug":1204,"name":1204,"fn":1205,"description":1206,"org":1207,"tags":1208,"stars":24,"repoUrl":25,"updatedAt":1220},"django-access-review","review Django access control and IDOR","Django access control and IDOR security review. Use when reviewing Django views, DRF viewsets, ORM queries, or any Python\u002FDjango code handling user authorization. Trigger keywords: \"IDOR\", \"access control\", \"authorization\", \"Django permissions\", \"object permissions\", \"tenant isolation\", \"broken access\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1209,1212,1213,1216,1219],{"name":1210,"slug":1211,"type":16},"Access Control","access-control",{"name":1179,"slug":1180,"type":16},{"name":1214,"slug":1215,"type":16},"Django","django",{"name":1217,"slug":1218,"type":16},"Python","python",{"name":1155,"slug":1156,"type":16},"2026-05-15T06:16:43.098698",{"slug":1222,"name":1222,"fn":1223,"description":1224,"org":1225,"tags":1226,"stars":24,"repoUrl":25,"updatedAt":1233},"django-perf-review","review and optimize Django performance","Django performance code review. Use when asked to \"review Django performance\", \"find N+1 queries\", \"optimize Django\", \"check queryset performance\", \"database performance\", \"Django ORM issues\", or audit Django code for performance problems.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1227,1228,1231,1232],{"name":1165,"slug":1159,"type":16},{"name":1229,"slug":1230,"type":16},"Database","database",{"name":1214,"slug":1215,"type":16},{"name":1168,"slug":1169,"type":16},"2026-05-15T06:16:24.832813",88,{"items":1236,"total":1277},[1237,1242,1248,1255,1261,1268,1272],{"slug":1110,"name":1110,"fn":1111,"description":1112,"org":1238,"tags":1239,"stars":24,"repoUrl":25,"updatedAt":1120},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1240,1241],{"name":115,"slug":1116,"type":16},{"name":1118,"slug":1119,"type":16},{"slug":1122,"name":1122,"fn":1123,"description":1124,"org":1243,"tags":1244,"stars":24,"repoUrl":25,"updatedAt":1134},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1245,1246,1247],{"name":1128,"slug":1129,"type":16},{"name":9,"slug":8,"type":16},{"name":1132,"slug":1133,"type":16},{"slug":4,"name":4,"fn":5,"description":6,"org":1249,"tags":1250,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1251,1252,1253,1254],{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},{"name":18,"slug":19,"type":16},{"slug":1143,"name":1143,"fn":1144,"description":1145,"org":1256,"tags":1257,"stars":24,"repoUrl":25,"updatedAt":1157},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1258,1259,1260],{"name":1149,"slug":1150,"type":16},{"name":1152,"slug":1153,"type":16},{"name":1155,"slug":1156,"type":16},{"slug":1159,"name":1159,"fn":1160,"description":1161,"org":1262,"tags":1263,"stars":24,"repoUrl":25,"updatedAt":1171},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1264,1265,1266,1267],{"name":1165,"slug":1159,"type":16},{"name":1118,"slug":1119,"type":16},{"name":1168,"slug":1169,"type":16},{"name":1155,"slug":1156,"type":16},{"slug":1173,"name":1173,"fn":1174,"description":1175,"org":1269,"tags":1270,"stars":24,"repoUrl":25,"updatedAt":1181},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1271],{"name":1179,"slug":1180,"type":16},{"slug":1183,"name":1183,"fn":1184,"description":1185,"org":1273,"tags":1274,"stars":24,"repoUrl":25,"updatedAt":1192},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1275,1276],{"name":1189,"slug":1190,"type":16},{"name":9,"slug":8,"type":16},28]