jpskill.com
💼 ビジネス コミュニティ

feature-file

プロジェクトの要件や進捗を記録するfeatures.ymlファイルを管理し、既存ファイルがある場合は自動で、ない場合は手動で作成することで、TodoWriteと連携してプロジェクトの状態を継続的に把握するSkill。

📜 元の英語説明(参考)

Manage features.yml for tracking requirements and progress; use proactively ONLY when features.yml already exists, or invoke manually to create one; complements TodoWrite for persistent project state.

🇯🇵 日本人クリエイター向け解説

一言でいうと

プロジェクトの要件や進捗を記録するfeatures.ymlファイルを管理し、既存ファイルがある場合は自動で、ない場合は手動で作成することで、TodoWriteと連携してプロジェクトの状態を継続的に把握するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o feature-file.zip https://jpskill.com/download/17822.zip && unzip -o feature-file.zip && rm feature-file.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/17822.zip -OutFile "$d\feature-file.zip"; Expand-Archive "$d\feature-file.zip" -DestinationPath $d -Force; ri "$d\feature-file.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して feature-file.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → feature-file フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
6

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Feature File Management

features.yml を管理します。これは、構造化された要求追跡と段階的な開発を組み合わせた、ウォーターフォール型の計画ドキュメントです。

クイックリファレンス

feature: "Feature Name"
phase: Requirements | Design | Implementation | Testing | Complete
version: 1
changelog: |
  ## [1]
  ### Added
  - Initial feature
decisions:
  - Decision rationale
known-issues:
  - Known bug or limitation
requirements:
  req-id:
    description: "When X, the system SHALL Y"
    status: Not-Started | In-Progress | Needs-Work | Complete
    tested-by: [test-id]
test-cases:
  test-id:
    name: "test_function_name"
    file: "tests/test_file.py"
    description: "Given X, when Y, then Z"
    passing: true | false
    type: unit | [integration, rainy-day]  # optional, string or list
---
# Next feature...

完全なフィールドのドキュメントについては、references/schema.md を参照してください。

プロアクティブな使用法

このスキルは、features.yml が存在する場合に自動的に使用されるべきです。

実装を開始する前に

  1. プロジェクトのルートに features.yml が存在するかどうかを確認します。
  2. 存在しない場合:このスキルをプロアクティブに使用しないでください(ここで停止)。
  3. コードを書く前に features.yml で作業を計画します。
    • ユーザーの要求から抽出されたすべての要件を使用して、フィーチャを追加/更新します。
    • 予想されるテストケースを test-cases に追加します(passing: false)。
    • 自明でない選択肢が含まれる場合は、設計上の決定事項を decisions に記録します。
  4. 最初の要件を status: In-Progress に設定します。

実装中

  • 要件が完了したら、statusComplete に更新します。
  • テストを作成するときに、テストケースを test-cases に追加します。
  • テストの実行後に passing フィールドを更新します。
  • 発見された問題を known-issues に追加します。

作業完了後

  • 実装されたすべての要件が Complete とマークされていることを確認します。
  • ./scripts/feature-status.py --validate を実行して、一貫性を確認します。
  • 実装とともに features.yml の変更をコミットします。

TodoWrite との関係

ツール 目的 永続性
TodoWrite 即時のセッションアクション 一時的
features.yml 要件と進捗状況 永続的(リポジトリ内)

両方を使用します。TodoWrite は今何をすべきか、features.yml は永続的なプロジェクトの状態を表します。

フェーズの移行

From To 条件
Requirements Design すべての要件に説明がある
Design Implementation decisions フィールドが存在する(不要な場合は [] を使用)
Implementation Testing すべての要件が In-Progress または Complete
Testing Complete すべての要件が Complete AND すべてのテストが passing: true

スクリプトはこれらのルールを検証し、エラーを報告します。

ワークフロー

エージェントワークフロー(凝縮版)

  1. ls features.yml → 存在するか? 読み込む : 作成する
  2. 最初に計画する: フィーチャ、要件、テストケース、決定事項を追加する
  3. 最初の要件 status: In-Progress を設定する
  4. 実装し、status: Complete を設定する
  5. テストを実行し、passing ステータスを更新する
  6. ./scripts/feature-status.py --validate
  7. 実装の変更とともにコミットする

新しいフィーチャファイルの作成

  1. 最初のフィーチャで features.yml を作成します。
    feature: "Feature Name"
    phase: Requirements
    version: 1
    changelog: |
      ## [1]
      ### Added
      - Initial planning
    requirements:
      req-1:
        description: "Requirement description using EARS syntax"
        status: Not-Started
  2. ./scripts/feature-status.py を実行して構造を検証します。

最小限の開始(実装中の迅速なブートストラップ用):

feature: "Feature Name"
phase: Implementation
version: 1
changelog: |
  ## [1]
  ### Added
  - Initial implementation
requirements:
  req-1:
    description: "Requirement from user request"
    status: In-Progress

既存のコードベースからの構築

  1. コード内の論理的なフィーチャの境界を特定します。
  2. 各フィーチャについて:
    • フィーチャドキュメントを作成し、現在の成熟度に基づいて phase を設定します。
    • コードの動作、コメント、ドキュメントから要件を抽出します。
    • 既存のテストを発見し、test-cases に追加します。
    • tested-by を介してテストを要件にリンクします。
    • 実装の状態とテストカバレッジに基づいて status を設定します。
  3. ./scripts/feature-status.py --validate を実行して、一貫性を確認します。
  4. ./scripts/extract-work.py を実行して、ギャップを確認します。

開発ワークフロー(段階的な進捗)

一度に 1 つの要件に取り組みます。

  1. ./scripts/extract-work.py を実行して、未完了の要件を確認します。
  2. 最も優先度の高い要件を選択し、status: In-Progress を更新します。
  3. 要件を実装します。
  4. テストを作成/更新し、passing: falsetest-cases に追加します。
  5. テストを実行し、合格したら passing: true を更新します。
  6. 要件 status: Complete を更新します。
  7. ./scripts/feature-status.py を実行して、フェーズの進捗状況の適格性を確認します。
  8. 繰り返します。

バージョン管理

  1. ./scripts/check-version.py を実行して、必要なバンプを確認します。

  2. バンプが推奨される場合:

    • version フィールドをインクリメントします。

    • 新しい変更ログセクションを追加します。

      changelog: |
        ## [2]
        ### Added
        - New capability
      
        ## [1]
        ...
    • 更新をコミットします。

スクリプト

すべてのスクリプトは、現在のディレクトリの features.yml から読み取ります。 スクリプトは実行可能であり、uv run --script を介してインライン依存関係を使用します。

feature-status.py

すべてのフィーチャの概要と、進捗状況とテストステータス(定義されている場合はタイプ別の内訳を含む)。

./scripts/feature-status.py                    # Plain text output
./scripts/feature-status.py --format markdown  # Markdown table
./scripts/feature-status.py --validate         # Exit 1 if validation errors

extract-work.py

作業が必要な要件のリスト(status != Complete)。

./scripts/extract-work.py                      # All incomplete
./scripts/extract-work.py --phase Implementation
./scripts/extract-work.py --status In-Progress
./scripts/extract-work.py --format markdown

extract-issues.py

すべてのフィーチャにわたる既知の問題のリスト。

./scripts/extract-issues.py
./scripts/extract-issues.py --format json

check-

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Feature File Management

Manage features.yml - a waterfall-style planning document combining structured requirements tracking with incremental development.

Quick Reference

feature: "Feature Name"
phase: Requirements | Design | Implementation | Testing | Complete
version: 1
changelog: |
  ## [1]
  ### Added
  - Initial feature
decisions:
  - Decision rationale
known-issues:
  - Known bug or limitation
requirements:
  req-id:
    description: "When X, the system SHALL Y"
    status: Not-Started | In-Progress | Needs-Work | Complete
    tested-by: [test-id]
test-cases:
  test-id:
    name: "test_function_name"
    file: "tests/test_file.py"
    description: "Given X, when Y, then Z"
    passing: true | false
    type: unit | [integration, rainy-day]  # optional, string or list
---
# Next feature...

See references/schema.md for complete field documentation.

Proactive Usage

This skill should be used automatically when features.yml exists.

Before Starting Implementation

  1. Check if features.yml exists in project root
  2. If missing: do not use this skill proactively (stop here)
  3. Plan the work in features.yml before writing code:
    • Add/update the feature with all requirements extracted from the user's request
    • Add anticipated test cases to test-cases (with passing: false)
    • Document design decisions in decisions if non-trivial choices are involved
  4. Set the first requirement to status: In-Progress

During Implementation

  • Update status to Complete as requirements are finished
  • Add test cases to test-cases when writing tests
  • Update passing field after running tests
  • Add discovered issues to known-issues

After Completing Work

  • Verify all implemented requirements are marked Complete
  • Run ./scripts/feature-status.py --validate to check consistency
  • Commit features.yml changes with the implementation

Relationship with TodoWrite

Tool Purpose Persistence
TodoWrite Immediate session actions Ephemeral
features.yml Requirements and progress Persistent (in repo)

Use both: TodoWrite for what to do now, features.yml for durable project state.

Phase Transitions

From To Conditions
Requirements Design All requirements have descriptions
Design Implementation decisions field exists (use [] if none needed)
Implementation Testing All requirements In-Progress or Complete
Testing Complete All requirements Complete AND all tests passing: true

Scripts validate these rules and report errors.

Workflows

Agent Workflow (Condensed)

  1. ls features.yml → exists? Read it : Create it
  2. Plan first: Add feature, requirements, test-cases, decisions
  3. Set first requirement status: In-Progress
  4. Implement, then set status: Complete
  5. Run tests, update passing status
  6. ./scripts/feature-status.py --validate
  7. Commit with implementation changes

Creating a New Feature File

  1. Create features.yml with first feature:
    feature: "Feature Name"
    phase: Requirements
    version: 1
    changelog: |
      ## [1]
      ### Added
      - Initial planning
    requirements:
      req-1:
        description: "Requirement description using EARS syntax"
        status: Not-Started
  2. Run ./scripts/feature-status.py to validate structure

Minimal start (for quick bootstrapping during implementation):

feature: "Feature Name"
phase: Implementation
version: 1
changelog: |
  ## [1]
  ### Added
  - Initial implementation
requirements:
  req-1:
    description: "Requirement from user request"
    status: In-Progress

Building from Existing Codebase

  1. Identify logical feature boundaries in the code
  2. For each feature:
    • Create feature document, set phase based on current maturity
    • Extract requirements from code behavior, comments, documentation
    • Discover existing tests and add to test-cases
    • Link tests to requirements via tested-by
    • Set status based on implementation state and test coverage
  3. Run ./scripts/feature-status.py --validate to check consistency
  4. Run ./scripts/extract-work.py to see gaps

Development Workflow (Incremental Progress)

Work on ONE requirement at a time:

  1. Run ./scripts/extract-work.py to see incomplete requirements
  2. Pick highest priority requirement, update status: In-Progress
  3. Implement the requirement
  4. Write/update tests, add to test-cases with passing: false
  5. Run tests, update passing: true when passing
  6. Update requirement status: Complete
  7. Run ./scripts/feature-status.py to check phase advancement eligibility
  8. Repeat

Version Management

  1. Run ./scripts/check-version.py to check for needed bumps

  2. If bump recommended:

    • Increment version field

    • Add new changelog section:

      changelog: |
        ## [2]
        ### Added
        - New capability
      
        ## [1]
        ...
    • Commit the update

Scripts

All scripts read from features.yml in current directory. Scripts are executable and use inline dependencies via uv run --script.

feature-status.py

Overview of all features with progress and test status (with breakdown by type if defined).

./scripts/feature-status.py                    # Plain text output
./scripts/feature-status.py --format markdown  # Markdown table
./scripts/feature-status.py --validate         # Exit 1 if validation errors

extract-work.py

List requirements needing work (status != Complete).

./scripts/extract-work.py                      # All incomplete
./scripts/extract-work.py --phase Implementation
./scripts/extract-work.py --status In-Progress
./scripts/extract-work.py --format markdown

extract-issues.py

List known issues across all features.

./scripts/extract-issues.py
./scripts/extract-issues.py --format json

check-version.py

Check git history to see if versions need bumping.

./scripts/check-version.py

Compares when feature sections were last modified vs when version was last set.

Best Practices

  • One requirement at a time: Complete and verify before starting next
  • Update status immediately: Keep file in sync with actual state
  • Document decisions: Capture rationale in decisions before implementation
  • Track known issues: Document bugs and limitations in known-issues
  • Bump version on requirement changes: Any add, modify, or remove
  • Use EARS syntax for requirements: "When X, the system SHALL Y"
  • Use Given/When/Then for test descriptions

Change Management

All requirement changes require a version bump. This ensures traceability and clear history.

Adding Requirements to Existing Feature

  1. Add requirement with status: Not-Started
  2. Increment version field
  3. Add changelog entry under ### Added
  4. If feature is past Design phase, consider whether new requirement needs design review

Modifying Existing Requirements

  1. Document rationale for the change
  2. Update requirement description
  3. Update status:
    • If was Complete: set to Needs-Work
    • Otherwise: keep current status
  4. Review affected test cases in tested-by - update or mark as needing revision
  5. Increment version field
  6. Add changelog entry under ### Changed

Deprecating/Removing Requirements

  1. Document rationale
  2. Either:
    • Remove requirement entirely, OR
    • Move to known-issues as historical note (e.g., "req-x removed: no longer needed")
  3. Remove or update associated test cases
  4. Increment version field
  5. Add changelog entry under ### Removed

Version Bump Triggers

Always bump version when:

  • Adding, modifying, or removing requirements
  • Shipping a milestone
  • Significant scope changes
  • Phase transitions to Complete

同梱ファイル

※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。