Communityライティング&編集github.com

nicolasroy-fr/mr-description

GitLab MR または GitHub PR のタイトルと説明を、フランス語で、固定されたタイトルパターンと構造化された説明(Description、Contexte、Changements、Tests)で生成または更新します。プラットフォームはURLまたはgit remoteから自動検出します。

mr-description とは?

このスキルは、GitLabのマージリクエスト(MR)またはGitHubのプルリクエスト(PR)のタイトルと説明を、フランス語で自動生成・更新するためのツールです。ユーザーがMR/PRのタイトルや説明を作成、修正、改善したい場合、あるいはMR/PRのリンクを指定した場合に動作します。出力は常にフランス語で行われ、タイトルは「[カード番号] <リポジトリ名大文字> - <件名> - 短い説明」という固定パターンに従い、説明は「Description」「Contexte」「Changements」「Tests」の4つのセクションからなる構造化されたMarkdown形式で提供されます。プラットフォームはURLまたはgit remote情報から自動的に検出され、`glab` または `gh` CLIを使用して実際のMR/PRデータを取得・更新します。ユーザーへの確認を複数回行う慎重なワークフローを採用しており、タイトルと説明の内容を個別に承認を得た後、最後に送信の明示的な許可を得てから更新を実行します。カード番号やコンテキストなどの情報はユーザーに確認しながら進めるため、事実の捏造を防ぎます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/nicolasroy-fr/claude-code-marketplace/tree/HEAD/plugins/dev/skills/mr-description

Installed? Explore more ライティング&編集 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

MR / PR タイトルと説明

MR/PR(タイトル、説明)に書かれるすべての内容と、ユーザーに尋ねるすべての質問はフランス語で行われます。GitLabの場合は「MR」、GitHubの場合は「PR」と呼びます。

引数(オプション)

受け取ったコンテンツ: $ARGUMENTS

引数対象
https://github.com/<owner>/<repo>/pull/<n>GitHub PR
https://<host>/<group>/<repo>/-/merge_requests/<iid>GitLab MR
#<n> / <n> のみ現在のリポジトリのMRまたはPR: git remote -v からプラットフォームを推測
なし現在のブランチのMRまたはPR: git remote -v からプラットフォームを推測

プラットフォームを推測できない場合(セルフホスト、複数のリモートがある場合など)は、ユーザーに質問します。

厳格なルール

  • タイトルと説明について明示的な確認を得ずに、MR/PRを決して変更しないでください。その後、送信のための別途明示的な承認を得てください。
  • 事実(カード番号、コンテキスト、テスト)を捏造しないでください。質問するか、記載しないでください。
  • MR/PRのコンテンツにClaudeへの言及を入れないでください。

手順

1. MR/PRを特定して取得する

引数からターゲットを解決し(上の表を参照)、コマンドを実行する前に、該当するリファレンスを読み込んでください。

  • references/sources/gitlab.md
  • references/sources/github.md

CLI(glab / gh)がないか、認証されていない場合は、推測するのではなく、ユーザーに伝えてください(! glab auth login / ! gh auth login を提案してください)。

現在のタイトル、現在の説明、ソース/ターゲットブランチ、そして変更内容(diffとコミット一覧)をリファレンスに従って取得します。diffを読んで、MR/PRの実際の内容を理解してください。

以下の情報を特定します:

  • リポジトリ名: プロジェクトパスの最後のセグメントを大文字で表記。
  • カード番号: 既存のタイトル、ブランチ名、コミット、説明から探します(例:ABC-123、#123)。見つからない場合は一度だけ質問します。ユーザーが「ない」と言った場合は、角括弧ごと省略します。

2. タイトル

パターン(両方のプラットフォームで同じ):

[<カード番号>] <リポジトリ名> - <件名> - 短い説明
  • 角括弧とカード番号は、カードが存在する場合のみ記載します。
  • <リポジトリ名>: リポジトリ名を大文字で。
  • <件名>: 常にユーザーに質問します(diffから推測した候補をデフォルトオプションとして提案しますが、単独で決定しないでください)。現在のタイトルに既に件名が含まれている場合は、そのまま維持することを提案します。
  • 短い説明: 簡潔に、フランス語で、小文字で始め、末尾にピリオドは付けません。
  • 既存のタイトルが適切で、MR/PRの内容に合っている場合は、そのまま維持し、その旨を伝えます。内容に合わなくなった場合は、修正案を提示し、変更前/変更後を示します。

3. 説明

構造(Markdown、フランス語):

# Description

<MR/PRの目標を1~2文でまとめます。>

## Contexte

<修正の場合はコードの現在の状態。期待される結果:制約、目標、アーキテクチャ、戦略。>

## Changements

- <高レベルの変更>
- ...

## Tests

- <記述したテスト、または実行した手動テスト>

セクションごとの指針:

  • Description: 目標を1~2文で記述します。草案を提案し、ユーザーに確認または修正を依頼します。
  • Contexte: 修正前の状態と期待される結果(制約、目標、アーキテクチャ、戦略)を説明します。項目ごとにユーザーに確認を求め、各項目が明確になるように質問をします(なぜこの選択か、どのような制約か、どのような代替案が却下されたか)。未確認の仮定で先に進まないでください。
  • Changements: 高レベルのリストのみ。詳細は、その詳細そのものが変更の本質である場合、またはMR/PR全体を理解するために不可欠な場合にのみ記述します。
  • Tests: 記述した自動テスト(カバーされたファイル/領域)と実行した手動テストの概要。不明な場合は質問します。実行していないテストを決して主張しないでください。

関連する質問は、AskUserQuestionを使用してバッチ処理し(件名、カード番号、コンテキストポイントなど)、多くのラウンドトリップを避けることを推奨します。

4. 既存の説明(更新の場合)

MR/PRに既に説明がある場合:

  • 新しいテキストだけでなく、セクションごとに何が変更されるか(追加/修正/削除)を示します。
  • ユーザーが書いた有用なコンテンツ(リンク、スクリーンショット、チェックリスト、テンプレートセクション、Closes #12 などのクロージングキーワード)は保持し、何か削除されるものがあればその旨を伝えます。
  • 変更内容の確認を求め、その後に進みます。

5. 確認後、送信

  1. 最終的なタイトル、対象のMR/PR(URL、ブランチ)、および完全な説明を提示し、3つすべての確認を求めます。
  2. その後、別の質問として、プラットフォームへの変更送信の承認を求めます。
  3. 承認後、説明をスクラッチパッド/一時ファイルに書き込み、プラットフォームリファレンスのコマンドを使用してMR/PRを更新します。これらのコマンドは意図的にallowed-toolsに含まれていないため、ユーザーに権限プロンプトが表示されます。
  4. 結果とMR/PRのURLを報告します。失敗した場合はエラーを表示します。静かに再試行しないでください。

関連スキル