Lifecycle & Analysis
The Lifecycle page is the center of your workspace: a canvas of lifecycle stages and steps generated from your code and your schema, with the tracking evidence behind each one. This page covers how analysis works and what you do with the result.
Running analysis
Your first analysis starts automatically right after onboarding, as long as you connected a repository or a database. After that, use the Analyze button on the Lifecycle page. It's a split button with two runs:
- Run full analysis rebuilds the journey in three steps: Analyzing Schema, Events from codebase, Generating Journey.
- Status check re-checks your tracking against the existing journey without rebuilding it: Scanning code, Reading database, Matching events. Once a journey exists, this is the default action.
What analysis reads
- Your Supabase schema (read-only): tables, columns, and types, primary and foreign keys, plus column-level signals like
created_at-style timestamps and state or status columns. Introspection covers thepublicandauthschemas. Never row data. - Your codebase: the analytics events and tracking calls in your linked repository, used to label steps and match them to the tracking you actually have.
From these, Skene builds a Time-to-Value (TTV) journey: the path your users take from signup to value, expressed as a graph.
| Element | What it is |
|---|---|
| Stages | Lifecycle phases, by default Signup -> Activation -> Engagement -> Monetization -> Retention |
| Steps | Meaningful moments in the journey, assigned to a stage |
| Metrics | Numbers worth watching, attached to stages and steps |
| Edges | How steps connect: the paths a user moves along |
The journey canvas
The canvas lays your journey out as stage columns holding step and metric nodes. Every step carries a tracking chip, and this is the part to watch:
- In database: the step is backed by a table or column in your schema.
- An event name: tracking for this step was detected in your product code.
- Not found: no tracking found. This step is a gap. You'd want to know about it before you need the chart.
Click any node to open its detail panel: description, where it was detected in code or schema, what it means in practice, how to measure it, and recent activity.
Editing with the Skene Agent
The agent rail on the right side of the canvas edits the journey with you. Describe a change ("add a step for the first project created") and the agent proposes it as a dashed ghost node on the canvas. Accept writes it into skene-context/journey.yaml in your workspace; Dismiss discards it.
Two views
A switcher on the Lifecycle page toggles between Canvas and Questions:
- Canvas is the graph described above.
- Questions keeps the list of what you want to answer from journey data, grouped by question or by step. Each question lists the events it requires, and warns when a step it depends on has no event to track yet.
Events
The evidence table has its own page: Events, next to Lifecycle in the sidebar. It lists every code and database event analysis found, grouped by stage, with what each event maps to. Summary chips count code events, events observable in the database, steps without tracking, and events not placed yet. This is the fastest way to see your gaps in one place.
Data sources
The Data sources popover on the Lifecycle page shows what the journey is built from, all under skene-context/: journey.yaml (the canonical journey, including agent edits), dbignore.md and eventignore.md (the tables and events analysis skips, see Ignoring events and tables), and schema.yaml. From here you can upload a journey.yaml, a dbignore.md, or an eventignore.md, sync the linked repository, recompile, or clear the journey data.
You can also edit these files without leaving the popover. Select a workspace file and click its contents (or the pencil icon) to edit in place, then Save, which also answers to Cmd/Ctrl+S. Cancel discards the edit. Files pulled from the linked repository stay read-only.
An uploaded or CLI-pushed journey.yaml takes precedence over the Analyze pipeline: your hand-maintained journey wins.
Live counts load automatically when the page opens if your workspace has a connected analytics source (PostHog or Mixpanel); otherwise, use Fetch last 7d data. Either way, Skene queries event and database counts for the last seven days, so the canvas reflects recent volume. Event counts come from your analytics source when one is connected. Table counts always come from Supabase and need a read-write connection; the read-only default gives you schema, not counts.
From the CLI
You can run the analysis half locally and push the result:
# Analyse your codebase on your machine
uvx skene analyse-journey .
# Push the result to Skene Cloud
uvx skene push
The CLI analyzes your codebase (not the database directly) and pushes the journey to your workspace. Cloud cross-references it with its own schema introspection. See the skene CLI docs.
Next steps
- Events: the evidence behind the journey as one filterable table
- GitHub Integration: turn on PR reviews so the tracking behind your journey stays honest
- Supabase Integration: connection modes and what Skene reads