Grammarly incident runbook
Skill jeremylongshore/claude-code-plugins-plus-skills/skills/.curated/grammarly-incident-runbook
'Follow Grammarly incident response runbook for API outages.From its SKILL.md
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill grammarly-incident-runbookAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.8 KB, 962 tokens by cl100k_base, as published. Nobody here has run it
Grammarly Incident Runbook
Overview
Incident response procedures for Grammarly writing API integration failures. Covers text check timeouts, suggestion quality degradation, OAuth token failures, and rate limit storms. Grammarly powers real-time writing assistance, so API incidents directly impact user-facing text checking, scoring workflows, and content quality pipelines. Classify severity immediately using the matrix below and follow the corresponding playbook.
Severity Levels
| Level | Definition | Response Time | Example |
|---|---|---|---|
| P1 - Critical | Full API outage, all scoring requests fail | 15 min | 5xx on /v2/scores for all requests |
| P2 - High | OAuth token failures or sustained timeouts | 30 min | All authenticated requests return 401 |
| P3 - Medium | Rate limit storms or elevated latency | 2 hours | 429 responses, scoring takes 10s+ per request |
| P4 - Low | Suggestion quality drift or single endpoint issue | 8 hours | Scores returning but correctness values seem off |
Diagnostic Steps
# Test API health (unauthenticated)
curl -s -o /dev/null -w "HTTP %{http_code}\n" \
https://api.grammarly.com/ecosystem/api/v2/scores
# Test authenticated scoring
curl -s -w "\nHTTP %{http_code}\n" \
-H "Authorization: Bearer $GRAMMARLY_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-X POST https://api.grammarly.com/ecosystem/api/v2/scores \
-d '{"text": "Test sentence for Grammarly API diagnostic health check."}'
# Check OAuth token validity
curl -s -o /dev/null -w "HTTP %{http_code}\n" \
-H "Authorization: Bearer $GRAMMARLY_ACCESS_TOKEN" \
https://api.grammarly.com/ecosystem/api/v2/account
Incident Playbooks
API Outage
- Confirm with unauthenticated health check (see diagnostics)
- Check Grammarly status page and developer announcements
- Activate fallback mode — return placeholder scores to avoid blocking users
- Queue text submissions for retry when API recovers
- Notify downstream consumers that scores are unavailable
Authentication Failure
- Test token validity with the account endpoint diagnostic above
- If 401: OAuth access token has expired — trigger token refresh flow
- If refresh token also fails: re-authorize via OAuth consent flow
- Verify client ID and client secret are correct in environment config
- Deploy refreshed tokens and confirm scoring requests succeed
Data Sync Failure
- Identify if scoring results are stale or inconsistent across requests
- Check if Grammarly updated their scoring model (review changelog)
- Compare current scores against known baseline text samples
- If quality drift confirmed: log evidence and file support ticket
- Consider pinning API version if Grammarly supports versioned endpoints
Communication Template
**Incident**: Grammarly Integration [Outage/Degradation]
**Status**: [Investigating/Identified/Mitigating/Resolved]
**Started**: YYYY-MM-DD HH:MM UTC
**Impact**: [Text scoring unavailable / elevated latency / OAuth failure affecting N users]
**Current action**: [Fallback scores active / token refresh in progress / rate limit backoff enabled]
**Next update**: HH:MM UTC
Post-Incident
- Document timeline from detection to resolution
- Identify root cause (Grammarly outage / token expiry / rate limit exceeded)
- Verify all scoring pipelines resumed with accurate results
- Add proactive token refresh before expiry (buffer by 10 min)
- Implement rate limit monitoring with alerting at 80% threshold
- Update fallback logic if edge cases were discovered
Error Handling
| Incident Type | Detection | Resolution |
|---|---|---|
| Text check timeout | Requests exceeding 10s SLA | Enable timeout + retry with exponential backoff |
| Suggestion quality degradation | Scores deviate from baseline samples | Log evidence, pin API version, file support ticket |
| OAuth token failure | 401 on all authenticated endpoints | Trigger refresh flow, re-authorize if refresh fails |
| Rate limit storm | 429 responses with Retry-After header | Implement request queuing, reduce concurrency |
Resources
- Grammarly Developer Docs
- Grammarly API Support
Next Steps
See grammarly-observability for monitoring setup and alerting thresholds.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most technical docs skills give in 962 tokens
Counted across 160 of the 186 authors here whose files we hold, read 2026-09-06
- Review runbooks after every incidentin 6 of 160, across 4 files
- Test runbooks regularlyin 6 of 160, across 4 files
- Include rollback steps in every runbookin 6 of 160, across 4 files
- Clarify goals, constraints, and required inputsin 6 of 160, across 4 files
- Apply relevant best practices and validate outcomesin 6 of 160, across 4 files
- Provide actionable steps and verificationin 6 of 160, across 4 files
- Identify the audience before writingin 6 of 160
- Write short sentences in active voicein 6 of 160
- Open the implementation playbook for detailed examplesin 5 of 160, across 3 files
- Escalate early during incidentsin 5 of 160, across 3 files
- Keep stakeholders informedin 5 of 160, across 3 files
- Document assumptions in runbooksin 5 of 160, across 3 files
Said here and by no other author read
- classify incident severity immediately
- confirm outage with unauthenticated health check
- check status page and developer announcements
- activate fallback mode returning placeholder scores
- queue submissions for retry until recovery
- notify downstream consumers of score unavailability
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.