Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    hcvm

    create-open-data-analyzer

    hcvm/create-open-data-analyzer
    Data & Analytics
    2
    1 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Workflow to build new analysis pipelines for external government datasets (Peru Compras / Open Data).

    SKILL.md

    Skill: Create Open Data Analyzer

    This skill is for adding new processing capabilities to the open-data module. It handles the ingestion, parsing, and visualization of large datasets (usually CSVs from government portals).

    Execution Steps

    1. Data Contract Definition

    Locate lib/open-data.ts.

    • Action: Define a TypeScript interface for the new raw data structure.
    • Example:
    export interface RawOcamEntry {
      "RUC PROVEEDOR": string;
      "MONTO TOTAL": string; // Note: Raw data is often string
      "FECHA FORMALIZACION": string;
      // ...
    }
    

    2. Processing Logic

    Create/Edit lib/open-data-processing.ts. Implement a normalization function that converts Raw Strings -> Typed Objects (Numbers, Dates).

    export function normalizeOcamData(raw: RawOcamEntry[]): NormalizedEntry[] {
      return raw.map(item => ({
        amount: parseFloat(item["MONTO TOTAL"]),
        vendor: item["RUC PROVEEDOR"],
        date: parse(item["FECHA FORMALIZACION"], "dd/MM/yyyy", new Date())
      }))
    }
    

    3. Analysis Functions

    Implement specific business logic questions as pure functions.

    • Top Vendors: Sort by total amount.
    • Price Trends: Group by month/week.
    • Competitor Analysis: Filter by specific RUCs defined in competitor_matrix table.

    4. API Endpoint (server-side)

    Since datasets are large, processing should happen on the server.

    • Create app/api/open-data/[analysis-type]/route.ts.
    • This route should accept filters (Date Range, Category) and return the JSON ready for the chart.

    5. Visualization Component

    Create components/open-data/[analysis-name]-chart.tsx.

    • Use recharts.
    • Input: The processed JSON from the API.
    • Output: BarChart, LineChart, or DataTable.

    Agent Check

    • Did you handle messy data? (NaNs, Invalid Dates).
    • Is the processing efficient? (Avoid nested loops on large arrays if possible).
    Repository
    hcvm/atlas
    Files