Skip to content

Commit 54cb6fe

Browse files
authored
Merge pull request #30 from kc3hack/feature/issue-29-product-spec-skill
feat: #29 アプリケーション仕様書(product-spec)を追加
2 parents 146c4f6 + 0dc3af7 commit 54cb6fe

File tree

2 files changed

+251
-2
lines changed

2 files changed

+251
-2
lines changed

.github/skills/git-workflow/SKILL.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
22
name: git-workflow
3-
description: Git Commit Guidelines (Conventional Commits), Pull Request Templates, Atomic PRs
3+
description: Git Commit Guidelines (Conventional Commits), Pull Request Templates, Atomic PRs, Evidence Requirements
44
---
55

66
# Git & Commit Guidelines
77

8-
コードの変更理由を明確にするため、以下のルールに従ってコミットメッセージやPRを作成してください。
8+
コードの変更理由を明確にし、レビューコストを下げるため、以下のルールに従ってコミットメッセージやPRを作成してください。
99

1010
## 1. Conventional Commits
1111

@@ -35,6 +35,9 @@ fix: ユーザー登録時のバリデーションロジックを修正
3535

3636
## 3. Pull Request (PR) Rules
3737

38+
- **Evidence of Functionality (Must)**: 機能追加やバグ修正を行った場合は、**動作を保証する客観的な証拠**を必ずPRに添付してください。証拠がないPRはレビューしません(Closeします)。
39+
- **UI等の視覚的な変更**: 変更前後のスクリーンショット、または操作動画(GIF/MP4)。
40+
- **API/ロジックの変更**: テストスイートがPassしたログ、またはcURL等の実行コマンドとそのレスポンス結果。
3841
- **Template Compliance**: PR作成時は必ずリポジトリの `PULL_REQUEST_TEMPLATE.md` を使用し、全ての項目(特にセキュリティ自己評価)を埋めてください。
3942
- **Atomic PRs**: 1つのPRには1つの機能・修正のみを含めてください。巨大なPRはレビュー負荷が高まるため拒否します。
4043
- **Self-Review**: PRを作成する前に、あなた自身で生成されたコードを見直し、不要なデバッグ出力やコメントアウトされたコードが残っていないか確認してください。
Lines changed: 246 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,246 @@
1+
````skill
2+
---
3+
name: product-spec
4+
description: Application Specification (User Flow, Rank System, Badge System, Skill Tree)
5+
---
6+
7+
# アプリケーション仕様書
8+
9+
## 1. 概要
10+
11+
ユーザーの外部サービス活動実績とポートフォリオを元に、現在のエンジニアとしての立ち位置(ランク)を判定し、RPG風の成長要素(スキルツリー・バッジ)と、そこから導き出される「パーソナライズされた演習生成」を提供する。
12+
13+
## 2. 画面遷移と主要機能 (UX Flow)
14+
15+
### 2.1. ログイン / オンボーディング
16+
17+
1. **Login**: GitHub OAuth または ID入力でログイン。
18+
2. **Profile Setup**:
19+
- 連携情報の入力 (Qiita ID, Connpass ID)。
20+
- ポートフォリオ/経歴の入力 (URL または テキスト)。
21+
- AIによる初回分析実行。
22+
23+
### 2.2. メイン画面 (Dashboard)
24+
25+
- **Status**: 現在のランク(画像表示)、次のランクまでの目安。
26+
- **Skill Tree**: 現在の習得状況と、次に目指すべきノードの可視化。
27+
- **Badges**: 獲得したバッジの一覧表示。
28+
29+
### 2.3. 演習選択 (Quest Hub)
30+
31+
- **Document Generation (優先度: 高)**:
32+
- ユーザーが学びたい技術のドキュメントやテキストを入力。
33+
- AIが内容を解析し、ランクに見合ったハンズオン演習を自動生成する。
34+
- **Normal Quest (優先度: 低)**:
35+
- 事前に用意された標準的な演習シナリオ(MVPでは実装しないか、最小限)。
36+
37+
### 2.4. 演習実行 (Quest Play)
38+
39+
- 生成されたハンズオンの手順表示。
40+
- クリア後の振り返り、経験値獲得。
41+
42+
## 3. 外部連携・入力ソース
43+
44+
### 3.1. GitHub (必須)
45+
46+
- **取得方法**: OAuth 2.0 連携
47+
- **利用データ**:
48+
- リポジトリの言語構成、コミット頻度、Star数
49+
- READMEの内容(プロジェクトの質)
50+
- 寄与活動 (Contribution Graph)
51+
52+
### 3.2. その他サービス・ポートフォリオ
53+
54+
- **Qiita / Connpass**: ユーザーIDまたはURL入力。
55+
- **ポートフォリオ/経歴**: テキスト入力 または URL入力。
56+
- **利用方針**: GitHub情報と合わせてAIへの入力プロンプトに含める。
57+
58+
## 4. ランク判定ロジック (AI主導)
59+
60+
### 4.1. 判定基準
61+
62+
- **相対評価**: 取得した情報を総合的に分析し、「エンジニア全体の上位何%に位置するか」をAIが推定する。
63+
- **ランク分け**: 推定されたパーセンタイルを元に、以下の10段階(植物の成長)にマッピングする。
64+
1. 種子 (初心者/未経験)
65+
2. 苗木
66+
3. 若木
67+
4. 巨木
68+
5. 母樹
69+
6. 林
70+
7. 森
71+
8. 霊樹
72+
9. 古樹
73+
10. 世界樹 (Top Tier)
74+
75+
### 4.2. ランクアップ
76+
77+
- **MVP段階**: 初回分析時のランク決定のみ実装。
78+
- **Future**: ポイント制や特定条件達成によるランクアップ機能。
79+
80+
## 5. バッジシステム (Gamification)
81+
82+
ユーザーの特定の活動実績に基づき、プロフィールに飾れるバッジを付与する。
83+
84+
| バッジカテゴリ | 取得条件の目安 (AIまたはルールベース判定) |
85+
| :--- | :--- |
86+
| **Commit** | GitHubの総コミット数、またはContributionの濃さ |
87+
| **Days** | 継続学習日数、またはアプリ利用継続日数 |
88+
| **Builder** | 作成したアプリの数 (リポジトリ数やポートフォリオ記述から判定) |
89+
| **Writer** | 技術記事の執筆数 (Qiita/Zenn等の投稿数) |
90+
| **Seeker** | 本アプリ内での演習(クエスト)完了数・進捗率 |
91+
92+
## 6. スキルツリー生成ロジック
93+
94+
### 6.1. ロードマップ生成
95+
96+
- ユーザーの現状(ランク)から、次のランクへ進むための「通過点(マイルストーン)」をAIが生成する。
97+
- 生成カテゴリ:
98+
- Web/モバイルアプリ
99+
- AI
100+
- セキュリティ
101+
- ネットワーク/インフラ
102+
- デザイン
103+
- ゲーム
104+
105+
### 6.2. スキル習得判定
106+
107+
- 生成された通過点に対し、現状の実績で「既に満たしているか」をAIが判定し、初期状態でクリア済み(チェック付き)にする。
108+
- **MVP制限**: その後の活動による自動追従は実装せず、手動更新または再分析とする。
109+
110+
## 7. 開発方針
111+
112+
### Phase 1 (MVP)
113+
114+
- **GitHub OAuth実装**: ユーザー認証とリポジトリ情報取得
115+
- **ドキュメントからの演習生成**: 通常演習は後回し、ドキュメント入力→AI生成を優先
116+
- **一連のフロー構築**: プロフィール入力→AI分析→ランク・ツリー表示
117+
- **動くことを優先**: 判定精度よりも「最初から最後まで動く体験」を重視
118+
119+
### Future Enhancements
120+
121+
- 通常演習(Normal Quest)の拡充
122+
- リアルタイムランクアップ機能
123+
- 自動スキルツリー更新
124+
- コミュニティ機能(ランキング、他ユーザーとの比較)
125+
126+
## 8. データモデル
127+
128+
### 8.1. User (既存)
129+
130+
```python
131+
- id: int
132+
- username: str
133+
- level: int (ランクに対応)
134+
- exp: int (経験値)
135+
- rank: int (0-9: 種子〜世界樹)
136+
- skills: JSON (習得済みスキルのリスト)
137+
- created_at: datetime
138+
- updated_at: datetime
139+
```
140+
141+
### 8.2. 追加予定モデル
142+
143+
#### Profile (外部連携情報)
144+
145+
```python
146+
- user_id: FK
147+
- github_username: str
148+
- qiita_id: str (optional)
149+
- connpass_id: str (optional)
150+
- portfolio_text: text (optional)
151+
- portfolio_url: str (optional)
152+
- last_analyzed_at: datetime
153+
```
154+
155+
#### Badge
156+
157+
```python
158+
- id: int
159+
- user_id: FK
160+
- category: enum (Commit/Days/Builder/Writer/Seeker)
161+
- tier: int (1-3: Bronze/Silver/Gold)
162+
- earned_at: datetime
163+
```
164+
165+
#### Quest
166+
167+
```python
168+
- id: int
169+
- title: str
170+
- description: text
171+
- difficulty: int (対象ランク)
172+
- category: str (Web/AI/Security/etc)
173+
- is_generated: bool (AI生成 or プリセット)
174+
- created_at: datetime
175+
```
176+
177+
#### QuestProgress
178+
179+
```python
180+
- id: int
181+
- user_id: FK
182+
- quest_id: FK
183+
- status: enum (NotStarted/InProgress/Completed)
184+
- started_at: datetime
185+
- completed_at: datetime
186+
```
187+
188+
## 9. 技術スタック
189+
190+
### Backend
191+
- FastAPI
192+
- SQLAlchemy (ORM)
193+
- Alembic (Migration)
194+
- LangChain (LLM連携)
195+
- OpenAI API / Anthropic API
196+
197+
### Frontend
198+
- Next.js (App Router)
199+
- TypeScript
200+
- TailwindCSS
201+
- shadcn/ui
202+
203+
### Infrastructure
204+
- Docker / Docker Compose
205+
- PostgreSQL (Production)
206+
- SQLite (Development)
207+
208+
## 10. セキュリティ要件
209+
210+
- GitHub OAuth 2.0による安全な認証
211+
- APIキーは環境変数で管理(`.env`)
212+
- CORS設定の適切な管理
213+
- SQLインジェクション対策(SQLAlchemy ORM使用)
214+
- XSS対策(Next.jsの自動エスケープ)
215+
- CSRF対策(FastAPIのCORSミドルウェア)
216+
217+
## 11. パフォーマンス要件
218+
219+
- AI分析: 初回30秒以内
220+
- 演習生成: 15秒以内
221+
- 通常APIレスポンス: 200ms以内
222+
- フロントエンド初期表示: 2秒以内
223+
224+
## 12. テスト方針
225+
226+
- **Backend**: pytest + pytest-cov (カバレッジ80%以上)
227+
- **Frontend**: Jest + React Testing Library
228+
- **E2E**: Playwright (主要フロー)
229+
- **LLM**: モック化 + 実際のAPI呼び出しテスト
230+
231+
## 13. デプロイ戦略
232+
233+
- **CI/CD**: GitHub Actions
234+
- **環境**: Development / Staging / Production
235+
- **モニタリング**: ログ集約、エラートラッキング
236+
- **バックアップ**: DBの定期バックアップ
237+
238+
---
239+
240+
## 参考資料
241+
242+
- Architecture SKILL: `.github/skills/architecture/SKILL.md`
243+
- Security SKILL: `.github/skills/security/SKILL.md`
244+
- Git Workflow SKILL: `.github/skills/git-workflow/SKILL.md`
245+
246+
````

0 commit comments

Comments
 (0)