with one click
webstatus-ingestion
// Use when working on Go data ingestion workflows, scheduled Cloud Run jobs, or adding new scrapers for BCD, WPT, or other data sources.
// Use when working on Go data ingestion workflows, scheduled Cloud Run jobs, or adding new scrapers for BCD, WPT, or other data sources.
Use when creating or modifying Go backend API endpoints, modifying Spanner database schemas, or working with OpenAPI and Spanner mappers.
Use when working with the webstatus notification pipeline, event producer, push delivery, or push workers (e.g., Email, Webhooks), and Pub/Sub subscribers.
Use when modifying the ANTLR search grammar, adding new search terms, or working with the query parser and builder.
Use when writing, modifying, or debugging Playwright end-to-end (E2E) tests for webstatus.dev.
Use when modifying the frontend SPA, working with TypeScript, Lit web components, Shoelace components, or frontend tests.
Use when upgrading toolchain versions (Go, Node.js, Terraform, Playwright) or updating the DevContainer and Github CI configurations.
| name | webstatus-ingestion |
| description | Use when working on Go data ingestion workflows, scheduled Cloud Run jobs, or adding new scrapers for BCD, WPT, or other data sources. |
This skill provides guidance for developing and deploying the scheduled data ingestion workflows (Cloud Run Jobs) in the workflows/ directory.
workflows/steps/services/.event_producer to begin the notification diffing process.For a detailed map of data sources, Spanner target tables, and job orchestration patterns, see references/architecture.md.
Ingestion jobs must be decoupled from the core DB logic and the "Backend" API.
spanneradapter (e.g., BCDConsumerAdapter).spanneradapters (e.g. BCDConsumer).Backend spanner adapter from a workflow.pkg/data/downloader.go and parser.go).web_features_mapping_consumer when syncing browser-specific implementation keys or "implementer" metadata.uma_export for any changes involving Chromium usage metrics or histograms.lib/ (e.g. lib/webdxfeaturetypes) to decouple logic from external source schemas.make dev_workflows exists to pull live data, it is generally preferred to use make dev_fake_data for UI and Backend development to ensure stability.manifests/job.yaml for workflows (scheduled jobs), unlike workers which use pod.yaml.make precommit to execute the full suite of Go tests, formatting, and linting.make go-lint to lint all Go code using golangci-lint.go.work), to run tests quickly for a single package without running the whole suite, execute go test from within the specific module directory:
cd workflows/steps/services/<workflow_name> && go test -v ./...
When you add a new workflow or change the ingestion patterns:
docs/ARCHITECTURE.md to reflect the new external source or data flow.GEMINI.md to ensure I am aware of the changes.