···160160yarn run check
161161```
162162163163+## When and how do I add a changeset?
164164+165165+Our changelogs and releases are maintained using `changeset`. For each PR that actively changes the
166166+behaviour of one or more packages in our monorepo it allows you to log the change and classify it
167167+per package as either `patch`, `minor`, or `major`.
168168+169169+You won't need to add a changeset if you're simply making "non-visible" changes to the docs or other
170170+files that aren't published to `npm`.
171171+172172+If you are however making visible changes you can track a change by calling the `changeset` CLI.
173173+174174+```sh
175175+# In the root of the urql repository call:
176176+yarn changeset
177177+```
178178+179179+This will open an interactive CLI that asks you to track your changes and enter a change message.
180180+You should always add to the message, what you've changed (not which package if it's only for a
181181+single package though) and what the impact is. If it's a breaking change it should also include some
182182+instructions on how users should update their code.
183183+184184+This will create a new "changeset file" in the `.changeset` folder, which you should commit and
185185+push, so that it's added to your PR.
186186+163187## How do I release new versions of our packages?
164188165189The process of releasing versions is automated using `changeset`. This moves a lot of
···169193170194First check what changes you're about to release with `yarn changeset status`.
171195172172-Then the process is similar to using `yarn version` and `yarn publish`:
196196+Then the process is similar to using `yarn version` and `yarn publish`.
197197+198198+First we'll run `yarn changeset version` to bump all packages' versions and update CHANGELOG files:
173199174200```sh
175201# This will automatically bump versions as necessary and update CHANGELOG files:
176202yarn changeset version
177177-# Please check all versions and CHANGELOGs manually.
203203+```
204204+205205+> **Note:** This command requires you to create a [GitHub Personal Access Token](https://github.com/settings/tokens/new)
206206+> and have it set on the `GITHUB_TOKEN` environment variable, either globally, e.g. in your
207207+> `~/.profile` file, or locally in a `.env` file.
208208+209209+Then verify that the updated `package.json` and `CHANGELOG.md` files look correct and commit the
210210+changes:
211211+212212+```sh
213213+# Commit all updated files
214214+git commit -a -m 'Version Packages'
215215+```
216216+217217+At this point we have a new commit with packages that have been updated and should be published.
218218+Please don't push this commit before publishing so that we keep `master` in a pre-release state, in
219219+case the publish actually fails!
220220+221221+```
178222# Then publish all new packages / versions:
179223yarn changeset publish
224224+# And push the "Version Packages" commit and all tags afterwards:
225225+git push && git push --tags
180226```
227227+228228+Publishing the packages will also create the tags, it won't however push them automatically. After
229229+you've pushed the new tags, please make sure to update releases with the new content in each
230230+`CHANGELOG.md`, like so: https://github.com/FormidableLabs/urql/releases/tag/%40urql%2Fexchange-graphcache%402.2.2