> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# プレイブックの作成

> 組織全体で再利用可能なプロンプトライブラリを構築する

export const PromptBlock = ({children, type, agent, intent, playbookId}) => {
  var utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=prompt-block';
  var tag = 'docs-use-case-gallery';
  var agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  var label = type === 'schedule' ? 'Schedule in Devin' : type === 'playbook' ? 'Create Playbook' : type === 'knowledge' ? 'Add to Knowledge' : agent === 'advanced' ? 'Try in Devin' : agent === 'dana' ? 'Try in Dana' : agent === 'ada' ? 'Try in Ask Devin' : 'Try in Devin';
  var buildUrl = function (text) {
    var encoded = encodeURIComponent(text);
    if (type === 'schedule') return 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + '&prompt=' + encoded;
    if (type === 'playbook') return 'https://app.devin.ai/settings/playbooks/create?' + utm + '&body=' + encoded;
    if (type === 'knowledge') return 'https://app.devin.ai/knowledge?' + utm + '&body=' + encoded;
    if (agent === 'ada') return 'https://app.devin.ai/search?' + utm + '&noSubmit=true&prompt=' + encoded;
    return 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encoded;
  };
  const ref = React.useRef(null);
  const [href, setHref] = React.useState('#');
  React.useEffect(() => {
    if (!ref.current) return;
    var codeEl = ref.current.querySelector('pre code');
    if (codeEl) {
      var text = codeEl.textContent.trim();
      if (text) setHref(buildUrl(text));
    }
    var header = ref.current.querySelector('[data-component-part="code-block-header"]');
    if (header && !header.querySelector('.prompt-block-devin-link')) {
      var link = document.createElement('a');
      link.href = href;
      link.target = '_blank';
      link.rel = 'noopener noreferrer';
      link.className = 'prompt-block-devin-link';
      link.style.cssText = 'display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#fff;font-size:11px;font-weight:500;padding:4px 10px;border-radius:6px;white-space:nowrap;background:#317CFF;transition:background 0.2s;margin-left:8px;';
      link.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg> ' + label;
      link.onmouseenter = function () {
        link.style.background = '#2968D9';
      };
      link.onmouseleave = function () {
        link.style.background = '#317CFF';
      };
      header.appendChild(link);
    }
    var existingLink = ref.current.querySelector('.prompt-block-devin-link');
    if (existingLink && href !== '#') existingLink.href = href;
  });
  return <div className="prompt-block" ref={ref}>{children}</div>;
};

<div id="what-are-playbooks">
  ## Playbook とは何ですか？
</div>

<div id="playbooks-are-easily-shareable-reusable-prompts-for-repeated-tasks">
  ### Playbook は、繰り返し行うタスク向けの、共有しやすく再利用可能なプロンプトです
</div>

Playbook は、繰り返し行うタスクのためのカスタム system プロンプトのようなものです。たとえば、アプリケーションのさまざまな箇所で、同じサードパーティライブラリを統合する Devin セッションが多数必要な場合、Playbook を使うとよいでしょう。

Playbook は共有しやすく再利用も簡単なため、誰かが Devin を使ってうまくいったら、他の人もその成功をより簡単に再現できます。

<Tip>ほとんどのベストプラクティス、スタイルガイド、その他プロジェクト固有の指示は、[Knowledge](/ja/product-guides/knowledge) を使って Devin と共有することをおすすめします。どの方法がニーズにより適しているか理解するために、Playbook を作成する前に Knowledge のドキュメントを読むことをおすすめします。</Tip>

<Frame>
  <img src="https://mintcdn.com/cognitionai/gfRQhyCSwUhbMkzA/images/playbooks1.png?fit=max&auto=format&n=gfRQhyCSwUhbMkzA&q=85&s=5c0cd713ed71ed09f7442327451ae942" alt="Devin" width="2468" height="1438" data-path="images/playbooks1.png" />
</Frame>

次のような場合に Playbook の利用をおすすめします。

* あなたやチームメイトが、複数のセッションで同じプロンプトを再利用する予定がある場合。
* Devin に対して、同じ注意点やリマインダーを繰り返し伝えている場合。
* そのユースケースが、組織内や Devin ユーザーコミュニティ内の他の人にも関係しそうな場合。

<div id="getting-started-with-playbooks">
  ## プレイブック のはじめ方
</div>

<Tip> プレイブック は、Devin が幅広い領域で即戦力として貢献できるようにする強力な仕組みですが、現時点では作成に一定のスキルが必要です。プロンプトエンジニアリングと同様に、プレイブック の作成には試行錯誤が伴います。ただし、その成果物は、Redshift へのデータ投入やデータベース移行から、Together、Plaid、Stripe、Modal、Springboot、Odoo、Storybook など多様なソフトウェアや API の利用まで、Devin が複雑な作業に自律的に取り組めるようにするドキュメントです。</Tip>

まずは、Devin に任せたいシンプルなマルチステップのタスクを題材に、最初の プレイブック を作成してみてください。

1. 次の内容をまとめたドキュメントを作成します:
   1. Devin に最終的に達成してほしい成果
   2. その成果に到達するために必要なステップ
2. **任意**: **手順**、**仕様**、**Advice**、**Forbidden Actions**、**Required from User** といったセクションを追加します
   1. **手順**: タスクの全体像を記述します。セットアップ、本作業、成果物の提示について、それぞれ少なくとも 1 つのステップを含めてください。
   2. **仕様**: 事後条件を記述します ― Devin の作業完了後に、何が満たされているべきか？
   3. **Advice**: Devin の事前の前提や思い込みを補正するためのヒントを記載します
   4. **Forbidden Actions**: Devin が絶対に行ってはならない行動を記載します
   5. **Required from User**: ユーザーから必要となる入力や情報を記載します
3. Web アプリで [Create a new プレイブック](https://app.devin.ai/settings/playbooks/create) をクリックして、プレイブック を直接作成します。あるいは、拡張子 `.devin.md` のファイルとして保存し、Devin セッション開始時に Web アプリへドラッグ＆ドロップします

<Frame>
  <img src="https://mintcdn.com/cognitionai/gfRQhyCSwUhbMkzA/images/playbooks2.png?fit=max&auto=format&n=gfRQhyCSwUhbMkzA&q=85&s=24a6aa4b9cf2489115409f932a74b5d8" alt="Devin" width="1226" height="386" data-path="images/playbooks2.png" />
</Frame>

<Tip> セッションに プレイブック が正常にアタッチされると、青いピル状の表示が現れ、セッション開始前に プレイブック を編集できるインラインコンポーネントが表示されます。 </Tip>

<Frame>
  <img src="https://mintcdn.com/cognitionai/gfRQhyCSwUhbMkzA/images/playbooks3.png?fit=max&auto=format&n=gfRQhyCSwUhbMkzA&q=85&s=e4d95965d842093ff2572734b0c16709" alt="Devin" width="1920" height="416" data-path="images/playbooks3.png" />
</Frame>

<div id="writing-a-great-playbook">
  ## 優れたプレイブックの作成方法
</div>

<div id="procedure">
  ### 手順
</div>

手順セクションでは、次の点を満たしてください。

* **1 行につき 1 つのステップ**とし、各行は命令形で記述する
* タスクの範囲全体をカバーする
* セットアップ・実際のタスク・成果物のそれぞれに少なくとも 1 つのステップを含める
* ステップは **相互排他的 (Mutually Exclusive)** かつ **網羅的 (Collectively Exhaustive)** になることを目指す
* **追加のヒント**
  * 手順は、コードにおける if/else/loop/goto のように、Devin のアクションの順序を定義するのに役立つべきです
  * 本当に必要な場合を除き、タスクを過度に細かくしすぎないでください。Devin の問題解決能力を損なう可能性があります
  * 各手順のステップには、Write や Navigate to などのアクション動詞を含めてください

<div id="advice-and-pointers">
  ### アドバイスとポイント
</div>

次のような場合は、Devin にアドバイスやポイントを共有してください。

* タスクの進め方について、好みや標準的なやり方がある場合
* アドバイスがタスク全体、または複数のステップに適用される場合。特定の 1 ステップにのみ当てはまるアドバイスは、そのステップの箇条書きの下にサブの箇条書きとして記載してください
* Devin の事前の想定を修正したい場合。アドバイスは、その実行に影響を与える疑似コード上のコメントのように機能します。

<Tip> アドバイスが 1 つの Procedure ステップにのみ適用される場合は、そのステップの下にネストされた箇条書きを使って記載してください </Tip>

<div id="specifications">
  ### 仕様
</div>

**Specifications** セクションは、プレイブックの事後条件、つまり Devin の実行が完了した時点で何が満たされているべきかを記述するのに役立ちます。

<div id="whats-needed-from-user">
  ### ユーザーに準備してもらうもの
</div>

Devin の制御範囲外だが、実行に必要となるものを洗い出してください。たとえば、Devin からはアクセスできないトークンや非公開情報をユーザーが提供する必要がある場合などです。

<div id="other-tips-tactics">
  ### その他のヒントとテクニック
</div>

<AccordionGroup>
  <Accordion title="試行錯誤で反復し、改善する">
    * 同じプレイブックで 2 つ以上の Devin を並行実行して、起こりうるエラーをすばやく洗い出します。
    * Devin が助けを必要としている場合は、チャットでやり取りして手助けしてください。そのうえで、次回は介入なしでも Devin が成功できるようにプレイブックに追記します。
  </Accordion>

  <Accordion title="Devin に「良い状態」を具体的に伝える">
    成果物が何なのか、そして Devin が完了したことをどのように伝えるべきかを明示します（例: どのファイルを添付するか、どのリンクを共有するかなどを、必要に応じて指定する）。
  </Accordion>

  <Accordion title="プレイブックの実行速度を最適化する">
    Devin が取りうるさまざまな判断パターンを洗い出し、プレイブック内で最も効率的な経路に沿って Devin を導きます。
  </Accordion>

  <Accordion title="特定のコマンドや「呪文」めいた指定、文字列もどんどん使ってよい">
    * それらが、動くプレイブックと壊れたプレイブックを分ける決定要因になり得ます。
    * たとえば次のような指定は、とても有用な詳細になり得ます。`alloy` や `tts-1` は Devin が自分では選ばなかった可能性が高く、この指定によって、より成功しやすい方向に Devin を導けます。

    ```
    3. Create request dict with model: "tts-1", voice: "alloy"
    ```
  </Accordion>
</AccordionGroup>

<div id="example-playbook">
  ## プレイブックの例
</div>

以下のプレイブックを利用したセッションの例は[こちら](https://app.devin.ai/sessions/93f381206f44492e9fc8b236ee022877)および[こちら](https://app.devin.ai/sessions/eed1a18b9ce348f69e6bac84bb42d992)から確認できます。

<div id="macros">
  ## マクロ
</div>

任意のプレイブックに**マクロ**を割り当てることができます。マクロは `!` で始まる短い識別子です (例: `!data-tutorial`) 。マクロを使うと、プロンプト入力欄にそのマクロ名を入力するだけで、プレイブックをすばやくセッションに追加できます。マクロに使用できるのは英字、数字、ハイフンのみで、ご利用の組織内で一意である必要があります。

<div id="version-history">
  ## バージョン履歴
</div>

プレイブックでは**バージョン履歴**が保持されるため、変更内容を時系列で追跡できます。プレイブックを編集して保存するたびに、新しいバージョンが作成されます。以前のバージョンを表示でき、最近の変更が期待どおりに機能しなかった場合は、以前のバージョンに戻すこともできます。

<div id="enterprise-playbooks">
  ## Enterprise プレイブック
</div>

enterprise customers の場合、プレイブックは組織レベルに加えて**Enterprise レベル**でも管理できます。Enterprise プレイブックは enterprise 内のすべての組織で共有されるため、チーム間でワークフローを標準化しやすくなります。Enterprise 管理者は、enterprise settings から Enterprise レベルのプレイブックを作成および管理できます。

<PromptBlock>
  ```txt R Data Science Tutorial theme={null}
  Playbook: R データサイエンスチュートリアル

  ## Overview
  R Markdown ノートブックを使用してデータサイエンスのチュートリアルを作成します。

  ## What’s Needed From User
  - データセットへのリンク（CSV ファイルの添付または Kaggle のリンク）
  - どのようなデータサイエンスチュートリアルを作成するかの具体的なタスク内容

  ## Procedure
  1. ユーザーが提供したデータセットをダウンロードします。
  - 必要に応じて、Kaggle CLI を使用してデータセットをダウンロードします。この際、認証情報は不要です。
  2. `data_science_tutorial.Rmd` という名前の R Markdown ノートブックを作成します。
  3. 中間コードを書いて保存するための `tmp.Rmd` ファイルを作成します。
  4. `data_science_tutorial.Rmd` ファイル内に 5 つのメインセクションを作成し、`tmp.Rmd` ファイルから以下を含むコードを追加します。
  - データセットの統計情報: データセットの統計的な要約を生成します。
  - EDA（Exploratory Data Analysis / 探索的データ分析）: 提供されたデータに対して棒グラフと散布図を作成します。
  - 学習用・テスト用データの分割: データを 80:20 の比率で分割し、学習用データとテスト用データを保存します。
  - 機械学習モデルの学習: モデルを学習させ、学習済みモデルを保存します。
  - 保存済みモデルでの推論: 保存したモデルを読み込み、ユーザーが指定した評価指標を用いてテストデータ上で性能を評価します。
  5. コードが書き終わったら、各セクションごとに短い説明文を追加します。
  6. R Markdown ノートブックを HTML 形式に変換します。
  7. 最終的な R Markdown ノートブック、HTML ファイル、保存したモデル、およびテストデータをユーザーに送信します。

  ## Specifications
  1. R Markdown ノートブックと HTML ファイルをユーザーに送信します。
  2. 保存したモデルとテストデータをユーザーに送信します。

  ## Advice and Pointers
  1. すでにインストールされているパッケージを再インストールしないでください。
  2. このタスクを完了するために RStudio へのサインインは不要です。
  3. 各セクションにコードを追加した後、ノートブック全体を実行してください。

  ## Forbidden Actions
  1. `data_science_tutorial.Rmd` ファイルを上書きしないでください。
  ```
</PromptBlock>
