agentsclimarketplace

Grammarly prod checklist

Skill jeremylongshore/claude-code-plugins-plus-skills/plugins/saas-packs/grammarly-pack/skills/grammarly-prod-checklist

'Production readiness checklist for Grammarly API integrations. Use when preparingFrom its SKILL.md

Install
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill grammarly-prod-checklist

Assembled 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.4 KB, 947 tokens by cl100k_base, as published. Nobody here has run it

Grammarly Production Checklist

Overview

Grammarly provides AI-powered writing assistance with grammar checking, tone detection, plagiarism scanning, and style suggestions. A production integration processes user-submitted text through Grammarly's API and returns actionable suggestions. Failures mean unchecked content goes live, suggestion latency degrades UX, or sensitive text leaks outside approved processing boundaries.

Authentication & Secrets

  • GRAMMARLY_API_KEY stored in secrets manager (not config files)
  • Client credentials (ID + secret) separated from application code
  • Token refresh logic handles expiry before API calls fail
  • Separate credentials for dev/staging/prod environments
  • Key rotation schedule documented (90-day cycle)

API Integration

  • Production base URL configured (https://api.grammarly.com/v1)
  • Rate limit handling with exponential backoff
  • Text chunking implemented for documents > 100K characters
  • Minimum 30-word validation before sending to API
  • Suggestion categories configured per use case (grammar, tone, clarity)
  • AI detection endpoint integrated if content authenticity required
  • Plagiarism check timeout handling (longer processing for large docs)

Error Handling & Resilience

  • Circuit breaker configured for Grammarly API outages
  • Retry with backoff for 429/5xx responses
  • Writing score thresholds defined per content type
  • Graceful degradation when API is unavailable (queue, not block)
  • Error responses logged with request IDs for support escalation
  • Partial suggestion results handled (incomplete analysis on timeout)

Monitoring & Alerting

  • API latency tracked per request type (check, detect, plagiarism)
  • Error rate alerts set (threshold: >5% over 5 minutes)
  • Token refresh failures trigger immediate notification
  • Suggestion acceptance rate tracked for quality feedback loop
  • Daily API usage against plan limits monitored

Validation Script

async function checkGrammarlyReadiness(): Promise<void> {
  const checks: { name: string; pass: boolean; detail: string }[] = [];
  // API connectivity
  try {
    const res = await fetch('https://api.grammarly.com/v1/check', {
      method: 'POST',
      headers: { Authorization: `Bearer ${process.env.GRAMMARLY_API_KEY}`, 'Content-Type': 'application/json' },
      body: JSON.stringify({ text: 'This is a production readiness test sentence for validation.' }),
    });
    checks.push({ name: 'Grammarly API', pass: res.ok, detail: res.ok ? 'Connected' : `HTTP ${res.status}` });
  } catch (e: any) { checks.push({ name: 'Grammarly API', pass: false, detail: e.message }); }
  // Credentials present
  checks.push({ name: 'API Key Set', pass: !!process.env.GRAMMARLY_API_KEY, detail: process.env.GRAMMARLY_API_KEY ? 'Present' : 'MISSING' });
  // Rate limit headroom
  try {
    const res = await fetch('https://api.grammarly.com/v1/usage', {
      headers: { Authorization: `Bearer ${process.env.GRAMMARLY_API_KEY}` },
    });
    checks.push({ name: 'Usage Endpoint', pass: res.ok, detail: res.ok ? 'Accessible' : `HTTP ${res.status}` });
  } catch (e: any) { checks.push({ name: 'Usage Endpoint', pass: false, detail: e.message }); }
  for (const c of checks) console.log(`[${c.pass ? 'PASS' : 'FAIL'}] ${c.name}: ${c.detail}`);
}
checkGrammarlyReadiness();

Error Handling

CheckRisk if SkippedPriority
Token refresh logicSilent auth failure blocks all checksP1
Text chunkingLarge documents rejected or truncatedP1
Rate limit handlingBurst traffic triggers 429 cascadeP2
Plagiarism timeoutStuck requests block content pipelineP2
Usage monitoringSurprise plan overage chargesP3

Resources

Next Steps

See grammarly-security-basics for text data handling and privacy controls.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,144. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.