Agent skill

Changelog

by cloudposse in cloudposse/atmos

Blog post authoring for Atmos: MDX template, frontmatter, website/blog/tags.yml and authors.yml rules, problem-first framing, backtick-opening ban, optional cast embeds, and no-Go-internals leakage.

Apache-2.0Auto-check passedDevelopment

Install Changelog

skills CLI
$ npx skills add cloudposse/atmos --skill changelog -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install cloudposse/atmos changelog --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/cloudposse/atmos.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/changelog .claude/skills/changelog && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
changelog
GitHub stars
1.4k
Token cost
~2.7k tokens
SKILL.md length
1,345 words
Files
1
Skills in repo
70
Repo updated
First seen
Licence
Apache-2.0

At a glance

Blog post authoring for Atmos: MDX template, frontmatter, website/blog/tags.yml and authors.yml rules, problem-first framing, backtick-opening ban, optional cast embeds, and no-Go-internals leakage.

  • Tasks that involve Changelog and release notes
  • SKILL.md covers When a post is required, File and frontmatter, Tags — read… and Authors — read…, plus 7 more sections
  • Calls npm
  • Tasks that involve Markdown

What it does

Changelog is an agent skill from cloudposse/atmos. Blog post authoring for Atmos: MDX template, frontmatter, website/blog/tags.yml and authors.yml rules, problem-first framing, backtick-opening ban, optional cast embeds, and no-Go-internals leakage. Invoke when writing, editing, or reviewing a website/blog/.mdx changelog post.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Changelog and release notes, Markdown and Blog and article writing. The repository describes itself as: Atmos is the open-source runtime for infrastructure — it builds, authenticates, and ships Terraform, OpenTofu, Packer, Ansible, Kubernetes, Helm, and containers the same way on… The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Changelog and release notes
  • Tasks that involve Markdown
  • Tasks that involve Blog and article writing

Example prompts

  • “/changelog”

What it can do on your machine

Read from SKILL.md and the folder at commit 36726ae. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Changelog loads about 2.7k tokens when it runs. Until then it costs about 72 tokens; SKILL.md has 1,345 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~72
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from cloudposse/atmos at commit 36726ae, republished under its Apache-2.0 licence (© cloudposse). 1,345 words, ~2,732 tokens.

Download SKILL.mdSave it as .claude/skills/changelog/SKILL.md (or your agent's skills folder).
name
changelog
description
Blog post authoring for Atmos: MDX template, frontmatter, website/blog/tags.yml and authors.yml rules, problem-first framing, backtick-opening ban, optional cast embeds, and no-Go-internals leakage. Invoke when writing, editing, or reviewing a website/blog/*.mdx changelog post.
metadata.copyright
Copyright Cloud Posse, LLC 2026
metadata.version
1.0.0

Changelog (Blog Post) Authoring

Use this skill whenever you create or edit a post under website/blog/. It is the single source of truth for the template, tags, authors, and style rules — CLAUDE.md, the pull-request skill, and the docs skill all point here instead of restating these rules. Don't re-duplicate them elsewhere.

When a post is required

Only non-draft PRs targeting main, labeled minor or major, need one — see the pull-request skill's label decision tree. CI enforces this via .github/workflows/changelog-check.yml, which checks for a new website/blog/*.md or *.mdx file (draft PRs, and PRs targeting a branch other than main, are exempt entirely). Write posts as .mdx regardless — Rule 3 below embeds <CastEmbed> as real JSX, which only .mdx renders; CI accepts .md but that's not this repo's convention. If a change is genuinely internal-only with zero user-visible effect, it doesn't get a post at all — that invariant belongs to the roadmap skill ("no changelog post for internal-only refactors"); don't work around it by writing an implementation-heavy post instead.

File and frontmatter

Create website/blog/YYYY-MM-DD-<slug>.mdx:

markdown
---
slug: descriptive-slug
title: "Clear Title"
authors: [username]
tags: [feature]
---
Open on the PAIN the reader already feels — the broken/tedious/confusing thing they live with
today — then name the change as the relief.
<!--truncate-->
## The Problem
...
## The Fix
...
## How to Use It
...
## Get Involved
  • .mdx, YAML frontmatter, <!--truncate--> immediately after the intro paragraph(s) — that's what shows in the blog feed.
  • Never open the body with ## What Changed — lead with the problem (see Rule 1).

Tags — read website/blog/tags.yml, never invent one

User-facing: feature, enhancement, bugfix, dx, breaking-change, security, documentation, deprecation, experimental, atmos-pro. Internal/contributor-only, zero user impact: core.

Authors — read website/blog/authors.yml

Use the individual human contributor's GitHub username, not a generic team byline. This repo's own history favors real usernames overwhelmingly (e.g. osterman and aknysh account for the large majority of posts) — a generic atmos author appears on only a small minority of posts and is a pattern to avoid going forward. If the contributor isn't in authors.yml yet, add them in the same PR before referencing their username in frontmatter.

Rule 1 — Problem-first framing (not feature-first)

The intro (the text above <!--truncate-->) must open on the reader's pain, not on what Atmos now does. Don't make the post self-referential ("Atmos doesn't support X, so we added it") — describe the general problem or technique first, the way someone outside the project would recognize it, then bring in the fix.

  • Violation — 2026-07-02-atmos-builds-atmos.mdx opens: "Atmos now builds itself through a first-class Atmos command:" — self-referential and feature-first.
  • Violation — 2026-06-28-list-dependencies.mdx opens: "The new atmos list dependencies command renders..." — feature-first (and also a Rule 2 violation, see below).
  • Correct — 2026-06-29-ci-log-groups.mdx opens: "A workflow fails in CI. You open the run and you're staring at two thousand lines of undifferentiated output..." — pain first, product named later.
  • Correct — 2026-07-09-vendor-diff-and-update.mdx opens: "Bumping a vendored component to a newer version has always meant guessing."
  • Correct pattern for a hypothetical vendoring feature, illustrating the same principle: don't write "Atmos doesn't support vendoring, so we added it." Instead: "Projects depend on lots of external artifacts. Vendoring is a common technique to bring those into the repo so changes to dependencies aren't opaque. It's also supportive of immutable infrastructure." — name the general problem/technique, then the fix.

Structure the body ## The Problem / ## The Fix / ## How to Use It / ## Get Involved.

Rule 1a — Open on the real reason, at the scope it actually applies to

Find the actual motivating reason for the change (PR description, linked issue, commit messages) before writing the intro, and open on that — not a plausible-sounding scenario constructed to fit it, and not narrowed to the one path you happened to notice it through when the real gap is broader. Both are the same mistake: substituting a specific, contrived framing for the real, general one.

  • Correct — 2026-07-13-atmos-stack-schema-command.mdx: "Editors, CI pipelines, and offline environments that want to validate stack manifests locally have had one option: fetch the JSON Schema from atmos.tools... and hope it matches." A real, checkable limitation, not an anecdote.
  • Violation (invented) — 2026-08-06-toolchain-lockfile-default.mdx opened with a fabricated "a teammate's laptop and CI don't quite match" vignette, when the real reason (stated correctly two paragraphs later) was simpler: the fix already existed but was undocumented, so nobody enabled it.
  • Violation (over-narrowed) — 2026-08-05-taskfile-convergence.mdx opens "If you've ever tried to move a Taskfile.yml over to Atmos, you've hit the gap..." — framing a general task-runner deficiency (no dependency ordering, no incremental builds — table-stakes features nearly every task runner has) as if it only matters to people migrating from one specific competitor. The real problem, stated correctly under ## The Problem, is category-general: Atmos was missing it as a task runner, full stop.

If you can't find the real reason, ask rather than invent one — and state it at the scope it actually applies to.

Rule 2 — Never open prose with a backtick

Prose (a sentence, paragraph, or the post intro) must start with a word, not an inline code span or fence. Bullets may open with a backtick — this rule is about prose paragraphs only.

  • Violation — 2025-10-15-introducing-atmos-auth-list.md:39: "atmos auth list solves these challenges..."
  • Violation — 2026-06-27-git-clone-fork-pr-safety-gate.mdx:9: "atmos git clone is Atmos's native replacement for..."
  • Violation — 2026-06-28-list-dependencies.mdx:18, 2026-06-04-use-version-ref.mdx:12: same pattern.
  • Fix pattern: "The atmos auth list command solves these challenges..." — lead with a word, then the code span.
Show full SKILL.md (519 more words)Show less

Rule 3 — Cast embedding (optional, preferred when a recording exists)

Only a small minority of recent posts embed a cast — it's a nice-to-have, not a requirement, and should never block a post. When a recorded demo exists (or is worth recording) under examples/<name>/ or demo/casts/... per the atmos-asciicast skill, embed it near the top of the post, after the intro/truncate:

mdx
import CastEmbed from '@site/src/components/CastEmbed'

<CastEmbed src="/casts/examples/demo-component-versions/vendor-versions.cast" title="atmos component version vendoring" chrome controls scrubber />
  • src points under website/static/casts/{examples,demo}/....
  • Always carry the chrome controls scrubber flags.
  • Multiple <CastEmbed> tags are fine in one post if there are multiple relevant recordings.
  • CastEmbed wraps CastPlayer and adds Download (rendered GIF/MP4/SVG/WEBM via Atmos Pro) and Share controls, on by default against cloudposse/atmos at the site build's Git commit (GITHUB_SHA in CI, main for local builds). This lets PR previews download recordings introduced by the same PR. Use gitRef to override the source revision explicitly; do not hide controls just because a cast is unmerged.
  • Follow it with a plain link to the full example when one exists: [View the full example](/examples/<name>).
  • Don't use EmbedExample in blog posts — that component's README/file-listing duplicates content the post's own prose already covers; it's for docs pages that need the "browse the full example" callout instead.

Rule 4 — No Go / implementation-detail leakage

A blog post is for users, not contributors. Never name Go package paths, internal file layout, or implementation structure — describe behavior only in CLI/config/output terms.

  • Violation — 2025-12-18-function-registry-package.mdx: title itself is "New pkg/function Package for Format-Agnostic Function Registry"; body names pkg/function/, pkg/yaml/, pkg/aws/identity/. A business reader doesn't care about Go package paths.
  • Correct — 2026-06-29-ci-log-groups.mdx and 2026-06-28-list-dependencies.mdx describe mechanisms only in terms of commands, flags, and observable output — never Go internals.

Link the first useful prose mention of a feature, command, flag, configuration field, or YAML function to the specific usage page or section. A changelog announcement should lead the reader to instructions they can follow. Keep code blocks copyable and avoid linking every repetition. Verify the actual route and heading anchor; filenames are not always public URLs. When supported functionality has no usage documentation, add it to the appropriate reference page before linking. For retired functionality, link applicable migration or deprecation guidance without rewriting history.

Pre-publish checklist

  • Intro opens on the problem, not the feature, and doesn't open with a backtick
  • The opening problem is the real, specific reason this change happened (checked against the PR description/issue/commits) — not a generic scenario invented to justify it
  • Body follows Problem → Fix → How to Use It → Get Involved (no ## What Changed opener)
  • Tag(s) exist in website/blog/tags.yml
  • Author exists in website/blog/authors.yml (added in this PR if new)
  • Feature terms link to verified usage documentation, including relevant section anchors
  • No Go package paths / internal file layout mentioned
  • Cast embedded if a relevant recording exists (optional otherwise)
  • cd website && npm run build succeeds
  • roadmap skill — link the post's slug into the shipped milestone (changelog: 'your-slug') once published. This skill doesn't own roadmap.js edits; hand off to the roadmap skill for that.
  • pull-request skill — owns the semver-label decision tree that determines whether a post is required at all; this skill only owns the post itself once one is required.

© cloudposse, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/changelog of cloudposse/atmos.

Open the folder on GitHubat commit 36726ae

Compare with similar skills

Changelog next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Changelog compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Changelog this skillcloudposse/atmos1.4k—~2.7kAutomated safety check: PassApache-2.0
Docs Writerstrands-agents/harness-sdk8.7k—~2kAutomated safety check: PassApache-2.0
Noodle Releasewilfredinni/noodle363—~2kAutomated safety check: PassApache-2.0
Opik Docs Writercomet-ml/opik22k—~3.2kAutomated safety check: PassApache-2.0
Release Announcementpaperclipai/paperclip99k—~1.7kAutomated safety check: PassMIT
Avoid AI Writingwshobson/agents40k—~1.9kAutomated safety check: PassMIT

Similar skills

  • Docs Writer

    strands-agents/harness-sdk

    Draft or rewrite Strands Agents documentation pages. An agent skill from strands-agents/harness-sdk.

    8.7k GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed
  • Noodle Release

    wilfredinni/noodle

    Prepare a versioned Noodle release by updating package.json, inspecting changes since the latest tag, auditing every repository-maintained skill, synchronizing affected README, AGENTS.md, tests…

    363 GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed
  • Opik Docs Writer

    comet-ml/opik

    Guides writing Fern MDX pages for the Opik documentation site, including frontmatter, structure, components, navigation entries and release-note routing.

    22k GitHub stars~3.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Release Announcement

    paperclipai/paperclip

    Write a release announcement — changelog, blog post, in-app note, or social post — that leads with user impact, names the audience, and includes upgrade/migration steps without filler.

    99k GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Avoid AI Writing

    wshobson/agents

    Audit and rewrite prose so it stops reading as machine-generated.

    40k GitHub stars~1.9k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Talking Head Video

    gooseworks-ai/goose-skills

    Creates talking head videos from any source material (docs, changelogs, blog posts, notes, transcripts).

    1.2k GitHub starsUsed in 1 repo~8.4k tokens
    DevelopmentAuto-check: notes

More from cloudposse/atmos

All 70 skills in this repo
  • Fix Log

    cloudposse/atmos

    A skill your agent uses when implementing, finishing, documenting, or reviewing a fix, repair, remediation, bug fix, debug-and-fix task, workflow fix, infrastructure fix, or any change that should…

    1.4k GitHub stars~685 tokensUpdated today
    Auto-check passed
  • Atmos Lint

    cloudposse/atmos

    Atmos Terraform linting with TFLint: standalone atmos terraform lint, component-aware config discovery and toolchain versions, TFLint rule configuration, and lifecycle hooks/CI findings.

    1.4k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Editions

    cloudposse/atmos

    Decide whether a PR's new or changed default needs edition-journal handling (pkg/edition, docs/prd/editions.md), and do the mechanical work if so: journal entries, the four-layer default check…

    1.4k GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Atmos Migration

    cloudposse/atmos

    Migrate to Atmos from native Terraform, Terraform Workspaces, Terramate, Terragrunt, Make, Just, or Task; migrate tool versions from mise or Aqua CLI; migrate AWS/GCP/Azure CLI configs, Leapp…

    1.4k GitHub stars~5.1k tokensUpdated today
    Auto-check: warnings
  • PR Maintenance Loop

    cloudposse/atmos

    Start an hourly background loop that keeps the current branch's PR rebased, its addressed CodeRabbit threads resolved, its CI checks passing, its lint clean, its tests passing with adequate patch…

    1.4k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Roadmap

    cloudposse/atmos

    Maintain and update the Atmos roadmap page (website/src/data/roadmap.js): milestone/initiative/quarter schema, progress-percentage math, the curated featured[] cap (max 6, never auto-modified), and…

    1.4k GitHub stars~2.5k tokensUpdated today
    Auto-check passed

Questions about Changelog

What does Changelog do?

Blog post authoring for Atmos: MDX template, frontmatter, website/blog/tags.yml and authors.yml rules, problem-first framing, backtick-opening ban, optional cast embeds, and no-Go-internals leakage. Changelog is an agent skill from cloudposse/atmos.yml rules, problem-first framing, backtick-opening ban, optional cast embeds, and no-Go-internals leakage.

When should I use Changelog?

Changelog fits situations like: tasks that involve Changelog and release notes; tasks that involve Markdown; tasks that involve Blog and article writing.

How do I install Changelog in Claude Code?

Run `npx skills add cloudposse/atmos --skill changelog -a claude-code`. Or copy the skill folder (.claude/skills/changelog in cloudposse/atmos) into .claude/skills/changelog in your project. Claude Code loads it when a task matches its description.

How do I install Changelog in Codex?

Run `npx skills add cloudposse/atmos --skill changelog -a codex`. Or copy the skill folder (.claude/skills/changelog in cloudposse/atmos) into .agents/skills/changelog in your project. Codex loads it when a task matches its description.

Can I use Changelog in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cloudposse/atmos --skill changelog -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/changelog, .gemini/skills/changelog, .github/skills/changelog and .opencode/skills/changelog in your project.

What does Changelog need to run?

Going by SKILL.md and its folder, Changelog needs the command-line tools its instructions call (npm).

Does Changelog access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Changelog safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Changelog use?

Changelog is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Changelog use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Changelog?

Skills that share tags, products or a category with Changelog: Docs Writer (strands-agents/harness-sdk, 8.7k stars), Noodle Release (wilfredinni/noodle, 363 stars), Opik Docs Writer (comet-ml/opik, 22k stars) and Release Announcement (paperclipai/paperclip, 99k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Changelog?

cloudposse (a GitHub organization) maintains it in cloudposse/atmos, which has 1,396 GitHub stars. The repository holds 70 skills in this directory. The repository was last updated on October 8, 2026.

Source: cloudposse/atmos on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.