## basics

- this is a deno app
- after editing any graphql documents, run `deno task codegen` to get the
  updated types after it's updated,
  `const result = await client.request(query, { teamId });` should work and be
  typed (and not require explicit types)
- graphql/schema.graphql has the graphql schema document for linear's api
- for diagnostics, use `deno check` and `deno lint` (do not use tsc or rely on
  LSP for this)
- when coloring or styling terminal text, use deno's support for css style
  formatting, e.g. console.log("%cHello World", "color: red"); or
  console.log("%cHello World", "text-decoration: underline");
- prefer `foo == null` and `foo != null` over `foo === undefined` and
  `foo !== undefined`
- add imports at the top of the file, not inside functions
- avoid the typescript `any` type - prefer strict typing, if you can't find a
  good way to fix a type issue (particularly with graphql data or documents)
  explain the problem instead of working around it

## changelog entries

do not update the CHANGELOG.md manually. if asked to add a changelog entry use
the changelog cli

    changelog add --type <TYPE> <DESCRIPTION>

- description should be lowercase
- types is one of added|changed|deprecated|removed|fixed|security
- write in the imperative (i.e. 'fix' and not 'fixes' or 'fixed')

## tests

- tests on commands should mirror the directory structure of the src, e.g.
  - src/commands/issue/issue-view.ts
  - test/commands/issue/issue-view.test.ts
- use `deno task test` instead of `deno test`
- use the NO_COLOR variable for snapshot tests so they don't include ansi escape
  codes
