mcpField
C
console-rendering

console-rendering

github.com/github開発5.5k54 回インストール今日更新
リポジトリ

console-rendering について

Go の構造体タグを使うコンソール描画システムのガイドです。開発者が構造体、スライス、マップの表示やフィールド名、値の形式を設定できます。

主な機能

  1. 01フィールド名とセクション名の設定
  2. 02数値とコスト値の書式設定
  3. 03ゼロ値や指定フィールドの省略
  4. 04構造体スライスのテーブル表示
  5. 05時刻値の自動書式設定

活用シーン

  1. 01Go 構造体を整列したキーと値で表示
  2. 02レコードのスライスをテーブルで表示
  3. 03コンソール出力の指標やコストを整形

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/github/gh-aw --skill console-rendering

インストール後、Claude Code で/console-renderingを入力して読み込まれたか確認します。

詳細

コンソール描画システムの使い方

このガイドでは、構造体タグベースのコンソール描画システムについて説明します。

構造体タグのサポート

console 構造体タグを使用して、描画方法を制御します。

  • header:"Name" - フィールドの表示名を設定します(構造体とテーブルの両方で使用されます)
  • title:"Section Title" - ネストされた構造体、スライス、またはマップのタイトルを設定します
  • format:"type" - フィールド値のフォーマット形式を設定します
    • format:number - 整数を読みやすい数値形式で表示します(例:"1k"、"1.2M")
    • format:cost - 浮動小数点数を $ 接頭辞付きの通貨形式で表示します(例:"$1.234")
  • omitempty - 値がゼロ値の場合、フィールドを省略します
  • "-" - 常にフィールドを省略します

使用例

type Overview struct {
    RunID    int64  `console:"header:Run ID"`
    Workflow string `console:"header:Workflow"`
    Status   string `console:"header:Status"`
    Duration string `console:"header:Duration,omitempty"`
}

data := Overview{
    RunID:    12345,
    Workflow: "test-workflow",
    Status:   "completed",
    Duration: "5m30s",
}

// Simple rendering
fmt.Print(console.RenderStruct(data))

// Output:
//   Run ID  : 12345
//   Workflow: test-workflow
//   Status  : completed
//   Duration: 5m30s

フォーマットタグの例

数値のフォーマット
type Metrics struct {
    TokenUsage int `console:"header:Token Usage,format:number"`
    Errors     int `console:"header:Errors"`
}

data := Metrics{
    TokenUsage: 250000,
    Errors:     5,
}

// Renders as:
//   Token Usage: 250k
//   Errors     : 5
コストのフォーマット
type Billing struct {
    Cost float64 `console:"header:Estimated Cost,format:cost"`
}

data := Billing{
    Cost: 1.234,
}

// Renders as:
//   Estimated Cost: $1.234

描画動作

構造体

構造体は、適切に整列されたキーと値のペアとして描画されます。

スライス

構造体のスライスは、自動的にテーブルとして描画されます。

type Job struct {
    Name       string `console:"header:Name"`
    Status     string `console:"header:Status"`
    Conclusion string `console:"header:Conclusion,omitempty"`
}

jobs := []Job{
    {Name: "build", Status: "completed", Conclusion: "success"},
    {Name: "test", Status: "in_progress", Conclusion: ""},
}

fmt.Print(console.RenderStruct(jobs))

次のように描画されます。

Name  | Status      | Conclusion
----- | ----------- | ----------
build | completed   | success
test  | in_progress | -
マップ

マップは、Markdown 形式の見出しとキーと値のペアとして描画されます。

特殊な型の処理
time.Time

time.Time フィールドは、自動的に "2006-01-02 15:04:05" 形式にフォーマットされます。omitempty と併用する場合、ゼロ時刻の値は空として扱われます。

エクスポートされていないフィールド

描画システムは、フィールド値にアクセスする前に CanInterface() を確認することで、エクスポートされていない構造体フィールドを安全に処理します。

コメント