---
title: "Share output from Claude Code — Krowk setup"
canonical_url: "https://krowk.com/docs/claude-code"
last_updated: "2026-09-02T08:07:57.603Z"
meta:
  description: "Install the krowk skill, add one line to CLAUDE.md, and Claude Code publishes screenshots and recordings to permalinks carrying the commit, branch and model behind them."
  "og:description": "Install the krowk skill, add one line to CLAUDE.md, and Claude Code publishes screenshots and recordings to permalinks carrying the commit, branch and model behind them."
  "og:title": "Share output from Claude Code — Krowk setup"
---

**Docs**

# **Krowk in Claude Code**

One install, one line in CLAUDE.md, and the agent publishes what it produced instead of describing it.

[The CLI reference](https://krowk.com/docs/cli) [MCP setup](https://krowk.com/docs/mcp)

**Setup**

## **Two commands.**

1 — install the binaries and the skill

```
$ curl -fsSL https://krowk.com/install | bash
```

2 — check it landed

```
$ krowk doctor
```

Two pieces. The skill teaches Claude Code the tool; one line of instruction tells it when to use it. The installer handles the first.

## The skill

The install script drops an agent skill into `~/.claude/skills`, so Claude Code picks it up without further setup. It carries the whole tool — the commands, the JSON envelope, the invariants — which means the agent is not working from a half-remembered flag spelling.

Set `KROWK_SKIP_SKILL=1` to install the binaries and nothing else. That is what the GitHub Action does: a runner's home directory is thrown away, so writing a skill into it achieves nothing.

## The instruction

Put this in CLAUDE.md, at the project or the user level. It is the only thing you have to write:

CLAUDE.md

```
After any visual change, capture it (screenshot if static, a short screen recording if it is an interaction) and publish it with the krowk skill. If the skill is missing or fails, run `krowk help --json`, then `krowk push FILE --title "what changed" --json`, and paste `paste.url` where you report the work.
```

It names a fallback on purpose. If the skill is missing — a fresh container, a machine where the installer has not run — the agent reads `krowk help --json` and works from that instead of giving up or inventing a flag.

## What it records without being asked

Claude Code is detected from `CLAUDECODE` and recorded as the harness. The session comes from `CLAUDE_CODE_SESSION_ID`, and the model from `ANTHROPIC_MODEL` when it is set — so a card can say which model produced the screenshot, not only which tool. The repository, commit, branch and dirty flag come from git.

Override any of it with `--agent`, `--session`, `KROWK_MODEL` or a `--metadata key=value` pair, which wins over a detected value.

## If you would rather not shell out

There is an MCP server. `claude mcp add krowk -- krowk-mcp` and the agent gets `krowk_push` as a tool instead of a command.

## **The line above is the whole integration.**

No account needed for the first push, and nothing to configure in the agent beyond the instruction.

[The CLI reference](https://krowk.com/docs/cli) [See the pricing](https://krowk.com/pricing)