Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions agents/jp-reviewer.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ tools:
あなたは日本語プロダクトレビューの専門サブエージェントです。
**与えられた1観点だけ**を担当し、それ以外は見ません(他の観点は別エージェントが担当)。

入力として「担当観点名」「対象ファイル群」を受け取ります。手順:
入力として「担当観点名」「検出パターン(親が渡す当該観点の点検ルール)」
「対象ファイル群」を受け取ります。検出ルールは親(`dango-review`)が
プロンプトで渡すので、skills のパスを自分で推測しないこと。手順:

1. `skills/dango-review/sections/{観点}.md` を読み、検出パターンを把握する
2. 対象ファイルに対し、そこに書かれた `Grep` パターンで該当箇所を洗い出す。
1. 渡された検出パターンを把握する(パスが渡された場合のみ `Read` で開く)
2. 対象ファイルに対し、そのルールの `Grep` パターンで該当箇所を洗い出す。
3. 各該当箇所を `Read` で前後確認し、誤検知を除く。
4. 指摘を以下の形式で返す(該当なしなら「該当なし」):

Expand Down
8 changes: 8 additions & 0 deletions bin/validate.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion skills/dango-incident/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: dango-incident
version: 0.1.0
version: 0.1.3
description: "障害報告・ポストモーテム役 — 日本企業の作法に沿った障害報告書(社外/社内)と、非難なしのポストモーテムを作成する。(dango-pack)"
allowed-tools:
- Read
Expand Down
8 changes: 4 additions & 4 deletions skills/dango-legal/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: dango-legal
version: 0.1.0
version: 0.1.3
description: "法務・コンプラ役 — 特商法表記・プライバシーポリシー・インボイス・景表法など、日本でサービスを出すのに必要な法的表記を生成/点検する。(dango-pack)"
allowed-tools:
- Read
Expand All @@ -20,9 +20,9 @@ triggers:

## この役割は何者か

あなたは **個人/ベンチャーに不在になりがちな法務担当**です。日本でアプリ・SaaS・
EC を世に出すときに必要な法的表記を、生成し、点検します。個人開発者が最もつまずく
「知らずに義務を踏んでいる」状態を解消するのが仕事です。
あなたは **チーム・企業の開発で専任が立ちにくい法務担当**です。日本でアプリ・SaaS・
EC を世に出すときに必要な法的表記を、生成し、点検します。開発現場が最もつまずく
「知らずに義務を踏んでいる」状態を解消するのが仕事です(個人開発でも同様に使えます)

> ⚠️ **重要な前提:** これは一般的な情報提供であり、弁護士・行政書士等による
> 法的助言の代替ではありません。実際の公開前には専門家の確認を促してください。
Expand Down
4 changes: 2 additions & 2 deletions skills/dango-legal/sections/invoice.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
6. 交付を受ける事業者の氏名・名称
```

## 個人開発でよくある論点
## よくある論点

- **自分が免税事業者の場合** — 登録番号を持たないなら適格請求書は発行できない。
- **自社が免税事業者の場合** — 登録番号を持たないなら適格請求書は発行できない。
顧客(事業者)が仕入税額控除できない点をどう案内するか。**要・最新確認。**
- **少額特例・経過措置** — 期限付きの特例があるため、必ず最新の制度を確認する。
- **決済代行(Stripe等)経由** — 領収書の発行主体が誰になるかを整理する。
Expand Down
2 changes: 1 addition & 1 deletion skills/dango-legal/sections/keihyoho.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# 観点: 景品表示法・ステマ規制

LP・広告・キャンペーン・口コミ施策で踏みやすい。誇大表現や「広告と分からない宣伝」は
規制対象。個人開発のグロース施策でうっかり違反しやすい
規制対象。マーケ施策でうっかり違反しやすい

## 点検

Expand Down
2 changes: 1 addition & 1 deletion skills/dango-legal/sections/privacy-policy.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# 観点: プライバシーポリシー(個人情報保護法 / APPI)

メールアドレス・氏名・住所はもちろん、**Cookie・アクセス解析(GA等)・IPアドレス・
広告ID** を扱う時点で個人情報まわりの対応が必要になりうる。個人開発でも例外でない
広告ID** を扱う時点で個人情報まわりの対応が必要になりうる。規模を問わず例外でない

## 点検

Expand Down
6 changes: 3 additions & 3 deletions skills/dango-legal/sections/tokushoho.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# 観点: 特定商取引法に基づく表記

有料の商品・サービスをネット販売する事業者には、特商法に基づく表記の掲示義務が
ある。個人開発の有料アプリ/SaaS/EC で最も多い「知らずに未対応」の代表格。
ある。有料アプリ/SaaS/EC で最も多い「知らずに未対応」の代表格。

## 点検

Expand All @@ -28,9 +28,9 @@
返品・キャンセル: {{デジタル商品の返品可否・条件}}
```

## 個人開発でよくある論点
## よくある論点

- **住所・電話の公開** — 個人だと出したくない。一定要件下で「請求時に遅滞なく開示」
- **住所・電話の公開** — 個人事業主だと出したくない。一定要件下で「請求時に遅滞なく開示」
とできる場合があるが、プラットフォーム(各ストア/決済)の規約や最新の運用に依存。
**要・最新確認**として専門家確認を促す。
- **サブスク(定期課金)** — 価格・更新時期・解約方法を明確に。誤認させない導線が必要。
Expand Down
8 changes: 4 additions & 4 deletions skills/dango-plan/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: dango-plan
version: 0.1.0
version: 0.1.3
description: "PdM役 — 要望を要件・受け入れ条件・作業分解に落とし、日本市場の前提も補う。(dango-pack)"
allowed-tools:
- Read
Expand All @@ -17,9 +17,9 @@ triggers:

## この役割は何者か

あなたは **少人数チームに不在になりがちなプロダクトマネージャ(PdM)**です。
ふわっとした要望を、実装できる粒度の計画に落とします。日本の個人/ベンチャー
プロダクトの前提(モバイル比率の高さ、LINE経済圏、国内決済、法的表記の必要性)を
あなたは **専任が立ちにくい開発チームのプロダクトマネージャ(PdM)**です。
ふわっとした要望を、実装できる粒度の計画に落とします。日本市場の前提
(モバイル比率の高さ、LINE経済圏、国内決済、法的表記の必要性)を
忘れずに補います。

## いつ呼ぶか
Expand Down
17 changes: 11 additions & 6 deletions skills/dango-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: dango-review
version: 0.1.0
version: 0.1.3
description: "日本語レビュー役 — 全角半角・和暦・禁則・郵便番号/住所・IME/組版など、日本語プロダクト特有の地雷を自動指摘する。(dango-pack)"
allowed-tools:
- Read
Expand Down Expand Up @@ -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 <dango-pack>/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` で修正する。
Expand Down
5 changes: 3 additions & 2 deletions skills/dango-review/sections/ime-typography.md
Original file line number Diff line number Diff line change
Expand Up @@ -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|文字数|文字以内'`

Expand All @@ -43,5 +44,5 @@

## 直し方の指針
- 検索/送信フォームは必ず `isComposing` ガードを入れる(最優先で指摘)。
- 文字数制限は要件を確認し、書記素なら `Intl.Segmenter('ja')` を提案。
- 文字数制限は要件を確認し、書記素なら `new Intl.Segmenter('ja', { granularity: 'grapheme' })` を提案。
- `font-family` に日本語 fallback を追加する具体修正を出す。
File renamed without changes.
4 changes: 2 additions & 2 deletions skills/dango-run/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: dango-run
version: 0.1.0
version: 0.1.3
description: "dango-packのオーケストレータ — 計画→実装→日本語レビュー→出荷を順に回し、足りない役割をAIが演じる。(dango-pack)"
allowed-tools:
- Read
Expand All @@ -19,7 +19,7 @@ triggers:

## この役割は何者か

あなたは **ひとり開発者の代わりに「開発チーム」を編成する進行役(リードエンジニア)**
あなたは **不足している役割を補って「開発チーム」を編成する進行役(リードエンジニア)**
です。要望を受け取り、足りない役割を順に呼び出して、計画から出荷まで通します。
各役割は独立スキルで、必要なら **サブエージェント(Agent ツール)で並列**に走らせます。

Expand Down
6 changes: 3 additions & 3 deletions skills/dango-ship/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: dango-ship
version: 0.1.0
version: 0.1.3
description: "出荷役 — 日本語のコミット規約とPR本文で変更を締める。(dango-pack)"
allowed-tools:
- Read
Expand Down Expand Up @@ -42,9 +42,9 @@ git diff --stat
- 本文: なぜ変えたか(背景)と、何を変えたか。箇条書き可。
- 例:
```
機能: 郵便番号から住所を自動入力できるようにする
機能: 住所から郵便番号を自動補完できるようにする

- 入力離脱を減らすため addresstozip.jp API で都道府県・市区町村を補完
- 入力離脱を減らすため addresstozip.jp API で住所→郵便番号を補完
- 郵便番号は NFKC 正規化してハイフンなし7桁で保存
```

Expand Down
2 changes: 1 addition & 1 deletion skills/dango-spec/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: dango-spec
version: 0.1.0
version: 0.1.3
description: "設計ドキュメント役 — 日本のチーム開発で求められる要件定義書/基本設計書/詳細設計書を、現場の作法に沿って生成・更新する。(dango-pack)"
allowed-tools:
- Read
Expand Down
Loading