Skip to content
Back to skills

Clari Prod Checklist

ASecurity

'Production readiness checklist for Clari API integrations.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
securitytypescriptgobashapisecuritydocumentation

Works with

  • claude code
  • api

Security analysis

A100/100

Scanned November 11, 2026

npx -y skills add pauldx/claudifying --skill clari-prod-checklist --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Clari Prod Checklist?

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

Security grade badge for Clari Prod Checklist
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/pauldx-clari-prod-checklist/badge)](https://www.skillsdirectory.com/skills/pauldx-clari-prod-checklist)

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: clari-prod-checklist
description: 'Production readiness checklist for Clari API integrations.

  Use when launching a Clari data pipeline, validating export automation,

  or preparing for production forecast sync.

  Trigger with phrases like "clari production", "clari go-live",

  "clari checklist", "clari launch".

  '
allowed-tools: Read, Bash(curl:*), Grep
version: 1.0.0
license: MIT
tags:
- saas
- revenue-intelligence
- forecasting
- clari
compatibility: Designed for Claude Code
---
# Clari Production Checklist

## Overview

Clari provides revenue intelligence through forecast data, pipeline analytics, and deal inspection. A production integration typically exports forecast snapshots, syncs pipeline data to a warehouse, and powers revenue dashboards. Incorrect data pipelines mean unreliable forecasts, missed quota signals, or stale deal intelligence that undermines board-level reporting.

## Authentication & Secrets

- [ ] `CLARI_API_KEY` stored in secrets manager (not config files)
- [ ] Token tested against production endpoint before go-live
- [ ] Key rotation procedure documented (quarterly cycle)
- [ ] Separate tokens for dev/staging/prod environments
- [ ] Service account with least-privilege scopes (read-only for exports)

## API Integration

- [ ] Production base URL configured (`https://api.clari.com/v1`)
- [ ] Rate limit handling with exponential backoff
- [ ] All required `typesToExport` configured (forecast, quota, crm_closed)
- [ ] Time period coverage verified (current quarter + 4 historical)
- [ ] Deduplication logic handles re-exports and overlapping periods
- [ ] Pagination implemented for large pipeline result sets
- [ ] Export job polling with configurable timeout (default: 10 min)

## Error Handling & Resilience

- [ ] Circuit breaker configured for Clari API outages
- [ ] Retry with backoff for 429/5xx responses
- [ ] Empty export results handled (data quality alert, not silent pass)
- [ ] Export job timeout detection with automatic re-queue
- [ ] MERGE/UPSERT in warehouse prevents duplicate forecast records
- [ ] Data retention policy enforced (rolling 8 quarters typical)

## Monitoring & Alerting

- [ ] API latency tracked per export job
- [ ] Error rate alerts set (threshold: any export failure)
- [ ] Forecast amount anomaly detection (>20% swing triggers review)
- [ ] Pipeline health dashboard with job completion rates
- [ ] Daily reconciliation: exported row counts vs expected

## Validation Script

```typescript
async function checkClariReadiness(): Promise<void> {
  const checks: { name: string; pass: boolean; detail: string }[] = [];
  // API connectivity
  try {
    const res = await fetch('https://api.clari.com/v1/forecast/types', {
      headers: { Authorization: `Bearer ${process.env.CLARI_API_KEY}` },
    });
    checks.push({ name: 'Clari API', pass: res.ok, detail: res.ok ? 'Connected' : `HTTP ${res.status}` });
  } catch (e: any) { checks.push({ name: 'Clari API', pass: false, detail: e.message }); }
  // Credentials present
  checks.push({ name: 'API Key Set', pass: !!process.env.CLARI_API_KEY, detail: process.env.CLARI_API_KEY ? 'Present' : 'MISSING' });
  // Export types available
  try {
    const res = await fetch('https://api.clari.com/v1/forecast/types', {
      headers: { Authorization: `Bearer ${process.env.CLARI_API_KEY}` },
    });
    const data = await res.json();
    const count = Array.isArray(data) ? data.length : 0;
    checks.push({ name: 'Export Types', pass: count > 0, detail: `${count} types available` });
  } catch (e: any) { checks.push({ name: 'Export Types', pass: false, detail: e.message }); }
  for (const c of checks) console.log(`[${c.pass ? 'PASS' : 'FAIL'}] ${c.name}: ${c.detail}`);
}
checkClariReadiness();
```

## Error Handling

| Check | Risk if Skipped | Priority |
|-------|----------------|----------|
| API key rotation | Expired token halts all exports | P1 |
| Empty export detection | Silent data gaps in forecasts | P1 |
| Duplicate record prevention | Inflated pipeline numbers | P2 |
| Export job timeout | Stuck jobs block scheduling queue | P2 |
| Forecast anomaly alerts | Missed revenue signals | P3 |

## Resources

- [Clari API Reference](https://developer.clari.com/documentation/external_spec)
- [Clari Status](https://status.clari.com)

## Next Steps

See `clari-security-basics` for data access controls and PII handling.

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.

View all in security →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.