Skip to content

SignalQL quality checklist

Self-assessment against the public bar for v0.1. Status: Met, Partial, or Gap.

Language design

CriterionStatusNotes
v0.1 scope small and enforcedMetscope + compiler limits (limits.ts)
Readable syntax; AI-generatableMetGrammar pack + examples
Deterministic compile → predictable SQLMetSame input → same SQL/params (see compiler tests)
Invalid queries → useful errorsPartialParseError includes clause + token index where applicable; codegen limits use RangeError
Not “SQL with renamed keywords”MetFUNNEL / DURING / portable model are semantic lifts
Funnels, segmentation, aggregation, time solve real jobsMetExample library

Specification

CriterionStatusNotes
Grammar implementableMetEBNF in spec
Core concepts definedMetEvents, users, sessions, properties, time
Portable data modelMetData model
Examples cover common questionsMetSpec + examples + fixtures
Valid and invalid examplesMetScope
Versioning strategy clearMetSchema $id, spec version, release

Compiler / parser

CriterionStatusNotes
Parser tests for v0.1 syntaxPartialParser + compiler tests; expand with golden invalid corpus
AST stable, documented, versionedMetAST schema, JSON Schema file
Parameterized SQLMetCompiler pipeline
Query limits enforcedMetDay span, funnel steps
Deterministic outputMetAsserted in compile tests
Errors point to clause/tokenPartialLexer + parser attach offset/token index; not full spans
Postgres end-to-end firstMetCLI run + fixtures/seed.sql; Local Postgres

Data model

CriterionStatusNotes
Tables/fields documentedMetData model page
Required vs optionalMet
Property access rulesMet
Custom mapping guidanceMetAdapters + model doc
Sample dataset matches standardMetfixtures/seed.sql

Docs / content

CriterionStatusNotes
README < 1 minuteMetRepository root README.md
Neutral and implementation-agnosticMetWhy SignalQL
Spec readableMet
Copy-paste examplesMetLibrary + fixtures
How + whyMetGuide + spec + AI docs
AI prompting practicalMetPrompting guide
Cursor, Claude, ChatGPT, MCPMetIntegrations
GitHub / site in syncMetSite = VitePress build of docs/; release

Playground

CriterionStatusNotes
Public first query without setupGapNo hosted or embedded playground runner on the docs site today
Local playground compile pathMetnpm run dev -w @signalql/playground from a repo checkout
CLI first query pathMetFirst query guide with local commands
Errors teach fixesPartialMessages improved; add “did you mean” later
Generated SQL visibleMetToggle + panel
Sample data meaningfulPartialIllustrative result table for preset queries + seed for CLI/Postgres
Easy example switchingMetButtons
Reinforces v0.1 scopeMetSubtitle on playground

AI readiness

CriterionStatusNotes
AST JSON schemaMetschemas/ + docs
LLM grammar pack conciseMetGrammar pack
MCP safe toolsMet@signalql/mcp
Event discoveryMetlist_events / describe_event
Good/bad prompt examplesMetPrompting guide

Open source quality

CriterionStatusNotes
License MITMetLICENSE
Contributing clearMetCONTRIBUTING.md
One-command testsMetnpm test
No private vendor infrastructure in repoMetBy policy
Release process documentedMetThis release page
Invites external implementersMetSpec + schema + contribution guide

Adoption

CriterionStatusNotes
Works with neutral Postgres/CSV pathsPartialPostgres: CLI + seed. CSV: adapter is demo-oriented; use Postgres for full path
SDK/CLI quickstartMetREADME
Canonical examples (funnel, retention, …)MetExample library
Implementation-neutral positioningMetPositioning docs + integrations
Launch “why AI-native”MetDistribution

Summary: Core quality bar is met for spec, safety, docs, and Postgres path. The current playground experience is local-only (repo checkout + dev server), so a public no-setup runner remains a gap. Other next investments: deeper parser test matrix, optional live playground execution, and a production-grade CSV path.