Claude-code-plugins-plus-skills grammarly-debug-bundle
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/grammarly-pack/skills/grammarly-debug-bundle" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-grammarly-debug-bundle && rm -rf "$T"
manifest:
plugins/saas-packs/grammarly-pack/skills/grammarly-debug-bundle/SKILL.mdsource content
Grammarly Debug Bundle
Overview
Collect Grammarly API connectivity status, text analysis response quality, authentication state, and rate limit usage into a single diagnostic archive. This bundle helps troubleshoot text check failures, missing suggestions, OAuth token expiration, and API response latency.
Debug Collection Script
#!/bin/bash set -euo pipefail BUNDLE="debug-grammarly-$(date +%Y%m%d-%H%M%S)" mkdir -p "$BUNDLE" # Environment check echo "=== Grammarly Debug Bundle ===" | tee "$BUNDLE/summary.txt" echo "Generated: $(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$BUNDLE/summary.txt" echo "GRAMMARLY_API_KEY: ${GRAMMARLY_API_KEY:+[SET]}" >> "$BUNDLE/summary.txt" echo "GRAMMARLY_CLIENT_ID: ${GRAMMARLY_CLIENT_ID:+[SET]}" >> "$BUNDLE/summary.txt" # API connectivity — text check endpoint HTTP=$(curl -s -o /dev/null -w "%{http_code}" \ -H "Authorization: Bearer ${GRAMMARLY_API_KEY}" \ -H "Content-Type: application/json" \ -X POST https://api.grammarly.com/v1/check \ -d '{"text": "This are a diagnostic test sentence with intentional grammar errors to verify the API returns suggestions."}' \ 2>/dev/null || echo "000") echo "API Status: HTTP $HTTP" >> "$BUNDLE/summary.txt" # Full text check response curl -s -H "Authorization: Bearer ${GRAMMARLY_API_KEY}" \ -H "Content-Type: application/json" -X POST https://api.grammarly.com/v1/check \ -d '{"text": "This are a diagnostic test sentence with intentional grammar errors to verify the API returns suggestions."}' \ > "$BUNDLE/text-check.json" 2>&1 || true # Account info and rate limit headers curl -s -D "$BUNDLE/rate-headers.txt" -H "Authorization: Bearer ${GRAMMARLY_API_KEY}" \ https://api.grammarly.com/v1/account > "$BUNDLE/account.json" 2>&1 || true tar -czf "$BUNDLE.tar.gz" "$BUNDLE" && rm -rf "$BUNDLE" echo "Bundle: $BUNDLE.tar.gz"
Analyzing the Bundle
tar -xzf debug-grammarly-*.tar.gz cat debug-grammarly-*/summary.txt # Auth + API status jq '.alerts | length' debug-grammarly-*/text-check.json # Suggestion count jq '.alerts[] | {type, text}' debug-grammarly-*/text-check.json # Suggestion details grep -i "ratelimit\|retry" debug-grammarly-*/rate-headers.txt
Common Issues
| Symptom | Check in Bundle | Fix |
|---|---|---|
| API returns 401 | shows HTTP 401 | Refresh OAuth token or regenerate API key in Grammarly Developer Hub |
| Zero suggestions returned | has empty alerts array | Verify text exceeds minimum word count (30 words); check language parameter |
| High latency (>5s) | shows slow response time | Reduce text payload size; check for network proxy interference |
| Rate limited (429) | shows Retry-After | Implement request queuing; reduce check frequency per user session |
| Client ID mismatch | returns permission error | Verify matches the app registered in Developer Hub |
Automated Health Check
async function checkGrammarly(): Promise<void> { const key = process.env.GRAMMARLY_API_KEY; if (!key) { console.error("[FAIL] GRAMMARLY_API_KEY not set"); return; } const res = await fetch("https://api.grammarly.com/v1/check", { method: "POST", headers: { Authorization: `Bearer ${key}`, "Content-Type": "application/json" }, body: JSON.stringify({ text: "This are a test sentence with grammar errors for diagnostic purposes and validation." }), }); console.log(`[${res.ok ? "OK" : "FAIL"}] API: HTTP ${res.status}`); if (res.ok) { const data = await res.json(); console.log(`[INFO] Suggestions returned: ${data.alerts?.length ?? 0}`); } } checkGrammarly();
Resources
Next Steps
See
grammarly-common-errors.