This document provides context to Gemini Code Assist to help it generate more accurate and project-specific code suggestions.
webstatus.dev tracks the status and implementation of web platform features across major browsers. It aggregates data from various sources, including Web Platform Tests (WPT), Browser-Compat-Data (BCD), and Chromium's UMA (Usage Metrics). The architecture consists of a Go API (running as a Cloud Run service), multiple Go jobs (running as Cloud Run jobs), and a TypeScript frontend (running as a Cloud Run service). It utilizes Spanner for the database and Valkey as a cache layer.
This section describes the tools and commands for local development.
- Devcontainer: The project uses a devcontainer for a consistent development environment.
- Skaffold & Minikube: Local development is managed by
skaffold, which deploys services to a localminikubeKubernetes cluster. - Makefile: Common development tasks are scripted in the
Makefile. See below for key commands.
make start-local: Starts the complete local development environment using Skaffold and Minikube. This includes live-reloading for code changes.make port-forward-manual: After starting the environment, run this to expose the services (frontend, backend, etc.) onlocalhost.make test: Runs the Go and TypeScript unit tests. Usemake go-testto run only Go tests.make precommit: Runs a comprehensive suite of checks including tests, linting (golangci-lintconfigured via.golangci.yaml), and license header verification. This is the main command to run before submitting a pull request. Common linting errors to watch for includeexhaustruct(missing struct fields) andnlreturn(missing newline before return).make gen: Regenerates all auto-generated code (from OpenAPI, JSON Schema, ANTLR). Usemake openapifor just OpenAPI changes.make dev_workflows: Populates the local Spanner database by running the data ingestion jobs against live data sources.make dev_fake_data: Populates the local Spanner database with a consistent set of fake data for testing.make spanner_new_migration: Creates a new Spanner database migration file ininfra/storage/spanner/migrations.
Detailed architectural guidance, coding standards, and "how-to" guides for specific domains have been moved to Gemini Skills.
To activate these rules in your session, they are automatically loaded from the .agent/skills directory.
The available skills are:
webstatus-backend: Go API, Spanner mappers, and OpenAPI.webstatus-frontend: Lit web components and component testing.webstatus-e2e: Playwright E2E testing and debugging.webstatus-ingestion: Scheduled data ingestion workflows.webstatus-workers: Pub/Sub notification pipeline.webstatus-search-grammar: ANTLR search query parsing.webstatus-pr-creation: Agent workflows for creating PRs and commits.
To keep the skills and this document up-to-date, you can ask me to analyze the latest commits and update my knowledge base. I will use the hidden marker at the end of this file to find the commits that have been made since my last analysis.
You can use the following prompt to ask me to update my knowledge base:
Please update your knowledge base by analyzing the commits since the last analyzed commit stored in
GEMINI.md.
When you give me this prompt, I will:
- Read the
GEMINI.mdfile to find the last analyzed commit SHA. - Use
git logto find all the commits that have been made since that SHA. - Analyze the new commits, applying the "Verify, Don't Assume" principle by consulting relevant sources of truth (e.g.,
openapi.yamlfor API changes, migration files for schema changes). Use theget_pull_requestandget_pull_request_commentstools to get the pull request information for every relevant PR found in the commits. Read the comments and strictly pay attention to any "Corrected Assumptions / Learnings" section in the PR description or commit message to understand context and architectural decisions. - Update the relevant Skill files in
skills/first. - Update the last analyzed commit SHA near the top of this file only after all other updates are complete.