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本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
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
$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. 下の青いボタンを押して
feature-file.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
feature-fileフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
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 が存在する場合に自動的に使用されるべきです。
実装を開始する前に
- プロジェクトのルートに
features.ymlが存在するかどうかを確認します。 - 存在しない場合:このスキルをプロアクティブに使用しないでください(ここで停止)。
- コードを書く前に features.yml で作業を計画します。
- ユーザーの要求から抽出されたすべての要件を使用して、フィーチャを追加/更新します。
- 予想されるテストケースを
test-casesに追加します(passing: false)。 - 自明でない選択肢が含まれる場合は、設計上の決定事項を
decisionsに記録します。
- 最初の要件を
status: In-Progressに設定します。
実装中
- 要件が完了したら、
statusをCompleteに更新します。 - テストを作成するときに、テストケースを
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 |
スクリプトはこれらのルールを検証し、エラーを報告します。
ワークフロー
エージェントワークフロー(凝縮版)
ls features.yml→ 存在するか? 読み込む : 作成する- 最初に計画する: フィーチャ、要件、テストケース、決定事項を追加する
- 最初の要件
status: In-Progressを設定する - 実装し、
status: Completeを設定する - テストを実行し、
passingステータスを更新する ./scripts/feature-status.py --validate- 実装の変更とともにコミットする
新しいフィーチャファイルの作成
- 最初のフィーチャで
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 ./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
既存のコードベースからの構築
- コード内の論理的なフィーチャの境界を特定します。
- 各フィーチャについて:
- フィーチャドキュメントを作成し、現在の成熟度に基づいて
phaseを設定します。 - コードの動作、コメント、ドキュメントから要件を抽出します。
- 既存のテストを発見し、
test-casesに追加します。 tested-byを介してテストを要件にリンクします。- 実装の状態とテストカバレッジに基づいて
statusを設定します。
- フィーチャドキュメントを作成し、現在の成熟度に基づいて
./scripts/feature-status.py --validateを実行して、一貫性を確認します。./scripts/extract-work.pyを実行して、ギャップを確認します。
開発ワークフロー(段階的な進捗)
一度に 1 つの要件に取り組みます。
./scripts/extract-work.pyを実行して、未完了の要件を確認します。- 最も優先度の高い要件を選択し、
status: In-Progressを更新します。 - 要件を実装します。
- テストを作成/更新し、
passing: falseでtest-casesに追加します。 - テストを実行し、合格したら
passing: trueを更新します。 - 要件
status: Completeを更新します。 ./scripts/feature-status.pyを実行して、フェーズの進捗状況の適格性を確認します。- 繰り返します。
バージョン管理
-
./scripts/check-version.pyを実行して、必要なバンプを確認します。 -
バンプが推奨される場合:
-
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
- Check if
features.ymlexists in project root - If missing: do not use this skill proactively (stop here)
- 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(withpassing: false) - Document design decisions in
decisionsif non-trivial choices are involved
- Set the first requirement to
status: In-Progress
During Implementation
- Update
statustoCompleteas requirements are finished - Add test cases to
test-caseswhen writing tests - Update
passingfield after running tests - Add discovered issues to
known-issues
After Completing Work
- Verify all implemented requirements are marked
Complete - Run
./scripts/feature-status.py --validateto 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)
ls features.yml→ exists? Read it : Create it- Plan first: Add feature, requirements, test-cases, decisions
- Set first requirement
status: In-Progress - Implement, then set
status: Complete - Run tests, update
passingstatus ./scripts/feature-status.py --validate- Commit with implementation changes
Creating a New Feature File
- Create
features.ymlwith 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 - Run
./scripts/feature-status.pyto 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
- Identify logical feature boundaries in the code
- For each feature:
- Create feature document, set
phasebased 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
statusbased on implementation state and test coverage
- Create feature document, set
- Run
./scripts/feature-status.py --validateto check consistency - Run
./scripts/extract-work.pyto see gaps
Development Workflow (Incremental Progress)
Work on ONE requirement at a time:
- Run
./scripts/extract-work.pyto see incomplete requirements - Pick highest priority requirement, update
status: In-Progress - Implement the requirement
- Write/update tests, add to
test-caseswithpassing: false - Run tests, update
passing: truewhen passing - Update requirement
status: Complete - Run
./scripts/feature-status.pyto check phase advancement eligibility - Repeat
Version Management
-
Run
./scripts/check-version.pyto check for needed bumps -
If bump recommended:
-
Increment
versionfield -
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
decisionsbefore 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
- Add requirement with
status: Not-Started - Increment
versionfield - Add changelog entry under
### Added - If feature is past Design phase, consider whether new requirement needs design review
Modifying Existing Requirements
- Document rationale for the change
- Update requirement
description - Update
status:- If was
Complete: set toNeeds-Work - Otherwise: keep current status
- If was
- Review affected test cases in
tested-by- update or mark as needing revision - Increment
versionfield - Add changelog entry under
### Changed
Deprecating/Removing Requirements
- Document rationale
- Either:
- Remove requirement entirely, OR
- Move to
known-issuesas historical note (e.g., "req-x removed: no longer needed")
- Remove or update associated test cases
- Increment
versionfield - 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` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。
- 📄 SKILL.md (8,165 bytes)
- 📎 references/schema.md (8,048 bytes)
- 📎 scripts/check-version.py (11,501 bytes)
- 📎 scripts/extract-issues.py (3,423 bytes)
- 📎 scripts/extract-work.py (5,278 bytes)
- 📎 scripts/feature-status.py (13,104 bytes)