stevenacoffman/webapp
Skills specific to Khan Academy's webapp codebase.
Use when writing or reviewing any Go code in github.com/Khan/webapp. Covers all 31 custom linters and key standard linters enforced at CI. Only for github.com/Khan/webapp, not any other repository.
Use when writing Go code in github.com/Khan/webapp that adds, publishes, or tests CEDAR analytics events. Covers analytics_events.yml, make eventgen (eventsync, eventgen), generated publish functions, and verifying published events in tests. Only for github.com/Khan/webapp.
Use when writing Go code in github.com/Khan/webapp that checks, gates on, or mocks a GrowthBook feature flag. Covers the KAContext interface, featureflags.IsOn, IsOff, GetFeatureValue, the Attributes struct, and mocking flag values in tests. Only for github.com/Khan/webapp.
Use when writing Go code in github.com/Khan/webapp that makes service-to-service GraphQL requests or tests resolvers. Covers gqlclient.Client vs ClientAdapter, AsUser and AsServiceAdmin, BuildTestClientForSchema, gqltest.Query/Mutate/QueryType for federated types, js.Obj, and the query safelist.
Use when writing or reviewing Go code in github.com/Khan/webapp that touches context. Covers KAContext sub-interface selection, Upgrade() entry points, logging, time, HTTP, request data, lifecycle methods, and test contexts. Only for github.com/Khan/webapp.
Use when working in github.com/Khan/webapp and you need the Make target to test, lint, fix, serve, deploy, run codegen, start the dev server, or rebuild linters. Covers make check vs tesc vs lint, deps, proto, graphql, and go_lint_deps. Only for github.com/Khan/webapp.
Use when writing Go code in github.com/Khan/webapp that publishes or receives Google Cloud Pub/Sub messages. Covers SendJSON/SendProtobuf, push subscription handlers, pubsub.yaml, ordering keys, read-only mode, and asserting published messages in tests. Only for github.com/Khan/webapp.
Use to review a github.com/Khan/webapp pull request end to end: scope the diff from the deploy-branch merge base, judge it against Go advice and webapp rules, polish with rumdl and vale, and post findings as inline GitHub PR review comments rather than in chat.
Use when writing Go code in github.com/Khan/webapp that enqueues or handles Cloud Tasks. Covers TaskConfig, queue.yaml, CreateTask/DeleteTask, the GraphQLTask helper for deferred mutations, serve.CreateTaskHandler, header forwarding, and taskstest with RunAllTasks. Only for github.com/Khan/webapp.
Use when writing or reading Go tests in github.com/Khan/webapp. Covers khantest.Suite vs servicetest.Suite, KAContext in tests, fake datastore, pubsub, tasks, secrets, and featureflags clients, and GraphQL resolver tests with BuildTestClientForSchema and gqltest.Query/Mutate/QueryType.