agentsclimarketplace

Finfocus routing

Skill rshade/finfocus/agent-skills/finfocus-routing

FinOps CLI for Pulumi — projected costs, actual spend tracking, budget enforcement, and cost optimization for cloud infrastructure

Install
npx -y skills add rshade/finfocus --skill finfocus-routing

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Configure and debug FinFocus intelligent plugin routing. Use when setting up multi-plugin routing, configuring priority and fallback rules, writing pattern matching for resource types, testing route selection, or debugging why a plugin isn't receiving cost queries. Triggers on: "configure routing", "plugin priority", "fallback chain", "route test", "multi-region routing", "pattern matching", "config routes", "plugin selection", "routing config", or any task involving finfocus plugin routing configuration and debugging.

SKILL.md

4.3 KB, as published. Nobody here has run it

<!-- Copyright 2025-2026 Richard Shade. Licensed under Apache-2.0. --> <!-- SPDX-License-Identifier: Apache-2.0 -->

FinFocus Plugin Routing

Route cost queries to the right plugin based on provider, region, patterns, and priority.

No Config = No Routing

Without a routing: section in config.yaml, the engine queries all plugins for every resource. Add routing config only when you need control.

Config Format

# ~/.finfocus/config.yaml (or $PROJECT/.finfocus/config.yaml)
routing:
  plugins:
    - name: aws-public        # Must match installed plugin name
      priority: 10            # Higher = preferred (default: 0)
      features:               # Limit capabilities (default: all)
        - ProjectedCosts
      patterns:               # Declarative type matching (optional)
        - type: glob
          pattern: "aws:ec2:*"
      fallback: true          # Try next on failure (default: true)

Priority and Fallback

  • Higher number = higher priority (sorted descending, stable sort)
  • Equal priority (all 0) = plugins queried in parallel
  • $0.00 is a VALID result — does NOT trigger fallback
  • Only nil/empty results or errors trigger fallback to next plugin
  • InvalidArgument does NOT trigger fallback (plugin explicitly rejected)

Features

FeaturegRPC MethodCapability
ProjectedCostsGetProjectedCostPLUGIN_CAPABILITY_PROJECTED_COSTS
ActualCostsGetActualCostPLUGIN_CAPABILITY_ACTUAL_COSTS
RecommendationsGetRecommendationsPLUGIN_CAPABILITY_RECOMMENDATIONS
CarbonGetCarbonFootprintPLUGIN_CAPABILITY_CARBON
DryRunPerformDryRunPLUGIN_CAPABILITY_DRY_RUN
BudgetsGetBudgetStatus + 3 othersPLUGIN_CAPABILITY_BUDGETS
BatchCostBatchCostPLUGIN_CAPABILITY_BATCH_COST

Empty features list = all features enabled. Feature names are case-sensitive.

Pattern Matching

Two types for declarative resource type matching:

  • glob: filepath.Match semantics, * matches across / boundaries. Example: aws:ec2:* matches aws:ec2:Instance
  • regex: RE2 syntax. Example: aws:(ec2|rds)/.* matches aws:ec2/instance:Instance

Patterns take highest precedence over automatic provider matching.

Matching Precedence

  1. Declarative patterns — glob/regex against resource type
  2. Automatic providerSupportedProviders from GetPluginInfo
  3. Global plugins — empty or ["*"] SupportedProviders

Internal Pulumi types (pulumi:*) skip automatic matching unless explicitly matched by a pattern.

Region Matching

Region extracted from resource properties in order: region > availabilityZone > availability_zone > location > ARN.

  • AZs normalized: us-west-2aus-west-2, us-central1-aus-central1
  • Empty region on either side = wildcard (matches anything)
  • Comparison is case-insensitive

CLI Commands

# Show effective routing rules
finfocus config routes list
finfocus config routes list --output json

# Simulate plugin selection (no plugin contact needed)
finfocus config routes test aws:ec2:Instance
finfocus config routes test aws:ec2:Instance us-east-1
finfocus config routes test aws:ec2:Instance --output json

Common Scenarios

See references/routing-scenarios.md for multi-region, feature-based, pattern-based, and multi-cloud configurations with complete YAML examples.

Validation

# Validation runs automatically on config load
# Errors are blocking, warnings are non-blocking
  • Errors: empty name, missing plugin, invalid regex, negative priority, invalid pattern type, empty pattern
  • Warnings: duplicate plugin config, unknown feature names

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.