Skip to content
Back to skills

Grammarly Data Safety Guardian

ASecurity

Audit and gate a Grammarly document-submission manifest offline before an authorized integration upload. Use when checking supported extensions, file-size and text-length metadata, approval, consent, retention, and approved destination. This skill never accepts or submits document content and is not a replacement for legal, privacy, or security approval. Trigger with "Grammarly submission preflight", "Grammarly document safety", or "Grammarly retention check".

  • 2,785 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 23, 2026
ai-agentspythongobashapisecurity

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill grammarly-data-safety-guardian --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Grammarly Data Safety Guardian?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Grammarly Data Safety Guardian
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jeremylongshore-grammarly-data-safety-guardian-5dc27d53/badge)](https://www.skillsdirectory.com/skills/jeremylongshore-grammarly-data-safety-guardian-5dc27d53)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: grammarly-data-safety-guardian
description: |
  Audit and gate a Grammarly document-submission manifest offline before an authorized
  integration upload. Use when checking supported extensions, file-size and
  text-length metadata, approval, consent, retention, and approved destination.
  This skill never accepts or submits document content and is not a replacement for
  legal, privacy, or security approval. Trigger with "Grammarly submission
  preflight", "Grammarly document safety", or "Grammarly retention check".
allowed-tools: Bash(python3:*)
version: 2.0.0
author: Jeremy Longshore <jeremy@intentsolutions.io>
license: MIT
compatibility: Agent Skills-compatible hosts; requires Python 3.10+
tags: [saas, grammarly, data-safety, privacy, governance]
---

# Grammarly Data Safety Guardian

Run a deterministic preflight over a metadata-only submission manifest. The guard
answers whether a planned document upload satisfies this skill's hard safety gates;
it does not read a document, contact Grammarly, create an upload URL, or retain a
copy of the manifest.

## Overview

The guard is a closed-world policy check for a planned document submission. It
combines Grammarly's documented format and size constraints with local governance
decisions while keeping the document itself outside the workflow.

## When to use

Use for a Writing Score, AI Detection (Beta), or Plagiarism Detection (Beta)
document submission before and after the evaluator inspects the provider-issued upload
origin. The preliminary decision gates OAuth metadata disclosure; the final decision
gates document bytes. Do not trigger for writing or editing content, document previews,
credential troubleshooting, or a request to upload a real document.

## Prerequisites

- A synthetic or production-approved metadata-only manifest matching
  [references/submission-contract.md](references/submission-contract.md).
- Independent data-owner approval, consent evidence, transfer approval, content
  classification, and acknowledgment of provider retention boundaries.
- Python 3.10 or newer. No document path, document content, credential, network, or
  writable output directory is required.

## Instructions

1. Collect only the manifest described in
   [references/submission-contract.md](references/submission-contract.md). The
   manifest may contain extension, byte count, optional derived text counts, and
   governance decisions, the pinned API control-plane origin, and the exact sanitized
   presigned upload origin; it must not contain text, content, previews, credentials,
   paths, filenames, full upload URLs, or raw API responses.
2. Run the guard with stdin:

   ```bash
   python3 scripts/audit_submission_manifest.py < submission-manifest.json
   ```

3. Treat `BLOCKED` as a hard stop. Fix the named metadata or governance decision;
   never truncate or transform a document silently to pass the guard.
4. Treat `INSPECTION_READY` as permission only to create a normalized-filename job and
   inspect its sanitized upload origin. Treat `READY` as permission to continue to the separately authorized upload
   workflow, not as proof that a document is lawful, accurate, or safe for a new
   destination.

The script accepts strict JSON, rejects duplicate keys and non-standard constants,
recursively rejects raw text, location, response, and credential fields, and performs
no network or filesystem writes. It enforces the documented extensions, 4,194,304-byte
maximum, UTF-8 text counts, a non-restricted classification, all approval gates, the
exact `https://api.grammarly.com` control-plane origin, and an explicitly approved
public HTTPS S3 presigned-upload origin on the default TLS port.

## Output

Return the deterministic JSON decision and failed check names. Do not echo a
filename, path, text, preview, credential, identifier, or raw document metadata
beyond the safe numeric and enum fields in the script's output.

## Error Handling

`BLOCKED` is a hard stop for an unsupported extension, zero or oversized bytes,
supplied character/word limits, failed approval/consent/retention/destination
checks, unknown fields, duplicate keys, or unsafe content/credential fields. Do not
truncate, split, preview, log, or upload a document to investigate. Invalid input
returns a non-zero exit status and a JSON decision without the rejected value.

## Examples

- A `.docx` manifest at 4,194,304 bytes with approved classification, authority,
  consent, transfer, retention, exact API origin, and exact inspected upload origin:
  `READY`.
- The same content-bound manifest with `presigned_upload_origin: null` and
  `presigned_upload_origin_approved: false`: `INSPECTION_READY`, which permits only
  destination discovery and no document upload.
- A `.txt` manifest missing derived counts or with `word_count: 29`: `BLOCKED`.
- A `restricted` manifest, lookalike API origin, private upload origin, or unapproved
  inspected upload origin: `BLOCKED`.
- A manifest containing `preview`, `raw_text`, or `client_token`: `BLOCKED` before
  any size or governance decision is used.

## Resources

- Read [references/submission-contract.md](references/submission-contract.md) for
  the closed-world input schema and API-derived limits.
- Read [references/governance-gate.md](references/governance-gate.md) when deciding
  what approval, consent, retention, and destination evidence is sufficient.
- The script is intentionally offline and has no write capability.

Files in this skill

  • SKILL.md5.3 KB
  • eval-spec.yaml5.7 KB
  • references/governance-gate.md1.8 KB
  • references/submission-contract.md3.3 KB
  • scripts/audit_submission_manifest.py8.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…