0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code の Skill で GitLab ツールキットのリリース公開を「半自動化」してみた

0
Last updated at Posted at 2026-06-13

はじめに

チームで Skill やエージェント、MCP サーバーをまとめた「ツールキット」を社内共有していると、地味に面倒なのがリリース公開作業です。

前回のタグからの差分を眺め、変更点を分類してリリースノートにまとめ、セマンティックバージョニングで次の番号を決め、タグを切って公開する、一つひとつは難しくないのですが、毎回手でやると抜け漏れが出ますし、リリースノートの体裁もバラつきがちです。

この定型作業を Claude Code の Skill にまとめてみたので、実際に動かしたログとあわせて紹介します。

題材は GitLab で共有しているツールキット(Skill・エージェント・MCP が混在するリポジトリ)で、公開には GitLab CLI の glab を使います。

今回作った Skill のポイントは、全部を自動化しないことです。

リリースノートの下書きと次バージョンの提案まではやらせて、採番と公開だけは必ず人間が確認・承認する設計(human-in-the-loop)にしています。

今回作成したSkillがやること

ワークフローはざっくり次の8ステップです。

ポイントは、4 と 7 が「提案」と「実行」に分かれていて、その間の 6 で必ず止まることです。
バージョン採番という後戻りしづらい判断を、AI に勝手にやらせないための区切りです。
図の通り、6 で修正が入れば 4 に戻ってやり直し、承認されて初めて公開 7 に進みます。

前提

  • 公開対象が正しいリリースブランチ(既定は main / master)であること

公開対象が正しいリリースブランチでない場合はステップの途中で、main / master へスイッチします。

  • glab がインストール・認証済みであること(glab auth status で確認)

glab が未インストールならステップの途中で、
macOS / Linux は brew install glab
Windows は winget install glab.glab などで導入し、
glab auth login で認証します。

実際の公開ステップ

GitLab 上のデモ用ツールキットリポジトリ(直近タグ v0.3.0)に、新しい Skill を1つ追加した状態から公開してみます。各ステップで Skill が実行するコマンドと、その実出力を載せます。

ステップ1: 現在のバージョンを把握

$ git describe --tags --abbrev=0
v0.3.0

直近タグは v0.3.0。既存タグが v 付きなので、提案する次バージョンも v 付きに揃えます(接頭辞スタイルを既存に合わせるのも Skill のルールにしています)。

ステップ2-3: 差分収集と部品ごとのバージョン変更

$ git log v0.3.0..HEAD --no-merges --oneline
cd240e5 feat: greeting-skill を追加(時間帯に応じた挨拶を生成する Skill)

$ git diff v0.3.0..HEAD --stat
 greeting-skill/SKILL.md | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

$ git diff v0.3.0..HEAD -- '**/SKILL.md' '**/*.json' '**/*.toml' | grep -iE '^\+.*version|^\+name:'
+name: greeting-skill

SKILL.md / *.json / *.toml の差分から name:version 行を拾うことで、「どの部品がどう変わったか」を機械的に拾えます。今回は 🧩 Skill greeting-skill が新規追加されたことが分かります。

ステップ4: 次バージョンを提案

判断材料はこうです。

  • 変更内容: 🧩 Skill greeting-skill新規追加(後方互換の機能追加・破壊的変更なし)
  • 現在版 v0.3.00.x
  • 後方互換の機能追加 → マイナーバージョンを上げる

よって v0.4.0 を提案します。ここで Skill は提案に留め、確定は人間に委ねます。

ステップ5: リリースノート下書きを生成

Keep a Changelog の6カテゴリ(Added / Changed / Deprecated / Removed / Fixed / Security)に振り分け、該当のないカテゴリは見出しごと削除します。

## [v0.4.0] - 2026-06-13

挨拶文を自動生成する新しい Skill を追加したマイナーアップデートです。これまでの使い方が動かなくなる変更(破壊的変更)はありません。

### Added(追加)

- 🧩 Skill `greeting-skill` — 相手の名前と現在時刻から、朝・昼・夜に応じた挨拶文(例:「おはようございます、〇〇さん。」)を生成する Skill を追加しました。「挨拶して」と頼むだけで時間帯に合った一文が返ります。

執筆方針として「誰が読んでも分かる平易な言葉で書く」「破壊的変更は冒頭サマリで必ず触れ、該当行の行頭に **破壊的:** を付ける」をルール化しています。リリースノートを読むのは必ずしも開発者だけではないので、専門用語には一言補足を添えるようにしています。

ステップ6: 停止してレビュー

ここが必須チェックポイントです。下書き全文と「提案バージョン + 根拠」を提示して、いったん止まります。バージョンや文面の修正があればここで直し、再提示します。今回はそのまま v0.4.0 で承認しました。

ステップ7: 承認後に公開

$ glab release create v0.4.0 --name "v0.4.0" --notes-file release-notes-v0.4.0.md
• Validating tag v0.4.0
• Tag does not exist.
• No ref provided. Creating the tag from the latest state of the default branch.
• using default branch "main" as ref
• Creating or updating release repo=leomarokun/demo tag=v0.4.0
✓ Release created:	url=https://gitlab.com/leomarokun/demo/-/releases/v0.4.0
✓ Release succeeded after 1.14 seconds.

$ git fetch --tags origin
 * [new tag]         v0.4.0     -> v0.4.0

タグ v0.4.0 が作成され、リリースが公開されました。

ステップ8: 完了報告と通知

公開すると、GitLab のリリース Atom フィード経由で購読者に通知が届きます。このフィードを RSS リーダーや Slack の購読機能に登録しておけば、新バージョンが出たときに自動で気付けます。

VSCode の RSS リーダー拡張機能で購読しているとこんな感じで表示されます。

スクリーンショット 2026-06-13 23.44.33.png

Gitlab のリリースノートからは見るとこんな感じになります。

スクリーンショット 2026-06-13 23.49.11.png

タグからも v0.4.0 が追加されていることが確認できます。

スクリーンショット 2026-06-13 23.55.40.png

GitLab のリリース機能・Atom フィードの詳細は公式ドキュメントを確認してください。

まとめ

定型のリリース公開作業を Claude Code の Skill にまとめてみました。

同じように「毎回やっているけど少しずつ面倒」な定型作業は、フォーマットを標準に寄せてガードレールを明文化すれば、Skill 化の良い候補になりそうです。社内ツールキットを GitLab で運用している方の参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?