From grammarly-pack
Deploys Grammarly integrations to Vercel, Fly.io, and Cloud Run. Configures platform secrets and sets up production pipelines with code examples.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin grammarly-packThis skill is limited to using the following tools:
```typescript
Configures Grammarly API authentication via OAuth for enterprise accounts. Sets up env vars, fetches bearer tokens, and verifies connection with TypeScript scripts.
Deploys Gamma-integrated apps to Vercel, AWS Lambda, or GCP Cloud Run with API key secret management and production configs.
Deploys projects to Vercel via CLI or git push. Checks linking/auth/teams, creates preview links, guides to git integration for ongoing deploys.
Share bugs, ideas, or general feedback.
// api/score.ts
import type { VercelRequest, VercelResponse } from '@vercel/node';
export default async function handler(req: VercelRequest, res: VercelResponse) {
const { text } = req.body;
if (!text || text.split(/\s+/).length < 30) return res.status(400).json({ error: 'Minimum 30 words' });
// Get token via client credentials
const tokenRes = await fetch('https://api.grammarly.com/ecosystem/api/v1/oauth/token', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({ grant_type: 'client_credentials', client_id: process.env.GRAMMARLY_CLIENT_ID!, client_secret: process.env.GRAMMARLY_CLIENT_SECRET! }),
});
const { access_token } = await tokenRes.json();
const scoreRes = await fetch('https://api.grammarly.com/ecosystem/api/v2/scores', {
method: 'POST',
headers: { 'Authorization': `Bearer ${access_token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ text }),
});
res.json(await scoreRes.json());
}
vercel env add GRAMMARLY_CLIENT_ID production
vercel env add GRAMMARLY_CLIENT_SECRET production
For webhooks, see grammarly-webhooks-events.