oma-market について
oma-market は、最新の last30days 調査エンジンを実行し、コミュニティの声を市場ブリーフにまとめるスキルです。製品や市場の課題、トレンド、競合、探索的な調査に対応し、意図に応じた分析フレームワークを加えます。
主な機能
- 01コミュニティシグナルの調査
- 02課題・トレンド・競合・探索モード
- 03調査期間の指定
- 04SWOT、Porter's 5F、PESTELによる分析
- 05Markdownブリーフと生データの保存
活用シーン
- 01製品へのユーザーの不満を調査
- 02指定期間のカテゴリー動向を追跡
- 03競合へのコミュニティの評価を比較
- 04人物、企業、テーマを探索
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ gracefullight/ stock-checker --skill oma-marketインストール後、Claude Code で/oma-marketを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
resources/checklist.mderror-playbook.mdexamples.mdexecution-protocol.mdintent-rules.mdoutput-laws.mdresources/frameworks/pestel.mdporters-5f.mdswot.mdresources/operator-packs/competitor.mddiscovery.mdpain.mdpositive.md詳細
市場調査エージェント - コミュニティシグナルインテリジェンス
スケジュール設定
目標
上流のlast30days調査エンジン(oma が管理する常に最新のリリース)を実行してコミュニティシグナルを調査し、戦略フレームワークを用いて結果をユーザーの意図(課題/トレンド/競合/探索)に合わせて整理し、簡潔なレポートを1件.agents/results/market/に保存します。
意図のシグネチャ
- 製品やカテゴリの課題、ユーザーの不満、顧客の声に関するシグナルを尋ねている。
- 今週または今月、ある分野で何が流行し、成長し、または衰退しているかを尋ねている。
- コミュニティの評判やポジショニングにおいて、ある製品が別の製品とどう比較されるかを尋ねている。
- トピック、人物、企業、またはティッカーに関する探索的な市場調査を求めている。
使用する場合
- コミュニティ投稿(実際のアップボート数や上位コメントを含むReddit、HN、X、Bluesky、GitHub Issues)から実際のユーザーの課題を抽出する場合
- 期間(
--days 7|30|90|180)を指定してカテゴリのトレンドを検出する場合 - 競合の評判分析や、SWOT/ポーターの5フォースによるポジショニングを行う場合
- オープンエンドの探索調査(
--discover)、人物モード、採用シグナル(--hiring-signals)、追加調査(--drill)を行う場合
使用しない場合
- 市場の観点を含まない一般的なウェブ調査 → oma-search を直接使用します
- 学術文献 → oma-scholar を使用します
- ライブダッシュボードや定期モニタリング → このスキルをラップする
oma schedule <action>を使用します
想定される入力
- トピック文字列。任意で
--intent pain|trend|competitor|discoveryを指定します(指定がなければresources/intent-rules.mdに従って分類します) - 任意の期間(
--days)、--vs <entity>(競合)、--frameworks auto|none|swot,5f,pestel - 任意のネイティブなlast30daysフラグ(
oma market run --helpを参照)—そのまま渡します
想定される出力
.agents/results/market/{topic-slug}-{YYYYMMDD}.mdに1件のMarkdownレポート- 先頭行:エンジンのバッジ(
🌐 last30days v{VERSION} · synced {date})。本文は上流のOUTPUT CONTRACTに従い、意図に応じたフレームワークのセクションを追加し、エンジンのフッターは保持します - 生のエンジン成果物は
market.save_dir(デフォルトは.agents/results/market/raw/)に保存します
outputs:
- name: market-brief
description: Single LAW-compliant markdown brief with framework sections
artifact: ".agents/results/market/*.md"
required: true
依存関係
oma market resolve/oma market run— エンジンの場所、Python 3.12+の解決、--save-dirのデフォルト- 解決されたエンジンのルートにある上流の
SKILL.md(oma market resolve --jsonのskillMd)—調査に関する正式な仕様 resources/intent-rules.md、resources/frameworks/、resources/output-laws.md、resources/execution-protocol.md
制御フローの機能
- 他の処理より先に
oma market detect-trapのゲートを実行します(終了コード2 = REFUSE、終了コード4 = 無効) - エンジンは常に最新リリースを使用します。
oma market resolveは管理対象のコピーを更新(頻度制限あり)し、オフライン時はキャッシュ済みのコピーにフォールバックします。market.path/LAST30DAYS_HOMEを固定すると、この動作は無効になります - キーやCookieが必要なソースはエンジン内で自動的にスキップされます。認証情報不要のソース(Reddit、HN、GitHub、Polymarket、arXiv、Techmeme、Digg、ウェブ)は常に実行されます
- 意図に応じてフレームワークを自動切り替えします(課題/トレンド → SWOT、競合 → SWOT + ポーターの5フォース、探索 → SWOT + PESTEL)
構造的なフロー
開始
oma market detect-trap "<topic>"を実行します。終了コード2の場合は、REFUSEの理由と質問の言い換え案を提示して停止します。oma market resolve --jsonを実行します。ok: falseの場合はreasonを報告し(エンジンがない場合はoma market update、Pythonがない場合はインストール方法を案内)、停止します。WebSearchのみで合成した内容を市場調査として提示してはいけません。- 上流の仕様を
engine.skillMdから最初から最後まで読みます。意図的に長くしてあるため、流し読みしてはいけません。engine.rootをそのSKILL_DIRとして扱います。 resources/intent-rules.mdに従って意図を分類し、エンジンのフラグとフレームワークのセットに対応付けます。
シーン
- 準備:detect-trap を実行し、resolve、上流の SKILL.md を読み込み、インテントを分類します。
- 上流のステップ:上流の SKILL.md に厳密に従います — ステップ 0(初回実行時のセットアップウィザード、同意に基づく)、インテント解析、ステップ 0.45(独自のクエリ品質事前チェック)、ステップ 0.5/0.55(WebSearch が利用可能な場合のハンドル、サブレディット、ハッシュタグの解決)、ステップ 0.75(クエリ計画)。「Runtime Preflight」の Python 探索ブロックのみスキップします。インタープリターは
oma market runによってすでに解決済みです。 - 実行:上流の契約で
"${LAST30DAYS_PYTHON}" "${SKILL_DIR}/scripts/last30days.py" <args>を実行するよう指定されている箇所では、同じ引数でoma market run <args>を実行します(フォアグラウンド、タイムアウト 5 分、--emit=compact)。--save-dirを指定しない場合、market.save_dirから自動的に追加されます。 - 統合:上流の OUTPUT CONTRACT の指定どおりにブリーフを作成します(1 行目にバッジ、Ranked Evidence Clusters、LAWs)。続けて、インテントに応じて選択したフレームワークのセクションを追加します。根拠として使えるのは、エンジン出力に含まれるクラスターのみです(
resources/frameworks/)。 - 最終処理:
resources/output-laws.mdのセルフチェックを実行し、.agents/results/market/{topic-slug}-{YYYYMMDD}.mdに書き込み、先頭 50 行をプレビューします。
遷移
--vs <entity>または「A vs B」という表現 → 競合比較のインテント → 上流の COMPARISON フロー(契約の指定どおりに 2 回実行し、直接比較を実施)→ SWOT + ポーターのファイブフォース。- 人物/企業/ティッカーのトピック → 上流の人物/採用シグナル/StockTwits の処理をそのまま適用します。
engine.status: stale→ レポートにnoteを含めます(キャッシュされたエンジンバージョンで調査が実行されました)。
失敗と復旧
- detect-trap の終了コードが 2 → 拒否します。エンジンは実行しません。
--forceはユーザーが明示的に再確認した場合に限り使用します。 oma market resolveが ok でない → 理由を示して停止します。エンジンは実行しません。- エンジンが 0 以外の終了コードを返す → stderr をそのまま報告します。上流の契約で出力された compact 出力が有効とされている場合を除き、部分的な stdout をもとに統合しません。
- 上流の Python バージョンチェック/セットアップウィザードのメッセージ → 上流の契約の指示どおりに、そのままユーザーに伝えます。
終了
- 成功:バッジ、クラスター、フレームワーク、エンジンフッターを含むブリーフを書き込み、パスを報告します。
- 部分的な成功:一部のソースをスキップしてエンジンを実行した場合(フッターにスキップしたソースが記載されます)、その旨を伝えます。根拠を捏造して補ってはなりません。
論理操作
アクション
| アクション | SSL プリミティブ | 根拠 |
|---|---|---|
| detect-trap の事前チェック | VALIDATE | トピック引数、トラップパターンのルール |
| エンジンと Python の解決 | CALL_TOOL | oma market resolve --json |
| 上流の契約を読む | READ | engine.skillMd |
| インテントを分類 | SELECT | resources/intent-rules.md |
| 上流の調査前ステップ | INFER | 上流の SKILL.md のステップ 0~0.75 |
| エンジンを実行 | CALL_TOOL | oma market run <args> |
| 統合とフレームワーク | WRITE | 上流の OUTPUT CONTRACT、resources/frameworks/ |
| セルフチェックとブリーフの書き込み | WRITE | resources/output-laws.md、.agents/results/market/ |
ツールとインストゥルメント
oma market detect-trap <topic>(事前チェックゲート)oma market resolve [--refresh|--offline] [--json](エンジンと Python の解決。管理対象の最新バージョンを使用)oma market update(管理対象エンジンを強制的に更新)oma market run <engine args…>(解決済みの上流エンジンの Python エントリーポイントに引数を渡します)
標準のコマンドパス
TOPIC="VS Code pain points"
oma market detect-trap "$TOPIC"
oma market resolve --json # read .engine.skillMd, then follow it
# … upstream Steps 0 / 0.45 / 0.5 / 0.55 / 0.75 …
oma market run "$TOPIC" --plan "$QUERY_PLAN_FILE" --subreddits=vscode --emit=compact --save-suffix=v3
リソースの範囲
| 範囲 | リソースの対象 |
|---|---|
NETWORK | エンジン内部のみ(ソースごとのフェッチャー)。管理対象エンジンの更新には GitHub を使用 |
LOCAL_FS | ~/.cache/oma-market/last30days/<tag>/(エンジン)、~/.config/last30days/(エンジン設定、キー)、.agents/results/market/(ブリーフと生データ) |
PROCESS | oma market サブコマンド → 解決済みの上流 Python エントリーポイント |
前提条件
- トピックが detect-trap を通過していること。
oma market resolveが ok であること(エンジンが存在し、PATH 上、uv経由、またはmarket.python/LAST30DAYS_PYTHONで指定された Python ≥ 3.12 が見つかること)。
効果と副作用
- 概要を
.agents/results/market/{topic-slug}-{YYYYMMDD}.mdに、エンジンの生ファイルをmarket.save_dirに書き込みます。 - 初回実行時:上流のセットアップウィザードが、ユーザーの同意を得て
~/.config/last30days/.envに書き込む場合があります。 - Python 3.12+ がない場合、
oma market resolveは上流のセットアップウィザードの実行前に停止します。表示されたインストール案内を伝え、承認を得てインタープリターをインストールした後に、解決を再試行してください。スキップされた上流の Python 事前チェックによってインストールされるとは考えないでください。
参考資料
- 実行プロトコル:
resources/execution-protocol.md - インテントのルーティング:
resources/intent-rules.md - 出力仕様:
resources/output-laws.md - 適用するフレームワーク:
resources/frameworks/swot.md、resources/frameworks/porters-5f.md、またはresources/frameworks/pestel.md(選択したフレームワークのみ読み込みます) - 検証:
resources/checklist.md - 復旧:
resources/error-playbook.md - 上流エンジンの手順:
oma market resolve --jsonから解決されたengine.skillMdパスを読みます。上流のスクリプトはスキルにバンドルされたリソースではなく、エンジンの管理ファイルです。
コメント
Markdown 対応