# Working copies (/docs/cli/working-copies)

A working copy is a folder created by [`barndog skills pull`](/docs/cli/skills#barndog-skills-pull-name), or a new folder with a `SKILL.md` that you push for the first time. Run these commands from the folder or any folder inside it. For a walkthrough, see [Author and improve a Skill](/docs/guides/author-skills).

## `barndog status` [#barndog-status]

Inside a working copy, shows which files you changed and the state of your Suggested Change. Outside a working copy, shows the selected machine-wide environment.

```bash
barndog status
```

## `barndog diff` [#barndog-diff]

Inside a working copy, shows local changes compared with the version you pulled. Outside a working copy, previews environment synchronization without applying new native writes. A pending interrupted synchronization is recovered first.

```bash
barndog diff
```

## `barndog push` [#barndog-push]

Uploads your changes as a Suggested Change. If the folder already has an open Suggested Change, push adds a new revision to it.

```bash
barndog push --title "Clarify the review checklist"
```

| Option              | Description                                                                      |
| ------------------- | -------------------------------------------------------------------------------- |
| `--title <title>`   | The Suggested Change's title.                                                    |
| `--origin <origin>` | The scope that should own a **new** Skill. Not needed for pulled Skills.         |
| `--publish`         | Publish directly instead of proposing. Needs admin rights or personal ownership. |
| `--new`             | Start a new Suggested Change instead of updating the linked one.                 |

You don't need Git or local commits. BarnDog compares your files with the version you pulled and sends one combined change. `.git` folders are left out, and symlinks are rejected.

If a push fails partway, the next push retries exactly the same submission. If the server rejects it, for example because it is out of date, your edits stay as they are.

## `barndog pull` [#barndog-pull]

Updates the working copy. It first brings in edits made on the server, such as reviewer suggestions that were applied. It then merges in the latest published version.

```bash
barndog pull
```

Non-overlapping text edits are combined automatically. Overlapping edits get conflict markers. For binary files, and for files one side deleted, your local version is kept. Before every pull, BarnDog saves a snapshot to `~/.barndog/workspaces/snapshots/`.

## `barndog resolve <path>` [#barndog-resolve-path]

Marks a conflicted file as resolved after you've fixed it.

```bash
barndog resolve SKILL.md
```

You can't push while any file is still conflicted.
