Skene
Product
Pricing
Docs
Blog
About
Log InSign up
ProductPricingDocsBlogAbout
Log InSign up
Skene subpage background texture
Documentation

Configuration

Drop a skene.config.json at the repo root. Skene reads it on every run.

Minimal config

{
  "tables": ["events", "analytics_events"],
  "include": ["src/**/*.ts", "src/**/*.tsx"],
  "ignore": ["**/*.test.ts", "**/*.spec.ts"]
}
  • tables: which Supabase event tables to track. Defaults to every table your code writes to.
  • include: glob patterns Skene scans. Defaults to common source globs.
  • ignore: glob patterns Skene skips. Defaults to test and build outputs.

Accept an intentional change

Sometimes you mean to rename an event. The next run still flags it. Acknowledge once and Skene updates the baseline on merge.

{
  "accepted_changes": [
    {
      "from": "checkout_completed",
      "to": "checkoutCompleted",
      "reason": "renamed to match the new naming convention (2026-05-22)"
    }
  ]
}

Once merged, the new event becomes the baseline. Future PRs only flag drift from there.

Environment-specific rules

Different rules per environment. Skene picks the block matching SKENE_ENV at run time.

{
  "environments": {
    "production": {
      "ignore": ["src/dev/**", "src/scripts/**"]
    },
    "staging": {
      "ignore": []
    }
  }
}

Ignoring a single call

When a specific call is intentionally excluded from validation (debug logging, internal tooling), inline-comment it.

// skene-ignore: internal debug logging
await supabase.from('events').insert({ name: 'dev_debug' })

Skene skips the line and notes the reason on the run.

What is next

  • Install Skene: pick a surface
  • What Skene catches: the five failure modes
  • What Skene reads: the Supabase writes Skene tracks
Skene

Product

How it worksFeaturesSupabaseArchitectureIntegrationsSecurityPricing

Resources

DocumentationGlossaryPlaybooksBlog

Company

AboutOpen sourceContactPrivacyTerms
© 2026 Skene. All rights reserved.
Privacy PolicyTerms of Service
Skene