post-progress

star 38

作業進捗をXに面白く投稿する。コミット後に使用

M5Fly-kanazawa By M5Fly-kanazawa schedule Updated 2/15/2026

name: post-progress description: 作業進捗をXに面白く投稿する。コミット後に使用

X 進捗投稿スキル

$ARGUMENTS を解釈:

  • -n <数>: 直近N件のコミットをまとめる(デフォルト: 1)
  • --day <数>: 直近N日間のコミットをまとめる(例: --day 7で1週間分)
  • -m "<メッセージ>": 自動生成メッセージの前に追加するユーザーメッセージ
  • --dry-run: 投稿せずプレビューのみ
  • --style <スタイル>: fun(デフォルト)/formal/emoji

Note:

  • -n--dayを両方指定した場合は--dayが優先されます
  • -mを指定すると、指定したメッセージが自動生成メッセージの前に追加されます(置き換えではなく追加)

実行手順

  1. コミット情報の取得 git log で直近コミット情報を取得:

    • -n が指定された場合: git log -n <数>(件数ベース)
    • --day が指定された場合: git log --since="<数> days ago"(期間ベース)
    • 両方指定された場合: --day を優先
    • どちらも指定されない場合: -n 1(最新1件)

    コミット選択が必要な場合(--select:

    1. git log -20 --oneline で直近20件を番号付きで表示:
      直近20件のコミット:
       1. 5738147 feat(workflow): improve display format
       2. 8982e4e refactor(workflow): restore Claude-based post
       3. 64c972b fix(workflow): add --list option
       ...
      
    2. 一覧の後に「投稿したいコミットの番号をカンマ区切りで入力してください(例: 1,3,7)」とテキストで表示し、ユーザーのチャット入力を待つ(AskUserQuestion は使わない)
    3. 選択直後に確認メッセージを表示: 「✅ 選択されたコミット: #1, #3, #7 (3件)」
    4. 選択されたハッシュで git show を実行してコミットメッセージを取得
  2. 文脈の把握(投稿文生成の前に必ず実行) 選択されたコミットだけでは「何を目指しての作業か」が不明な場合がある。 以下の手順で文脈を確認し、読者に全体像を伝えられるようにする:

    1. 選択コミットの前後5件を git log で確認し、関連する一連の作業を特定
    2. 同じスコープ(例: workflow, control, cli)や同じ機能に関するコミットが連続していれば、それが「一連の作業」
    3. 一連の作業の最初のコミットから目的を読み取る(最初のコミットに動機が書かれていることが多い)
    4. 必要に応じて関連コミットも git show で詳細を確認

    判断基準: 選択されたコミットの subject だけを読んで「なぜこの作業が必要だったか」が明確にわからなければ、文脈確認が必要。

    : fix(workflow): use plain text input for commit selection だけでは何の話かわからない → 前後を見ると post-progress スキルのコミット選択UI改善の一連の作業とわかる → 冒頭で「進捗投稿スキルのコミット選択UIを改善した」と全体目的を述べる

  3. 投稿文の生成(Claude が実行) コミットメッセージと文脈情報を元に、以下のスタイルで投稿文を生成:

    共通ルール:

    • 800-900文字程度を目安に詳細な技術情報を含める
    • ハッシュタグを2-3個追加
      • プロジェクト固有タグ: stampfly_ecosystem ディレクトリの場合は #StampFly を含める
      • 技術タグ + 分野タグ(例: #制御工学 #ドローン開発)
    • 構造化された情報提供を重視
    • 5W1H を意識: なぜ(Why)、何が問題で(Problem)、何を(What)、どのように(How)、何が改善されたか(Impact)

    スタイル別:

    • fun(デフォルト): ストーリー性と技術詳細を組み合わせた拡張スタイル

      投稿構成(800-900文字):

      1. 冒頭(1-3行):
        • -m オプション指定時: ユーザーメッセージ + 空行 + 自動生成メッセージ
        • -m オプションなし: 課題や動機を明示(「〜するため」「〜が問題だった」)
        • コミット数を明記
      2. 実装内容(3-5項目): 主要な成果を箇条書き
        • 技術用語を読みやすく説明
        • 「Add XXX」→「XXXを実装し、〜が可能に」のように成果を表現
      3. 詳細セクション(カテゴリ別に整理、2-3セクション):
        • 「◆カテゴリ名: 説明」形式
        • 因果関係を説明(「〜により〜が実現」「〜することで〜を実現」)
        • 具体的なシーンや使用例を含める
        • 設計判断の理由を説明
      4. 締め(1-2行): 成果のインパクト(何が改善されたか)
      5. ハッシュタグ: 2-3個(技術 + 分野)

      重要なポイント:

      • 機械的な箇条書きではなく、ストーリーとして語る
      • 読者が「なるほど」と思える因果関係を説明
      • 専門用語はそのまま使わず、何を意味するか説明する
      • 英語のコミットメッセージは日本語で意訳する
    • formal: 絵文字なし、ビジネスライクな報告形式

    • emoji: 絵文字多め、視覚的にインパクトのある表現

  4. プレビュー表示 生成した投稿文を以下のフォーマットで表示:

    表示フォーマット:

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    ✅ 選択されたコミット: #5, #13 (2件)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
    📝 投稿プレビュー (XXX文字):
    
    [投稿文の全文をそのまま表示]
    
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    

    重要なポイント:

    • コミット選択直後に選択確認メッセージを表示(番号とハッシュ)
    • 明確な区切り線(━)で視覚的に分離し、コミットリストと投稿文を区別
    • 投稿文は改行を含めてそのまま表示(コードブロック不要、生の投稿文として見せる)
    • 文字数を明記(800-900文字が目安)
    • 最後にもう一度区切り線を表示して投稿文の終わりを明示

    --dry-run の場合はここで終了

  5. 成果画像の探索(投稿前に実行) コミットに関連する画像を探索し、添付候補を提示する:

    1. git diff --name-only <最古コミット>^..<最新コミット> で変更ファイル一覧を取得
    2. 以下の優先順で画像候補を探索:
      • 直接変更された画像ファイル: *.png, *.jpg, *.jpeg, *.gif, *.webp
      • TikZ 変更 → 同じディレクトリまたは images/ サブディレクトリの PNG を探索
      • Beamer/LaTeX 変更 → 対応する build/images/ ディレクトリの PNG/PDF を探索
      • コード変更 → 関連するスクリーンショットや図(docs/images/, images/ 等)
    3. 候補が見つかった場合、一覧を表示:
      📎 画像候補:
        1. docs/workshop/images/lesson4_block_diagram.png (45KB)
        2. docs/workshop/images/lesson7_pid_response.png (62KB)
        3. docs/workshop/build/slides_lesson4.png (128KB)
      添付する画像の番号を選択してください(例: 1,2、スキップは Enter)
      
    4. ユーザーのチャット入力を待つ(最大4枚まで選択可能)
    5. 候補がない場合はスキップして次のステップへ

    注意: 画像は PNG/JPG/GIF/WebP 形式、5MB 以下のみ対応

  6. X への投稿 承認されたら以下を実行:

    画像なしの場合:

    python3 .claude/skills/post-progress/scripts/post_to_x.py "<投稿文>"
    

    画像ありの場合:

    python3 .claude/skills/post-progress/scripts/post_to_x.py "<投稿文>" --media "path1.png,path2.png"
    

    dry-run の場合(画像プレビュー付き):

    python3 .claude/skills/post-progress/scripts/post_to_x.py "<投稿文>" --media "path1.png" --dry-run
    

投稿文の例

入力(コミットメッセージ):

Add user authentication with JWT tokens
Implement token refresh mechanism
Add password reset flow

出力(fun スタイル・拡張版):

ECサイトのセキュリティ強化のため、この1週間で認証基盤を全面刷新した。

実装内容:
・JWT認証(RS256署名/アクセス15分・リフレッシュ7日)
・トークン自動更新機構(HTTPOnly Cookie + CSRF対策)
・パスワードリセットフロー(有効期限付きワンタイムトークン)
・多要素認証対応(TOTP/SMS)

◆認証アーキテクチャ: ステートレスなJWT設計により、Redisなどのセッションストアが不要に。アクセストークンは短命(15分)で漏洩リスクを最小化し、リフレッシュトークン(7日)でUXを維持。水平スケールが容易になった。

◆セキュリティ強化: CSRF対策としてSameSite Cookie属性を使用。パスワードリセットは有効期限付きワンタイムトークンで、再利用攻撃を防止。多要素認証でアカウント乗っ取りリスクを大幅に低減。

◆テスト: 認証フロー全体でE2Eテスト実装(Playwright使用)。トークン更新、失効、並行アクセスのエッジケースを網羅。

ステートレスな認証基盤が整い、安全に水平スケールできる体制が完成

#Web開発 #認証 #JWT

StampFly プロジェクトの場合(ハッシュタグに #StampFly を含める・拡張版):

ドローンの開発サイクルを加速するため、この1週間でツールチェーンを大幅に強化した(54件のコミット)。

実装内容:
・システム同定/ESKFシミュレーションCLI(Bode線図/グリッドサーチ/100+パターン評価)
・ROS2統合(WebSocket→UDP移行/Phase 2完了/外部PC制御)
・Serial CLI刷新(ESP-IDF標準コンソール採用/コマンド追加容易化)
・WiFi設定の実行時変更(チャンネル/デバイスID動的設定)

◆解析ツール(6件): システム同定コマンド(sf sysid)で実機の伝達関数を推定し、Bode線図/極零点マップ/ゲイン余裕を可視化。ESKFのQ/R行列グリッドサーチで100パターン以上を自動評価し、最適なフィルタパラメータを探索可能に。pytest単体テストとJupyter可視化チュートリアルも整備。

◆ROS2統合(4件): Phase 1でWebSocket経由のテレメトリブリッジを実装し、Phase 2でUDP経由の制御指令送信に対応。外部PCからPythonでリアルタイム制御できる環境が整った。400Hzテレメトリをros2 topic echoで確認可能。

◆CLI改善(5件): 独自実装からESP-IDF標準コンソールに移行し、コマンド追加が容易に。USB CDC VFS対応でスタックサイズ問題も解決。CLI拡張ガイドも整備し、新機能の追加が高速化。

実機開発の生産性が大幅に向上し、データ駆動なパラメータ調整が可能になった

#StampFly #組込み #ROS2

-m オプションを使った場合の例:

年末年始の開発成果をまとめました。

ドローンの開発サイクルを加速するため、この1週間でツールチェーンを大幅に強化した(54件のコミット)。

実装内容:
・システム同定/ESKFシミュレーションCLI(Bode線図/グリッドサーチ/100+パターン評価)
・ROS2統合(WebSocket→UDP移行/Phase 2完了/外部PC制御)
...(以下同じ)

#StampFly #組込み #ROS2

使用例

# 基本的な使い方
/post-progress                # 最新1件のコミット
/post-progress -n 5          # 直近5件のコミット
/post-progress --day 7       # 直近7日間のコミット

# 🆕 インタラクティブ選択(推奨)
/post-progress --select
# → 直近20件を表示、番号で選択(例: 1,2,5 と入力)

# 🆕 特定のコミットを指定
/post-progress --commits f3a6083,139df24
# → 指定したハッシュのコミットのみ投稿

# 🆕 範囲指定
/post-progress --range 4c8c60c..f3a6083
# → 指定範囲内の全コミット

# プレビューのみ(投稿しない)
/post-progress --select --dry-run
/post-progress -n 3 --dry-run

# ユーザーメッセージ追加
/post-progress --select -m "今週の開発成果"
/post-progress -n 7 -m "年末年始の開発成果をまとめました。"

# スタイル変更
/post-progress -n 10 --style formal
/post-progress --select --style emoji

# 画像添付(自動探索)
/post-progress --select
# → コミット選択後、変更ファイルから画像候補を自動探索して提示

必要なパッケージ

pip install requests requests-oauthlib

環境変数の設定

X API の認証情報を環境変数に設定してください:

# ~/.zshrc に追加
export X_API_KEY="your-api-key"
export X_API_SECRET="your-api-secret"
export X_ACCESS_TOKEN="your-access-token"
export X_ACCESS_TOKEN_SECRET="your-access-token-secret"

エラーハンドリング

  • Git リポジトリでない場合: エラーメッセージを表示
  • コミットがない場合: エラーメッセージを表示
  • 環境変数が未設定の場合: 設定方法を案内
  • API エラーの場合: エラー内容を表示
Install via CLI
npx skills add https://github.com/M5Fly-kanazawa/stampfly_ecosystem --skill post-progress
Repository Details
star Stars 38
call_split Forks 8
navigation Branch main
article Path SKILL.md
More from Creator
M5Fly-kanazawa
M5Fly-kanazawa Explore all skills →