mcpField
W
write-report

write-report

github.com/fellowship-devエージェントワークフロー3197 回インストール2 週間前に更新
リポジトリ

write-report について

エージェント向けに、ミッションやチームのレポート作成を標準化するスキルです。命名や配置から Quest ダッシュボードへの投稿までを扱い、タイムスタンプ、リポジトリのパス、担当ルールを定めたファンアウト用マニフェストにも対応します。

主な機能

  1. 01規定のファイル名でレポートを生成
  2. 02リポジトリルートから保存先を決定
  3. 03ファンアウト用マニフェストを作成
  4. 04Markdown レポートを Quest に投稿
  5. 05レポートをコミットしてプッシュ

活用シーン

  1. 01ミッション完了時のレポート作成
  2. 02ロールコールのチームレポート作成
  3. 03ファンアウトバッチのマニフェスト記録
  4. 04レビューや crew-runner レポートの準備

インストール

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

$npx skills add https://github.com/fellowship-dev/dogfooded-skills --skill write-report

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

詳細

write-report

適切な名前を付け、適切な場所にミッションレポートを作成して、Quest ダッシュボードに投稿します。CONVENTIONS.md に記載された定型処理をすべてまとめており、エージェントがコピー&ペーストしたり、忘れたりするのを防ぎます。

使用するタイミング

  • 各ミッションの終了時にミッションレポートを作成するとき
  • ロールコールのチームレポートを作成するとき
  • speckit、deps、review、crew-runner のレポートを作成するとき
  • ファンアウトバッチをディスパッチして、スーパーバイザーマニフェストを作成するとき

使用しないタイミング

  • crew/*/ サブディレクトリ内 — すべてのレポートはリポジトリのルートにある reports/ に保存します
  • 別のチームのレポートを作成するとき — 各エージェントが自身のレポートを作成します

呼び出し例

# Standard mission report
/write-report --group crew-runner --id "fellowship-dev-navvi-42" --type crew-runner

# Rollcall team report
/write-report --group rollcall --id lexgo --type rollcall

# Fan-out manifest (written at dispatch time by supervisor)
/write-report --manifest --group rollcall --jobs "lexgo:pending,tooling:pending,navvi:pending"

ワークフロー

ステップ 1:レポートディレクトリを解決する

必ず Git リポジトリのルートを基準に解決します。crew/*/ をハードコードしたり、使用したりしてはいけません。

REPORT_DIR="$(git rev-parse --show-toplevel)/reports"

git rev-parse が失敗した場合、Git リポジトリ内にいません。正しいプロジェクトのルートに cd して、再試行してください。

ステップ 2:ファイル名を生成する

タイムスタンプはすべて UTC です。

TIMESTAMP=$(date -u +"%Y%m%d-%H%M")

ファイル名のパターン:

レポートの種類ファイル名
標準(speckit、deps、review、crew-runner){TIMESTAMP}_{group}_{id}.md
ロールコールのチーム{TIMESTAMP}_rollcall_{team}.md
ロールコールのアセンブリ{TIMESTAMP}_rollcall_assembly.md
ファンアウトマニフェスト{TIMESTAMP}_{group}_manifest.json

例:

20260413-1100_rollcall_lexgo.md
20260413-1115_crew-runner_fellowship-dev-navvi-42.md
20260413-1100_rollcall_manifest.json
ステップ 3:ファイルを作成する

Markdown レポートの場合 — 利用できる場合は Write ツールを使用し、そうでない場合は Bash に切り替えます。

REPORT_PATH="${REPORT_DIR}/${TIMESTAMP}_${GROUP}_${ID}.md"

レポートの内容全体をそのパスに書き込みます。Write ツールが allowed-tools に含まれていない場合(例:CEO/CTO の役割)は、代わりに Bash を使用します。

cat > "$REPORT_PATH" << 'REPORT_EOF'
[report content here]
REPORT_EOF

ファンアウトマニフェストの場合(--manifest フラグ):

MANIFEST_PATH="${REPORT_DIR}/${TIMESTAMP}_${GROUP}_manifest.json"

必須の JSON 構造(すべてのフィールドが必須):

{
  "group_id": "{group}-{YYYYMMDD}-{HHMM}",
  "origin_job": "~/.local/share/pylot/missions/done/{job-file}.job",
  "jobs": {
    "job-id-1": "pending",
    "job-id-2": "pending"
  },
  "created_at": "2026-04-13T11:00:00Z"
}

--jobs 引数を解析します(形式:"id1:state1,id2:state2,...")。

python3 -c "
import json, sys
jobs_str = sys.argv[1]
jobs = {}
for pair in jobs_str.split(','):
    job_id, state = pair.strip().split(':')
    jobs[job_id.strip()] = state.strip()
manifest = {
    'group_id': sys.argv[2],
    'origin_job': sys.argv[3] if len(sys.argv) > 3 else 'unknown',
    'jobs': jobs,
    'created_at': sys.argv[4]
}
print(json.dumps(manifest, indent=2))
" "$JOBS_ARG" "${GROUP}-${YYYYMMDD}-${HHMM}" "${ORIGIN_JOB:-unknown}" "$(date -u +%Y-%m-%dT%H:%M:%SZ)" > "$MANIFEST_PATH"

ジョブの状態: pending · done · failed

ステップ 4:Quest DB に投稿する

必ず試行してください。失敗した場合は、何も表示せずにスキップします。マニフェストは投稿せず、.md レポートのみを投稿します。

QUEST_TOKEN=$(grep '^QUEST_TOKEN=' /home/ubuntu/projects/fellowship-dev/claude-buddy/.env | cut -d= -f2)
curl -s -X POST "http://127.0.0.1:4242/api/event" \
  -H "Authorization: Bearer $QUEST_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(python3 -c "
import json
content = open('$REPORT_PATH').read()
print(json.dumps({
  'source': 'commander',
  'type': 'commander.report',
  'title': '$REPORT_TITLE',
  'meta': {'content': content, 'report_type': '$GROUP'}
}))
")" 2>/dev/null || true
ステップ 5:コミットしてプッシュする
cd "$(git rev-parse --show-toplevel)"
git add reports/
git commit -m "report: ${GROUP} ${ID}"
git push

エラー処理

git rev-parse が失敗する — Git リポジトリ内にいません。実行する前に、正しいプロジェクトのルートに cd してください。

Quest に接続できない — オフライン/Pod 環境では想定される状態です。|| true ガードがこれを処理します。再試行しないでください。

--jobs の解析エラー — jobs 文字列の形式が正しくありません。想定される形式は "id1:state1,id2:state2" です。各ペアには : 区切り文字が 1 つだけ必要です。

ファイルがすでに存在する — Write ツールは上書きします。同じ分に複数のレポートを作成する場合は、ID にサフィックスを付けてください。

重要なルール

  • crew/*/ には絶対に書き込まないでください — git rev-parse --show-toplevel からパスを解決してください
  • タイムスタンプはすべて UTC にしてください — 必ず date -u を使用してください
  • マニフェストは Quest に投稿しません — 投稿するのは .md ファイルのみです
  • ワーカーは各自のレポートを作成します — 別のチームのレポートを作成しないでください
  • Quest のスキップは何も表示せずに行ってください — || true は必須であり、省略できません

コメント