ライフスタイル

Skill のスクリプト、参照、素材

反復処理と大きな資料を支援ファイルに分け、必要時の読み込みと相対パスを確認します。

読了目安 15 分 · 操作 30 分

独自の手順図です。製品画面の画像ではありません。
画像:Mokaair (© Mokaair)
総目次へ:Codex 学習ガイド:全記事の目次

上級 · Desktop / CLI / VS Code / JetBrains

事前に読む記事

この記事の目次
  1. 目標と準備
  2. 手順1:スキルと入力を作る
  3. 手順2:仕様と報告テンプレート
  4. 手順3:単独で検証できるプログラム
  5. 手順4:SKILL.md からリソースを参照
  6. 手順5:使用と成果確認
  7. 失敗例、復元、次の学習

目標と準備

この段落の教材・資料:

教材一式をダウンロードして codex-skill-lab を展開し、各ファイルの説明を読みます。次の記事の skill.test.mjs も含みますが、全体スキルを自動導入しません。

フォルダー内の全ファイルが自動実行されるわけではありません。SKILL.md は対象と順序、references は必要時に読む仕様、assets は出力書式、scripts は実行コードです。今回は JSON の読取りと集計だけを行い、サイト変更、通信、公開を含めず、各リソースの役割を確認します。

リソース内容今回の確認
SKILL.md範囲と順序リンクと停止条件
references入力契約同名許可、ID 重複拒否
assets空の報告型実結果を記入し旧数値を残さない
scripts検査コード手動実行3/1/2

手順1:スキルと入力を作る

Windows、macOS、Linux ともファイラーかエディターで同じ名前の構成を作ります。data はスキル外の実習ルートに置き、再利用する手順と毎回変わる入力を分けます。SKILL.md.txt や余分な同名階層になっていないか確認し、ユーザー全体の .agents にはコピーしません。

フォルダー構成 · text
codex-skill-lab/
  data/tasks.json
  .agents/skills/todo-summary/
    SKILL.md
    references/input-format.md
    assets/report.md
    scripts/count-tasks.mjs

data/tasks.json に全入力を貼ります。a と c は同じ Read でも別タスクなので、タイトルで重複排除せず ID で区別します。誤った統合を検出するための設計です。completed は引用符なしの JSON 真偽値で、最後のレコード後に余分なカンマを付けません。

data/tasks.json · json
[
  {"id":"a","title":"Read","completed":true},
  {"id":"b","title":"Build","completed":false},
  {"id":"c","title":"Read","completed":true}
]

手順2:仕様と報告テンプレート

references/input-format.md に次の仕様を書きます。教材独自の契約であり、Codex が全 JSON に強制する形式ではありません。必須項目、不正入力の扱い、入力を変更しない境界を定めます。将来優先度を加える場合、仕様、検査、テストを同時に更新します。

references/input-format.md · markdown
# Task input contract

- Input is a JSON array. An empty array is valid.
- Each record has a nonempty string id, a nonempty string title,
  and a boolean completed value.
- IDs are unique. Repeated titles are allowed and remain separate.
- Extra fields may be present; the summary ignores them.
- Invalid input must fail; do not silently drop or repair records.
- Read input only. Do not change, sort or overwrite the source file.
- Report total, active and completed. total = active + completed.

次に assets/report.md を作ります。固定項目で実行間を比較し、山括弧は測定値ではなく記入箇所です。実行前は終了コードや件数を未記入とし、見た目が整ったテンプレートを完成報告と見なしません。前回の数値を持ち越さないよう完成報告と分けます。

assets/report.md · markdown
# Task summary

Input: <relative input path>
Command: <exact command>
Exit code: <observed exit code>
Total: <observed total>
Active: <observed active>
Completed: <observed completed>
Input preserved: <verification and result>
Not checked: <remaining checks>

手順3:単独で検証できるプログラム

全文を scripts/count-tasks.mjs に保存します。引数のファイルだけを読み、全入力を検証してから集計します。JSON 不正、ID 重複、型不正は stderr に理由を出し終了1、成功は stdout に JSON のみを出し終了0です。scripts 内にあるだけで信頼せず、実行前に内容を読みます。

scripts/count-tasks.mjs · javascript
import { readFileSync } from 'node:fs';

try {
  if (process.argv.length !== 3) {
    throw new Error('Usage: node count-tasks.mjs <input.json>');
  }
  const tasks = JSON.parse(readFileSync(process.argv[2], 'utf8'));
  if (!Array.isArray(tasks)) throw new Error('Input must be an array');
  const ids = new Set();
  for (const [index, task] of tasks.entries()) {
    if (!task || typeof task !== 'object'
      || typeof task.id !== 'string' || !task.id.trim()
      || typeof task.title !== 'string' || !task.title.trim()
      || typeof task.completed !== 'boolean') {
      throw new Error(`Invalid task at index ${index}`);
    }
    if (ids.has(task.id)) throw new Error(`Duplicate id: ${task.id}`);
    ids.add(task.id);
  }
  const completed = tasks.filter(task => task.completed).length;
  const result = { total: tasks.length, active: tasks.length - completed, completed };
  process.stdout.write(JSON.stringify(result, null, 2) + '\n');
} catch (error) {
  process.stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
  process.exitCode = 1;
}

Windows PowerShell、macOS Terminal、Linux 端末で codex-skill-lab ルートに移動し、node --version を確認して同じ命令を実行します。data/tasks.json はスクリプトの場所ではなく現在の作業場所が基準です。scripts に移動してそのまま貼らないでください。スキルにもこの基準を明記します。

実習ルートの端末 · sh
node .agents/skills/todo-summary/scripts/count-tasks.mjs data/tasks.json
固定入力の期待出力 · json
{
  "total": 3,
  "active": 1,
  "completed": 2
}

数値は固定教材の期待値なので、自分の端末の出力を確認します。PowerShell は $LASTEXITCODE、macOS/Linux は echo $? を使い、別命令で状態が変わる前に読みます。data/tasks.json を開き直し、3件、順番、completed が変わっていないことを確認します。

パスの反例:スクリプトはあるのに入力が見つからない

codex-skill-lab にいること、スキル内に別の data/tasks.json がないことを確認し、最初の2行を順に実行します。スキルのルートへ移動すると scripts/count-tasks.mjs は見つかりますが、data/tasks.json を誤った場所で探すため ENOENT、終了 1、成功 JSON なしが期待結果です。直後に終了コードを確認し、最後の行で練習ルートへ戻り、前の完全なコマンドを再実行すると 3/1/2 に戻ります。SKILL.md のリンクとスクリプトの入力引数は、相対パスの基準が異なります。

ターミナル:意図的に誤ったディレクトリから実行 · sh
cd .agents/skills/todo-summary
node scripts/count-tasks.mjs data/tasks.json
失敗の終了コードを記録後:練習ルートへ戻る · sh
cd ../../..

手順4:SKILL.md からリソースを参照

todo-summary/SKILL.md に全文を書きます。リソースリンクは SKILL.md 基準、実行命令は実習ルート基準です。この2つを区別します。以前の todo-acceptance は残し、別名 todo-summary で選択した手順を識別します。

SKILL.md · markdown
---
name: todo-summary
description: Summarize a local task JSON array with verified counts. Use for task-count reports, not for editing tasks, website styling, or deployment.
---

# Todo summary

1. Confirm the practice root and the exact input path with the user request.
2. Read [the input contract](references/input-format.md).
   If any required resource is missing or unreadable, stop and report it.
3. Read [the checker](scripts/count-tasks.mjs) before running it.
4. From the practice root, run:

   ```sh
   node .agents/skills/todo-summary/scripts/count-tasks.mjs data/tasks.json
   ```

   Replace the input argument only if the request names another input file.
5. If the command fails, report the actual error. Do not guess counts or repair input.
6. If it succeeds, use [the report template](assets/report.md) in the reply.
7. Include the actual command, exit code and input-preservation check.
   Say which checks were not performed. Do not claim browser testing.
8. Do not edit source data, skill resources, or project code, and do not publish.

Codex は名称と説明で適用を判断し、選択時に全文を読みます。主ファイルに安定した短い手順を置き、長い仕様とコードへ直接リンクすると保守しやすくなります。毎回全リソースが必要なら分割による使用量削減は保証されません。リンクの存在は実行の証拠ではありません。

手順5:使用と成果確認

実習ルートから新しいタスクを開始します。デスクトップは Skills 入口か @、CLI/IDE は /skills または $ で todo-summary を選び、名称と場所を確認します。見つからなければルート、拡張子を点検して Codex を再起動します。次はエージェントへの依頼で、PowerShell 命令ではありません。

Codex に送る依頼 · text
Use the selected todo-summary skill for data/tasks.json.
Read the skill and its linked resources. Run the checker from this practice root.
Return the report in your reply only. Do not write a report file or modify any input.
Include actual output, exit code, and what you verified about input preservation.

仕様とスクリプトの読取り、実行記録、3/1/2、入力保持の確認方法を点検します。「スキルを使用した」だけでは不足し、実行記録がなければ未確認とします。報告はファイル化せず、返信を手動実行結果と比較できます。

入力を変え、以前の数値を流用していないか確認する

tasks.json を残し、次の内容を data/tasks-next.json として保存します。練習ルートで下のコマンドを実行すると、total 2、active 2、completed 0 が期待結果です。新しいタスクでは先のスキル依頼の入力パスだけを変更し、期待数値は伝えません。新しいパスとツール出力を使い、3/1/2 を流用しないことを確認します。旧パスでも再実行し、3/1/2 のままで、どちらの入力も上書きされていないことを確かめます。

data/tasks-next.json · json
[
  {"id":"next-a","title":"Plan","completed":false},
  {"id":"next-b","title":"Check","completed":false}
]
ターミナル:2つ目の入力 · sh
node .agents/skills/todo-summary/scripts/count-tasks.mjs data/tasks-next.json

失敗例、復元、次の学習

input-format.md を一時的に input-format.saved.md に改名します。その後、新規タスクで作業場所が codex-skill-lab であることを確認し、スキルを明示的に選びます。過去に読んだ仕様や報告を渡さず、以前の会話内容が欠落を隠さない状態で観察します。必須仕様の欠落を報告して検証済み報告の作成を止め、代替仕様を創作しないことが期待されます。名前を戻した後、別の新規タスクで再確認します。欠落時にも数値を出した場合は未検証と表示しているか確認し、失敗例として記録します。

スクリプト未発見はスキルルートと作業ルート、合計2件は同名統合、completed 文字列の受理は実行版の違いを確認します。全スキルを再導入せず、原入力を保持して欠落、データ不正、パス違いを一つずつ直し、原因を識別します。

教材検証は Node.js 検査の再現可能な入出力です。選択、自動適用、エージェントの遵守は自分の入口で観察し、スクリプト成功で代替しません。次のは空入力、ID 重複、型不正、対象外依頼を加え、プログラムの正しさと適切な使用を分けます。図1は入力と契約、2は実行、3は報告確認です。

独自の手順図です。製品画面の画像ではありません。
独自の手順図です。製品画面の画像ではありません。 · 画像:Mokaair (© Mokaair)
詳しい説明を読む

Three numbered stages: identify the starting point, perform the exercise, and verify the result. Original illustration, not a product screenshot.

総目次へ

  • ライフスタイル

    Codex 学習ガイド:全記事の目次

    導入と最初のタスクから MD の指示、高度な連携まで、60 レッスン・十単元を予定しています。習熟度、環境、目的、コマンドで次の記事を探せます。未公開の記事には状態を表示します。

  • ライフスタイル

    Worktree とタスクの分離

    Worktree は一つの Git リポジトリに別ブランチの作業場所を作ります。ファイルは分かれても DB、ポート、外部サービスは共有される場合があります。

  • ライフスタイル

    実践:小さな Web サイトを作る

    brief.md から Small Steps のタスクサイトを計画・制作し、追加、完了、削除、絞り込み、ローカル保存を実装します。HTML、CSS、データ関数、画面イベント、テストを分け、Node とブラウザーで検証して再起動・復元の手順を残します。

  • ライフスタイル

    使用量と効率:やり直しを減らす

    条件、モデル設定、時間、成果を記録し、不要な再試行と過剰な文脈を減らします。

最新の旅の情報・ガイド

出典

ライフスタイル