Claude Code Skills Basics
Build Git-powered Claude Code Skills that auto-commit and generate changelogs.
Introduction
⚡️ 30 Second Summary
Every developer has seen messy commit messages and outdated changelogs pile up across a codebase. Claude Code Skills let you automate those workflows so Claude handles them consistently, every time.
In this project, you will build Git-powered Claude Code skills that generate real changelogs from your commit history, create properly formatted conventional commits, and chain both into an automated pipeline you can trigger with a single slash command.
What You'll Build
A set of Claude Code skills that read your local Git history to generate changelogs and create structured commits, chained into a reusable dev pipeline and optionally enhanced with a hook that auto-formats code on every edit.
By the end of this project, you'll have:
- 📄 A changelog skill that reads git log and generates a real CHANGELOG.md from your commit history.
- 🔖 A smart-commit skill that stages changes and creates git commits with conventional commit messages.
- ⚙️ A YAML frontmatter block that configures skill name, description, triggers, and tool permissions.
- 🔗 A dev pipeline that chains smart-commit and changelog into one automated workflow.
- 💎 Secret Mission: A Claude Code hook that auto-formats Python code every time Claude edits a file.
Want a complete demo of how to do this project, from start to finish? Check out our 🎬 walkthrough with the NextWork team
Do I need to pay to do this project?
Claude Code uses pay-as-you-go API billing. If you completed the Claude Code setup project, you already have credits. This project uses about $2-5 USD depending on which model you choose. If you need to top up, visit console.anthropic.com (minimum $5 USD). You can pick the right Claude model for your budget and monitor usage with /cost as you go.
Not sure if this project is right for you? Check if it matches your goals
If you're up for a bit of a challenge, quiz yourself on the key concepts up ahead in this project.
Set Up Claude Code and Git
Before we build any skills, we need Claude Code installed, a project folder ready, and a local Git repository with real commits. Your skills will read actual git history, so we need that foundation in place first.
In this step, get ready to:
- Make sure Claude Code is installed and up to date.
- Create a project folder with a Git repository.
- Create starter code and make your first commit.
✔️ I already have Claude Code
Check Your Version
- Open your terminal and run:
claude --version
You should see something like claude 2.1.x. If the command isn't found, switch to the I need to install it tab.
- To update to the latest version, run the installer again:
curl -fsSL https://claude.ai/install.sh | bash
🆕 I need to install it
Install Claude Code
Claude Code is installed as a native binary, so it's a single command!
🍎 macOS / Linux
- Open your terminal.
- Copy & paste the following command:
curl -fsSL https://claude.ai/install.sh | bash
- Press Enter.
🖼️ Windows
Claude Code on Windows requires Git Bash, which comes with Git for Windows. Let's check if you have it, then install Claude Code.
- Open PowerShell and run:
git --version
If you see something like git version 2.x.x, you're good to go.
Already have Git?
If git --version printed a version, skip to the next step.
Install Git
- Go to git-scm.com/downloads/win in your browser.
- Click the download link for your system (64-bit for most machines).
- Run the downloaded installer.
- If you see a security warning, click Run.
Walk Through the Setup Wizard
The default settings are fine for most screens. Here's what you'll see:
- Accept the license agreement and click Next.
- Leave the destination as C:\Program Files\Git and click Next.
- Leave the default components selected and click Next.
- Leave the Start Menu folder as Git and click Next.
- Leave the default editor setting and click Next.
- Leave "Let Git decide" selected for the initial branch name and click Next.
- On the "Adjusting your PATH environment" screen, make sure "Git from the command line and also from 3rd-party software" is selected. Click Next.
Why does the PATH setting matter?
This option lets you run git from PowerShell and other programs, not just Git Bash. Claude Code needs this to work correctly.
- Leave "Use bundled OpenSSH" selected and click Next.
- Leave the HTTPS transport backend setting and click Next.
- Leave the terminal emulator setting and click Next.
- Leave the default git pull behavior and click Next.
- Leave "Git Credential Manager" selected and click Next.
- Leave the extra options as-is and click Install.
- Wait for the installation to finish.
- Click Finish.
- Verify Git Bash is installed by opening PowerShell and running:
git --version
You should see something like git version 2.x.x.
Install Claude Code
- In the same PowerShell window, copy & paste the following command:
irm https://claude.ai/install.ps1 | iex
- Press Enter.
What does this command do?
irm downloads the installer script and iex executes it. This installs Claude Code as a standalone program on your machine. Claude Code uses Git Bash under the hood to run commands, which is why Git for Windows is required. Read more in the official docs.
💡 Prefer WSL?
If you have Windows Subsystem for Linux (WSL) set up, you can install Claude Code inside WSL using the macOS/Linux command instead. WSL 2 also enables sandboxing for enhanced security.
- Verify the installation by running:
claude --version
✔️ I see a version number
You should see something like claude 2.1.x. The exact version may differ. Claude Code is installed!
ⓧ Command not found
🍎 macOS / Linux
Did your installer show a Setup notes warning?
- Run the following commands to fix it:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
What does this command do?
The first line adds ~/.local/bin (where Claude Code lives) to your PATH permanently by writing it to your shell config file. The second line reloads the config so the change takes effect right away.
🙋♀️ Using bash instead of zsh?
Replace ~/.zshrc with ~/.bashrc in the commands above. Not sure which shell you're using? Run echo $SHELL to find out.
🖼️ Windows
- Close your PowerShell window and open a new one. The installer updates your PATH, but existing terminals won't see the change until restarted.
- If it still doesn't work, try running the installer again:
irm https://claude.ai/install.ps1 | iex
- Verify the installation again by running:
claude --version
Still stuck?
Get help with your error or share your error with the NextWork community!
Set Up Your Claude Account
Claude Code needs a paid account to run. You can use either a Claude subscription or Anthropic API credits.
Why does Claude Code cost money?
Claude.ai (the chatbot) and Claude Code both use tokens to process your messages. The difference is how many tokens they use. A chatbot conversation is short and lightweight. Claude Code reads your entire project, writes full files, and runs commands, so it uses significantly more tokens per session. A paid account gives you the token budget Claude Code needs to do its job.
✔️ I already have one of these
You're all set! You'll connect Claude Code to your account in the next step.
🤔 Help me decide
There are two ways to pay for Claude Code:
Which option should I choose?
If you're new to Claude, start with a Pro subscription. You get Claude Code plus the Claude.ai chatbot, all in one plan.
If you only want to try Claude Code for this project, API credits let you pay for exactly what you use.
📋 Set up a Claude subscription
Claude Code works with a Claude Pro ($20/mo) or Max ($100/mo) subscription. Here's how to set one up:
- Go to claude.ai in your browser.
- Click Sign Up and create an account with your email or Google account.
- Once logged in, click Upgrade in the center of the page.
- Select the plan of your choice.
- Choose either monthly or yearly billing.
- Enter your payment details.
Your subscription gives you a monthly token allowance that covers Claude Code usage. Pro is plenty for this project.
🪙 Set up Anthropic API credits
Claude Code also works with pay-as-you-go API credits (~$6/day average). Here's how to set them up:
- Go to console.anthropic.com in your browser.
- Sign in, or create an account with your email or Google account.
- Once logged in, select Buy credits in the center of the Claude Console.
- Add credits to your account. $5-10 is more than enough for this project.
- Click Add Payment Method.
- Enter your payment details.
- Go to API Keys in the left sidebar.
- Click Create Key.
- Give it a name (e.g., "claude-code").
- Copy the key.
- Save the key somewhere safe. You'll use it in the next step.
Free credits for new accounts
New Console accounts sometimes get $5 in free credits, enough to complete this entire project. Check your Billing page after signing up.
Create Your Project Folder and Git Repository
Claude Code runs inside your project directory. We will create a new folder and turn it into a Git repository so your skills have real commit history to work with.
- Create a folder called claude-skills-project and navigate into it:
mkdir claude-skills-project && cd claude-skills-project
- Check if Git is installed:
git --version
✔️ I see a version number
You're good to go.
🆕 I need to install Git
🍎 macOS
- Run the following command to install Git:
xcode-select --install
Follow the prompts to complete the installation, then run git --version again to confirm.
🖼️ Windows
- Download the Git installer from git-scm.com/download/win and run it.
- Accept the default settings and complete the installation.
- Close and reopen your terminal, then run git --version to confirm.
- Initialize a Git repository:
git init
What does git init do?
git init creates a hidden .git/ folder that tracks every change you make. You are not pushing anything online. Everything stays local on your machine.
Create Starter Code and Your First Commit
Your skills need real files and commits to work with. We will create a simple Python file and commit it.
- Create a Python file in your project root:
🍎 macOS / Linux
touch app.py
🖼️ Windows
New-Item app.py
🍎 macOS / Linux
🖼️ Windows
- Open app.py in a text editor:
🍎 macOS / Linux
open -a TextEdit app.py
Why -a TextEdit?
On Mac, running open file.py opens the file in your default app for .py files, which is often VS Code or another code editor. Adding -a TextEdit forces it to open in the built-in text editor instead. We use TextEdit for this project so the instructions work the same for everyone, regardless of what editors you have installed.
🖼️ Windows
notepad app.py
Why notepad?
We use Notepad because it comes pre-installed on every Windows machine. If you have another editor like VS Code, you could use that instead, but Notepad keeps the instructions consistent for everyone.
- Paste the following starter code and save the file:
def greet(name):
return f"Hello, {name}! Welcome to the project."
def add(a, b):
return a + b
if __name__ == "__main__":
print(greet("NextWork"))
print(f"2 + 3 = {add(2, 3)}")
🍎 macOS / Linux
🖼️ Windows
- Stage and commit your code:
git add .
git commit -m "feat: add greeting app"
What is a conventional commit?
The feat: prefix follows a format called conventional commits. It labels each commit by type: feat for new features, fix for bug fixes, docs for documentation, and so on. You will build a skill that writes these messages automatically later in this project.
💡 First time using Git?
If Git asks you to set your name and email, run these two commands first (use any name and email you like):
git config user.name "Your Name"
git config user.email "you@example.com"
Then run the git commit command again.
Start Claude Code
- In your terminal (make sure you're in your project folder), type:
claude
- Press Enter.
- Select the text style of your choice.
Claude will ask you to log in.
🔑 Claude Pro / Max subscription
- Select Use Claude.ai account (OAuth) when prompted.
A browser window opens automatically.
- Log in with the same email you used for your Claude subscription.
- Click Allow to authorize Claude Code.
Your terminal will confirm the connection once you've authorized in the browser.
🪙 Anthropic API credits
- Before running claude, you need to set your API key. In your terminal, run:
export ANTHROPIC_API_KEY='your-api-key-here'
- Replace your-api-key-here with the API key you saved earlier (keep the quotes).
- Press Enter.
- Now run claude.
claude
Claude Code detects your API key and connects automatically.
Every message you send costs tokens (like credits). Don't worry, you'll check your usage later with /cost.
✔️ I'm authenticated
Yay! Let's go!
ⓧ Authentication failed
That's okay! Let's troubleshoot:
- Make sure you have an active Claude Pro or Max subscription, or have loaded credits in your Anthropic account.
- Check that your ANTHROPIC_API_KEY environment variable is set correctly.
- Try running claude again and complete the browser authentication flow.
- Check that your browser didn't block the popup.
Still stuck?
Get help with your error or share your error with the NextWork community!
- Check your token usage for this session:
/cost
You should see a dollar amount showing how much you have spent so far. Keep an eye on this as you work through the project.
I can't see /cost!
That's fine! It just means you're on a subscription-based account (like Claude Pro or Max) instead of pay-as-you-go API credits. Your usage is covered by your subscription, so you don't need to worry about tracking costs.
- Exit Claude Code to return to your terminal:
/exit
Your environment is ready with real git history. Next, you will write a skill that turns those commits into a changelog.
Write Your First Skill
Your project has its first commit tracked in Git. Now you are going to build a skill that reads that history and turns it into something useful: a real changelog generated from actual commits.
In this step, get ready to:
- Create the skill folder and SKILL.md file.
- Write instructions that read git history and generate a changelog.
- Invoke the skill and verify it works.
Create the Skill Folder and File
Every Claude Code skill lives in its own folder under .claude/skills/. The folder name becomes the slash command trigger, which you will use to manually invoke the skill, e.g. /changelog.
- In your terminal, create the skill folder and file:
🍎 macOS / Linux
mkdir -p .claude/skills/changelog
touch .claude/skills/changelog/SKILL.md
🖼️ Windows
mkdir .claude\skills\changelog
New-Item .claude\skills\changelog\SKILL.md
What do these commands do?
mkdir -p creates a new directory, including any parent directories that don't exist yet. touch creates an empty file. On Windows, mkdir and New-Item do the same thing.
- Open SKILL.md in a text editor:
🍎 macOS / Linux
open -a TextEdit .claude/skills/changelog/SKILL.md
🖼️ Windows
notepad .claude\skills\changelog\SKILL.md
The file should be empty and ready to write.
Write the Skill Structure
A well-written skill has three structural sections before the instructions: Purpose, Inputs, and Outputs. These tell Claude exactly what the skill is for and what it needs to run.
- Paste the following into your SKILL.md:
# Changelog Generator
## Purpose
Generate a CHANGELOG.md from the project's git commit history.
## Inputs
- The current working directory (must be a git repository)
## Outputs
- A `CHANGELOG.md` file written to the project root
## Steps
1. Run `git log --pretty=format:"%h %s (%cr)" --reverse` to get the full commit history.
2. Run `git status --short` to check for uncommitted changes.
3. Read the project's root directory listing to identify key files.
4. Write a `CHANGELOG.md` to the project root with these sections: project name (from the folder name), commit history (formatted as a readable list), current working tree status, and a list of tracked files with one-line descriptions.
5. Print the path to the generated file to confirm it was written successfully.
🍎 macOS / Linux
🖼️ Windows
What is a changelog?
A changelog tracks what has changed in a project over time. It is one of the first things developers check when joining a codebase or reviewing updates. Because this skill reads real git log output, the changelog reflects your actual commit history instead of a manual summary.
💡 How specific should each step be?
Each step should be concrete and testable. "Understand the project" is too vague. "Run git log --pretty=format:\"%h %s (%cr)\"" is specific.
Test Your Skill
Your skill does not have any configuration yet, so Claude will not know when to use it automatically. For now, we will invoke it manually using a slash command. The folder name becomes the command name.
- Save SKILL.md and switch to your terminal.
Now we'll start Claude Code and run the command.
- To start Claude Code, run:
claude
- Invoke your skill using its folder name as a slash command:
/changelog
Claude Code will ask if you want to create a CHANGELOG.md file.
- Select Yes to confirm writing the file.
You should see a CHANGELOG.md that includes your feat: add greeting app commit from Step 1.
- After it completes, evaluate the output:
- Did Claude follow every step?
- Does the changelog show your real git commit?
- Was the output complete and correct?
✔️ It worked!
Nice work! Move on to the next step.
ⓧ Claude can't find the skill
Check two things:
- The folder name must exactly match the slash command (case-sensitive). If your folder is changelog, the command must be /changelog.
- SKILL.md must be at the root of the skill folder, not in a subfolder.
Note
Got stuck? Don't worry about it - there's always help on hand. Jump into the NextWork Community and post your question. We're here to help.
- Exit Claude Code to return to your terminal:
/exit
Your skill is alive and reading real git history. But Claude does not know when to use it automatically yet. Next, you will add the configuration that fixes that.
Add Frontmatter and Metadata
Your changelog skill works, but only when you invoke it manually. In this step, you will add YAML frontmatter so Claude knows when to trigger it automatically and which tools it is allowed to use.
In this step, get ready to:
- Add a YAML frontmatter block to your SKILL.md.
- Set the name, description, and allowed-tools fields.
- Add more source code and make a second commit.
- Trigger the skill automatically with a natural language prompt.
Add the YAML Frontmatter Block
Frontmatter goes at the very top of SKILL.md, wrapped in --- markers. It must come before any other content.
- Open .claude/skills/changelog/SKILL.md in a text editor:
🍎 macOS / Linux
open -a TextEdit .claude/skills/changelog/SKILL.md
🖼️ Windows
notepad .claude\skills\changelog\SKILL.md
- Add the following frontmatter block at the top of the file:
---
name: Changelog Generator
description: This skill should be used when the user asks to generate a changelog, review commit history, or summarize what has changed in the project.
allowed-tools: Read, Write, Bash
---
🍎 macOS / Linux
🖼️ Windows
Anatomy of a SKILL.md
Here is what each part of your skill file does:
- --- markers wrap the frontmatter block. Must be the first thing in the file.
- name: is the display name shown in the / menu.
- description: is how Claude decides whether to activate this skill. Write it as a specific trigger phrase.
- allowed-tools: is the security boundary. Only these tools can run when the skill is active.
- Body (the markdown below ---) is the instructions Claude follows when the skill runs. Structure it with Purpose, Inputs, Outputs, and Steps.
💡 What is allowed-tools?
The allowed-tools field is a security boundary. It tells Claude which tools this skill is permitted to use. If your skill only needs to read files, set allowed-tools: Read. This prevents the skill from taking unintended actions, like running shell commands or writing to the filesystem, when you did not mean for it to.
Optional Fields
These fields are not required but are useful for more advanced configurations.
- model: Override the default model for this skill. Useful if a skill needs a faster or more capable model:
---
name: Changelog Generator
description: This skill should be used when the user asks to [describe your trigger].
allowed-tools: Read, Write, Bash
model: sonnet
---
- argument-hint: Show the user what arguments the skill expects:
argument-hint: [output-format]
Add More Code and a Second Commit
Your changelog currently shows one commit. We will add a utility file and make a second commit so the skill has richer history to work with.
- Create a utility file:
🍎 macOS / Linux
touch utils.py
🖼️ Windows
New-Item utils.py
- Open it in a text editor:
🍎 macOS / Linux
open -a TextEdit utils.py
🖼️ Windows
notepad utils.py
- Paste a simple utility module and save:
import datetime
def timestamp():
return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def word_count(text):
return len(text.split())
🍎 macOS / Linux
🖼️ Windows
- Stage and commit:
git add .
git commit -m "feat: add utility functions"
Trigger Your Skill Automatically
In Step 2, you had to invoke the skill manually with /changelog because Claude did not know when to use it. Now that you have added a description, Claude can figure that out on its own.
Now we'll start Claude Code and run the command.
- To start Claude Code, run:
claude
- Instead of using a slash command, try typing a natural language prompt:
Can you generate a changelog for this project?
Claude reads your prompt, matches it against the skill's description, and automatically loads the full skill instructions. No slash command needed.
The CHANGELOG.md now shows two commits: feat: add greeting app and feat: add utility functions. Real git history, real output.
Skills vs the old Commands
Commands could only be triggered manually with /. Skills replaced them and added automatic triggering based on the description field. The more specific your description, the more reliably Claude picks the right skill. You can still invoke manually with /changelog anytime.
- Check your token usage for this session:
/cost
You should see a dollar amount showing how much you have spent so far. Keep an eye on this as you work through the project.
I can't see /cost!
That's fine! It just means you're on a subscription-based account (like Claude Pro or Max) instead of pay-as-you-go API credits. Your usage is covered by your subscription, so you don't need to worry about tracking costs.
- Exit Claude Code to return to your terminal:
/exit
Your skill has a proper identity and defined scope. Next, you will chain it into a pipeline that commits and logs in one shot.
Build a Skill Pipeline
Your changelog skill triggers automatically and produces real output from git history. But right now it works in isolation: one skill, one job, that is it.
What if you could commit your changes with a well-formatted message and regenerate the changelog in one command? That is what an orchestrator skill does. It coordinates multiple skills in sequence without you prompting each one.
In this step, get ready to:
- Create a smart-commit skill that stages and commits with conventional messages.
- Create a dev-pipeline orchestrator that chains smart-commit and changelog.
- Test the full pipeline end-to-end.
Create the Smart Commit Skill
Before building the pipeline, you need a second skill. This one analyzes your code changes and creates a git commit with a properly formatted conventional commit message.
- Create a new skill folder:
🍎 macOS / Linux
mkdir -p .claude/skills/smart-commit
touch .claude/skills/smart-commit/SKILL.md
🖼️ Windows
mkdir .claude\skills\smart-commit
New-Item .claude\skills\smart-commit\SKILL.md
- Open the file in a text editor:
🍎 macOS / Linux
open -a TextEdit .claude/skills/smart-commit/SKILL.md
🖼️ Windows
notepad .claude\skills\smart-commit\SKILL.md
- Paste the following skill:
---
name: Smart Commit
description: This skill should be used when the user wants to commit their current changes with a well-formatted conventional commit message.
allowed-tools: Read, Write, Bash
---
# Smart Commit
## Purpose
Stage all current changes and create a git commit with a conventional commit message.
## Inputs
- The current working directory (must be a git repository)
- An optional description from the user about what changed
## Outputs
- A new git commit with a conventional commit message
## Steps
1. Run `git status --short` to see what files have changed.
2. Run `git diff` and `git diff --cached` to understand the changes.
3. Stage all changes with `git add -A`.
4. Analyze the changes and generate a conventional commit message:
- Format: `type(scope): description`
- Types: feat, fix, docs, style, refactor, test, chore
- Keep the first line under 72 characters
5. Create the commit with `git commit -m "<generated message>"`.
6. Print the commit hash and message to confirm success.
🍎 macOS / Linux
🖼️ Windows
What are conventional commits?
Conventional commits are a standardized format for commit messages. The type(scope): description structure makes git history scannable and helps tools like changelog generators group changes automatically. Common types: feat (new feature), fix (bug fix), docs (documentation), refactor (code restructure), chore (maintenance).
Create the Dev Pipeline
An orchestrator skill is a SKILL.md whose instructions reference other skills by name. Claude reads the orchestrator's steps and executes each sub-skill in sequence.
- Create a new skill folder:
🍎 macOS / Linux
mkdir -p .claude/skills/dev-pipeline
touch .claude/skills/dev-pipeline/SKILL.md
🖼️ Windows
mkdir .claude\skills\dev-pipeline
New-Item .claude\skills\dev-pipeline\SKILL.md
- Open the pipeline's SKILL.md:
🍎 macOS / Linux
open -a TextEdit .claude/skills/dev-pipeline/SKILL.md
🖼️ Windows
notepad .claude\skills\dev-pipeline\SKILL.md
- Paste the following orchestrator skill:
---
name: Dev Pipeline
description: This skill should be used when the user wants to commit their changes and update the project changelog in one step.
allowed-tools: Read, Write, Bash
---
# Dev Pipeline
## Purpose
Commit current changes with a well-formatted message, then regenerate the project changelog.
## Steps
1. Run the `/smart-commit` skill to stage and commit all current changes.
2. Run the `/changelog` skill to regenerate CHANGELOG.md with the updated commit history.
3. Print a summary showing the new commit and the path to the updated changelog.
🍎 macOS / Linux
🖼️ Windows
What is an orchestrator pattern?
An orchestrator pattern is a design where one agent (or skill) coordinates the work of other agents (or skills). Instead of prompting Claude for every step, you write the coordination logic once and let the orchestrator handle sequencing. This is the same pattern used in production AI agent workflows.
Test the Pipeline
To test the pipeline, make a small code change so there is something to commit.
- Open app.py in a text editor:
🍎 macOS / Linux
open -a TextEdit app.py
🖼️ Windows
notepad app.py
- Add a new function at the end (before the if __name__ block):
def multiply(a, b):
return a * b
🍎 macOS / Linux
🖼️ Windows
- Save the file.
Now we'll start Claude Code and run the command.
- To start Claude Code, run:
claude
- Try triggering the pipeline with a natural language prompt:
Can you commit my changes and update the changelog?
Claude matches your prompt to the dev-pipeline skill's description, loads it, and starts executing.
- Select Yes when Claude asks to use the smart-commit sub-skill.
Claude runs smart-commit first (staging your changes, generating a conventional commit message, committing), then runs changelog (regenerating CHANGELOG.md from the updated git history).
- Verify the results:
- Check your git history shows the new commit with a proper conventional message.
- Open CHANGELOG.md to confirm it includes all three commits.
Your pipeline is a reusable automation.
Once this pipeline works, Claude will trigger it automatically whenever the conversation matches, or you can invoke it explicitly with /dev-pipeline. Every teammate who has access to your .claude/skills/ directory gets the same automation with no setup required on their end.
- Check your token usage for this session:
/cost
You should see a dollar amount showing how much you have spent so far. Keep an eye on this as you work through the project.
I can't see /cost!
That's fine! It just means you're on a subscription-based account (like Claude Pro or Max) instead of pay-as-you-go API credits. Your usage is covered by your subscription, so you don't need to worry about tracking costs.
Your pipeline chains multiple skills into a single command. Next, you will wire a hook that auto-formats your Python code every time Claude edits a file.
Secret mission
Your skills and pipeline work. You invoke them with slash commands and Claude runs them reliably. But what if other things happened automatically, without you typing a single command?
In this secret mission, get ready to:
- Install black, a Python code formatter.
- Add a PostToolUse hook to .claude/settings.json.
- Test the hook by asking Claude to write badly formatted code.
Add Hook Triggers to Your Skill
Clean Up Your Resources
Clean Up Your Resources
Now that you have built, tested, and iterated on your Claude Code skills, it is time to decide what to do with everything you created.
Resources to manage:
- Your changelog skill in .claude/skills/changelog/.
- Your smart-commit skill in .claude/skills/smart-commit/.
- Your pipeline skill in .claude/skills/dev-pipeline/.
- Your hook configuration in .claude/settings.json (if you completed the Secret Mission).
✔️ Keep everything running
If you want to continue experimenting or building on your skills:
- Your skills stay in .claude/skills/ and remain available as slash commands.
- Your hook configuration in .claude/settings.json will continue firing automatically.
- There are no ongoing costs. Skills are local files that consume no compute when idle.
No action needed. Keep building!
✋ Pause - I'll come back to this later
If you want to keep your skills but stop the automatic hook triggers:
- Open .claude/settings.json.
- Remove the hooks block.
- Your skills remain available as slash commands. Only the automatic triggering is paused.
You can re-add the hooks block at any time to restore automatic triggering.
ⓧ Delete - I don't want to use this again
If you want to remove your skills entirely:
Delete your skill folders:
- Open a terminal in your project root.
- Run:
🍎 macOS / Linux
rm -rf .claude/skills/changelog
rm -rf .claude/skills/smart-commit
rm -rf .claude/skills/dev-pipeline
🖼️ Windows
Remove-Item -Recurse -Force .claude\skills\changelog
Remove-Item -Recurse -Force .claude\skills\smart-commit
Remove-Item -Recurse -Force .claude\skills\dev-pipeline
Remove hook configuration:
- Open .claude/settings.json.
- Delete the hooks block and save the file.
Should I delete my skills?
Your skills are the most portable artifact from this project. They work in any project that has Claude Code. Consider copying them to a shared repository before deleting, so you can reuse them later.
That's a wrap!
That's a wrap!
Well done! 🚀 You have built Git-powered Claude Code skills from scratch, configured them with YAML frontmatter, and chained them into a dev pipeline that commits and logs in a single command.
What you built:
- 📄 A changelog skill that reads git log and generates a real CHANGELOG.md from your commit history.
- 🔖 A smart-commit skill that stages changes and creates conventional commit messages.
- ⚙️ A YAML frontmatter block that configures skill name, description, triggers, and tool permissions.
- 🔗 A dev pipeline that chains smart-commit and changelog generation into one automated workflow.
- 💎 Secret Mission: A Claude Code hook that auto-formats Python code every time Claude edits a file.
Ready to quiz yourself? 💪
p.s. Does it say "Still tasks to complete!" at the bottom of the screen?
This means you still have screenshots left to upload, or questions left to answer!
- Press Ctrl+F (Windows) or Command+F (Mac) on your keyboard.
- Search for the text Return to later.
- Jump straight to your incomplete tasks!
- 🙋♀️ Still stuck? Ask the community!