DevOps Peach

Claude Code in Practice · The .claude toolbox – Skills, agents, hooks and MCP · Lesson 1 of 3

The .claude folder and turning repeats into skills

Agents, skills, settings and rules live in a hidden folder most users never open. Ours holds six agents and three skills, and each one started as something we typed again and again.

Practice interactively →

Files and folders whose names start with a dot are hidden by default, which is why many people use Claude Code for months without opening .claude/. It is where you shape how Claude works in this project.

What ours contains

CLAUDE.md                     project brain (lesson 3)
.claude/
  agents/
    assessment-writer.md      writes quiz, commands, lessons from notes
    tech-reviewer.md          independent check of graded content
    codex-reviewer.md         reviews work another AI did
    devops-training-reviewer.md   read-only site + content audit
    content-extractor.md      turns slide text into notes
    video-scriptwriter.md     2-minute module video scripts
  skills/
    frontend-review/SKILL.md
    devops-training-review/SKILL.md
    technical-language-review/SKILL.md
  settings.json               permissions, hooks (team, committed)
  settings.local.json         your own overrides (not committed)

Skill, agent, rule: which one?

You want… Use Our example
A recipe Claude follows when the task comes up Skill (SKILL.md, runs in your session) technical-language-review: the checklist for Vietnamese/English quality
A separate worker with its own context and tools Agent (agents/*.md) tech-reviewer: reads the quiz cold and reports issues
A fact that applies to every session CLAUDE.md line "Reply in Vietnamese"
A fact for one part of the code only Rule with a path filter (.claude/rules/) "In content/cert/ keep the numbered question headings"

How a repeat becomes a skill

Ask yourself: what did I type more than three times this week? For us it was "check this lesson for missing diacritics, English product names and sentences over 25 words". Now it is technical-language-review/SKILL.md: a short description (so Claude knows when to use it), the checklist, and the report format. Claude loads it automatically when the task matches, or you call it by name.

A good skill has:

Ask Claude to write the skill

You do not have to write it by hand. After doing a task well once, say: "Turn what we just did into a skill under .claude/skills/, with a description, the steps and the report format." Then read it and cut what is vague.

Keep the team's skills and agents in Git, so everyone, and every new session, gets the same tools.

Use case: From a repeated prompt to a review skill

The situation

After writing each module, we pasted a long request: check accuracy against official docs, check commands for the right shell, check labs clean up cloud resources, check Vietnamese diacritics and English product names, report as a table with severity. It was a different version every time, depending on who remembered what.

What we built

Three skills, split by kind of check, so each stays short:

Skill Checks Typical finding
devops-training-review Technical accuracy, shell, versions, lab cleanup, secrets, cost "az vm create example missing --size; default changed"
technical-language-review Diacritics, sentence length, product names, terms kept in English "'Microsoft Entra ID' written as 'Azure AD'"
frontend-review Layout at 360–1440 px, contrast, focus, broken links "Quiz options overflow at 360 px"

Then one agent, devops-training-reviewer, preloads all three skills and has no Write or Edit tools. It can only read and report.

How we call it now

Review content/aws/03-compute-ec2 with the devops-training-reviewer agent.

The report comes back in the same table format every time: file, line, severity, evidence, suggested fix. We decide which fixes to apply.

Results

Before After
Length of the request ~250 words one line
Report format different every time same table, sortable by severity
Risk that the reviewer "fixes" things silently real none: it has no edit tools

What we took away

Practice interactively →