frappe-agent-interpreter について
frappe-agent-interpreterは、曖昧なFrappe/ERPNextの開発依頼を実行可能な技術仕様に整理し、61件のスキルカタログに対応付けます。実装前の要件整理に使えます。
主な機能
- 01業務上の意図とトリガーの抽出
- 02主要な観点に沿った確認質問
- 03実装方式の提案
- 04要件とスキル依存関係の対応付け
- 05バージョン互換性と検証基準の確認
活用シーン
- 01不完全なFrappe機能要件の明確化
- 02ワークフローの実装方式の選定
- 03開発前の技術要件の準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ impertio-studio/ frappe_claude_skill_package --skill frappe-agent-interpreterインストール後、Claude Code で/frappe-agent-interpreterを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/checklists.mdexamples.mdworkflow.md詳細
Frappe Code Interpreter Agent
曖昧または不完全な Frappe/ERPNext の開発依頼を、61 種類のスキルカタログ全体に対応付けた、明確で実行可能な技術仕様に変換します。
目的:「ユーザーが望んでいること」と「構築すべきもの」の隔たりを埋めます。
このエージェントを使用する場面
USER REQUEST ANALYSIS
|
+-- Request is vague/incomplete
| "Make the invoice do something when submitted"
| --> USE THIS AGENT
|
+-- Request lacks technical specifics
| "Add approval before order confirmation"
| --> USE THIS AGENT
|
+-- Multiple implementation paths possible
| "Automate inventory updates"
| --> USE THIS AGENT
|
+-- Request has clear technical specs already
| "Create Server Script on validate for Sales Invoice"
| --> Skip agent, use relevant frappe-* skills directly
解釈ワークフロー
STEP 1: EXTRACT INTENT
- What is the business problem?
- What should happen? When? To what data?
- Who should be affected (roles/users)?
STEP 2: IDENTIFY TRIGGER CONTEXT
- Document lifecycle event? (save/submit/cancel)
- User action? (button click, field change)
- Time-based? (daily, hourly, cron)
- External event? (webhook, API call)
STEP 3: DETERMINE MECHANISM
- Client Script, Server Script, or Controller?
- Hooks configuration needed?
- Custom app required?
- v16 extend_doctype_class applicable?
STEP 4: GENERATE SPECIFICATION
- DocType(s), event/trigger, mechanism, data flow
- Error handling requirements
- Version compatibility (v14/v15/v16)
STEP 5: MAP TO SKILLS
- List required frappe-* skills from full catalog
- Note dependencies between skills
詳しい手順については、references/workflow.md を参照してください。
メカニズム選択マトリックス
| 要件パターン | メカニズム | カスタムアプリ? |
|---|---|---|
| 「フォーム上で自動計算する」 | Client Script + Server Script | いいえ |
| 「保存前に検証する」 | Server Script (validate) | いいえ |
| 「送信後に通知を送る」 | Server Script (on_submit) | いいえ |
| 「フォームにボタンを追加する」 | Client Script | いいえ |
| 「定期レポート/同期」 | hooks.py scheduler_events | はい |
| 「ユーザーごとにリストを絞り込む」 | Server Script (Permission Query) | いいえ |
| 「カスタム REST API」 | Server Script (API) または @frappe.whitelist() | 場合による |
| 「ロールバックを伴う複雑なトランザクション」 | Controller | はい |
| 「外部ライブラリが必要(requests)」 | Controller | はい |
| 「承認ワークフロー」 | 組み込みの Workflow + 任意の Server Script | いいえ |
| 「印刷書式のカスタマイズ」 | Jinja template (Print Format) | いいえ |
| 「カスタムレポート」 | Script Report または Query Report | 場合による |
| 「バックグラウンド処理」 | frappe.enqueue() | はい |
| 「ファイルアップロードの処理」 | Controller + File hooks | はい |
| 「キャッシュの無効化」 | Cache API + hooks | はい |
| 「ウェブサイト/ポータルページ」 | Web template + routing | はい |
| 「UI コンポーネント(ダッシュボードなど)」 | Page または Custom Page | はい |
確認事項のフレームワーク
1. WHAT に関する質問
- 関連する DocType は何ですか?
- 変更する必要があるデータは何ですか?
- どのような結果にすべきですか?
2. WHEN に関する質問
- フォームの読み込み時ですか?フィールドの変更時ですか?保存の前後ですか?
- 送信の前後ですか?スケジュール実行ですか?ボタンのクリック時ですか?
3. WHO に関する質問
- すべてのユーザーですか?特定のロールですか?ドキュメントの所有者のみですか?
4. WHERE に関する質問
- フォーム内(UI)ですか?データベースのみですか?レポートですか?外部システムですか?
5. ERROR に関する質問
- 操作をブロックしますか?警告を表示しますか?通知せずにログに記録しますか?
6. VERSION に関する質問(v16 に関する検討事項)
- 単一バージョンを対象にしますか、それとも複数バージョンとの互換性が必要ですか?
extend_doctype_class(v16)を使用できますか、それともdoc_events(v14+)が必要ですか?- 型アノテーションが必要ですか?(v16 のベストプラクティス)
出力仕様テンプレート
必ず次の形式で仕様を生成してください。
## Technical Specification
### Summary
[One sentence describing what will be built]
### Business Requirement
[Original user request, clarified]
### Implementation
| Aspect | Value |
|--------|-------|
| **DocType(s)** | [List] |
| **Trigger** | [Event/action] |
| **Mechanism** | [Client Script / Server Script / Controller / etc.] |
| **Version** | [v14 / v15 / v16 / all] |
### Data Flow
1. [Step 1]
2. [Step 2]
### Error Handling
[Strategy]
### Required Skills
- [ ] frappe-skill-name - for [purpose]
### Validation Criteria
[How to verify it works]
スキルカタログ全体(61 スキル)
構文レイヤー(11 スキル)
| スキル | 用途 |
|---|---|
frappe-syntax-clientscripts | Client Script の JS 構文 |
frappe-syntax-serverscripts | Server Script の Python サンドボックス構文 |
frappe-syntax-controllers | Controller クラスの構文 |
frappe-syntax-hooks | hooks.py 設定の構文 |
frappe-syntax-hooks-events | ドキュメントイベントフックの構文 |
frappe-syntax-whitelisted | @frappe.whitelist() の構文 |
frappe-syntax-jinja | Jinja テンプレートの構文 |
frappe-syntax-scheduler | Scheduler/enqueue の構文 |
frappe-syntax-customapp | アプリ構造の構文 |
frappe-syntax-doctypes | DocType JSON 定義の構文 |
frappe-syntax-reports | レポート定義の構文 |
コアレイヤー(7 スキル)
| スキル | 用途 |
|---|---|
frappe-core-database | データベース操作、ORM、raw SQL |
frappe-core-permissions | 権限システム、ロール、ルール |
frappe-core-api | REST API、リソース API |
frappe-core-workflow | ワークフローエンジン、状態、遷移 |
frappe-core-notifications | メール、プッシュ通知、システム通知 |
frappe-core-files | ファイルのアップロード、添付、ストレージ |
frappe-core-cache | Redis キャッシュ、キャッシュの無効化 |
実装レイヤー(12スキル)
| スキル | 用途 |
|---|---|
frappe-impl-clientscripts | Client Script の実装パターン |
frappe-impl-serverscripts | Server Script の実装パターン |
frappe-impl-controllers | Controller の実装パターン |
frappe-impl-hooks | Hook の実装パターン |
frappe-impl-whitelisted | ホワイトリスト登録メソッドのパターン |
frappe-impl-jinja | Jinja テンプレートのパターン |
frappe-impl-scheduler | スケジュールタスク/バックグラウンドジョブのパターン |
frappe-impl-customapp | カスタムアプリ開発のワークフロー |
frappe-impl-reports | レポート作成のパターン |
frappe-impl-workflow | ワークフローの実装パターン |
frappe-impl-website | Webサイト/ポータルの開発 |
frappe-impl-ui-components | UI コンポーネントのパターン |
frappe-impl-integrations | 外部システムとの連携 |
エラーレイヤー(7スキル)
| スキル | 用途 |
|---|---|
frappe-errors-clientscripts | Client Script のエラーパターン |
frappe-errors-serverscripts | Server Script のエラーパターン |
frappe-errors-controllers | Controller のエラーパターン |
frappe-errors-hooks | Hook のエラーパターン |
frappe-errors-api | API のエラーパターン |
frappe-errors-permissions | 権限エラーのパターン |
frappe-errors-database | データベースエラーのパターン |
運用レイヤー(8スキル)
| スキル | 用途 |
|---|---|
frappe-ops-bench | Bench CLI コマンド |
frappe-ops-deployment | 本番環境へのデプロイ |
frappe-ops-backup | バックアップと復元 |
frappe-ops-performance | パフォーマンスの調整 |
frappe-ops-upgrades | バージョンアップグレードの手順 |
frappe-ops-cloud | クラウドホスティング(FC、AWS など) |
frappe-ops-app-lifecycle | アプリのバージョン管理とリリース |
frappe-ops-frontend-build | フロントエンドアセットのビルド |
テストレイヤー(2スキル)
| スキル | 用途 |
|---|---|
frappe-testing-unit | 単体テストと統合テスト |
frappe-testing-cicd | CI/CD パイプラインのセットアップ |
エージェントレイヤー(5スキル)
| スキル | 用途 |
|---|---|
frappe-agent-interpreter | このスキル — 要件の解釈 |
frappe-agent-validator | デプロイ前のコード検証 |
frappe-agent-debugger | Frappe の問題のデバッグ |
frappe-agent-migrator | データ移行の計画 |
frappe-agent-architect | アーキテクチャの意思決定 |
スキルの依存関係マップ
| メカニズム | 必須スキル |
|---|---|
| Client Script | frappe-syntax-clientscripts、frappe-impl-clientscripts、frappe-errors-clientscripts |
| Server Script(Doc Event) | frappe-syntax-serverscripts、frappe-impl-serverscripts、frappe-errors-serverscripts |
| Server Script(API) | frappe-syntax-serverscripts、frappe-core-api、frappe-errors-api |
| Server Script(Scheduler) | frappe-syntax-serverscripts、frappe-syntax-scheduler、frappe-impl-scheduler |
| Server Script(Permission) | frappe-syntax-serverscripts、frappe-core-permissions、frappe-errors-permissions |
| Controller | frappe-syntax-controllers、frappe-impl-controllers、frappe-errors-controllers |
| Hooks | frappe-syntax-hooks、frappe-impl-hooks、frappe-errors-hooks |
| カスタムアプリ | frappe-syntax-customapp、frappe-impl-customapp、frappe-ops-bench |
| Jinja テンプレート | frappe-syntax-jinja、frappe-impl-jinja |
| データベース操作 | frappe-core-database、frappe-errors-database |
| ホワイトリスト登録メソッド | frappe-syntax-whitelisted、frappe-impl-whitelisted |
| ワークフロー | frappe-core-workflow、frappe-impl-workflow |
| レポート | frappe-syntax-reports、frappe-impl-reports |
| Webサイト/ポータル | frappe-impl-website、frappe-syntax-jinja |
| 連携 | frappe-impl-integrations、frappe-impl-customapp |
| バックグラウンドジョブ | frappe-impl-scheduler、frappe-syntax-scheduler |
| テスト | frappe-testing-unit、frappe-testing-cicd |
| デプロイ | frappe-ops-deployment、frappe-ops-bench |
よくあるパターンの認識
| ユーザーの表現 | メカニズム | 主なスキル |
|---|---|---|
| "auto-calculate", "automatically fill" | クライアントスクリプト + サーバースクリプト | frappe-impl-clientscripts, frappe-impl-serverscripts |
| "validate", "check before save" | サーバースクリプト(validate) | frappe-impl-serverscripts |
| "prevent", "block", "don't allow" | サーバースクリプト + frappe.throw() | frappe-errors-serverscripts |
| "send email", "notify" | サーバースクリプトまたは通知 | frappe-core-notifications |
| "sync", "integrate", "API" | コントローラー(カスタムアプリ) | frappe-impl-integrations |
| "every day", "schedule" | スケジューラーまたは hooks.py | frappe-impl-scheduler |
| "only see their own" | 権限クエリ | frappe-core-permissions |
| "approval", "authorize" | 組み込みワークフロー | frappe-core-workflow, frappe-impl-workflow |
| "add button", "custom action" | クライアントスクリプト | frappe-impl-clientscripts |
| "print format", "PDF" | Jinja テンプレート | frappe-impl-jinja |
| "report", "dashboard" | スクリプト/クエリレポート | frappe-impl-reports |
| "deploy", "go live" | デプロイワークフロー | frappe-ops-deployment |
| "test", "CI" | テストフレームワーク | frappe-testing-unit |
| "cache", "performance" | キャッシュ + 最適化 | frappe-core-cache, frappe-ops-performance |
バージョンへの配慮
バージョンとの互換性を必ず考慮してください。
| 機能 | v14 | v15 | v16 |
|---|---|---|---|
| サーバースクリプトのサンドボックス | はい | はい | はい |
extend_doctype_class | いいえ | いいえ | はい |
| Chrome PDF レンダリング | いいえ | いいえ | はい |
| データマスキング | いいえ | いいえ | はい |
| UUID 命名規則 | いいえ | いいえ | はい |
| 型アノテーション(ベストプラクティス) | いいえ | いいえ | はい |
| スケジューラーティック(秒) | 240 | 60 | 60 |
job_id による重複排除 | いいえ | はい | はい |
エージェント出力チェックリスト
解釈を完了する前に、必ず次の項目を確認してください。
- ビジネス要件が明確で曖昧さがない
- トリガー/イベントが特定されている
- メカニズムが根拠とともに選択されている
- DocType が指定されている
- データフローが文書化されている
- エラー処理の方針が定義されている
- バージョン互換性が記載されている(v14/v15/v16)
- 完全なカタログから必要な frappe-* スキルが列挙されている
- 検証基準が定義されている
- v16 での考慮事項(extend_doctype_class、型アノテーション)が記載されている
詳細なチェックリストについては、references/checklists.md を参照してください。 解釈例については、references/examples.md を参照してください。
コメント
Markdown 対応