Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Follow Grammarly incident response runbook for API outages. Use when Grammarly API is down, experiencing errors, or when investigating service degradation. Trigger with phrases like "grammarly down", "grammarly outage", "grammarly incident", "grammarly not responding".
.claude/skills/jeremylongshore-grammarly-incident-runbook/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -13% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 24% | 0% |
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.
| 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 |
bash# 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
markdown**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
| 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 |
See grammarly-observability for monitoring setup and alerting thresholds.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 15,448 | 13,834 | -10% | 1 | 1 | 0% | 2,731 | 2,977 | +9% | 0 | 0 | — |
case-02 | fail→pass | 16,044 | 5,857 | -63% | 1 | 1 | 0% | 2,909 | 2,531 | -13% | 0 | 0 | — |
case-03 | fail→pass | 14,158 | 11,092 | -22% | 1 | 1 | 0% | 2,061 | 2,444 | +19% | 0 | 0 | — |
case-04 | pass→fail | 12,109 | 16,137 | +33% | 1 | 1 | 0% | 2,942 | 3,826 | +30% | 0 | 0 | — |
case-05 | pass→pass | 20,828 | 21,688 | +4% | 1 | 1 | 0% | 4,985 | 6,505 | +30% | 0 | 0 | — |
case-06 | pass→pass | 18,585 | 12,129 | -35% | 1 | 1 | 0% | 2,408 | 3,549 | +47% | 0 | 0 | — |
case-07 | fail→pass | 16,800 | 3,796 | -77% | 1 | 1 | 0% | 1,818 | 1,685 | -7% | 0 | 0 | — |
case-08 | fail→pass | 12,181 | 8,277 | -32% | 1 | 1 | 0% | 1,147 | 1,428 | +24% | 0 | 0 | — |
case-09 | pass→pass | 17,746 | 1,900 | -89% | 1 | 1 | 0% | 2,102 | 1,319 | -37% | 0 | 0 | — |
case-10 | pass→pass | 11,437 | 1,739 | -85% | 1 | 1 | 0% | 1,709 | 1,304 | -24% | 0 | 0 | — |
case-11 | pass→pass | 13,827 | 7,685 | -44% | 1 | 1 | 0% | 1,350 | 1,496 | +11% | 0 | 0 | — |
case-12 | fail→pass | 14,983 | 7,699 | -49% | 1 | 1 | 0% | 1,654 | 1,474 | -11% | 0 | 0 | — |
case-13 | fail→pass | 6,260 | 8,633 | +38% | 1 | 1 | 0% | 996 | 1,685 | +69% | 0 | 0 | — |
case-14 | fail→pass | 14,499 | 6,818 | -53% | 1 | 1 | 0% | 2,439 | 2,154 | -12% | 0 | 0 | — |
case-15 | fail→pass | 13,450 | 9,421 | -30% | 1 | 1 | 0% | 1,322 | 1,806 | +37% | 0 | 0 | — |
case-16 | fail→pass | 16,437 | 1,950 | -88% | 1 | 1 | 0% | 2,740 | 1,375 | -50% | 0 | 0 | — |
case-17 | pass→pass | 10,150 | 6,552 | -35% | 1 | 1 | 0% | 857 | 1,310 | +53% | 0 | 0 | — |
case-18 | pass→pass | 8,607 | 3,119 | -64% | 1 | 1 | 0% | 1,305 | 1,471 | +13% | 0 | 0 | — |
case-19 | pass→pass | 19,707 | 7,599 | -61% | 1 | 1 | 0% | 2,159 | 2,215 | +3% | 0 | 0 | — |
case-20 | pass→pass | 11,511 | 8,398 | -27% | 1 | 1 | 0% | 1,913 | 1,564 | -18% | 0 | 0 | — |
case-21 | fail→pass | 16,503 | 7,589 | -54% | 1 | 1 | 0% | 2,073 | 1,527 | -26% | 0 | 0 | — |
case-22 | pass→pass | 17,566 | 2,500 | -86% | 1 | 1 | 0% | 2,049 | 1,423 | -31% | 0 | 0 | — |
case-23 | fail→pass | 12,067 | 7,473 | -38% | 1 | 1 | 0% | 1,979 | 1,398 | -29% | 0 | 0 | — |
case-24 | fail→pass | 11,142 | 9,029 | -19% | 1 | 1 | 0% | 1,738 | 1,753 | +1% | 0 | 0 | — |
case-25 | fail→pass | 11,335 | 6,829 | -40% | 1 | 1 | 0% | 2,098 | 1,319 | -37% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +52 percentage points is the difference between those two pass rates over the 25 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.