Skene
CLI docs

skene CLI documentation

Analyze codebases for product-led growth opportunities, generate growth plans, and build implementation prompts.

Configuration

How to configure skene using config files, environment variables, and CLI flags.

Configuration priority

Settings are loaded in this order (later overrides earlier):

1. User config     ~/.config/skene/config     (lowest priority)
2. Project config  ./.skene.config
3. Env variables   SKENE_API_KEY, SKENE_PROVIDER, etc.
4. CLI flags       --api-key, --provider, etc.        (highest priority)

Config file locations

LocationPurpose
./.skene.configProject-level config (per-project settings)
~/.config/skene/configUser-level config (personal defaults)

Both files use TOML format. The user-level path respects XDG_CONFIG_HOME if set.

Creating a config file

# Create .skene.config in the current directory
uvx skene config --init

This creates a sample config file with restrictive permissions (0600 on Unix).

Interactive editing

Running config without flags opens interactive editing:

uvx skene config

This prompts you for:

  1. LLM provider — numbered list: openai, gemini, anthropic, lmstudio, ollama, generic
  2. Model — numbered list of provider-specific models, or enter a custom name
  3. Base URL — only if generic provider is selected
  4. API key — password input (masked), with option to keep existing value

Viewing current config

uvx skene config --show

Displays all current configuration values and their sources.

Config options

OptionTypeDefaultDescription
api_keystringAPI key for LLM provider
providerstring"openai"LLM provider name
modelstringPer providerLLM model name
base_urlstringBase URL for OpenAI-compatible endpoints
output_dirstring"./skene-context"Default output directory
verbosebooleanfalseEnable verbose output
debugbooleanfalseEnable debug logging
exclude_folderslist[]Folder names to exclude from analysis
upstreamstringUpstream workspace URL for push command

Default models by provider

ProviderDefault model
openaigpt-4o
geminigemini-3-flash-preview
anthropicclaude-sonnet-4-5
ollamallama3.3
genericcustom-model

Sample config file

# .skene.config

# API key (can also use SKENE_API_KEY env var)
# api_key = "your-api-key"

# LLM provider: openai, gemini, anthropic, claude, lmstudio, ollama, generic
provider = "openai"

# Model (defaults per provider if not set)
# model = "gpt-4o"

# Base URL for OpenAI-compatible endpoints (required for generic provider)
# base_url = "https://your-api.com/v1"

# Default output directory
output_dir = "./skene-context"

# Enable verbose output
verbose = false

# Enable debug logging (logs LLM I/O to .skene/debug/)
debug = false

# Folders to exclude from analysis
# Matches by: exact name, substring in folder names, path patterns
exclude_folders = ["tests", "vendor"]

Environment variables

VariableDescriptionExample
SKENE_API_KEYAPI key for LLM providersk-...
SKENE_PROVIDERProvider namegemini
SKENE_BASE_URLBase URL for generic providerhttp://localhost:8000/v1
SKENE_DEBUGEnable debug modetrue
SKENE_UPSTREAM_API_KEYAPI key for upstream authenticationsk-upstream-...
LMSTUDIO_BASE_URLLM Studio server URLhttp://localhost:1234/v1
OLLAMA_BASE_URLOllama server URLhttp://localhost:11434/v1

Upstream credentials

When using skene push to deploy to Skene Cloud, upstream URL, workspace slug, and API key are stored in .skene.config (with 0600 permissions). These fields are managed by skene login and skene logout. See the login guide for details.

Excluding folders

Custom exclusions from both the config file and --exclude CLI flags are merged with the built-in defaults.

Default exclusions

The following directories are always excluded: node_modules, .git, __pycache__, .venv, venv, dist, build, .next, .nuxt, coverage, .cache, .idea, .vscode, .svn, .hg, .pytest_cache.

How matching works

Exclusion matches in three ways:

  1. Exact name"tests" matches a folder named exactly tests
  2. Substring"test" matches tests, test_utils, integration_tests
  3. Path pattern"tests/unit" matches any path containing that pattern

Examples

# CLI flags (merged with config file exclusions)
uvx skene analyze . --exclude tests --exclude vendor

# Short form
uvx skene analyze . -e planner -e migrations -e docs
# In .skene.config
exclude_folders = ["tests", "vendor", "migrations", "docs"]

Next steps