個人投資アシスタント初期化
この Skill はウェブサイトデザインのコンサルタントではなく、ゼロからページ構成を議論するものでもありません。リポジトリには、すでに動作可能な React、Express、SQLite、定期スケジューラ、実際の Provider 接続が提供されています。この Skill のタスクは、このアプリケーションをユーザーの実際の投資選好に合わせて構成し、開いた時点でパーソナライズされたコンテンツが表示されるウェブサイトを納品することです。
リモート Skill エントリ
ユーザーは、リポジトリを事前にクローンしたり Skill をインストールしたりせずに、以下の公開 Skill URL から直接このフローをトリガーする場合があります。
https://github.com/3494036618-eng/personal-investment-assistant/blob/v0.3.0/skills/investment-assistant/SKILL.md
現在の環境に {baseDir}/scripts/status.mjs が存在しない場合、この Skill はリモート URL から開かれています。この場合、Codex または Claude Code は以下を実行する必要があります。
- 完全なリポジトリ
https://github.com/3494036618-eng/personal-investment-assistantを取得します。SKILL.mdだけをダウンロードしてはいけません。 {baseDir}をリポジトリ内のskills/investment-assistantディレクトリに設定します。{baseDir}/scripts/、{baseDir}/references/、およびリポジトリルートのapp/がすべて存在することを確認してから、ステージ 0 に進みます。- 同名のディレクトリがすでに存在する場合は、Git remote とワークスペースの状態を確認し、ユーザーの変更を上書きせず、2 番目のアプリケーションセットを作成しません。
- 現在のクライアントが Codex の場合は、リポジトリルートで
npm run skill:install:codexを実行します。現在のクライアントが Claude Code の場合はnpm run skill:install:claudeを実行します。インストールは対応するクライアントの個人 Skill ディレクトリにのみ書き込みます。 - インストールが完了したら、現在のリポジトリの Skill をそのまま使用して初期化を続行します。「Skill がコピーされました」を「ウェブサイトはすでに利用可能です」と言い換えてはいけません。
ユーザーは、この文章をそのまま、ネットワーク接続と端末操作をサポートする Codex または Claude Code に渡すことができます。
個人投資アシスタントを初期化してください:https://github.com/3494036618-eng/personal-investment-assistant/blob/v0.3.0/skills/investment-assistant/SKILL.md
インストール後、Codex では $investment-assistant、Claude Code では /investment-assistant でトリガーできます。どちらのエントリも同じ初期化および受け入れルールを実行します。
完了基準
以下のすべての項目が完了して初めて、「使用可能です」と言えます。
- 少なくとも 1 つの実際の証券の名称、コード、市場が確認されている。
- ユーザーの注目ポイントが証券ごとに確認され、ユーザーの元の表現が保持されている。
- 市場後自動監視が有効かどうかが確認されている。有効な場合、時刻、曜日、タイムゾーンが確認されている。
- Agent Plan Key がローカルの秘密設定を通じて書き込まれており、チャット、ソースコード、ログに表示されていない。
- DataPro、豆包搜索、Agent Plan モデルの実際のプローブがすべて成功している。
- 完全なフロントエンドとバックエンドがインストールされ、起動している。
- ユーザー設定がインポートされており、ホームページが空白のウォッチリストではない。
- ユーザーが実際の利用枠の消費に同意した後、各銘柄に対して少なくとも 1 つの個別銘柄レビューと 1 つの市場後リスクサマリーが生成されている。
- 両方のタイプのレポートに実質的な本文、対応する出典、および独立した履歴レコードがある。
- デスクトップ版のコアパスがブラウザチェックに合格している。
いずれかの項目が未完了の場合は、どのステップで停止しているか、何が完了し、次に何をすべきかを正確に説明しなければなりません。古い結果、Mock データ、または口頭による判断で代用してはいけません。
作業原則
- ウェブサイト構成については議論しない:既製のウェブサイト、ページ構造、機能境界はすでに決定されています。使用に必要な投資設定のみを収集します。
- 設定を確認してから呼び出す:最初にユーザーに構造化された設定サマリーを表示し、ユーザーが確認した後にのみインストール、インポート、実際のサービス利用枠の消費を行います。
- 実際の証券を推測しない:名称、コード、または市場が不明な場合は、最初に検証します。検証できない場合はユーザーに補足を依頼し、類似企業にマッピングしてはいけません。
- 選好は証券ごとにバインドする:異なる銘柄は完全に異なる注目ポイントを持つことができます。すべての選好の元の表現が Profile に保存され、事前定義されたキーワードのみを使用してはいけません。
- 開けばコンテンツがある:デフォルトの初期化では、各銘柄に対して最初の 2 つのレポートが生成されます。ユーザーが明示的に生成を一時的に希望しない場合にのみ、空のレポートモードを使用します。
- 3 つの機能で同じ Agent Plan Key を使用する:Agent Plan Harness の現在の設定では、同じ Key がデフォルトでモデル、DataPro、豆包搜索に使用されます。ユーザーに別の独立した検索 Key を要求してはいけません。
- 出典と本文をバインドする:DataPro は構造化された専門データを担当します。豆包搜索は最新の公開情報を担当します。Agent Plan モデルは今回の証拠に基づいて生成とレビューを行います。
- 2 つのレポートの役割は異なる:個別銘柄レビューは「現在の会社の状況はどうか」に回答します。市場後リスクサマリーは「今回のチェックウィンドウ内にどのような新しい変化とリスクシグナルが現れたか」に回答します。
- 機密情報はエコー表示しない:Key は、非表示の端末入力、環境変数、またはパーミッションが
0600のローカル認証情報ファイルを介してのみ設定できます。 - すべてのステップを説明する:何が完了したか、現在どのステップにいるか、次に何をするか、依存関係のダウンロードや利用枠の消費が発生するかどうかを説明します。
フロー概要
| ステージ | アクション | 完了マーク |
|---|---|---|
| 0 | 現在の状態を確認 | 初回初期化、実行再開、または障害調査の確認 |
| 1 | 投資設定を収集 | 銘柄、コード、市場、選好、監視設定が完全 |
| 2 | ユーザーが設定を確認 | ユーザーが構造化サマリーに明示的に同意 |
| 3 | インストールと秘密設定 | 正式なアプリケーションインストール完了、Key が安全に書き込み済み |
| 4 | 実際のサービスのプローブ | 3 つの Provider が現在すべて利用可能 |
| 5 | パーソナライズ設定のインポート | ホームページにユーザーの銘柄と注目ポイントが表示される |
| 6 | 最初のレポートを生成 | 各銘柄に 2 つの実際のレポートと履歴がある |
| 7 | ブラウザ受け入れと納品 | ユーザーが直接ウェブサイトを開いて使用可能 |
ステージ 0:現在の状態を確認
最初に Node.js、Skill ファイル、ランタイム、ウェブサイトの状態を確認します。
node {baseDir}/scripts/status.mjs
- アプリケーションがインストールされていない:ステージ 1 に進む。
- インストール済みだが実行されていない:それでも最初にユーザー設定を確認し、起動するか更新するかを決定する。
- 実行中:既存のウォッチリストと設定を読み取る。ユーザーが単に新しい対象を追加する場合、元のデータをクリアしない。
ready=false:後続で必ず実際の doctor を再実行する必要がある。プロセスの生存だけをもってバックエンドが利用可能と判断してはいけない。
ユーザーにウェブサイトのソースコードディレクトリを尋ねたり、別のプロジェクトを作成したりしないでください。
ステージ 1:投資設定の収集
1 回から 2 回の質問を 1 ラウンドとして、長いフォームを一度にユーザーに提示しないようにします。少なくとも以下を収集します。
- 証券名称。
- 証券コード。
- 市場:
CN、HK、US。 - この証券の注目ポイント(2 ~ 6 項目推奨ですが、ユーザーの実際のニーズが優先)。
- 市場後の自動チェックを有効にするかどうか。
- 有効にする場合の実行時刻、実行曜日、タイムゾーン。
最初に次のように質問できます。
どの銘柄を注目したいですか?証券名称、コード、市場を教えてください。その後、あなたが本当に関心のあるポイントを銘柄ごとに確認し、これらの選好をウェブサイトに直接書き込みます。
注目ポイントは固定の語彙リストに制限されてはいけません。以下はユーザーが表現するための補助であり、許可リストではありません。
- 市場とテクノロジー:価格トレンド、出来高、ボラティリティ、重要価格帯、資金の変化。
- 経営と財務:収益、利益、キャッシュフロー、粗利率、研究開発、配当、負債。
- 企業イベント:発表、受注、製品、生産能力、経営陣、訴訟、規制。
- 業界と外部環境:競争、政策、原材料、為替レート、金利、海外リスク。
- ユーザー自身の自然言語、例えば「高級酒卸価格とチャネル在庫」や「海外大口顧客認証の進捗」。
複合的な選好はそのまま保持できます。アプリケーションは検索時に意味的に分解し、カバレッジを判断します。事前定義されたキーワードに適合させるために、ユーザーの表現を勝手に書き換えてはいけません。
証券検証
優先的に DataPro を使用して、名称、コード、市場の対応関係を照会します。直接的なツールが利用できない場合は推測しないでください。実際のサービスが準備できたら、最初のレポート内の証券帰属検証をブロッキングしきい値として使用します。中国株と香港株のコードは取引所で一般的に使用される形式を保持し、米国株コードは公開 Ticker を使用します。
ステージ 2:構造化設定の確認
議論の結果を簡潔なサマリーにまとめ、ユーザーに明確に確認させます。例:
初期化設定
1. 貴州茅台|600519|CN
注目:収益性、ブランド力、チャネル在庫、業界動向
市場後監視:平日 18:00、Asia/Shanghai
2. Apple|AAPL|US
注目:iPhone 販売、サービス事業、AI 製品の進捗
市場後監視:オフ
確認後、既存のウェブサイトをインストールして起動し、これらの設定をインポートし、各銘柄に対して実際に個別銘柄レビューと市場後リスクサマリーを 1 つずつ生成します。このステップでは DataPro、豆包搜索、Agent Plan モデルを呼び出し、パッケージの利用枠を消費します。
ユーザーが明確に確認した後にのみ続行します。ユーザーがいずれかの項目を変更した場合は、対応する項目のみを更新し、再度完全なサマリーを表示します。
確認結果を、パーミッションが 0600 の一時的な Profile に書き込みます。形式:
{
"stocks": [
{
"name": "貴州茅台",
"code": "600519",
"exchange": "CN",
"focus": ["収益性", "ブランド力", "チャネル在庫", "業界動向"],
"monitor": {
"enabled": true,
"schedule_time": "18:00",
"schedule_days": ["Mon", "Tue", "Wed", "Thu", "Fri"],
"timezone": "Asia/Shanghai"
}
}
]
}
Profile に API Key を含めてはいけません。一時ファイルは使用後に --consume-profile で削除します。
ステージ 3:アプリケーションのインストールと Agent Plan の設定
このステップでは、正式なアプリケーションのコピー、npm 依存関係のインストール、チェックの実行、本番ビルドが行われることを説明し、次に実行します。
node {baseDir}/scripts/install.mjs
認証情報がない場合は、対話型端末で以下を実行します。
node {baseDir}/scripts/configure.mjs
configure.mjs は 1 つの Agent Plan API Key のみを尋ね、安全に書き込みます。
~/.config/investment-assistant/credentials.env
ファイルのパーミッションは 0600 でなければなりません。ユーザーに Key をチャットに送信するよう要求してはいけません。Key を Profile、.env.example、README、またはソースコードに書き込んではいけません。
ステージ 4:3 つの Provider の実際のプローブ
以下を実行します。
node {baseDir}/scripts/doctor.mjs --live
以下が表示される必要があります。
agent_plan_model: okdatapro: okweb_search: ok
このステップでは少量の実際の呼び出しが発生します。いずれかが失敗した場合は、references/troubleshooting.md に従って処理し、このステップで停止します。レポートの生成を続行してはいけません。また、「Key が設定された」を「バックエンドが利用可能」と言い換えてはいけません。
ステージ 5:ユーザー設定のインポート
ウェブサイトを起動し、確認済みの Profile をインポートします。
node {baseDir}/scripts/start.mjs
node {baseDir}/scripts/profile.mjs --input /秘密Profile絶対パス.json --consume-profile
インポートは市場と証券コードに基づいて冪等に更新されます。既存の銘柄の履歴は保持され、再実行によって重複した対象が作成されることはありません。
ホームページが少なくとも以下を満たしていることを確認します。
- ユーザーの各証券が存在する。
- 名称、コード、市場が正しい。
- カードにユーザーが入力した注目ポイントが表示される。
- 市場後設定がユーザーの確認と一致する。
ステージ 6:最初のパーソナライズされたレポートの生成
ユーザーがステージ 2 で利用枠の消費に同意している場合、完全な最初の生成を実行します。
node {baseDir}/scripts/acceptance.mjs --all --seed
--seed は各銘柄に対して以下を生成します。
- 1 つの個別銘柄レビュー。
- 1 つの市場後リスクサマリー。
そして自動的にチェックします。
- 2 つのレポートが異なる ID と独立した証拠スナップショットを持っている。
- 2 つのレポートが同じインターネット URL を再利用していない。
- 個別銘柄レビューに検証可能な中核的な財務 DataPro 証拠が含まれている。
- 本文で参照されている evidence ID がすべて存在する。
- インターネット出典に実際のタイトル、公開元、URL、サマリーがある。
- ユーザーの選好が項目ごとにカバレッジ状態を持っている。
- 2 つのタイプのレポートがそれぞれ対応する履歴レコードに入っている。
ユーザーが最初のレポートの生成を明示的に一時的に希望しない場合は、基本受け入れのみを実行できます。
node {baseDir}/scripts/acceptance.mjs --all
この場合、「ウェブサイトは設定済みですが、レポートエリアは空の可能性があります」と説明しなければならず、「開けばコンテンツがある」状態に達したと宣言してはいけません。
最も短いワンクリック初期化コマンドは次のとおりです。
node {baseDir}/scripts/onboard.mjs \
--profile /秘密Profile絶対パス.json \
--consume-profile
このコマンドは、インストール、設定、実際のプローブ、起動、インポートを行い、デフォルトで最初のレポートを生成します。ユーザーが明示的に生成を希望しない場合にのみ --skip-initial-reports を追加します。
ステージ 7:デスクトップブラウザ受け入れ
スクリプトが出力するローカルアドレスを開きます。デフォルト:
http://127.0.0.1:8788
実際のユーザーパスに従ってチェックします。
- ホームページが空白ではなく、すべての証券と注目ポイントが表示されている。
- 「個別銘柄レビュー」を開くと、最初に保存された最初のレポートが表示される。
- 本文は「市場パフォーマンス、経営と財務、注目ポイント、今後の観察」であり、フィールドの連結ではない。
- 引用エリアと本文の番号が対応し、インターネット出典が開け、DataPro 出典は trace を表示しない。
- 「市場後リスクサマリー」を開くと独立したレポートが表示され、レビューの本文や出典を再利用していない。
- 市場後設定が保存可能で、「今すぐ一度実行」で新しいレコードが生成される。
- 自動監視が有効な場合、次の実行時刻が正しい。スケジューラサービスの状態が正常。
- 履歴レコードにすべての生成済みレポートが含まれている。
- ページにオーバーフロー、隠れ、明らかな改行の異常、またはコンソールエラーがない。
ブラウザページが見えることは、実際のバックエンドが利用可能であることを意味しません。実際の doctor、レポート生成、ブラウザパスのすべてが合格して初めて納品できます。
個別銘柄レビューと市場後リスクサマリーの固定境界
個別銘柄レビュー
「この会社は現在どうか」に回答します。現在の相場、最新の開示された財務情報、およびユーザーの注目ポイントに関連する公開資料を使用します。固定構造:
- サマリー:簡潔な結論。すべての本文を連結しない。
- 市場パフォーマンス。
- 経営と財務。
- 注目ポイント。
- 今後の観察。
市場後リスクサマリー
「今回のチェックウィンドウ内で何が起こったか」に回答します。当日の市場の異常な動き、前回のチェック以降の新しい企業イベント、および最近の外部リスク背景を使用します。固定構造:
- サマリー:リスクの変化と最も重要な事実。すべてのセクションを繰り返さない。
- 市場の異変。
- 企業イベント。
- 外部リスク。
- 今後の観察。
該当する質の高い証拠がない場合は、対応するセクションを省略できます。しかし、「該当する情報は見つかりませんでした」「引き続き観察します」などの空疎な文を埋めてはいけません。新しいリスクイベントがないことは、会社にリスクがないことを意味しません。それでも今回の監査可能な結果を保存する必要があります。
障害復旧
- ウェブサイトが起動していない:
status.mjsを実行し、次にstart.mjsを実行します。 ready=false:doctor.mjs --liveを再実行します。- 新しい銘柄にコンテンツがない:Profile が正常にインポートされたことを確認し、その銘柄に対して
acceptance.mjs --stock コード --seedを実行します。 - スケジュールされたタスクが実行されない:監視スイッチ、日付、時刻、タイムゾーン、スケジューラサービスの状態、実行レコードを確認します。
- レポート生成の失敗:具体的なエラーと診断ログを保持し、Provider、証券帰属、証拠カバレッジ、またはモデルレビューの問題に従って処理します。検証を省略してはいけません。
- アプリケーションの更新:最初にバックアップし、次に停止、インストール、起動、doctor の再実行を行います。データベースと認証情報はアプリケーションの更新に伴って削除されません。
詳細な設定は references/setup.md、受け入れルールは references/acceptance.md、出典ルールは references/evidence-policy.md、トラブルシューティングは references/troubleshooting.md を参照してください。
最終納品説明
最終的な応答は、以下を明確にリストアップしなければなりません。
- ウェブサイトのアドレスと現在のプロセス状態。
- インポートされた証券、市場、注目ポイント。
- 各証券の市場後監視のオン/オフ、時刻、曜日、タイムゾーン。
- Agent Plan モデル、DataPro、豆包搜索の実際のプローブ結果。
- 各証券に対して個別銘柄レビューと市場後リスクサマリーがすでに生成されているかどうか。
- 2 つのタイプの履歴レコードとスケジュール状態が合格したかどうか。
- 実際に実行されたチェック、テスト、ビルド、ブラウザ受け入れ。
- 未完了項目、外部依存関係、および手動での確認が必要なリスク。
「初期化完了」とだけ言ってはいけません。ユーザーは、今何ができるか、どの結果が実際の呼び出しによって検証され、どの結果がまだ検証されていないかを知る必要があります。