Asana-to-Vanta sync skill. Pushes Production Change Log tasks, incident records, and evidence to Vanta via REST API. Only active when Vanta API access is confirmed. Designed for periodic execution (weekly) or manual trigger.
From nudesk-osnpx claudepluginhub nudesk/nudesk-os-plugin --plugin nudesk-osThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
Not user-invocable. Called by scheduled tasks (weekly sync) and
/evidence-collect. Only active when Vanta API access is confirmed in compliance-config.md.
~/.claude/memory/compliance-config.md → Vanta → API Access = "yes"~/.env)If Vanta API is not available: This skill generates a formatted export for manual upload instead of making API calls.
Push Production Change Log tasks as Vanta security_task resources.
Source: Asana Production Change Log project (tasks completed since last sync)
Target: Vanta POST /tasks endpoint
Per task:
{
"taskId": "{asana-task-gid}",
"title": "{task title}",
"state": "COMPLETED",
"priority": "{mapped from Change Type}",
"assignees": ["{user email}"],
"externalUrl": "https://app.asana.com/0/{project-gid}/{task-gid}",
"description": "{task description — truncated to 2000 chars}",
"completedAt": "{completed_at timestamp}"
}
Priority mapping:
| Asana Change Type | Vanta Priority |
|---|---|
| Hotfix | HIGH |
| Bugfix | MEDIUM |
| Feature | MEDIUM |
| Config | LOW |
| Infrastructure | MEDIUM |
Push Incident Response Log tasks to Vanta.
Source: Asana Incident Response Log project
Target: Vanta POST /tasks endpoint
Per incident:
{
"taskId": "{asana-task-gid}",
"title": "{incident title}",
"state": "{OPEN or COMPLETED}",
"priority": "{mapped from Severity}",
"assignees": ["{assignee email}"],
"externalUrl": "https://app.asana.com/0/{project-gid}/{task-gid}",
"description": "{incident description}"
}
Severity mapping:
| Asana Severity | Vanta Priority |
|---|---|
| P0 | CRITICAL |
| P1 | HIGH |
| P2 | MEDIUM |
| P3 | LOW |
Upload evidence documents collected by the evidence-collector skill.
Source: ~/.claude/memory/context/evidence-exports/ (files from evidence-collector)
Target: Vanta POST /evidence endpoint
Workflow:
POST /evidence (multipart/form-data)
b. Link to relevant controls via POST /controls/{id}/evidence
c. Move to evidence-exports/uploaded/ subdirectory~/.claude/memory/context/vanta-last-sync.md{date}_change-log-export.md — Change Log summary for manual entry{date}_incident-export.md — Incident summary for manual entry~/.claude/memory/context/vanta-exports/X-RateLimit-Reset seconds and retry onceTrack last sync in ~/.claude/memory/context/vanta-last-sync.md:
# Vanta Sync State
| Sync Type | Last Run | Items Synced | Status |
|-----------|----------|-------------|--------|
| Task Sync | [timestamp] | [N] | Success / Failed |
| Incident Sync | [timestamp] | [N] | Success / Failed |
| Evidence Upload | [timestamp] | [N] | Success / Failed |
Vanta Bridge Sync Complete:
- Tasks synced: [N] (new: [N], updated: [N])
- Incidents synced: [N]
- Evidence uploaded: [N]
- Errors: [N] (details if any)
- Next scheduled sync: [date]