Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Execute Grammarly secondary workflow: Core Workflow B. Use when implementing secondary use case, or complementing primary workflow. Trigger with phrases like "grammarly secondary workflow", "secondary task with grammarly".
.claude/skills/jeremylongshore-grammarly-core-workflow-b/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -26% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -11% | 0% |
Detect AI-generated content and check for plagiarism using Grammarly's detection APIs. AI Detection returns a score (0-100) indicating likelihood of AI generation. Plagiarism Detection compares text against billions of web pages and academic papers.
typescriptinterface AIDetectionResult { score: number; status: string; } async function detectAI(text: string, token: string): Promise<AIDetectionResult> { const response = await fetch('https://api.grammarly.com/ecosystem/api/v1/ai-detection', { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ text }), }); return response.json(); } // Batch check multiple documents async function batchAIDetection(documents: Array<{ id: string; text: string }>, token: string) { const results = []; for (const doc of documents) { const result = await detectAI(doc.text, token); results.push({ ...doc, aiScore: result.score, isLikelyAI: result.score > 70 }); await new Promise(r => setTimeout(r, 500)); } return results; }
typescriptasync function checkPlagiarism(text: string, token: string) { // Create request const createRes = await fetch('https://api.grammarly.com/ecosystem/api/v1/plagiarism', { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ text }), }); const { id } = await createRes.json(); // Poll for results (async processing) for (let i = 0; i < 30; i++) { await new Promise(r => setTimeout(r, 3000)); const statusRes = await fetch(`https://api.grammarly.com/ecosystem/api/v1/plagiarism/${id}`, { headers: { 'Authorization': `Bearer ${token}` }, }); const result = await statusRes.json(); if (result.status !== 'pending') return result; } throw new Error('Plagiarism check timed out'); }
typescriptasync function fullContentAudit(text: string, token: string) { const [score, ai, plagiarism] = await Promise.all([ scoreDocument({ text }, token), detectAI(text, token), checkPlagiarism(text, token), ]); return { writingScore: score.overallScore, correctness: score.correctness, clarity: score.clarity, aiLikelihood: ai.score, plagiarismScore: plagiarism.score, plagiarismMatches: plagiarism.matches?.length || 0, passed: score.overallScore >= 70 && ai.score < 50 && plagiarism.score < 20, }; }
| Error | Cause | Solution | |-------|-------|----------| | 400 text too short | < 30 words | Ensure minimum length | | Poll timeout | Processing taking long | Increase poll duration | | AI score inconsistent | Short text | AI detection works best on 200+ words |
For common errors, see grammarly-common-errors.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 16,753 | 14,664 | -12% | 1 | 1 | 0% | 2,308 | 3,026 | +31% | 0 | 0 | — |
case-02 | fail→pass | 14,134 | 14,098 | -0% | 1 | 1 | 0% | 3,091 | 3,015 | -2% | 0 | 0 | — |
case-03 | fail→fail | 16,801 | 20,493 | +22% | 1 | 1 | 0% | 4,008 | 4,967 | +24% | 0 | 0 | — |
case-04 | fail→pass | 11,952 | 8,726 | -27% | 1 | 1 | 0% | 2,479 | 1,831 | -26% | 0 | 0 | — |
case-05 | fail→pass | 14,144 | 5,801 | -59% | 1 | 1 | 0% | 1,883 | 2,070 | +10% | 0 | 0 | — |
case-06 | fail→pass | 15,994 | 9,874 | -38% | 1 | 1 | 0% | 2,379 | 2,118 | -11% | 0 | 0 | — |
case-07 | fail→pass | 8,323 | 3,962 | -52% | 1 | 1 | 0% | 1,650 | 1,890 | +15% | 0 | 0 | — |
case-08 | pass→pass | 8,007 | 8,192 | +2% | 1 | 1 | 0% | 1,684 | 1,705 | +1% | 0 | 0 | — |
case-09 | fail→pass | 14,642 | 7,585 | -48% | 1 | 1 | 0% | 1,832 | 1,546 | -16% | 0 | 0 | — |
case-10 | fail→pass | 8,974 | 7,978 | -11% | 1 | 1 | 0% | 1,744 | 1,607 | -8% | 0 | 0 | — |
case-11 | fail→pass | 14,943 | 6,873 | -54% | 1 | 1 | 0% | 1,651 | 1,280 | -22% | 0 | 0 | — |
case-12 | fail→pass | 11,898 | 4,754 | -60% | 1 | 1 | 0% | 1,726 | 1,632 | -5% | 0 | 0 | — |
case-13 | fail→pass | 15,161 | 2,220 | -85% | 1 | 1 | 0% | 1,385 | 1,278 | -8% | 0 | 0 | — |
case-14 | pass→pass | 16,619 | 9,536 | -43% | 1 | 1 | 0% | 2,855 | 1,732 | -39% | 0 | 0 | — |
case-15 | pass→pass | 15,774 | 4,217 | -73% | 1 | 1 | 0% | 1,879 | 1,676 | -11% | 0 | 0 | — |
case-16 | fail→pass | 17,165 | 4,124 | -76% | 1 | 1 | 0% | 3,180 | 1,733 | -46% | 0 | 0 | — |
case-17 | pass→pass | 18,072 | 10,445 | -42% | 1 | 1 | 0% | 2,253 | 1,863 | -17% | 0 | 0 | — |
case-18 | pass→pass | 11,251 | 9,816 | -13% | 1 | 1 | 0% | 1,690 | 1,675 | -1% | 0 | 0 | — |
case-19 | pass→pass | 13,417 | 8,026 | -40% | 1 | 1 | 0% | 1,461 | 1,450 | -1% | 0 | 0 | — |
case-20 | pass→pass | 13,774 | 2,861 | -79% | 1 | 1 | 0% | 1,370 | 1,348 | -2% | 0 | 0 | — |
case-21 | pass→pass | 6,959 | 2,021 | -71% | 1 | 1 | 0% | 1,132 | 1,289 | +14% | 0 | 0 | — |
case-22 | pass→pass | 10,130 | 13,646 | +35% | 1 | 1 | 0% | 1,793 | 2,536 | +41% | 0 | 0 | — |
case-23 | pass→pass | 17,406 | 11,523 | -34% | 1 | 1 | 0% | 2,004 | 2,957 | +48% | 0 | 0 | — |
case-24 | pass→pass | 18,735 | 14,007 | -25% | 1 | 1 | 0% | 3,530 | 3,501 | -1% | 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. 24 cases were attempted. The headline lift of +50 percentage points is the difference between those two pass rates over the 24 comparable cases.
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.