diff --git a/agents/jp-reviewer.md b/agents/jp-reviewer.md index 3124678..8e1170e 100644 --- a/agents/jp-reviewer.md +++ b/agents/jp-reviewer.md @@ -11,10 +11,12 @@ tools: あなたは日本語プロダクトレビューの専門サブエージェントです。 **与えられた1観点だけ**を担当し、それ以外は見ません(他の観点は別エージェントが担当)。 -入力として「担当観点名」「対象ファイル群」を受け取ります。手順: +入力として「担当観点名」「検出パターン(親が渡す当該観点の点検ルール)」 +「対象ファイル群」を受け取ります。検出ルールは親(`dango-review`)が +プロンプトで渡すので、skills のパスを自分で推測しないこと。手順: -1. `skills/dango-review/sections/{観点}.md` を読み、検出パターンを把握する。 -2. 対象ファイルに対し、そこに書かれた `Grep` パターンで該当箇所を洗い出す。 +1. 渡された検出パターンを把握する(パスが渡された場合のみ `Read` で開く)。 +2. 対象ファイルに対し、そのルールの `Grep` パターンで該当箇所を洗い出す。 3. 各該当箇所を `Read` で前後確認し、誤検知を除く。 4. 指摘を以下の形式で返す(該当なしなら「該当なし」): diff --git a/bin/validate.mjs b/bin/validate.mjs index 1f7e1fc..fa0ee75 100644 --- a/bin/validate.mjs +++ b/bin/validate.mjs @@ -45,6 +45,14 @@ for (const name of readdirSync(skillsDir)) { if (!existsSync(join(dir, "sections", ref))) errors.push(`${name}: 参照先 sections/${ref} が存在しません`); } + + // templates 参照切れ(スキルは個別リンクされるため、実行時に使う雛形は + // スキル内に無いと解決できない) + const tpl = [...text.matchAll(/templates\/([\w-]+\.md)/g)].map((m) => m[1]); + for (const ref of new Set(tpl)) { + if (!existsSync(join(dir, "templates", ref))) + errors.push(`${name}: 参照先 templates/${ref} が存在しません`); + } } if (errors.length) { diff --git a/skills/dango-incident/SKILL.md b/skills/dango-incident/SKILL.md index 209b219..e7ab4a3 100644 --- a/skills/dango-incident/SKILL.md +++ b/skills/dango-incident/SKILL.md @@ -1,6 +1,6 @@ --- name: dango-incident -version: 0.1.0 +version: 0.1.3 description: "障害報告・ポストモーテム役 — 日本企業の作法に沿った障害報告書(社外/社内)と、非難なしのポストモーテムを作成する。(dango-pack)" allowed-tools: - Read diff --git a/skills/dango-legal/SKILL.md b/skills/dango-legal/SKILL.md index dfdb41e..b4daaad 100644 --- a/skills/dango-legal/SKILL.md +++ b/skills/dango-legal/SKILL.md @@ -1,6 +1,6 @@ --- name: dango-legal -version: 0.1.0 +version: 0.1.3 description: "法務・コンプラ役 — 特商法表記・プライバシーポリシー・インボイス・景表法など、日本でサービスを出すのに必要な法的表記を生成/点検する。(dango-pack)" allowed-tools: - Read @@ -20,9 +20,9 @@ triggers: ## この役割は何者か -あなたは **個人/ベンチャーに不在になりがちな法務担当**です。日本でアプリ・SaaS・ -EC を世に出すときに必要な法的表記を、生成し、点検します。個人開発者が最もつまずく -「知らずに義務を踏んでいる」状態を解消するのが仕事です。 +あなたは **チーム・企業の開発で専任が立ちにくい法務担当**です。日本でアプリ・SaaS・ +EC を世に出すときに必要な法的表記を、生成し、点検します。開発現場が最もつまずく +「知らずに義務を踏んでいる」状態を解消するのが仕事です(個人開発でも同様に使えます)。 > ⚠️ **重要な前提:** これは一般的な情報提供であり、弁護士・行政書士等による > 法的助言の代替ではありません。実際の公開前には専門家の確認を促してください。 diff --git a/skills/dango-legal/sections/invoice.md b/skills/dango-legal/sections/invoice.md index f8b2aff..9413d11 100644 --- a/skills/dango-legal/sections/invoice.md +++ b/skills/dango-legal/sections/invoice.md @@ -20,9 +20,9 @@ 6. 交付を受ける事業者の氏名・名称 ``` -## 個人開発でよくある論点 +## よくある論点 -- **自分が免税事業者の場合** — 登録番号を持たないなら適格請求書は発行できない。 +- **自社が免税事業者の場合** — 登録番号を持たないなら適格請求書は発行できない。 顧客(事業者)が仕入税額控除できない点をどう案内するか。**要・最新確認。** - **少額特例・経過措置** — 期限付きの特例があるため、必ず最新の制度を確認する。 - **決済代行(Stripe等)経由** — 領収書の発行主体が誰になるかを整理する。 diff --git a/skills/dango-legal/sections/keihyoho.md b/skills/dango-legal/sections/keihyoho.md index aafedfa..4c756f2 100644 --- a/skills/dango-legal/sections/keihyoho.md +++ b/skills/dango-legal/sections/keihyoho.md @@ -1,7 +1,7 @@ # 観点: 景品表示法・ステマ規制 LP・広告・キャンペーン・口コミ施策で踏みやすい。誇大表現や「広告と分からない宣伝」は -規制対象。個人開発のグロース施策でうっかり違反しやすい。 +規制対象。マーケ施策でうっかり違反しやすい。 ## 点検 diff --git a/skills/dango-legal/sections/privacy-policy.md b/skills/dango-legal/sections/privacy-policy.md index c173d8a..40700a1 100644 --- a/skills/dango-legal/sections/privacy-policy.md +++ b/skills/dango-legal/sections/privacy-policy.md @@ -1,7 +1,7 @@ # 観点: プライバシーポリシー(個人情報保護法 / APPI) メールアドレス・氏名・住所はもちろん、**Cookie・アクセス解析(GA等)・IPアドレス・ -広告ID** を扱う時点で個人情報まわりの対応が必要になりうる。個人開発でも例外でない。 +広告ID** を扱う時点で個人情報まわりの対応が必要になりうる。規模を問わず例外でない。 ## 点検 diff --git a/skills/dango-legal/sections/tokushoho.md b/skills/dango-legal/sections/tokushoho.md index 6760e6e..88f7a1d 100644 --- a/skills/dango-legal/sections/tokushoho.md +++ b/skills/dango-legal/sections/tokushoho.md @@ -1,7 +1,7 @@ # 観点: 特定商取引法に基づく表記 有料の商品・サービスをネット販売する事業者には、特商法に基づく表記の掲示義務が -ある。個人開発の有料アプリ/SaaS/EC で最も多い「知らずに未対応」の代表格。 +ある。有料アプリ/SaaS/EC で最も多い「知らずに未対応」の代表格。 ## 点検 @@ -28,9 +28,9 @@ 返品・キャンセル: {{デジタル商品の返品可否・条件}} ``` -## 個人開発でよくある論点 +## よくある論点 -- **住所・電話の公開** — 個人だと出したくない。一定要件下で「請求時に遅滞なく開示」 +- **住所・電話の公開** — 個人事業主だと出したくない。一定要件下で「請求時に遅滞なく開示」 とできる場合があるが、プラットフォーム(各ストア/決済)の規約や最新の運用に依存。 **要・最新確認**として専門家確認を促す。 - **サブスク(定期課金)** — 価格・更新時期・解約方法を明確に。誤認させない導線が必要。 diff --git a/skills/dango-plan/SKILL.md b/skills/dango-plan/SKILL.md index 2ef4629..484d193 100644 --- a/skills/dango-plan/SKILL.md +++ b/skills/dango-plan/SKILL.md @@ -1,6 +1,6 @@ --- name: dango-plan -version: 0.1.0 +version: 0.1.3 description: "PdM役 — 要望を要件・受け入れ条件・作業分解に落とし、日本市場の前提も補う。(dango-pack)" allowed-tools: - Read @@ -17,9 +17,9 @@ triggers: ## この役割は何者か -あなたは **少人数チームに不在になりがちなプロダクトマネージャ(PdM)**です。 -ふわっとした要望を、実装できる粒度の計画に落とします。日本の個人/ベンチャー -プロダクトの前提(モバイル比率の高さ、LINE経済圏、国内決済、法的表記の必要性)を +あなたは **専任が立ちにくい開発チームのプロダクトマネージャ(PdM)**です。 +ふわっとした要望を、実装できる粒度の計画に落とします。日本市場の前提 +(モバイル比率の高さ、LINE経済圏、国内決済、法的表記の必要性)を 忘れずに補います。 ## いつ呼ぶか diff --git a/skills/dango-review/SKILL.md b/skills/dango-review/SKILL.md index 6be1064..386b9a4 100644 --- a/skills/dango-review/SKILL.md +++ b/skills/dango-review/SKILL.md @@ -1,6 +1,6 @@ --- name: dango-review -version: 0.1.0 +version: 0.1.3 description: "日本語レビュー役 — 全角半角・和暦・禁則・郵便番号/住所・IME/組版など、日本語プロダクト特有の地雷を自動指摘する。(dango-pack)" allowed-tools: - Read @@ -36,21 +36,26 @@ UI から拾い上げて指摘します。一般的なバグ探しは他の役 ```bash # 成果物の保存先を用意(状態は ~/.dango-pack 配下に集約する) -node "$(dirname "$0")/../../bin/dango-state.mjs" init review 2>/dev/null || \ - mkdir -p ~/.dango-pack/projects/"$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")"/reviews +repo="$(basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)")" +mkdir -p ~/.dango-pack/projects/"$repo"/reviews # レビュー対象の差分(なければ作業ツリー全体) git diff --name-only HEAD 2>/dev/null || true ``` +> 補足: dango-pack を clone 済みなら `node /bin/dango-state.mjs init review` +> でも保存先を用意できる(決定ログ連携が要るとき)。本スキル単体は上の `mkdir` で十分。 + ## 進め方 1. **対象を決める** — 引数で範囲が来ていればそれを、なければ `git diff` の変更 ファイル、それも無ければ日本語UIを含むファイル(`.tsx .ts .vue .html .css` 等)を `Glob` で拾う。 -2. **観点ごとに点検する** — 下記5観点の各 `sections/*.md` を読み、そこに書かれた +2. **観点ごとに点検する** — このスキル内の各 `sections/*.md` を読み、そこに書かれた 検出パターンで `Grep` / `Read` する。観点は独立なので **サブエージェント - (Agent ツール)で並列に走らせてよい**(`agents/jp-reviewer.md` を使う)。 -3. **指摘をまとめる** — `templates/review.md` の体裁で + (Agent ツール)で並列に走らせてよい**(`jp-reviewer`)。サブエージェントは + 対象プロジェクト側で動くので、**該当 `sections/{観点}.md` の中身(検出パターン)を + プロンプトに添えて渡す**(エージェント側で skills のパスを推測させない)。 +3. **指摘をまとめる** — このスキル内の `templates/review.md` の体裁で `~/.dango-pack/projects/{repo}/reviews/{日付}.md` に保存し、要約を会話に返す。 4. **直すか聞く** — 重大指摘があれば `AskUserQuestion` で「今すぐ直すか/記録だけか」 を確認し、許可されたら `Edit` で修正する。 diff --git a/skills/dango-review/sections/ime-typography.md b/skills/dango-review/sections/ime-typography.md index 98b349e..589fc33 100644 --- a/skills/dango-review/sections/ime-typography.md +++ b/skills/dango-review/sections/ime-typography.md @@ -29,7 +29,8 @@ ### 3. 文字数カウント ★誤りやすい - `str.length` は UTF-16 コード単位。絵文字・サロゲートペアで実際の文字数とずれる。 - 「𠮟」「🍣」などで `length` が 2 になる。 - - 書記素単位で数えるなら `Intl.Segmenter` か `[...str].length`(コードポイント)。 + - 書記素単位で数えるなら `new Intl.Segmenter('ja', { granularity: 'grapheme' })`、 + コードポイント単位なら `[...str].length`。 - 全角=2文字としてカウントすべき要件(SMS・帳票)があるか確認。 - Grep 例: `rg '\.length|maxLength|文字数|文字以内'` @@ -43,5 +44,5 @@ ## 直し方の指針 - 検索/送信フォームは必ず `isComposing` ガードを入れる(最優先で指摘)。 -- 文字数制限は要件を確認し、書記素なら `Intl.Segmenter('ja')` を提案。 +- 文字数制限は要件を確認し、書記素なら `new Intl.Segmenter('ja', { granularity: 'grapheme' })` を提案。 - `font-family` に日本語 fallback を追加する具体修正を出す。 diff --git a/templates/review.md b/skills/dango-review/templates/review.md similarity index 100% rename from templates/review.md rename to skills/dango-review/templates/review.md diff --git a/skills/dango-run/SKILL.md b/skills/dango-run/SKILL.md index ff03820..ced404e 100644 --- a/skills/dango-run/SKILL.md +++ b/skills/dango-run/SKILL.md @@ -1,6 +1,6 @@ --- name: dango-run -version: 0.1.0 +version: 0.1.3 description: "dango-packのオーケストレータ — 計画→実装→日本語レビュー→出荷を順に回し、足りない役割をAIが演じる。(dango-pack)" allowed-tools: - Read @@ -19,7 +19,7 @@ triggers: ## この役割は何者か -あなたは **ひとり開発者の代わりに「開発チーム」を編成する進行役(リードエンジニア)** +あなたは **不足している役割を補って「開発チーム」を編成する進行役(リードエンジニア)** です。要望を受け取り、足りない役割を順に呼び出して、計画から出荷まで通します。 各役割は独立スキルで、必要なら **サブエージェント(Agent ツール)で並列**に走らせます。 diff --git a/skills/dango-ship/SKILL.md b/skills/dango-ship/SKILL.md index e345eea..72f9882 100644 --- a/skills/dango-ship/SKILL.md +++ b/skills/dango-ship/SKILL.md @@ -1,6 +1,6 @@ --- name: dango-ship -version: 0.1.0 +version: 0.1.3 description: "出荷役 — 日本語のコミット規約とPR本文で変更を締める。(dango-pack)" allowed-tools: - Read @@ -42,9 +42,9 @@ git diff --stat - 本文: なぜ変えたか(背景)と、何を変えたか。箇条書き可。 - 例: ``` - 機能: 郵便番号から住所を自動入力できるようにする + 機能: 住所から郵便番号を自動補完できるようにする - - 入力離脱を減らすため addresstozip.jp API で都道府県・市区町村を補完 + - 入力離脱を減らすため addresstozip.jp API で住所→郵便番号を補完 - 郵便番号は NFKC 正規化してハイフンなし7桁で保存 ``` diff --git a/skills/dango-spec/SKILL.md b/skills/dango-spec/SKILL.md index 9b94acd..4f36b3a 100644 --- a/skills/dango-spec/SKILL.md +++ b/skills/dango-spec/SKILL.md @@ -1,6 +1,6 @@ --- name: dango-spec -version: 0.1.0 +version: 0.1.3 description: "設計ドキュメント役 — 日本のチーム開発で求められる要件定義書/基本設計書/詳細設計書を、現場の作法に沿って生成・更新する。(dango-pack)" allowed-tools: - Read