Agent Skills: Clari Local Dev Loop

|

UncategorizedID: jeremylongshore/claude-code-plugins-plus-skills/clari-local-dev-loop

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/HEAD/plugins/saas-packs/clari-pack/skills/clari-local-dev-loop

Skill Files

Browse the full folder contents for clari-local-dev-loop.

Download Skill

Loading file tree…

plugins/saas-packs/clari-pack/skills/clari-local-dev-loop/SKILL.md

Skill Metadata

Name
clari-local-dev-loop
Description
|

Clari Local Dev Loop

Overview

Local development workflow for Clari integrations: mock forecast data for offline testing, schedule recurring exports, and build data transformation pipelines.

Prerequisites

  • Completed clari-install-auth setup
  • Python 3.10+ or Node.js 18+
  • Local database or data warehouse access for testing

Instructions

Step 1: Project Structure

clari-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

Step 2: Mock Forecast Data for Testing

# 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"
        }
    ]
}

Step 3: Test Pipeline Without API Calls

# 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

Step 4: Development Run Script

#!/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 Handling

| 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 |

Resources

Next Steps

See clari-sdk-patterns for production-ready API wrappers.