From clari-pack
Sets up local dev for Clari API integrations with mock forecast data. For building dashboards, testing export pipelines, and iterating data transformations offline.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin clari-packThis skill is limited to using the following tools:
Local development workflow for Clari integrations: mock forecast data for offline testing, schedule recurring exports, and build data transformation pipelines.
Exports Clari forecasts and pipeline snapshots via REST API. Tests connectivity, polls job status, downloads JSON data. For initial integrations post-auth.
Sets up local SalesLoft development with TypeScript API client, fixtures, and Vitest mocking for offline integration testing.
Sets up Node.js/TypeScript local dev environment for Klaviyo API with project structure, hot reload via tsx watch, vitest unit/integration tests, and SDK mocking.
Share bugs, ideas, or general feedback.
Local development workflow for Clari integrations: mock forecast data for offline testing, schedule recurring exports, and build data transformation pipelines.
clari-install-auth setupclari-integration/
├── src/
│ ├── clari_client.py # API client wrapper
│ ├── export_pipeline.py # Export and transform pipeline
│ ├── models.py # Data models for forecast data
│ └── config.py # Environment config
├── tests/
│ ├── fixtures/
│ │ ├── forecast_export.json # Sample export response
│ │ └── job_status.json # Sample job status
│ └── test_pipeline.py
├── .env.local # Dev credentials (git-ignored)
├── .env.example
└── requirements.txt
# tests/fixtures/forecast_export.json
MOCK_FORECAST = {
"entries": [
{
"ownerName": "Jane Smith",
"ownerEmail": "jane@example.com",
"forecastAmount": 250000,
"quotaAmount": 300000,
"crmTotal": 180000,
"crmClosed": 120000,
"adjustmentAmount": 15000,
"timePeriod": "2026_Q1"
},
{
"ownerName": "Bob Johnson",
"ownerEmail": "bob@example.com",
"forecastAmount": 180000,
"quotaAmount": 250000,
"crmTotal": 140000,
"crmClosed": 90000,
"adjustmentAmount": 0,
"timePeriod": "2026_Q1"
}
]
}
# tests/test_pipeline.py
import pytest
from src.export_pipeline import transform_forecast_data
def test_forecast_aggregation():
data = MOCK_FORECAST
result = transform_forecast_data(data)
assert result["total_forecast"] == 430000
assert result["total_quota"] == 550000
assert result["attainment_percent"] == pytest.approx(78.2, rel=0.1)
assert len(result["reps"]) == 2
def test_handles_empty_export():
result = transform_forecast_data({"entries": []})
assert result["total_forecast"] == 0
#!/bin/bash
# scripts/dev-export.sh
set -euo pipefail
source .env.local
echo "=== Clari Dev Export ==="
python3 src/export_pipeline.py \
--forecast "company_forecast" \
--period "2026_Q1" \
--format json \
--output ./data/latest-export.json
echo "Export saved to ./data/latest-export.json"
echo "Records: $(jq '.entries | length' ./data/latest-export.json)"
| Error | Cause | Solution |
|---|---|---|
| Import error | Missing dependency | pip install -r requirements.txt |
| Empty export | Wrong time period | Use a period with submitted forecasts |
| Mock data stale | Schema changed | Re-download a sample from API |
.env.local not loading | Missing dotenv | pip install python-dotenv |
See clari-sdk-patterns for production-ready API wrappers.