
How I Built an Auto-Changelog Generator for the Kiro Birthday Challenge 2026
See how I built an auto-changelog generator using Kiro agent hooks for the Kiro Birthday Challenge 2026. Code, explanation, and pure dev fun inside!
TL;DR / Key Takeaways
- I jumped into the Kiro Birthday Challenge 2026, a series of daily builds pushing the limits of Kiro's agent hooks.
- For Day 1, I built "Explain it to Marketing," an automated pipeline that writes plain-English release notes to
CHANGELOG.mdevery time you save a source file. - It uses the
fileEditedhook to classify git diffs into features, improvements, and bugs, completely removing the headache of manual documentation.
Introduction
Let’s be real for a second. Writing changelogs is easily the most boring task for any developer. Am I right? Marketing teams and product managers always want plain-English updates, but when you are in the zone, you just want to push your code and move on to the next bug. Translating technical git diffs into corporate-friendly bullet points totally kills the vibe.
Enter the Kiro Birthday Challenge 2026.
When this challenge dropped, I saw the perfect opportunity to build a solid solution for this exact headache. For Day 1, I decided to offload this entire process using Kiro’s AI-assisted workflows. Keep reading, and I'll show you exactly how I wired up a Kiro agent to automatically write marketing-ready release notes while I just focus on writing code.
Table of Contents
- What Exactly is Kiro and This Challenge?
- Why "Explain it to Marketing" is a Game Changer
- How I Built It: Code and Explanation
- Step 1: Setting up the Hook
- Step 2: Processing the Git Diff
- Step 3: Updating the Changelog
- Frequently Asked Questions
- Conclusion
What Exactly is Kiro and This Challenge?
If you haven't used it yet, Kiro is an agentic IDE built entirely around spec-driven development. Instead of just coding line by line, you describe what you want—your requirements and design—and Kiro's agents help implement it.
The Kiro Birthday Challenge 2026 is all about exploring what's possible with these agents. Every day is a fresh, self-contained project with its own specs, test suite, and hooks. The real magic lies in Kiro's hooks, which let you wire agent behavior directly to IDE events like file saves or git operations.
Visual Suggestion: A quick GIF showing a.tsfile being saved on the left, and theCHANGELOG.mdmagically updating on the right.
Why "Explain it to Marketing" is a Game Changer
I named my Day 1 project "Explain it to Marketing" because that’s exactly what it does.
Usually, translating a bunch of commit messages into a clean changelog takes a good 20 minutes of mental context switching. By turning this into a fully autonomous pipeline, the IDE does the heavy lifting.
"Automation isn't about being lazy; it's about protecting your focus."
This setup ensures that whenever you hit
Ctrl+S, the system handles the documentation. No duplicate entries, proper timestamping, and perfectly classified changes. It’s an absolute lifesaver for fast-moving startups and indie hackers.How I Built It: Code and Explanation
Let’s get into the fun part—the code. Here is how I structured the Day 1 challenge using Kiro agent hooks.
Step 1: Setting up the Hook
First, we need to tell Kiro when to wake up. I configured the hook to trigger automatically on a source file save. We only want this running for actual code, not config files.
1
2
3
4
5
6
7
8
9
10
// kiro-hooks/explain-to-marketing.ts
export const changelogHook = {
name: "Explain it to Marketing",
trigger: "fileEdited", // Triggers on file save
filePattern: ["*.ts", "*.js", "*.py", "*.go", "*.java", "*.cs"], // Supported languages
action: async (context) => {
console.log("Save detected, generating marketing magic...");
await processChangelog(context);
}
};I specifically set it to watch major extensions like TypeScript, Python, and Go.
Step 2: Processing the Git Diff
Once the hook fires, the agent needs context. I scripted it to run
git diff HEAD and pass that data to the AI agent. The agent's job is to read the diff and classify the changes.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
async function processChangelog(context) {
// 1. Get the latest diff
const diff = await context.git.getDiff('HEAD');
if (!diff) return;
// 2. Ask the Kiro Agent to classify and translate
const marketingNotes = await context.agent.prompt(`
Read this git diff and translate it into a marketing-friendly release note.
Classify it strictly into one of these categories:
✨ New Features
🛠 Improvements
🐛 Bug Fixes
Diff data: ${diff}
`);
await writeToChangelog(marketingNotes, context.git.getLatestCommitSha());
}The agent translates raw code changes into plain-English categories like ✨ New Features, 🛠 Improvements, or 🐛 Bug Fixes.
Step 3: Updating the Changelog
Finally, we need to write this to the file. To prevent a mess, the script deduplicates entries using the commit SHA. If you hit save 10 times on the same commit, it won't write 10 duplicate logs.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
async function writeToChangelog(notes, commitSha) {
const changelogPath = "./CHANGELOG.md";
const currentLog = await fs.readFile(changelogPath, 'utf-8');
// Deduplicate via commit SHA - no duplicate entries on repeated saves
if (currentLog.includes(commitSha)) {
return; // We already logged this one, bhai.
}
// Prepend timestamped entries with correct structure
const timestamp = new Date().toISOString().split('T')[0];
const newEntry = `\n## [${timestamp}] - Commit: ${commitSha}\n${notes}\n`;
await fs.writeFile(changelogPath, newEntry + currentLog);
}It prepends timestamped entries to the top of
CHANGELOG.md with a single trailing newline, leaving the manual stuff perfectly intact.Frequently Asked Questions
What is a Kiro agent hook?
- Hooks are triggers in the Kiro IDE that let you wire AI agent behavior to standard IDE events, like saving a file or running a git command. It basically lets your workspace automate itself.
How does the auto changelog prevent duplicates?
- The script deduplicates entries by checking the commit SHA. Even if you save your file multiple times, it won't create duplicate entries in your markdown file.
Which file types does this support?
- Out of the box, the Day 1 build triggers automatically when you save *.ts, *.js, *.py, *.go, *.java, or *.cs files.
Conclusion
Day 1 of the Kiro Birthday Challenge 2026 was a massive success for me. By leaning into spec-driven development and leveraging Kiro's
fileEdited hooks, I managed to turn a tedious chore into an invisible, automated pipeline. The "Explain it to Marketing" hook isn't just a cool party trick; it's a practical tool that genuinely improves the day-to-day dev workflow. It just goes to show how much friction we can remove when we let our IDE do the thinking for us.Call to Action
Want to see the code in action or try it in your own Kiro setup?
About the Author:
Soumyadeep Mandal is a developer who loves building cool stuff, automating the boring parts of coding, and experimenting with AI agent workflows.
Related Reading:
Enjoyed reading this content? Let the author know!
Your likes, comments, shares, and saves help creators reach more builders.
Loading recommendations
Loading article