Learn Claude Code by Building DevPulse · Chapter 8

A standup that runs on its own

You want your standup ready before you even open Claude, so can Claude Code work without a chat? By the end of this chapter, one command, .\standup.ps1, writes the standup and DevPulse shows it.

One sitting~6 min read, ~15 min to build along
You start fromchapter 7's DevPulse, with /standup
You buildstandup.ps1: the standup in one command
Chapter 8 of 15Claude Code without a chat
Goes with Episode 8"Can Claude Code work without a chat?". The video is being made. This page teaches the same steps, at your own pace.
In a hurry?Jump to the quick reference: every command and key in this chapter, what it does, and when to use it.
Every prompt, ready to copyThis chapter's prompts and commands, each with a Copy button. Type them yourself first; copy if you are stuck or behind.
Where you areDevPulse has the /standup skill and a Standup panel, from chapter 7. Work in PowerShell in your project folder, outside Claude.

The standup should be ready before you are

In chapter 7, /standup made the standup one command. But you still open Claude, wait for it, and type the command.

Say you want the standup ready the moment you sit down. Nobody opens a chat at 8 in the morning to ask for it.

The question for this chapter

Can Claude Code do a job without a chat window at all?

One request, no chat: claude -p

Add -p to claude and it runs one request, prints the answer, and exits. This is called headless mode. You can also send it text from another command with |, the pipe.

Type this in PowerShell (Mac: Terminal), in your project foldergit log --since=yesterday --oneline | claude -p "turn this into a three-line standup"
git log piped into claude -p: Yesterday: added a Standup panel and standup skill, best-streak tracking, today's total in the tab title. Today: (fill in; nothing in the commits says what's next). Blockers: None. The commits only cover what's done, so I left Today open instead of inventing a plan.
Three lines from the commits, then the prompt comes back. Note: it left Today open rather than invent a plan.

Let it use only the tools it needs

A command that runs on its own should do one job, and nothing more. So you list exactly what it may use, with --allowedTools. Here: read files, write files, and run git log.

Type this in PowerShell (Mac: Terminal), as one lineclaude -p "Read data/tasks.json and the git log since yesterday; write a three-line standup to data/standup.md" --allowedTools "Read,Write,Bash(git log:*)"
The headless command with --allowedTools: I wrote the standup to data/standup.md. Yesterday: Nothing logged. Today: still to do and already done. Blockers: None. Nothing is dated yesterday; I didn't modify tasks.json.
It read the tasks and the log, wrote data/standup.md, and says it did not touch tasks.json.

Bash(git log:*) means: any command that starts with git log. Any other command would be refused.

Wrap it in a script

That line is long to type each morning. Ask Claude to put it in a script. Start claude, then:

Type this into Claude CodeWrap that headless standup command in standup.ps1, so I can run it with .\standup.ps1 from this folder. Keep the same allowed tools.
Claude: I can't find the headless standup command, so I haven't written standup.ps1. I'd rather not guess the allowed tools. Paste the command you ran, or tell me which tools it allowed.
A new session cannot see what you typed in the terminal. So it asks, instead of guessing the allowed tools.
Give it the exact commandThis is the command: claude -p "Read data/tasks.json and the git log since yesterday; write a three-line standup to data/standup.md" --allowedTools "Read,Write,Bash(git log:*)"
Write(standup.ps1): two lines, Set-Location $PSScriptRoot and the claude -p command. I created standup.ps1; it first switches to the script's own folder. If PowerShell blocks it with an execution-policy error, run powershell -ExecutionPolicy Bypass -File .\standup.ps1.
Two lines: go to the script's own folder, then run the command. It also warns about Windows' script policy. The grey run it and show me the output is only a suggestion.

On a Mac, ask for standup.sh instead, and run it with ./standup.sh.

Run it, then look at the app

Type /exit, then run the script from PowerShell.

Windows: type this in PowerShell.\standup.ps1
Mac: type this in Terminal./standup.sh
.\standup.ps1: I wrote the standup to data/standup.md, with the Yesterday, Today and Blockers lines.
One command, the standup written. No chat opened.
DevPulse's Today view: the Standup panel shows the new Yesterday, Today and Blockers lines.
Refresh the app: the panel shows the new standup.

Windows Task Scheduler can run standup.ps1 every morning by itself. We do not set that up here, but it is the next step if you want it.

Careful here

If PowerShell says running scripts is disabled, run powershell -ExecutionPolicy Bypass -File .\standup.ps1. That allows this one run, and changes nothing else.

What headless costs

Each run uses your plan, like any request. And nobody watches it: if the job goes wrong, you find out later. That is why the allowed tools are kept so small.

There is a bigger problem coming. The code has grown, and so far the same Claude that wrote it is the one that checks it. In chapter 9 we get a second pair of eyes.

Quick reference

The prompts from this chapter, ready to copy: every prompt, chapter 8.

Command or keyWhat it doesUse it when
claude -p "…"Runs one request, prints the answer and exits; no chatA job you want done without opening Claude
… | claude -p "…"Sends another command's output in as the text to work onThe input comes from git, a file or a log
--allowedTools "Read,Write,Bash(git log:*)"Lets the run use only these toolsA script should do one job, and nothing more
.\standup.ps1Runs the script in this folderEvery morning
powershell -ExecutionPolicy Bypass -File .\standup.ps1Runs it when Windows blocks scriptsYou see an execution-policy error

References

Where each command and option on this page comes from. Every screenshot is from our own recording on 29 Oct 2026, Claude Code 2.1.312.

  1. Anthropic · Run Claude Code programmatically (headless) claude -p: one request, an answer printed, no chat; reading from a pipe; output formats. https://code.claude.com/docs/en/headless
  2. Anthropic · CLI reference --allowedTools and its patterns, such as Bash(git log:*). https://code.claude.com/docs/en/cli-reference
  3. Microsoft · about_Execution_Policies Why Windows may block a .ps1 script, and how to allow it. https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_execution_policies
  4. My own recording · 29 Oct 2026, Windows 11 Both headless commands worked as written in PowerShell; no execution-policy error on this PC.