DELTA37/structured-report

作業内容を構造化されたインタラクティブなHTMLレポートに変換し、セッション中に最新状態に保ちます。タスクのマップ、各タスク・各段階における問題・目標・収集したコンテキスト・結論・前提・未確認事項・結果・ワークフローキャンバス、そして読者の判断やアクションが必要な項目を整理します。読者はレポート内でエージェントに質問に回答し、その回答をセッションに送り返すことができます。プロンプトラックも提供します。

structured-report とは?

このスキルは、開発作業の成果とプロセスを一元管理可能なインタラクティブなHTMLレポートにまとめるためのツールです。1つの自己完結型HTMLファイルとして出力され、ネットワーク不要で閲覧できます。主な特徴として、タスク全体をマップで俯瞰し、各タスクやその内部の段階をドリルダウンして監査できる構造、読者がエージェントに質問に回答してその結果をセッションに送り返す双方向性、すべてのプロンプトを記録するジャーナル機能が挙げられます。Claude Code、Cursor、CodexといったAIエージェント連携型のIDEで活用でき、セッションを通じてレポートを追跡・更新する「リビングレポート」機能も備えています。JSONで内容を定義し、付属のビルドスクリプトでHTMLを生成するため、ユーザーはマークアップを意識せずに構造化された信頼性の高いレポートを作成できます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/DELTA37/structured-report/tree/HEAD/skills/structured-report

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

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

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

ドキュメント

構造化レポート

1つの自己完結型HTMLファイル(ネットワーク不要)で、忙しい読者が以下のことを行えます:

  1. 作業全体をタスクマップとして表示し、各タスク内で何が待機しているかを確認
  2. 任意のタスク(およびその内部の段階)を開き、どのように実行され、なぜ各主張が信頼されるのかを監査
  3. その場でエージェントの質問に回答し、どのプロンプトが何を生み出したかを確認

構造 vs コンテンツ

  • 構造 はテンプレート(assets/template.html)に属します: レイアウト、セクション名(Problem, Task, Context, Conclusions, Assumptions, Result, Not checked, Workflow, Needs approval, Your actions)、その順序、ステータス、すべてのアイコンとUIラベル。固定され、常に英語です。アイコンは構造のみを示し、コンテンツの内容については示しません。
  • コンテンツ はあなたのものです: ユーザーの言語で記述されたJSON。scripts/build.py がそれを検証し、テンプレートのプレースホルダーを埋めます。あなたはHTMLを書いたり、セクションを発明したりすることはありません。

ワークフロー

  1. 素材の収集: メッセージ、ツールの結果、ファイル、コマンド、リンク、テスト、測定結果、決定事項。実際に起こったことだけを報告します。
  2. タスクへの分割(1〜12個): 1タスク = 1つの目標とその成果。それらを links で接続します: depends、blocks、related。
  3. 各タスクの記入: 以下のルールと references/schema.md に従います。
  4. JSONの作成: デフォルトではワーキングディレクトリに reports/<YYYY-MM-DD>-<slug>.json を作成します。
  5. ビルド: python3 <skill>/scripts/build.py <file>.json → <file>.html。すべての error: を修正します。すべての warning: を読み、それが真実でない限り修正します。
  6. ローカルで開く(open / xdg-open / start)してパスを伝えます。絶対にアップロードしないでください。
  7. チャット内: 2〜4行 — 主要な結果と、読者を待っているもの。

リビングレポート: セッションを追跡し、回答を取り込む

ユーザーがセッション中にレポートを最新に保つこと(または追跡/リビングレポートを要求した場合)を望むときは、一度だけセッションをバインドします:

python3 <skill>/scripts/track.py start reports/<file>.json      # <file>.journal.json を作成

以降、UserPromptSubmit フック(一度インストール: track.py install-hook、これによりStopフックも追加されます)は、すべてのユーザープロンプトをジャーナルに記録し、プロンプト番号を通知します。作業を変更する各プロンプトの後、JSONを更新して再ビルドしてください — build.py はすべてのブロック(各ノード×セクション)をフィンガープリントし、新しいブロックまたは変更されたブロックに現在のプロンプト番号をスタンプします。スタンプを自分で書くことは決してしないでください。レポートにはプロンプトラックが表示され、プロンプトを選択すると、そこで現れた(緑)または変更された(青)ものがハイライトされます。

読者への質問。 決定事項は approvals に配置します。各項目は options(排他的(デフォルト、1つの回答)または "multi": true(該当するものすべて))を持つ質問で、recommend(マルチの場合はリスト)、why、due を指定します。常に「あなた自身の回答」が追加オプションとして存在します。オプションがない質問は自由文で回答されます。レポートでは、Needs approval セクションの未解決質問がシリーズとして表示され、一度に1つの質問が提示されます: 排他的オプションを選択すると回答して次に進み、マルチチョイスまたは独自の回答は「次へ」で確定され、シリーズはすべての回答のレビューで終了し、「回答を送信」でそれらがあなたに送信されます — これ以外の送信方法はなく、actions(読者が取る手順)には入力はありません。回答はローカルの回答サービス(127.0.0.1:47319、ビルドによって起動・更新される)に送信され、プレーンファイルとして開かれた場合でも、ジャーナルに次のプロンプトとして保存されます。レポートに未解決の質問がある間は、バックグラウンドコマンドとしてウェイターを実行し続けます:

python3 <skill>/scripts/track.py wait reports/<file>.json

読者が送信すると、wait が回答を出力して終了します — その出力があなたに返ってきます: それをユーザーのプロンプトとまったく同じように扱い、続行します。質問が残っている場合は再度 wait を開始します。ウェイターが実行されていない場合、Stopフックはキューに入った回答をあなたのターンが終わる前に引き渡し、UserPromptSubmitフックはそれらをユーザーの次のメッセージに添付します — 回答が失われることはありません。回答済みの質問は、次のビルド後に回答済みとして表示されます。--static は回答チャネルなしでレポートをビルドします(このマシンの外部で共有するため): 質問は読み取り専用で表示され、入力はありません。

入力欄の下のリンク。 scripts/statusline.py は、セッションのレポートのステータス行を1行出力します — HTMLをブラウザで開くクリック可能なリンクとしてのタイトルと、まだ待機中の質問の数。ステータス行として使用するか、その出力を既存のステータス行に追加します。レポートがないセッションでは何も出力しません。

レポートのすべてのブロックには Markdownとしてコピー ボタンがあります(レポート全体、タスクカード、レポート、セクション、単一アイテム、ステップ、プロンプト) — 読者が他の場所に貼り付けたいときにそのボタンを指し示します。

レポートを信頼できるものにするルール

各事柄について どのように知ったか を分離し、決して混同しないでください。

  • context — 実際に参照したソース: id(C1…)、短い title、実際の url、および取った正確な事実を含む note。URLをでっち上げないでください。リポジトリ/Web URLを優先: file:// リンクは読者のマシンでは開きません(ビルドが警告します。ローカルファイルが存在しない場合はエラーになります)。
  • inferences — 結論。それぞれに basis(コンテキストID)と confidence を含みます。basis がない → それは仮定です。
  • assumptions — 確認せずに真としたもの: why(理由)、verify(検証方法)、risk(誤っていた場合のリスク)。
  • unchecked — 確認しなかったことや行わなかったこと、およびその why(理由)。読者は他の何よりもこれを重視します。率直に述べてください。完了したタスクに unchecked がないと警告が出ます([] は「すべて確認済み」を意味します — 本当にそうである場合のみ)。
  • result — 現在存在するもの。型付けされたアイテムとして記述します。すべての verified アイテムには how: それを証明するコマンド、テスト、またはリンクが必要です — ビルドはこれがないと失敗します。
  • stages — 実際に行った手順。レベルあたり2〜8個。ステージはタスクと同じ種類のノードです: id + title 必須、任意のタスクフィールドが許可され、自身の stages + flow を任意の深さで持てます。カード上では detail(行ったこと)、outcome(結果)、status、when、uses を表示します。ステージをクリックすると同じ構造でレポートが開くため、実際の作業だったステージには実際のコンテンツを入れてください。行き止まりもステージです(failed / skipped)。
  • next steps are planned stages — まだ行うべきことはすべて status: "planned" のステージであり、detail(行うこと)と when(条件または時期: "after your approval"、"Monday")を含みます。計画済みまたは進行中のステージがない未完了のタスクは警告を受けます。
  • approvals — 読者だけが下せる決定: 質問、why(なぜ読者の決定なのか)、options(排他的、または multi: true)、あなたの recommend(オプションの1つ。マルチの場合はリスト)、due。1つのノード内の関連する複数の質問はシリーズになります — 読者が回答すべき順序に並べてください。すでに行ったことに対して承認を求めてはいけません。
  • actions — 読者だけが実行できること。正確な command と、関連する場合は due を含めます。
  • secrets — レポートは転送される可能性があります。キー、トークン、秘密鍵、JWT、パスワードの代入、URL内の認証情報のように見えるものがあるとビルドが失敗します(gitleaksがインストールされていればそれも使用します)。コンテンツから削除してください。決して手動で「マスク」しないでください。ログに記録されたプロンプト内の機密情報は自動的にマスクされます。

散文ではなく構造を書く

すべてのテキストフィールドは構造をレンダリングするため、構造を与えてください:

  • - item → 箇条書き。1. item → 番号付きリスト(実際のシーケンスのみ)。2つ以上の Key: value 行 → 整列テーブル。文字列のJSON配列 → 箇条書き。
  • **太字** で、行ごとに読者が見逃してはならない1〜2項目を強調。==テキスト== でハイライト。`コード` で識別子、パス、コマンドを示す。
  • 段落は2文以下。小見出しや導入行は不要。

フィールドガイダンス: brief — マップカード用の1〜3行の Key: value。problem — キー/値の事実。goal — 完了状態を説明する箇条書き。result.summary — キー/値または箇条書き。

言語

コンテンツはユーザーの言語で、meta.lang をその言語コードに設定します。構造ラベルは英語のままです。

ファイル

  • assets/template.html — 構造: プレースホルダー、スタイル、アイコン、レイアウト、ナビゲーション、検索、プロンプトラック、回答機能のためのスクリプトを含むマークアップ。
  • scripts/build.py — コンテンツの検証(上記のチェック、機密情報)、ジャーナルへのスタンプ、テンプレートのレンダリング。--check は検証のみ。--template は別のテンプレートを使用。
  • scripts/track.py — start、wait、hook、stop-hook、daemon、status、install-hook(docstringを参照)。
  • scripts/statusline.py — Claude Codeのステータス行用のレポートリンク。
  • references/schema.md — すべてのフィールドの定義。
  • examples/ — 英語とロシア語の例。ロシア語の例には5プロンプトのジャーナルが含まれています。

関連スキル