Learn Claude Code by Building DevPulse · Chapter 7

A standup skill

Every morning you type the same long instruction for your standup, so how do you turn it into one command? By the end of this chapter, DevPulse has its own /standup skill and a Standup panel that shows what it wrote.

One sitting~7 min read, ~15 min to build along
You start fromchapter 6's DevPulse
You buildthe /standup skill and a Standup panel
Chapter 7 of 15our first tool of our own
Goes with Episode 7"How do I stop typing the same instructions?". 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 with tests and a git history, from chapters 1 to 6. The server runs in your second tab.

The same instruction, every morning

Say your team has a standup every morning. Before it, you type the same thing into Claude: read today's tasks, read yesterday's commits, write three lines.

It works. But it is the same long sentence every day, and some days you forget a part of it.

The question for this chapter

How do you write an instruction down once, and run it with one short command?

Skills already built in

Type / in Claude Code. A list opens. Some lines are commands you know, like /init. Others are skills: written instructions Claude follows for one kind of job.

The / menu: /commit-commands:commit (from the plugin), /verify, /init, /add-dir, each with a one-line description.
Type / and keep typing to filter. Built-in skills, plugin commands and your own skills all appear here.

Try one on a file you wrote in chapter 5.

Type this into Claude Code/simplify streak.js
Claude: I made one simplification in streak.js, and the 18 tests still pass. Fixed: bestStreak re-parsed the previous day each time; it now keeps the next expected date. Skipped, nothing to change: reuse, efficiency, altitude.
It tidied one thing in your hand-written bestStreak, kept all 18 tests passing, and listed what it chose not to change.

Write your own skill

A skill is a folder with one file in it, SKILL.md. A project skill lives in your project, in .claude/skills/. You can ask Claude to write it.

Type this into Claude Code, as one lineCreate a project skill called standup in .claude/skills/standup/SKILL.md. It reads data/tasks.json and the git log since yesterday and writes a three-line standup (Yesterday, Today, Blockers) to data/standup.md.
Claude describes the skill: the output, the Yesterday, Today and Blockers lines, the time format from CLAUDE.md, no invented content; it says it based the Blockers rule on its own guess, and that .claude/skills is not ignored by git.
Written in 16 seconds. It even follows our CLAUDE.md rule for times, and says which part was its own guess. The grey line is only a suggestion.

Now read what it wrote. One small surprise on Windows first.

! type .claude\skills\standup\SKILL.md fails: /usr/bin/bash: type: not found. Claude explains: the shell here is Git Bash, not cmd.exe; use forward slashes and cat.
! runs commands in Git Bash on Windows, not in PowerShell. Backslashes and type fail; forward slashes and cat work.
Type this into Claude Code! cat .claude/skills/standup/SKILL.md
The end of SKILL.md: step 6, show the three lines to the user; Rules: always display times as 1 h 30 min; each section a single line; only use facts from the tasks and git log; Nothing logged when empty.
The end of the file: the steps, then the rules. Plain words, like a note to a new colleague.
Part of SKILL.mdWhat it is for
name: standupThe command: /standup
description:When to use it. Claude reads this to decide whether the skill fits a request.
The steps and rulesWhat Claude does each time the skill runs
Careful here

Claude may also start a skill on its own when your request matches its description. For a skill that changes things, add disable-model-invocation: true under the name. Then only you can start it.

Run it, then show it in the app

The skill appears in the / menu straight away.

Type this into Claude Code/standup
I wrote the standup to data/standup.md: Yesterday: Nothing logged. Today: already planned the DevPulse server and committed; still open: the tasks API and the Week view review. Blockers: None. Then it explains why Yesterday is empty.
Three lines, from your real tasks and commits. It also says why Yesterday is empty: everything was done today.
Then type thisAdd a Standup panel to the Today view that shows data/standup.md.
Claude: I added a Standup panel to the Today view, above the add-task form: a GET /api/standup endpoint in server.py, the panel in index.html built with textContent, and a test in test_server.py.
A small endpoint, the panel, and a test. It notes the panel shows whatever /standup last wrote.

Restart the server in your second tab (Ctrl+C, then python server.py; Mac: python3) and refresh the page.

DevPulse's Today view with a Standup panel above the form: Yesterday, Today and Blockers in bold, with the lines from data/standup.md.
The standup, in the app. Commit it with /commit-commands:commit.

What a skill costs

A skill's name and description are loaded into every session, so a long list of skills costs a little each time. Keep each description short and exact.

And a skill still needs you to open Claude and type /standup. What if the standup were ready before you even started Claude? That is chapter 8.

Quick reference

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

Command or keyWhat it doesUse it when
/Lists every command and skill you can use hereYou want to see what is built in
/simplify fileTidies code without changing what it doesCode works but reads awkwardly
Create a project skill called …Writes .claude/skills/<name>/SKILL.md for youYou type the same instruction again and again
/<skill name>Runs your skillYou need that job done
! cat .claude/skills/<name>/SKILL.mdShows the skill's fileYou want to read or check what Claude wrote
disable-model-invocation: trueA line in SKILL.md: only you can start the skillThe skill changes things, so Claude should not run it on its own

References

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

  1. Anthropic · Agent skills in Claude Code What a skill is, where project and personal skills live, SKILL.md's name and description, and disable-model-invocation. https://code.claude.com/docs/en/skills
  2. Anthropic · Slash commands The / menu: built-in commands, skills and plugin commands in one list. https://code.claude.com/docs/en/slash-commands
  3. My own recording · 29 Oct 2026, Windows 11 The skill was written in 16 seconds; /standup ran as a command straight away.