Communityコーディング&開発github.com

marcioaltoe/write-tasks

仕様のPRD/TechSpecを依存関係順に並んだタスクグラフに分解します。成果物は、垂直スライス形式のタスクファイルと、`docs/specs/<slug>/` 配下に置かれる機械可読な `_tasks.md` DAGマニフェストです。QAゲートの判断は仕様から自律的に決定され、権限・アーキテクチャ・影響範囲に関わる場合のみエスカレーションされます。

write-tasks とは?

このスキルは、開発仕様書(PRDおよびTechSpec)を実行可能なタスクグラフに分解するためのものです。`docs/specs/<slug>/_prd.md`(および存在すれば `_techspec.md`)を入力として、依存関係順に並べられたタスクファイル(`task_NN.md`)と、それらのトポロジを定義するマニフェストファイル(`_tasks.md`)を生成します。この成果物は、後続のエージェント(`implement-task` や Roundfix Daemon)が仕様フォルダのみの情報で各タスクを独立して実行できるように設計されています。 このスキルは、`$ARGUMENTS` で指定された仕様を解析し、複雑度が低くQAや管理対象パスを含まないタスクは軽量プランで実行されるよう考慮します。また、分解に先立って、プロジェクト制約の事前チェック、ツール設定変更の承認確認、スキルカバレッジマップの整合性検証など、厳格な事前条件を実行します。タスクは垂直スライス(全レイヤを通る狭いパス)として分割され、各タスクは単一セッションで完了可能なサイズに収められ、テストが組み込まれ、独立して実装可能であることが求められます。 主な利用プラットフォームはClaude Code、Cursor、CodexなどのAIエージェント環境であり、`_tasks.md` は依存関係グラフを、各タスクファイルはステータスを管理するという責務分離が特徴です。QAゲートの判断は仕様から自律的に下され、権限・アーキテクチャ・影響範囲に関わる場合のみ人間へのエスカレーションが発生します。 このスキルは、大規模な機能開発を管理可能な単位に分割し、エージェント間の並列実行を可能にすることで、開発プロセス全体の効率と信頼性を向上させます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/marcioaltoe/roundfix/tree/HEAD/skills/write-tasks

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

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

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

ドキュメント

Write Tasks

docs/specs/<slug>/_prd.md(および存在すれば _techspec.md)を実行可能なタスクグラフに変換します。タスクごとに task_NN.md ファイルと、マニフェストである _tasks.md を生成します。_tasks.md は implement-task と Roundfix Daemon がスケジュールを組むための元となります。成果物は契約です。つまり、新しいエージェントセッションが、タスクファイル1つと仕様フォルダだけをコンテキストとして、そのタスクをビルドできなければなりません。

軽量プランの計画

complexity: low であり、QAではなく、管理対象パスを宣言していないタスクは、軽量プランで実行されます。作成者は、計画用プルリクエストがマージされる前に roundfix spec judge <slug> --stage tasks を実行して、アドバイザリ的なプラン提案を得ることができます。この提案がディスパッチを制御することはありません。

事前条件

$ARGUMENTS が仕様を指定します。_prd.md が存在しなければなりません。実際のアーキテクチャ上の表面を持つ機能で _techspec.md が欠落している場合は、まず write-techspec を実行してから分解します。存在しない成果物を作成することが解決策であり、許可を求めて停止する理由にはなりません。自律作業中は、これを確認する必要はありません。自律作業の指示は、承認済みキュー内のすべての仕様に対して、作成チェーン全体を承認するものです(docs/agents/autonomous-work.md に従う)。テクニカルスペックなしで分解するよう明示的に指示された場合のみ受け入れを求め、その場合は分解前にコードベースをより深く探索することで補償します。

プロジェクト制約の事前チェック

分解の導出または承認の前に、以下の事前チェックを実行します。

  1. 仕様を分類します。解決済みのアーカイブディレクトリ(ビルトインの docs/specs ルートの場合は docs/history/specs/、外部または非デフォルトルートの場合は <spec-root>/_archived/)配下の仕様、またはこの契約が適用される前に完了したことが証明された仕様は、完了済みまたはアーカイブ済みのレガシー仕様です。すべてのレガシー成果物をバイト単位で同一に保ちます。バックフィル、再フォーマット、再生成、書き直しは行いません。
  2. アクティブでアーカイブされておらず、まだ完了していないすべての仕様について、PRDおよび存在するすべてのTechSpecに完全な Project Constraints セクションが含まれていることを要求します。各セクションには、Identifier strategy、Authentication and HTTP、Active ADR obligations、Tooling authority が、該当する場合は理由付きで、該当しない場合も理由付きで記録されていなければならず、各行はその運用元である docs/agents/ のソースパスを引用しなければなりません。
  3. いずれかのアクティブな成果物が欠落または不完全な場合、_tasks.md またはタスクファイルの作成または更新を拒否します。欠落している行、理由、またはソースパスをすべて指定し、仕様を所有する作成スキルに差し戻します。
  4. 提案されたスライスが、リポジトリツールの設定、スクリプト、無視ファイル、プラグイン宣言、またはバージョン固定の作成、編集、名前変更、移動、または削除を含むかどうかを検査します。このような作業は、PRDおよび存在するTechSpecのレコードがメンテナの承認と、それがカバーする正確で境界のあるリポジトリ相対ファイルを明示している場合にのみ許可されます。一般的な実装リクエスト、セットアップの承認、またはタスクの割り当ては承認ではありません。承認と境界ファイルの両方がない場合、分解を拒否します。
  5. すべてのツールスライスについて、<spec-root>/<slug>/_authorization.md の運用レコードを解決します。レコードがない場合、proposed レコード、または付与日がないレコードは何も承認しません。運用中の付与が存在するまで分解を拒否します。新しい付与または拡大された付与は、それを消費するスカッシュデリバリーの前にターゲットの祖先ブランチにランディングする必要があります。したがって、付与または修正を、それが承認する変更に折り込むことはできません。
  6. 境界ファイルのリストを、承認された各ツールタスクのスコープと受け入れ基準にコピーします。タスクはこれらのパスと自身のタスクファイルのみを変更できます。異なる境界を必要とする作業は分割します。
  7. レコードの operations リストは、仕様が使用するすべてのデリバリー操作を許可していなければなりません。roundfix deliver start は、implement、commit、push、pull_request、または merge が欠落しているレコードを拒否します。管理対象パスがない仕様は paths: [] を記録します。
  8. タスクコミットは、その正確なパスが仕様の承認レコードの実行可能ファイルリストに記載されている場合にのみ、追跡されていない実行可能ファイルを保持します。それ以外の追跡されていない実行可能ファイルは拒否されます。リストは、Runが読み取る前にデリバリターゲット上になければなりません。QAレポートおよびバッチコミットは、追跡されていない実行可能ファイルを決して保持しません。core.fileMode がfalseのリポジトリは、ファイルを100644として記録します。

依存関係は _tasks.md のみが所有します。タスクステータスは各タスクファイルのみが所有します。事前チェックは、これらの責任を決して移動しません。

別のオペレーティングシステム用のコードは、そのシステム向けに非テストコードをビルドして検証され、例えば GOOS=windows go build -buildvcs=false ./<package> のように検証され、ホスト用に書かれたテストもコンパイルする go vet は決して使用しません。

所有ルール(何がどこにあるべきか、そしてその理由)

  • 依存関係は _tasks.md グラフのみに存在します。 タスクファイルには決して記述しません。エッジのコピーが2つあると、グラフが乖離する原因になります。
  • ステータスは各タスクファイルのフロントマターのみに存在します。 _tasks.md はトポロジを所有し、進捗は所有しません。スケジューラは状態を読み取るためにタスクファイルを再読み取りします。
  • タスクタイプはすべてのタスクファイルで必須です。 backend、frontend、data、infra、docs、test、chore、qa のうち、正確に1つを使用します。qa は、マニフェストの qa: フィールドで指定された、独自に作成されたターミナルゲートのために予約されています。実装コマンドはこの値をルーティングに使用し、欠落または不明な値は拒否します。プレースホルダーを残したり、後でタイプを推測したりしないでください。
  • コンテンツは参照し、複製しません。 タスクファイルはPRD/TechSpecのセクションを名前で参照します。仕様を言い換えるタスクは、仕様が修正されるたびに古くなります。採用元のコピーは、所有する仕様内の採用後のパスでリンクし、そのタスクファイルからの相対パスで宛先を指定し、採用前の来歴パスでは決してリンクしません。二次的な仕様は、プライマリ所有者のコピーをリンクし、何も採用しません。所有者のアーカイブはアーカイブ再リンクを実行します。そのコピーを docs/references/ に昇格させ、二次的な仕様のリンクを書き換えるため、ソースは1つの所有者を維持し、二次的な仕様はコピーを必要としません(ADR-0260、ADR-0083)。
  • コンテキストエントリはラベル付きパスです。 ## Context は、タスクが標準の仕様バンドルを超える特定の指示またはインターフェースパスを必要とする場合にのみ追加します。- instruction: <path>、- interface: <path>、- creates: <path>、- deletes: <path> の形式の箇条書きを使用します。パスはクリーンで、リポジトリ相対であり、一意でなければなりません。タスクは最大50の一意なエントリを宣言できます。Daemonは、以前に変更されたファイルを含む200パスの仕様コンテキストバンドルを埋める前に、これらのパスを予約します。
  • 宣言された編集と管理対象パスは明示的です。 タスクが編集するすべてのパスは interface: または creates: の下で宣言されます。削除するすべてのパスは deletes: の下でのみ宣言され、interface: でも instruction: でもありません。削除する前にファイルを読み取るタスクでも、deletes: の下に1回だけリストします。削除は未解決参照チェックではスキップされ、スコープ、管理対象パス、Wave衝突の監査でカウントされます。Daemonは、宣言された削除がまだ存在する場合、検証前の決済を拒否し、deletes: <path> still exists を報告します。instruction: パスは読み取り専用であり、2つのタスクを衝突させることはありません。コマンドを変更する各タスクは、変更する1つのコマンドファイルを宣言します。.agents/skills/roundfix/references/<command>.md とそのミラー、および docs/user-guide/commands/<command>.md であり、スキルの SKILL.md や commands.md は、エントリファイル自体を変更する場合を除いては宣言しません。同じファイルを宣言する2つのタスクはWaveを共有できないため、異なるコマンドを変更するタスクは一緒に実行でき、同じコマンドを変更するタスクはそれらの間のエッジを必要とします。宣言された、または検証読み取りの管理対象パスは、仕様の _authorization.md の paths: と、bounded files: 行の両方に現れなければなりません。そうでない場合、SC-TOOLING-UNDECLARED で作成が拒否されます。CLIサーフェスを指定するタスクは、自身または依存するタスクを介して、そのスキルまたはガイド自体を指定します。そうでない場合、SC-CLI-UNDOCUMENTED で報告されます。

Daemonは、タスクが宣言せずに変更したパスを、コミット時に ## Recorded paths に記録します。QAスコープ監査は、その記録されたパスを宣言済みとしてカウントします。記録は変更を開示し、何も予約しません。予見可能なすべてのパスを宣言することがルールであり続けます。

2つのタスクがそれぞれ変更する可能性のあるテストヘルパー、フェイク、フィクスチャ、またはゴールデンファイルは、予見可能なパスです。それを変更する可能性のあるすべてのタスクの interface: で宣言します。これにより、roundfix spec check --strict は、仕様がまだ作成中で、needs エッジが指定するタスクを直列で実行する際に SC-WAVE-COLLISION を報告します。記録は何も予約せず、完了したタスクは決して衝突しません。タスクの決済コミットは、2つのタスクのうち1つが完了していない場合(例えば、タスクが pending に再オープンされた場合)にのみ衝突の証拠となります。したがって、宣言されていない同じファイルを変更した後に両方とも完了した1つのWaveの2つのタスクは決して拒否されません。ファイルを宣言することが唯一の防御策です。

変更された動作サーフェスのためのスキルタスク

リポジトリのスキルカバレッジマップが docs/references/skill-coverage.json に存在する場合は、それを読み取ります。非QAタスクが interface:、creates:、または deletes: の下でソースを宣言する、カバーされているすべての動作サーフェスについて、interface: または creates: の下でそのカバーするスキルファイルの1つを宣言する非QAスキルタスクを含めます。SC-SKILLS-UNTASKED は、そのようなタスクがないサーフェスを報告します。

変更にスキルテキストが必要ない場合、PRDのオプションの ## Skills セクションに - unchanged: <surface id> — <reason> を記録し、interface: または creates: の下でマップを宣言する非QAタスクを含めて、カバレッジレビューを記録します。エントリだけではサーフェスを免責しません。SC-SKILLS-MALFORMED は、別の形状のエントリ、不明なサーフェス、または空の理由を報告します。両方のルールは、マップを追加したコミットから開始されます。マップがないリポジトリはこれらをスキップします。

interface:、creates:、または deletes: の下で docs/user-guide/ の下のMarkdownページを宣言する非QAタスクは、interface: または creates: の下で docs/references/behavior-surfaces.json も宣言し、要件に -record-skill-coverage ステップを指定しなければなりません。別のタスクがそれをカバーすることはできません。ガイドタスク自体の決済がそのフィンガープリントをチェックします。仕様の _authorization.md の制限は、そのレコードを決して禁止してはなりません。SC-SURFACE-RECORD-UNTASKED は、レコードを持つリポジトリにおいて、タスク段階からのギャップを、猶予期間なしで報告します。

分解ルール

  • 垂直スライス。 各タスクは、それが触れるすべてのレイヤを通る、狭いながらも完全なパスを提供し、それ自体でデモ可能または検証可能でなければなりません。トレーサーバレットであり、レイヤではありません(「すべてのスキーマ」は間違ったタスクです。「期限切れのインポートを再試行し、そのステータスを表示する」が正しいタスクです)。

  • まず事前リファクタリング。 スライスが準備を必要とする場合、それを独自の先頭タスクにします。変更を容易にしてから、容易な変更を行います。

  • 作成中に外部サーフェスを特性評価します。 仕様がアダプター、コントラクト、データベースなどの外部サーフェスを横断する場合、特性評価タスクを作成します。このタスクは、フェイクが行うことではなく、実際の境界が行うことを記録します。これにより、サポートされていない前提が、QAゲートではなく、仕様の作成中に失敗します。

    依存関係を needs にリストし、単にファイル内で前に配置するだけではありません。 前提が特性評価に依存するすべてのタスクは、_tasks.md の needs エントリにそのタスクを指定します。実行のWaveは needs のみから構築されるため、マニフェストで単に後ろに現れるタスクは、依存する特性評価と同じWaveで実行でき、まだ特性評価されていない境界を読み取る可能性があります。ファイルの順序は依存関係ではありません。

    特性評価タスクは実際の境界に触れるため、明示的にバインドします。 そのファイルは、到達するターゲットを名前で示します。読み取り専用で動作するか、タスク自体が作成および削除する分離されたインスタンスに対して実行します。デフォルトでは、共有または本番状態に対して特性評価を行いません。そのターゲットにスコープされ、それより広くない認証情報を使用し、キャンセルを尊重し、失敗した場合でも作成したものをクリーンアップします。書き込みを必要とする特性評価は、その書き込みが他の不可逆アクションと同じようにタスクで承認されることを要求します。境界が何を行うかを記録することは、それを変更する権限ではありません。

    その検証はレコードをアサートし、境界はアサートしません。 Daemonは、タスクの宣言された ## Verification コマンドをシェルを介して逐語的に実行します。エージェントターンが存在する前に、変更されていないツリーに対して1回、決済時に再度1回実行します。そのパスの何も、上記の境界を読み取りません。それらはエージェントを制約し、Daemonはエージェントではありません。したがって、実際のサーフェスに到達する検証は、作業が行われる前を含め、境界なしで2回到達します。タスクが記録した特性評価(その形状、存在、下流タスクが読み取るもの)を検証し、境界呼び出しはエージェントターンに残します。そこでは、タスクの宣言されたターゲット、分離、認証情報、および書き込み承認が適用されます。これが、これらのコマンドがすでに持っている密閉性ルールであり、それを破る誘惑が最も強い場所で述べられています。ライブな外部サーフェスはアンビエントな状態であり、それに依存するコマンドは密閉的ではありません。

  • 1つの新しいセッションに適したサイズ。 エージェントが新しいコンテキストで1回のセッションで完了できるタスク。約7つのサブタスクまたはファイルを超える場合は分割します。

  • テストは埋め込み、分離しない。 すべてのタスクの受け入れ基準には、独自のテストが含まれます。後続の「テストを書く」タスクは、以前のタスクが決して完了していなかったことを意味します。

  • 独立して実装可能。 needs が完了すると、タスクは他の未完了の作業を必要としてはいけません。これにより、後でワークツリー間での並列実行が可能になります。

  • 検証は密閉的で、ポータブルで、効果を証明し、Daemonが所有するものでなければなりません。 すべてのタスクの ## Verification コマンドは、on を使用して新しいワークツリーで満たせなければなりません。

…

(翻訳のため省略)

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

marcioaltoe/archive-spec

Archive a completed spec — verify every task completed, QA passed, and indexed references are self-contained, then write <slug>.md under the resolved archive root (<spec-root>/_archived/, or docs/history/specs/ for the built-in docs/specs root) and remove the Spec folder, which stays in Git at the record's source_revision. Runs automatically at the end of a Roundfix Spec Run after a QA pass, or whenever the user asks to archive a spec.

marcioaltoe/roundfix

Use Roundfix to plan releases with the read-only Release Plan Command, clean CodeRabbit pull request feedback, diagnose runtime readiness with the Doctor Command, execute a Spec's Task Graph with the Implement Command, monitor Runs through the Supervisor Run Event Stream, reclaim Run storage with the GC Command, archive completed Specs, run its `--follow-up`, `--status` and `--unattended` Skill Modes, and, inside daemon-assigned Batch runs, follow the bounded Review Issue or Task resolution contract.

marcioaltoe/write-prd

Write a PRD as a durable local artifact at docs/specs/<slug>/_prd.md — research first, clarify with one multiple-choice question at a time, record decisions as ADRs, then write directly without draft-approval rounds.

marcioaltoe/write-techspec

Write the technical spec at docs/specs/<slug>/_techspec.md — explore the architecture, settle technical decisions one question at a time, record them as ADRs, and produce a build order that write-tasks can decompose. Entry point for feature work with an approved PRD, and also for refactors and bug fixes, where it mints the spec folder with a minimal _prd.md instead of requiring a product interview.

関連スキル