本文へ移動
cccskills
GitHub Copilot 公式無料GitHub で公開日本語紹介

issue-markdown

GitHubのIssue・コメント・レビューに載せるMarkdownを型付きツリーで組み立て、安全な形式やメタデータを保ちながら一度の描画で公開する作業を支援します。

原文原文の説明を見る

Build and refactor issue, comment, and review bodies in actions/setup/js using typed report trees and a single publication render.

github/gh-awスター 5,519(GitHub 5,519 + cccskills 0)

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • Issue本文の生成処理を構造化したいとき
  • コメントに帰属情報やメタデータを含めたいとき
  • 既存Markdownをポリシーを保って取り込みたいとき
  • コメントの文字数上限を正確に守りたいとき

日本語での紹介

できること

GitHubのIssue、コメント、レビューに掲載するMarkdownを、文字列の連結ではなく型付きのレポートツリーとして組み立てる作業を支援します。見出し、段落、表、コードブロック、アラートなどを構造として扱い、本文やフッター、帰属情報、実行メタデータを含む文書全体を一度に描画します。既存Markdownの取り込みやテンプレートへの値の挿入にも対応し、メンションやリンクの制限、文字数上限、コメント更新時の追記・置換など、公開時の条件を保つための方針を示します。

こんなときに便利

GitHub Actionsなどの処理結果をIssueやコメントへ投稿するコードを整えたいときに向いています。既存の本文生成処理を構造化したい場合や、エージェント由来の内容とフレームワーク側の注記を区別して扱いたい場合にも使えます。Jira ADFのようにMarkdownではないデータは別形式として扱う方針です。

使い方の例

  • 「Issueに投稿する本文生成を型付きReportツリーに置き換えて」
  • 「コメントのフッターと実行情報を含めて、文字数上限内で描画して」

注意点

既存実装では actions/setup/js/report_ast.cjs などの定義と公開APIを使います。検証には対象のVitestスイート、npm run typecheck、JavaScriptの整形・lintが記載されています。Jira ADFテキストはMarkdownとして解析・描画しません。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

含まれるファイル(1)

  • SKILL.md6.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Issue and comment Markdown

Use this skill when generating or changing Markdown published to issues, comments, or reviews, especially in actions/setup/js/. Build a Report tree first; render only the complete document. Do not assemble Markdown using interpolation, concatenation, body +=, or arrays of Markdown strings joined with newlines. Parsing an assembled string afterward is not a tree-first refactor.

Find publication paths

Search production .cjs files for issues.create, issues.update, createComment, updateComment, createReview, createReplyForReviewComment, and GraphQL body variables. Trace each body back through shared helpers, fallback comments, retries, staged previews, and append/prepend/replace-island updates. Exclude test fixtures, HTTP payload assembly, and step-summary-only output. Jira ADF text is not Markdown: preserve its literal entities, Unicode, and paragraphs instead of routing it through the Markdown parser or renderer.

Use the existing tree

actions/setup/js/report_ast.cjs defines Report, ReportBlock, and ReportInline. Use JSDoc annotations so npm run typecheck verifies node kinds:

/** @type {import("./report_ast.cjs").Report} */
const report = {
  type: "report",
  title: "Workflow result",
  children: [
    {
      type: "paragraph",
      agentTainted: false,
      children: [
        { type: "text", value: "Created related issue: ", agentTainted: false },
        { type: "issue_reference", number: String(issue.number), agentTainted: false },
      ],
    },
    { type: "code_block", language: "text", value: diagnostic, agentTainted: true },
  ],
};

Use heading, paragraph, list, table, details, quote, alert, separator, code_block, and typed inline nodes instead of Markdown punctuation. GitHub [!NOTE], [!TIP], [!IMPORTANT], [!WARNING], and [!CAUTION] map to alert nodes with the matching kind; the renderer emits their markers. Keep alerts separate rather than nesting them inside another alert, which GitHub does not support. Preserve supported <sub> formatting in details summaries. Use xml_marker, json_marker, expiration, and closing_reference for machine metadata and closing links. Preserve xml_marker.compact for identifiers whose exact spelling is used by cleanup. Use review_marker for the durable, URI-encoded review caller reference; keep the authoritative marker last. Dynamic labels, paths, errors, and identifiers belong in text/code nodes; link destinations belong in link.url.

Import existing agent/user Markdown with parseReportMarkdown, specifying agentTainted: true, the correct allowedMentions, and the existing heading and metadata policy. Parse configured templates before scalar substitution using context; use typed inline/block slots for inserted nodes. Never interpolate untrusted values into a template before parsing it. A literal code fence in imported content must not swallow attribution or adjacent generated blocks.

For managed comment memory, set code_block.language to gh-aw-comment-memory:<id> and fenceLength: 6; rendering lengthens the fence past embedded backticks. Do not construct or slice fences by hand.

Compose shared attribution

Use the typed variants instead of rendering a helper and reparsing its output:

PurposeTree-first API
Generated attribution and guard noticesbuildGeneratedFooterBlocks / assembleReportBodyParts in markdown_body_helpers.cjs
Deferred footer templates and diagnostic sectionsbuildFooterBlocks(getFooterMessageParts(context)) in messages_footer.cjs
Configured policy footergetBodyFooterBlocks or appendConfiguredReportFooter
Detection warninggetDetectionCautionBlocks
Failure-comment attributiongetFooterAgentFailureCommentBlocks
Authoritative execution metadataappendReportExecutionProvenance

Keep custom templates and their scalar context separate until composition. Headers and footers may jointly open/close <details>; use buildIssueBodyReport to parse these wrappers together around body slots. Allocate unique slot names against both source text and previously allocated slots, and reject wrappers that swallow slots inside code fences. Internal framework notes carried between handlers use non-JSON-forgeable Symbols such as COMMENT_PREAMBLE and ISSUE_BODY_SUFFIX, never agent-settable flags.

Preserve publication contracts

Framework-authored nodes use agentTainted: false; agent-owned descendants retain their taint even inside framework wrappers. Keep required footer diagnostics, metadata, and policy text protected during size fitting. Do not mark an entire agent body trusted to keep it from being shortened.

For attributed safe-output issues and comments, use buildIssueBodyReport in issue_body.cjs; it accepts Markdown or typed body blocks and retains configured wrappers, attribution, expiration, and execution provenance. Comment callers set the appropriate itemType and workflowIdMarker: false. Pass the original workflow runUrl when the target repository differs from the execution repository. Fallback issues must import the original agent body and compose recovery nodes, not reparse an already assembled or rendered PR/discussion description.

For other issue producers, pass a typed report to renderIssueParameters/createReportIssue in issue_report.cjs, preserving the existing authentication and retry boundary. buildIssueReport accepts typed blocks as well as imported Markdown. For comments, render the complete tree with renderSizedReport from report_size.cjs and pass its body to the existing API. Do not render fragments and concatenate or reparse them. Keep one logical render boundary, including metadata and trusted footers in its size budget. renderSizedReport trims trailing whitespace automatically and measures the publication body against the exact maxLength. Do not trim its result or reserve an extra character for a terminal newline. Low-level renderReport retains its terminal newline for Markdown serialization. Never truncate rendered Markdown or trusted policy text to fit.

Validate the migration

Preserve footer on/off behavior, marker identity and order, mention/link limits, expiration, cross-repository attribution, structured state recovery, managed memory extraction, review fallbacks, and append/prepend/island semantics. Assert tree shape as well as rendered output. Cover hostile backticks and HTML delimiters, Unicode, escaped table cells, and the exact publication size limit. Update formatting expectations only for intentional canonical rendering, not to hide lost content or metadata.

Run the matching Vitest suites from actions/setup/js, npm run typecheck, and the repository JavaScript formatting/lint gates. Follow the developer skill for final repository validation and publication.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

agent-collaboration

GitHub Copilot 公式無料概要あり

複数のAIエージェントが共同作業する際の、作業ルートの確認、判断理由の記録、担当者への相談、レビューで差し戻した成果物の担当変更を定めるスキル。

  • 別々の作業場所で共有ファイルを探す
  • 他の担当に関わる判断の記録
  • 別の専門担当に相談したいとき
github/gh-aw5,5192026年10月30日 更新

agent-conduct

GitHub Copilot 公式無料概要あり

複数エージェントの開発で、固有のエージェント名をコードやテストに持ち込まないルールと、完了前のテスト確認を共通化するスキルです。失敗からの学びも記録します。

  • 複数エージェントの開発ルール共有
  • コードやテストの固有名依存の防止
  • 作業完了前の関連テスト確認
github/gh-aw5,5192026年10月30日 更新

agentic-workflows

GitHub Copilot 公式無料概要あり

GitHub Agentic Workflowsの設計・作成・更新・障害調査などの依頼を分類し、作業に合う手順を読み込んで進めるスキルです。

  • 対話しながらワークフローを設計したいとき
  • 実行失敗や繰り返すエラーを調べたいとき
  • 更新して非推奨の設定を直したいとき
github/gh-aw5,5192026年10月30日 更新

architectural-proposals

GitHub Copilot 公式無料概要あり

実装前に設計変更の提案書をまとめ、チームの合意形成を支えます。課題の根拠、既存機能への影響、判断事項、リスク、初期版の範囲を具体的に整理します。

  • 大きな設計変更を提案したいとき
  • 基盤変更に伴う開発計画の見直し
  • 技術の選択肢を比較して承認を得たいとき
github/gh-aw5,5192026年10月30日 更新

awf-release-integrator

GitHub Copilot 公式無料概要あり

gh-awが使うgh-aw-firewallのバージョンを更新し、仕様や設定スキーマの差分確認、生成物の再構築、関連テストと追加対応の整理まで進めるスキル。

  • gh-awの依存バージョンを更新したいとき
  • リリース変更の取り込み範囲を確認したいとき
  • 設定スキーマの差分を調べたいとき
github/gh-aw5,5192026年10月30日 更新

checkout-credential-review

GitHub Copilot 公式無料概要あり

gh-awでリポジトリ取得後に実行するgitやghの処理をレビューし、認証情報の受け渡し、取得範囲、認証できない場合のエラー処理を点検するスキル。

  • 取得後のgit操作をレビューしたいとき
  • 別の非公開リポジトリの認証点検
  • ファイルや履歴の取得範囲の変更確認
github/gh-aw5,5192026年10月30日 更新

github のスキルをすべて見る

このスキルの問題を報告する