From 26b32c49f1b959f106191d1cc8a36b5f90d2e190 Mon Sep 17 00:00:00 2001 From: laiso Date: Fri, 1 May 2026 18:44:03 +0700 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20Issue=E9=A7=86=E5=8B=95=E3=83=A2?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=81=AECI=E3=83=97=E3=83=AD=E3=83=B3?= =?UTF-8?q?=E3=83=97=E3=83=88=E3=82=92=E6=9B=B8=E7=B1=8D=E7=89=88=E3=81=AB?= =?UTF-8?q?=E5=90=88=E3=82=8F=E3=81=9BPR=E4=BD=9C=E6=88=90=E3=81=BE?= =?UTF-8?q?=E3=81=A7=E5=AE=8C=E8=B5=B0=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E5=BC=B7=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 書籍 ch07 7.6 節の `issueDrivenInstructions` で示されている 7 項目 TODO テンプレートと 「ファイル修正だけで終わるな」の重要強調、`createIssueComment` の名指し指示を採用。 従来の 1 行ステップ羅列ではベース指示の 4 項目 TODO テンプレに押し負け、gpt-5-nano 等の小型モデルがファイル修正/テスト実行のみで終了し PR 作成まで到達しなかった。 ch07-7 補足の `## Issue本文(参照用)` ブロックは維持。 Co-Authored-By: Claude Opus 4.7 (1M context) --- bin/cli.ts | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/bin/cli.ts b/bin/cli.ts index 85685d6..2fac135 100644 --- a/bin/cli.ts +++ b/bin/cli.ts @@ -117,16 +117,31 @@ async function main() { const issueText = process.env.ISSUE_TEXT || ''; const issueDrivenInstructions = `${baseInstructions} - -## CI向け追加指示 -あなたは GitHub Actions で実行される TypeScript コーディングエージェントです。Issue番号は ${process.env.ISSUE_NUMBER || '(なし)'} です(「(なし)」ならコメントは不要)。 +あなたは GitHub Actions で実行される TypeScript コーディングエージェントです。 +現在の環境は CI 環境であり、あなたの仕事はコードを修正してプルリクエストを作成することです。 +トリガーとなった Issue 番号は ${process.env.ISSUE_NUMBER || '(なし)'} です(もし「(なし)」ならコメントは不要)。 ## Issue本文(参照用) ${issueText} -- 作業を始める前に、必ずTODOリストを作成する。 -- 次の順番で作業する: Issue理解 → ファイル読込 → 修正 → テスト → Gitコミット/プッシュ → PR作成 → Issueへ結果コメント。 -- レポートは日本語で行うこと。`; +## ワークフロー +以下の手順で作業を進めてください: + +1. **TODOリストの作成**: Issueの内容に基づき、以下の項目を含むTODOリストを作成する。 + - [ ] Issue を理解する + - [ ] 対象ファイルを読み込む + - [ ] コードを修正する + - [ ] 修正結果をテストする + - [ ] Git にコミットしてプッシュする + - [ ] プルリクエストを作成する + - [ ] 元の Issue にコメントで報告する + +2. **タスクの実行**: TODOリストに従って作業を進める。 + - **重要**: ファイルを修正しただけでは終了ではない。必ず Git コミット、プッシュ、プルリクエスト作成まで行うこと。 + - 最後に createIssueComment を使い、作成したプルリクエストのURLを元のIssueに投稿すること。 + +3. **完了報告**: すべてのTODOが完了したら、結果をまとめる。 +`; const agent = new Agent({ name: 'nano-code', From 2c52dc4d8265341fee804755460fc737ba7d651e Mon Sep 17 00:00:00 2001 From: "nano-code[bot]" Date: Fri, 1 May 2026 11:52:18 +0000 Subject: [PATCH 2/2] test: add calculator tests --- workspace/calculator.test.ts | 23 +++++++++++++++++++++++ workspace/calculator.ts | 16 ++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 workspace/calculator.test.ts create mode 100644 workspace/calculator.ts diff --git a/workspace/calculator.test.ts b/workspace/calculator.test.ts new file mode 100644 index 0000000..c8689a6 --- /dev/null +++ b/workspace/calculator.test.ts @@ -0,0 +1,23 @@ +import { add, subtract, multiply, divide } from './calculator' + +describe('calculator', () => { + test('add', () => { + expect(add(1, 2)).toBe(3) + }) + + test('subtract', () => { + expect(subtract(5, 3)).toBe(2) + }) + + test('multiply', () => { + expect(multiply(2, 3)).toBe(6) + }) + + test('divide', () => { + expect(divide(6, 3)).toBe(2) + }) + + test('divide by zero throws', () => { + expect(() => divide(1, 0)).toThrow('Division by zero') + }) +}) diff --git a/workspace/calculator.ts b/workspace/calculator.ts new file mode 100644 index 0000000..a68994f --- /dev/null +++ b/workspace/calculator.ts @@ -0,0 +1,16 @@ +export function add(a: number, b: number): number { + return a + b +} + +export function subtract(a: number, b: number): number { + return a - b +} + +export function multiply(a: number, b: number): number { + return a * b +} + +export function divide(a: number, b: number): number { + if (b === 0) throw new Error('Division by zero') + return a / b +}