tillerhand 3.42.1 → 3.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/.claude/agents/board-chair.md +20 -20
  2. package/.claude/agents/code-reviewer.md +20 -20
  3. package/.claude/agents/council-advisor.md +14 -14
  4. package/.claude/agents/security-auditor.md +30 -30
  5. package/.claude/agents/test-writer.md +22 -21
  6. package/.claude/board/board-ai.md +25 -25
  7. package/.claude/board/board-api.md +25 -25
  8. package/.claude/board/board-architect.md +28 -28
  9. package/.claude/board/board-devops.md +25 -25
  10. package/.claude/board/board-mobile.md +25 -25
  11. package/.claude/board/board-performance.md +24 -24
  12. package/.claude/board/board-privacy.md +25 -25
  13. package/.claude/board/board-product.md +26 -26
  14. package/.claude/board/board-qa.md +28 -28
  15. package/.claude/board/board-ux.md +26 -26
  16. package/.claude/board/council.md +76 -76
  17. package/.claude/board/rules.md +61 -61
  18. package/.claude/claude-security-guidance.md +10 -10
  19. package/.claude/commands/adopt.md +70 -69
  20. package/.claude/commands/ask-mode.md +9 -9
  21. package/.claude/commands/board.md +15 -15
  22. package/.claude/commands/build.md +47 -47
  23. package/.claude/commands/dashboard.md +17 -17
  24. package/.claude/commands/design.md +31 -31
  25. package/.claude/commands/findings-all.md +14 -14
  26. package/.claude/commands/findings-business.md +7 -7
  27. package/.claude/commands/findings-legal.md +7 -7
  28. package/.claude/commands/findings-perf.md +7 -7
  29. package/.claude/commands/findings-security.md +9 -9
  30. package/.claude/commands/findings-tech.md +7 -7
  31. package/.claude/commands/findings-ux.md +7 -7
  32. package/.claude/commands/fix-bug.md +15 -15
  33. package/.claude/commands/freeze.md +8 -8
  34. package/.claude/commands/handoff.md +38 -38
  35. package/.claude/commands/kit-update.md +17 -14
  36. package/.claude/commands/language.md +13 -0
  37. package/.claude/commands/maintain.md +19 -19
  38. package/.claude/commands/plan-task.md +32 -32
  39. package/.claude/commands/qa.md +17 -17
  40. package/.claude/commands/release.md +40 -40
  41. package/.claude/commands/research.md +31 -31
  42. package/.claude/commands/retro.md +32 -32
  43. package/.claude/commands/review-changes.md +15 -15
  44. package/.claude/commands/rollback.md +24 -24
  45. package/.claude/commands/start.md +116 -113
  46. package/.claude/commands/tools.md +11 -11
  47. package/.claude/commands/user-feedback.md +11 -11
  48. package/.claude/commands/wrap-up.md +18 -18
  49. package/.claude/findings/lenses/business.md +24 -24
  50. package/.claude/findings/lenses/legal.md +29 -29
  51. package/.claude/findings/lenses/perf.md +19 -19
  52. package/.claude/findings/lenses/security.md +30 -30
  53. package/.claude/findings/lenses/tech.md +23 -23
  54. package/.claude/findings/lenses/ux.md +19 -19
  55. package/.claude/findings/protocol.md +54 -54
  56. package/.claude/findings/report-template.md +30 -30
  57. package/.claude/hooks/budget.mjs +7 -7
  58. package/.claude/hooks/checkpoint.mjs +12 -12
  59. package/.claude/hooks/commit-gate.mjs +50 -34
  60. package/.claude/hooks/cost.mjs +2 -2
  61. package/.claude/hooks/council.mjs +3 -3
  62. package/.claude/hooks/dashboard-data.mjs +3 -2
  63. package/.claude/hooks/dashboard.mjs +164 -149
  64. package/.claude/hooks/destructive-guard.mjs +74 -64
  65. package/.claude/hooks/edit-rounds.mjs +3 -3
  66. package/.claude/hooks/flow.mjs +10 -10
  67. package/.claude/hooks/freeze-guard.mjs +27 -23
  68. package/.claude/hooks/gate.mjs +25 -25
  69. package/.claude/hooks/guard-secrets.mjs +11 -11
  70. package/.claude/hooks/lang.mjs +114 -0
  71. package/.claude/hooks/messages.mjs +495 -0
  72. package/.claude/hooks/models.mjs +14 -11
  73. package/.claude/hooks/notify.mjs +3 -2
  74. package/.claude/hooks/package-gate.mjs +17 -15
  75. package/.claude/hooks/plugins-sync.mjs +9 -9
  76. package/.claude/hooks/prefs.mjs +19 -19
  77. package/.claude/hooks/preview.mjs +11 -11
  78. package/.claude/hooks/progress.mjs +14 -14
  79. package/.claude/hooks/qa-report.mjs +11 -10
  80. package/.claude/hooks/reminder.mjs +6 -3
  81. package/.claude/hooks/session-start.mjs +23 -17
  82. package/.claude/hooks/shared.mjs +1 -1
  83. package/.claude/hooks/status-read.mjs +5 -4
  84. package/.claude/hooks/statusline.mjs +14 -11
  85. package/.claude/hooks/structure-guard.mjs +9 -9
  86. package/.claude/hooks/test-guard.mjs +61 -20
  87. package/.claude/hooks/tools.mjs +28 -29
  88. package/.claude/hooks/usage.mjs +18 -15
  89. package/.claude/output-styles/anlatici.md +28 -28
  90. package/.claude/security-patterns.json +3 -3
  91. package/.claude/settings.json +6 -0
  92. package/.claude/skills/logo-design/SKILL.md +42 -42
  93. package/.claude/skills/motion-video/SKILL.md +52 -52
  94. package/.claude/skills/source-research/SKILL.md +35 -35
  95. package/.claude/skills/ui-motion/SKILL.md +38 -38
  96. package/.github/workflows/kit-tests.yml +7 -7
  97. package/.github/workflows/npm-publish.yml +16 -16
  98. package/AGENTS.md +56 -56
  99. package/CHANGELOG.md +7 -7
  100. package/CLAUDE.md +5 -5
  101. package/README.md +199 -172
  102. package/README.tr.md +292 -0
  103. package/docs/architecture/overview.md +31 -31
  104. package/docs/architecture/stack.md +2 -2
  105. package/docs/archive/README.md +4 -4
  106. package/docs/decisions/adr-template.md +14 -14
  107. package/docs/decisions/log.md +10 -10
  108. package/docs/findings/README.md +13 -13
  109. package/docs/findings/config.md +13 -13
  110. package/docs/legal/privacy-kvkk.md +1 -1
  111. package/docs/operations/accounts.md +25 -25
  112. package/docs/operations/deploy-setup.md +64 -64
  113. package/docs/operations/feature-flags.md +17 -17
  114. package/docs/operations/maintenance.md +48 -48
  115. package/docs/operations/release-checklist.md +61 -61
  116. package/docs/operations/spend-alarms.md +28 -28
  117. package/docs/product/feedback.md +9 -8
  118. package/docs/product/glossary.md +16 -16
  119. package/docs/product/launch.md +28 -28
  120. package/docs/product/prd.md +43 -42
  121. package/docs/product/roadmap.md +31 -30
  122. package/docs/product/specs/_template.md +13 -12
  123. package/docs/product/unit-economics.md +23 -22
  124. package/docs/quality/metrics.md +14 -14
  125. package/docs/quality/retros.md +11 -11
  126. package/docs/quality/test-plan.md +48 -48
  127. package/docs/security/checklist.md +57 -57
  128. package/docs/workflow/board.md +7 -7
  129. package/docs/workflow/cost-log.md +4 -4
  130. package/docs/workflow/decision-protocol.md +70 -70
  131. package/docs/workflow/learning.md +4 -4
  132. package/docs/workflow/mcp-catalog.md +31 -31
  133. package/docs/workflow/models.md +35 -35
  134. package/docs/workflow/progress.md +7 -7
  135. package/docs/workflow/skills.md +108 -108
  136. package/docs/workflow/usage-limits.md +62 -62
  137. package/kit/CHANGELOG.md +879 -839
  138. package/kit/VERSION +1 -1
  139. package/kit/guide.html +713 -477
  140. package/kit/guide.tr.html +1328 -0
  141. package/kit/kit.mjs +56 -54
  142. package/kit/project/README.md +29 -29
  143. package/kit/project/gitignore +12 -12
  144. package/kit/templates/addons/ai/.env.example.append +5 -5
  145. package/kit/templates/addons/ai/ai/evals/README.md +11 -11
  146. package/kit/templates/addons/ai/ai/evals/cases.jsonl +2 -2
  147. package/kit/templates/addons/ai/ai/prompts/README.md +8 -8
  148. package/kit/templates/addons/ai/docs/ai/guide.md +56 -56
  149. package/kit/templates/backend/.claude/hooks/format.mjs +1 -1
  150. package/kit/templates/backend/.claude/structure.json +1 -1
  151. package/kit/templates/backend/.env.example +6 -6
  152. package/kit/templates/backend/.github/dependabot.yml +1 -1
  153. package/kit/templates/backend/.github/workflows/ci.yml +13 -13
  154. package/kit/templates/backend/.github/workflows/claude-ci-fix.yml +19 -19
  155. package/kit/templates/backend/.github/workflows/claude-maintenance.yml +18 -18
  156. package/kit/templates/backend/.github/workflows/live-monitoring.yml +14 -14
  157. package/kit/templates/backend/.pre-commit-config.yaml +3 -3
  158. package/kit/templates/backend/docs/architecture/stack.md +98 -98
  159. package/kit/templates/backend/docs/architecture/structure.md +34 -34
  160. package/kit/templates/mobile/.claude/structure.json +1 -1
  161. package/kit/templates/mobile/.env.example +6 -6
  162. package/kit/templates/mobile/.github/dependabot.yml +2 -2
  163. package/kit/templates/mobile/.github/workflows/ci.yml +18 -18
  164. package/kit/templates/mobile/.github/workflows/claude-ci-fix.yml +19 -19
  165. package/kit/templates/mobile/.github/workflows/claude-maintenance.yml +18 -18
  166. package/kit/templates/mobile/.gitignore.append +2 -2
  167. package/kit/templates/mobile/docs/architecture/stack.md +113 -113
  168. package/kit/templates/mobile/docs/architecture/structure.md +33 -33
  169. package/kit/templates/mobile/docs/design/design-guide.md +37 -37
  170. package/kit/templates/mobile/tests/security/rls.mjs +22 -22
  171. package/kit/templates/web-saas/.claude/structure.json +1 -1
  172. package/kit/templates/web-saas/.env.example +11 -11
  173. package/kit/templates/web-saas/.github/dependabot.yml +3 -3
  174. package/kit/templates/web-saas/.github/workflows/ci.yml +20 -20
  175. package/kit/templates/web-saas/.github/workflows/claude-ci-fix.yml +19 -19
  176. package/kit/templates/web-saas/.github/workflows/claude-maintenance.yml +18 -18
  177. package/kit/templates/web-saas/.github/workflows/live-monitoring.yml +12 -12
  178. package/kit/templates/web-saas/docs/architecture/stack.md +116 -116
  179. package/kit/templates/web-saas/docs/architecture/structure.md +44 -44
  180. package/kit/templates/web-saas/docs/design/design-guide.md +38 -38
  181. package/kit/templates/web-saas/tests/live/smoke.spec.ts +4 -4
  182. package/kit/templates/web-saas/tests/security/rls.mjs +22 -22
  183. package/kit/tools/codex/.codex/hooks.json +1 -1
  184. package/package.json +2 -2
  185. package/README.en.md +0 -267
@@ -1,44 +1,44 @@
1
1
  ---
2
2
  name: board-ux
3
- description: Uzman kurulu üyesi - UX ve Tasarım Uzmanı. Plan, görev sonu, commit ve faz sonu kurul toplantılarında kendi alanına giren değişiklikleri denetler ve karar önerisi verir. Kod değiştirmez.
3
+ description: Expert board member - UX and Design Specialist. Audits changes in its own area in plan, task-end, commit and phase-end board meetings and gives a decision recommendation. Does not change code.
4
4
  tools: Read, Grep, Glob, Bash
5
5
  model: haiku
6
6
  ---
7
7
 
8
- Sen bu projenin uzman kurulunda **UX ve Tasarım Uzmanı** üyesisin. Arayüzün tutarlı, anlaşılır ve herkes için kullanılabilir olmasını sağlarsın. Impeccable'ın critique ilkeleriyle bakarsın.
8
+ You are the **UX and Design Specialist** on this project's expert board. You make sure the interface is consistent, clear and usable for everyone. You review with Impeccable's critique principles.
9
9
 
10
- **Kesin kurallar:** Hiçbir dosyayı değiştirme. Bash'i sadece okuma için kullan (`git diff`, `git log`, test/lint komutları). `.env` dosyalarını okuma. Kendi alanında kal.
10
+ **Hard rules:** Do not change any file. Use Bash only for reading (`git diff`, `git log`, test/lint commands). Do not read `.env` files. Stay in your own area.
11
11
 
12
- ## Bu proje
12
+ ## This project
13
13
 
14
- <!-- Kurul kurulurken (/start Kurul adımı veya /board setup) doldurulur: ürünün tek cümlelik özeti, seçilen stack,
15
- kritik akışlar ve bu rol için projeye özel riskler. Boşsa önce docs/product/prd.md ve docs/architecture/stack.md'yi oku. -->
14
+ <!-- Filled in when the board is set up (/start board step or /board setup): one-sentence product summary, chosen stack,
15
+ critical flows and project-specific risks for this role. If empty, read docs/product/prd.md and docs/architecture/stack.md first. -->
16
16
 
17
- ## Neye bakarsın
17
+ ## What you check
18
18
 
19
- - `DESIGN.md` belirteçleri dışında renk, boyut, boşluk veya bileşen kullanımı
20
- - Boş, hata, yükleniyor ve (mobilde) çevrimdışı durumları
21
- - Erişilebilirlik: kontrast, klavye erişimi, odak, etiketler, dokunma alanı
22
- - Bilgi hiyerarşisi, akış ve tek ana eylem kuralı
23
- - Metinler: hitap (`docs/product/glossary.md`), AI kokan kalıplar (humanizer'dan geçmiş mi?), belirsiz buton metinleri
24
- - Mobil genişlik ve koyu tema
19
+ - Color, size, spacing or component use outside the `DESIGN.md` tokens
20
+ - Empty, error, loading and (on mobile) offline states
21
+ - Accessibility: contrast, keyboard access, focus, labels, touch target
22
+ - Information hierarchy, flow and the single-primary-action rule
23
+ - Copy: form of address (`docs/product/glossary.md`), AI-sounding patterns (did it pass humanizer?), vague button text
24
+ - Mobile width and dark theme
25
25
 
26
- ## Kaynakların
26
+ ## Your sources
27
27
 
28
- `docs/design/design-guide.md`, `DESIGN.md`, `PRODUCT.md`, `docs/product/glossary.md`. Kod haritası (codebase-memory-mcp) bağlıysa dosyaları toptan okumadan önce onu sorgula (`search_graph`, `trace_path`, `get_code_snippet`).
28
+ `docs/design/design-guide.md`, `DESIGN.md`, `PRODUCT.md`, `docs/product/glossary.md`. If the code map (codebase-memory-mcp) is connected, query it before reading files in bulk (`search_graph`, `trace_path`, `get_code_snippet`).
29
29
 
30
- ## Çıktı (kurul formatı; başka bir şey yazma)
30
+ ## Output (board format; write nothing else)
31
31
 
32
32
  ```
33
- ÜYE: UX ve Tasarım Uzmanı · KARAR: ONAY | KOŞULLU ONAY | RET
34
- BULGULAR:
35
- [KRİTİK|ÖNEMLİ|ÖNERİ] dosya:satır — sorun (somut senaryo) — öneri
36
- KULLANICIYA SORULMALI: [varsa kullanıcının vermesi gereken karar, seçenekleriyle tek satır]
37
- DİĞER ÜYELER İÇİN NOT: [alan dışı ama ciddi bir şey gördüysen tek satır]
33
+ MEMBER: UX and Design Specialist · VERDICT: ONAY | KOŞULLU ONAY | RET
34
+ FINDINGS:
35
+ [KRİTİK|ÖNEMLİ|ÖNERİ] file:line — problem (concrete scenario) — suggestion
36
+ ASK THE USER: [if any, the decision the user must make, one line with its options]
37
+ NOTE FOR OTHER MEMBERS: [if you saw something serious outside your area, one line]
38
38
  ```
39
39
 
40
- - **RET** sadece KRİTİK bulgu varsa: güvenlik açığı, veri kaybı riski, yasal ihlal, kabul kriterinin karşılanmaması.
41
- - **KOŞULLU ONAY:** ÖNEMLİ bulgular düzeltilirse onay.
42
- - **Kapı çıktısı** (`gate.mjs`) verildiyse önce onu oku: kırmızı (❌) kontrol KRİTİK'tir, RET ver. Lint, tip ve testin zaten yakaladığını yeniden arama; yargı gerektiren konulara odaklan.
43
- - Bulgu yoksa `KARAR: ONAY` ve `BULGULAR: yok` yaz. Övgü, özet, uzun açıklama yok.
44
- - Emin değilsen bulguyu `[DOĞRULANMADI]` etiketiyle yaz ve nasıl doğrulanacağını söyle.
40
+ - **RET** only when there is a KRİTİK finding: security hole, risk of data loss, legal violation, unmet acceptance criterion.
41
+ - **KOŞULLU ONAY:** approve if the ÖNEMLİ findings are fixed.
42
+ - **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is KRİTİK; give RET. Do not re-search what lint, types and tests already catch; focus on topics that need judgment.
43
+ - No findings: write `VERDICT: ONAY` and `FINDINGS: none`. No praise, summary or long explanations.
44
+ - If unsure, tag the finding `[UNVERIFIED]` and say how to verify it.
@@ -1,114 +1,114 @@
1
- # Konsey protokolü (üç aşama)
1
+ # Council protocol (three stages)
2
2
 
3
- > Karpathy'nin llm-council yapısının kurula uyarlanmış hali (github.com/karpathy/llm-council).
4
- > 1. İlk görüşler bağımsız toplanır.
5
- > 2. Görüşler anonim olarak çapraz incelenir ve sıralanır.
6
- > 3. Bağımsız bir başkan sentezler.
3
+ > The board-adapted form of Karpathy's llm-council structure (github.com/karpathy/llm-council).
4
+ > 1. First opinions are collected independently.
5
+ > 2. Opinions are cross-reviewed and ranked anonymously.
6
+ > 3. An independent chair synthesizes.
7
7
  >
8
- > Sayım kodla yapılır (`node .claude/hooks/council.mjs`). Ana ajan oy saymaz ve başkan sayıyı değiştiremez.
8
+ > Counting is done by code (`node .claude/hooks/council.mjs`). The main agent does not count votes and the chair cannot change the count.
9
9
 
10
- ## Ne zaman
10
+ ## When
11
11
 
12
- Hangi toplantı ve kararın konseye gideceğini proje profili belirler (`docs/workflow/progress.md` → `**Profil:**`; `/start` Adım 0'da seçilir):
12
+ The project profile decides which meetings and decisions go to the council (`docs/workflow/progress.md` → `**Profil:**`; chosen in `/start` Step 0):
13
13
 
14
- | | **Hafif** (Pro için önerilen) | **Standart** | **Tam** |
14
+ | | **Hafif** (recommended for Pro) | **Standart** | **Tam** |
15
15
  |---|---|---|---|
16
- | Eklentiler | Çekirdek: ponytail, caveman, mattpocock-skills, impeccable, humanizer, security-guidance (+ tipin LSP ve stack skill'leri). Diğerleri proje kapsamında kapatılır | Hepsi açık | Hepsi açık |
17
- | Commit denetimi (her commit'te haiku kurul) | Kapalı | Açık | Açık |
18
- | Komut listesi (skill listesindeki açıklamalar) | 10 çekirdek komut açıklamalı, 18'i sadece adıyla | Hafif gibi | Hepsi açıklamalı |
19
- | Toplantı konseyi (3 aşama) | Yok; toplantılar tek aşamalı | Faz sonu, canlıya alma | Plan, faz sonu, canlıya alma, RET |
20
- | Karar konseyi | Veritabanı ve auth kararı | Veritabanı ve auth kararı | Tüm tek yönlü kararlar |
16
+ | Add-ons | Core: ponytail, caveman, mattpocock-skills, impeccable, humanizer, security-guidance (+ the type's LSP and stack skills). The others are turned off at project scope | All on | All on |
17
+ | Commit review (haiku board on every commit) | Off | On | On |
18
+ | Command list (descriptions in the skill list) | 10 core commands with descriptions, 18 by name only | Like Hafif | All with descriptions |
19
+ | Meeting council (3 stages) | None; meetings are single-stage | Phase end, go-live | Plan, phase end, go-live, RET |
20
+ | Decision council | Database and auth decision | Database and auth decision | All one-way decisions |
21
21
 
22
- Ölçüm (2026-10-12): Bir konsey Pro'da 5 saatlik limitin yaklaşık %12'sini kullandı.
22
+ Measurement (2026-10-12): One council used about 12% of the 5-hour limit on Pro.
23
23
 
24
- | Durum (profil izin veriyorsa) | Konsey türü | Aşama 1 üyeleri | Başkan |
24
+ | Case (if the profile allows) | Council type | Stage 1 members | Chair |
25
25
  |---|---|---|---|
26
- | Plan, faz sonu, canlıya alma toplantısı | **Toplantı konseyi** | rules.md §3'e göre seçilen kurul üyeleri (inceleme rolünün modeliyle) | `board-chair` |
27
- | Görev sonu toplantısında RET çıktı | Toplantı konseyi (sadece aşama 2 ve 3) | RET veren üye + o toplantının diğer üyeleri | `board-chair` |
28
- | Tek yönlü kapı kararı (Hafif/Standart: sadece veritabanı ve auth; Tam: hepsi; `docs/workflow/decision-protocol.md` §2a) veya her profilde `/board council <soru>` | **Karar konseyi** | 3 × `council-advisor`: `haiku`, `sonnet`, `opus` (aynı soru, farklı model) | `board-chair` |
26
+ | Plan, phase-end, go-live meeting | **Meeting council** | Board members chosen by rules.md §3 (with the review role's model) | `board-chair` |
27
+ | RET in a task-end meeting | Meeting council (stages 2 and 3 only) | The member who gave RET + the other members of that meeting | `board-chair` |
28
+ | One-way door decision (Hafif/Standart: database and auth only; Tam: all; `docs/workflow/decision-protocol.md` §2a) or `/board council <question>` in any profile | **Decision council** | 3 × `council-advisor`: `haiku`, `sonnet`, `opus` (same question, different model) | `board-chair` |
29
29
 
30
- - Görev sonu ve commit toplantıları tek aşamalı kalır (rules.md §4).
31
- - Limit sarıysa: karar konseyi 2 danışmanla (`sonnet`, `opus`) yapılır, toplantı konseyinde aşama 2'ye en fazla 3 üye katılır.
32
- - Limit kırmızıysa: konsey yerine tek aşamalı toplantı önerilir ve kullanıcıya sorulur.
30
+ - Task-end and commit meetings stay single-stage (rules.md §4).
31
+ - If the limit is yellow: the decision council runs with 2 advisors (`sonnet`, `opus`), and at most 3 members join stage 2 in a meeting council.
32
+ - If the limit is red: suggest a single-stage meeting instead of a council and ask the user.
33
33
 
34
- ## Tutanak
34
+ ## Minutes
35
35
 
36
- Her konsey tek bir dosyadır: `docs/workflow/council/YYYY-AA-GG-<tür>-<kısa-konu>.md`. Ana ajan aşamaların ham çıktısını buraya yazar. Bağlamı şişirmemek için sonraki adımlar tutanağı değil, dosya yolunu taşır.
36
+ Each council is a single file: `docs/workflow/council/YYYY-AA-GG-<type>-<short-topic>.md`. The main agent writes the raw output of the stages here. To keep context small, later steps carry the file path, not the minutes.
37
37
 
38
38
  ```markdown
39
- # Konsey: <tür> · <konu>
40
- **Tarih:** 2026-10-12 · **Tür:** plan | faz-sonu | canliya-alma | ret | karar
41
- **Görev:** G-012 (varsa)
39
+ # Konsey: <type> · <topic>
40
+ **Tarih:** 2026-10-12 · **Tür:** plan | phase-end | go-live | reject | decision
41
+ **Task:** G-012 (if any)
42
42
 
43
- ## Soru
44
- <karar konseyinde: soru, seçenekler (her biri tek satır), bağlam dosyaları. Toplantıda: kapsam ve kabul kriterleri>
43
+ ## Question
44
+ <decision council: the question, the options (one line each), context files. Meeting: scope and acceptance criteria>
45
45
 
46
46
  ## 1. İlk görüşler
47
47
  ### Görüş A
48
- - A1 [KRİTİK] dosya:satır — sorun — öneri
48
+ - A1 [KRİTİK] file:line — problem — suggestion
49
49
  - A2 [ÖNEMLİ] ...
50
- ÖNERİ: <seçenek adı> ← sadece karar konseyinde
50
+ ÖNERİ: <option name> ← decision council only
51
51
  ### Görüş B
52
52
  ...
53
53
 
54
54
  ## 2. Çapraz inceleme
55
55
  ### İnceleyen: A
56
- <her görüşün güçlü ve zayıf yanı, kısa>
56
+ <strengths and weaknesses of each opinion, short>
57
57
  OYLAR:
58
58
  B1: DOĞRU | YANLIŞ | ABARTILI
59
- EKSİK: <kimsenin görmediği önemli bir şey varsa, tek satır>
59
+ MISSING: <something important nobody saw, if any, one line>
60
60
  SIRALAMA:
61
61
  1. Görüş C
62
62
  2. Görüş B
63
63
 
64
64
  ## 3. Toplu sıralama
65
- <council.mjs yazar>
65
+ <written by council.mjs>
66
66
 
67
67
  ## 4. Başkan kararı
68
- <board-chair yazar>
68
+ <written by board-chair>
69
69
 
70
70
  ## Kimlikler
71
71
  A = board-architect (sonnet) · B = security-auditor (sonnet) · C = board-product (haiku)
72
72
  ```
73
73
 
74
- ## Aşamalar
75
-
76
- 1. **İlk görüşler (paralel).** Her üyeye kendi formatıyla görev verilir (toplantıda üye dosyasındaki kurul formatı, karar konseyinde `council-advisor` formatı). Gelen cevaplar rastgele sırayla A, B, C… etiketlenir. Bulgulara kimlik verilir: A1, A2, B1… Etiket-kimlik eşlemesi sadece tutanağın sonundaki "Kimlikler" bölümüne yazılır.
77
- 2. **Çapraz inceleme (paralel).** Her inceleyene aşağıdakiler verilir ve aşağıdaki talimat aynen iletilir:
78
- - Tutanağın "Soru" bölümü.
79
- - Kendisi **hariç** diğer görüşler; kimin yazdığı ve hangi modelin yazdığı verilmez.
80
- - Görüşler her inceleyene farklı sırada verilir (sıra etkisini azaltır).
81
-
82
- > Aşağıdaki görüşleri kimin yazdığını bilmiyorsun. Her biri için ne iyi, ne eksik, iki cümleyi geçmeden yaz. Sonra her bulguya oy ver: DOĞRU (kanıtlı ve önem derecesi yerinde), ABARTILI (gerçek ama önemi düşük), YANLIŞ (kodda/bağlamda karşılığı yok). Oy verirken iddiayı kodda veya dokümanda kontrol et; tahminle oy verme. Kimsenin görmediği önemli bir şey varsa EKSİK satırına yaz. En sonda tam bu biçimle sırala: önce "SIRALAMA:" satırı, sonra en iyiden en kötüye "1. Görüş X" satırları, başka metin yok.
83
-
84
- Toplantı konseyinde inceleyenler aynı üyelerdir. Karar konseyinde aynı danışmanlardır.
85
- 3. **Sayım.** `node .claude/hooks/council.mjs <tutanak>` komutu şunları hesaplar ve tutanağa yazar:
86
- - Ortalama sıra.
87
- - Her bulgu için oy dağılımı.
88
- - Tartışmalı bulgular: itiraz (YANLIŞ + ABARTILI) sayısı DOĞRU sayısına eşit veya fazlaysa.
89
- - Uzlaşma yüzdesi.
90
- 4. **Başkan.** `board-chair` (opus) çalıştırılır ve ona tutanağın yolu verilir. Başkan şunları yazar:
91
- - Nihai kararı.
92
- - Elenen bulguları ve gerekçelerini.
93
- - Azınlık görüşünü.
94
-
95
- Başkanın uyması gereken kurallar:
96
- - Tartışmalı **KRİTİK** bulguyu kendi başına eleyemez. Bu bulgu "kullanıcıya sor" olarak kalır.
97
- - RET kararı, en az bir KRİTİK bulgu tartışmalı değilse verilir.
98
- 5. **Kullanıcı.** Ana ajan, başkanın kararını rules.md §4'teki sentez biçimiyle gösterir.
99
- - Karar konseyinde AskUserQuestion seçenekleri konseyden gelir:
100
- - Başkanın önerdiği seçenek ilk sırada ve "(Önerilen)" etiketli olur.
101
- - Her seçeneğin açıklamasına "Konsey: n/N ilk görüş · ort. sıra x" eklenir.
102
- - Azınlık görüşü kendi seçeneğinin açıklamasında tek cümleyle yazılır.
103
- 6. **Kayıt.**
104
- - `docs/workflow/board.md` → toplantı günlüğüne bir satır eklenir. Kapsam sütununa tutanak bağlantısı yazılır.
105
- - Karar konseyi ise `docs/decisions/log.md` ve ADR'ye "Konsey: <tutanak>" referansı eklenir.
106
-
107
- ## Neden
108
-
109
- - **Anonimlik:** Üye, otoritesi bilinen bir role (örn. güvenlik) körü körüne katılmaz.
110
- - **Çapraz oy:** Uydurma veya abartılı bulgular, kullanıcıya ulaşmadan elenir.
111
- - **Ayrı başkan:** Görüşü yazanla kararı verenin aynı model olmasını önler.
112
- - **Farklı modeller:** Aynı sorunun farklı yeteneklerle cevaplanmasını sağlar.
113
-
114
- Bir sınır var: Bütün üyeler Claude modelidir. Benzer kör noktaları paylaşabilirler. Konsey, kullanıcının kararının yerine geçmez.
74
+ ## Stages
75
+
76
+ 1. **First opinions (parallel).** Give each member the task in its own format (in a meeting, the board format in the member file; in a decision council, the `council-advisor` format). The replies are labeled A, B, C… in random order. Findings get ids: A1, A2, B1… Write the label-to-id mapping only in the "Kimlikler" section at the end of the minutes.
77
+ 2. **Cross-review (parallel).** Give each reviewer the following and pass the instruction below verbatim:
78
+ - The "Question" section of the minutes.
79
+ - The other opinions, **excluding** their own. Do not say who wrote them or which model wrote them.
80
+ - Give each reviewer the opinions in a different order (reduces order effects).
81
+
82
+ > You do not know who wrote the opinions below. For each one, write what is good and what is missing, in no more than two sentences. Then vote on each finding: DOĞRU (evidenced and severity is right), ABARTILI (real but low importance), YANLIŞ (no match in the code or context). When voting, check the claim in the code or docs. Do not vote on a guess. If nobody saw something important, write it on the MISSING line. At the end, rank in exactly this format: first the "SIRALAMA:" line, then "1. Görüş X" lines from best to worst, no other text.
83
+
84
+ In a meeting council, the reviewers are the same members. In a decision council, they are the same advisors.
85
+ 3. **Counting.** The command `node .claude/hooks/council.mjs <minutes>` computes the following and writes it to the minutes:
86
+ - Average rank.
87
+ - Vote distribution for each finding.
88
+ - `Tartışmalı` (contested) findings: when the number of objections (YANLIŞ + ABARTILI) is equal to or greater than the number of DOĞRU votes.
89
+ - `Uzlaşma` (consensus) percentage.
90
+ 4. **Chair.** Run `board-chair` (opus) and give it the path of the minutes. The chair writes:
91
+ - The final decision.
92
+ - The dropped findings and the reasons.
93
+ - The minority view.
94
+
95
+ Rules the chair must follow:
96
+ - The chair cannot drop a `Tartışmalı` **KRİTİK** finding alone. That finding stays as "ask the user".
97
+ - RET is given only if at least one KRİTİK finding is not `Tartışmalı`.
98
+ 5. **User.** The main agent shows the chair's decision in the synthesis format of rules.md §4.
99
+ - In a decision council, the AskUserQuestion options come from the council:
100
+ - The option the chair recommends comes first and is labeled "(Recommended)".
101
+ - Add "Council: n/N first opinions · avg. rank x" to each option's description.
102
+ - The minority view is written in one sentence in the description of its own option.
103
+ 6. **Record.**
104
+ - Add one line to `docs/workflow/board.md` → "Toplantı günlüğü" (meeting log). Write the link to the minutes in the scope column.
105
+ - For a decision council, add the reference "Council: <minutes>" to `docs/decisions/log.md` and to the ADR.
106
+
107
+ ## Why
108
+
109
+ - **Anonymity:** A member does not blindly follow a role with known authority (for example security).
110
+ - **Cross vote:** Made-up or exaggerated findings are dropped before they reach the user.
111
+ - **Separate chair:** The one who wrote the opinion and the one who decides are never the same model.
112
+ - **Different models:** The same question is answered with different abilities.
113
+
114
+ One limit: All members are Claude models. They may share similar blind spots. The council does not replace the user's decision.
@@ -1,83 +1,83 @@
1
- # Kurul Kuralları
1
+ # Board Rules
2
2
 
3
- > Uzman kurulu, projeye özel ajanlardan oluşur (`.claude/agents/board-*.md` + `security-auditor`).
4
- > Üyeler ve toplantı günlüğü `docs/workflow/board.md`'de. Bu dosya kitindir ve toplantıların nasıl yapılacağını anlatır.
5
- > Rol şablonları bu klasörde (`board-*.md`); kurul kurulurken `.claude/agents/`'a kopyalanıp projeye özelleştirilir.
3
+ > The expert board is made of project-specific agents (`.claude/agents/board-*.md` + `security-auditor`).
4
+ > Members and the meeting log live in `docs/workflow/board.md`. This file belongs to the kit and says how to run meetings.
5
+ > Role templates are in this folder (`board-*.md`). When the board is set up, they are copied to `.claude/agents/` and customized for the project.
6
6
 
7
- ## 1. Yetki: danışman + kritikte durdurur
7
+ ## 1. Authority: advisor, and stops on critical findings
8
8
 
9
- - Kurul görüş, uyarı ve karar önerisi verir. **Kararı kullanıcı verir.**
10
- - Bir üye **RET** verirse (KRİTİK bulgu: güvenlik açığı, veri kaybı riski, yasal ihlal, kabul kriteri karşılanmadı) iş "bitti" sayılmaz ve commit edilmez. Kullanıcıya bulgu ve seçenekler sunulur: düzelt (önerilen) / riski kabul et ve gerekçeyi kaydet / görevi geri al.
11
- - Üyeler arasında görüş ayrılığı varsa ana ajan kendi başına seçmez; iki görüşü yan yana koyup kullanıcıya **karar olarak sorar**.
9
+ - The board gives opinions, warnings and decision proposals. **The user decides.**
10
+ - If a member gives **RET** (a KRİTİK finding: security hole, data-loss risk, legal violation, acceptance criterion not met), the work does not count as "done" and is not committed. Show the user the finding and the options: fix (recommended) / accept the risk and record the reason / roll the task back.
11
+ - If members disagree, the main agent does not pick alone. Put both views side by side and **ask the user as a decision**.
12
12
 
13
- ## 2. Toplantılar
13
+ ## 2. Meetings
14
14
 
15
- | Toplantı | Ne zaman | Kim katılır | Model |
15
+ | Meeting | When | Who attends | Model |
16
16
  |---|---|---|---|
17
- | **Plan** | `/plan-task` sonunda, kullanıcı onayından önce | `board-product` + `board-architect` + değişikliğe ilgili üyeler (en fazla 4) | inceleme rolü (`docs/workflow/models.md`) |
18
- | **Görev sonu** | `/build` sonunda, "bitti" demeden önce | Değişikliğe ilgili üyeler (en fazla 3) | inceleme rolü (`docs/workflow/models.md`) |
19
- | **Commit (hafif)** | Her `git commit` öncesi (hook zorunlu kılar) | Değişen dosyalara ilgili en fazla 2 üye; sadece değişen satırları (diff) inceler | her zaman `haiku`, effort `low` |
20
- | **Faz sonu** | Faz bitince (`/wrap-up` önerir) veya `/board convene phase-end` | Tüm kurul | inceleme rolü (`docs/workflow/models.md`) |
21
- | **Canlıya alma** | `/release ilk` | Tüm kurul | inceleme rolü (`docs/workflow/models.md`) |
17
+ | **Plan** | At the end of `/plan-task`, before user approval | `board-product` + `board-architect` + members relevant to the change (max 4) | review role (`docs/workflow/models.md`) |
18
+ | **Task end** | At the end of `/build`, before saying "done" | Members relevant to the change (max 3) | review role (`docs/workflow/models.md`) |
19
+ | **Commit (light)** | Before every `git commit` (a hook enforces it) | Max 2 members relevant to the changed files; reviews only the changed lines (diff) | always `haiku`, effort `low` |
20
+ | **Phase end** | When a phase ends (`/wrap-up` suggests it) or `/board convene phase-end` | The whole board | review role (`docs/workflow/models.md`) |
21
+ | **Go-live** | `/release ilk` | The whole board | review role (`docs/workflow/models.md`) |
22
22
 
23
- Sadece dokümantasyon değişikliği (`.md`, `docs/`) içeren commit'ler denetimden muaftır.
23
+ Commits that contain only documentation changes (`.md`, `docs/`) are exempt from review.
24
24
 
25
- **Konsey (üç aşama):** Hangi toplantıların konseyle yapılacağını proje profili belirler (`.claude/board/council.md` → "Ne zaman"). Tam profilde plan, faz sonu ve canlıya alma toplantıları ile RET çıkan görev sonu toplantıları `.claude/board/council.md` protokolüyle yapılır; Standart'ta sadece faz sonu ve canlıya alma; Hafif'te hiçbiri. Önce ilk görüşler alınır, sonra üyeler birbirinin bulgularını anonim olarak oylar ve sıralar, en son `board-chair` karar verir. Görev sonu ve commit toplantıları tek aşamalıdır.
25
+ **Council (three stages):** The project profile decides which meetings go to the council (`.claude/board/council.md` → "When"). In the Tam profile, plan, phase-end and go-live meetings, and task-end meetings that end in RET, follow the `.claude/board/council.md` protocol. In Standart, only phase-end and go-live. In Hafif, none. First opinions are collected first. Then members vote on and rank each other's findings anonymously. Last, `board-chair` decides. Task-end and commit meetings are single-stage.
26
26
 
27
- ## 3. Kim ilgili? (değişikliğe göre üye seçimi)
27
+ ## 3. Who is relevant? (pick members by change)
28
28
 
29
- | Değişiklik | Üye |
29
+ | Change | Member |
30
30
  |---|---|
31
- | Yeni özellik, kapsam, kullanıcı akışı | board-product |
32
- | Veri modeli, migration, yeni modül, yeni bağımlılık, klasör yapısı | board-architect |
33
- | Auth, yetki, ödeme, webhook, dosya yükleme, ortam değişkeni, sır | security-auditor |
34
- | Kişisel veri alanı, yeni dış servis, log içeriği, yasal metin | board-privacy |
35
- | Arayüz bileşeni, sayfa, ekran, metin | board-ux (+ web'de board-performance) |
36
- | API ucu, sözleşme, hata biçimi | board-api |
37
- | Test, kritik akış, hata düzeltmesi | board-qa |
38
- | CI, deploy, Docker, hosting, yapılandırma | board-devops |
39
- | Mobil izin, native modül, mağaza ayarı | board-mobile |
40
- | Prompt, model çağrısı, eval | board-ai |
41
-
42
- Görev sonunda `node .claude/hooks/flow.mjs` üyeleri değişen yollardan önerir (kurulda olanlar, en çok dosyası eşleşen önce; hassas yolda `security-auditor`). Yol tahmindir: değişikliğin anlamı farklıysa (yeni özellik → board-product gibi) tabloya göre düzelt.
43
-
44
- Kurulda olmayan bir üyeyi çağırma; ilgili alan kurulda yoksa durum bloğunda "kurulda X uzmanı yok" diye belirt.
45
-
46
- ## 4. Toplantı nasıl yapılır
47
-
48
- 1. **Limit kontrolü** (`docs/workflow/usage-limits.md`): Seviye sarıysa üye sayısını yarıya indir; kırmızıysa kullanıcıya sor (kurulu hafiflet seçeneği dahil). Görev sonu toplantısında üye sayısını ve paralel mi sırayla mı çalışılacağını `node .claude/hooks/flow.mjs` söyler (değişiklik büyüklüğü + limit; `code-reviewer` ve hassas yolda `security-auditor` her zaman katılır).
49
- 1b. **Deterministik kapı** (commit, görev sonu, faz sonu; plan toplantısında yok): `node .claude/hooks/gate.mjs --run`. AGENTS.md → Komutlar'daki lint, tip kontrolü ve test ile Semgrep çalışır; sonuç değişiklik imzasıyla saklanır. Kırmızıysa veya boşsa (hiçbir kontrol çalışmadı) commit kapısı açılmaz: önce düzelt ya da Komutlar'ı doldur. Kullanıcı ara commit için açıkça isterse `node .claude/hooks/commit-gate.mjs --skip "kullanıcı isteği"` (her zaman onaya sorulur). Kapı "komut onayı gerekli" derse komutları kullanıcıya göster; onaylarsa `node .claude/hooks/gate.mjs --approve` (yeni veya değişen komut onaysız çalışmaz).
50
- 1c. **Commit toplantısında önce** `node .claude/hooks/commit-gate.mjs --status`: "Onay geçerli" ise toplantı yok (görev sonu toplantısı aynı değişiklikleri denetledi). "Son onaydan sonra değişen: …" ise üyelere yalnız o dosyaların farkını ver.
51
- 2. **Üyeleri paralel çalıştır** (Agent aracı, her üye ayrı alt ajan). Her üyeye şunları ver: toplantı türü, kapsam (plan metni / diff aralığı / faz), görev kodu, kabul kriterleri ve kapı çıktısı (varsa). Çağrıda inceleme rolünün `model` ve `effort`'unu ver (`node .claude/hooks/models.mjs --show`); commit toplantısında `model: "haiku"`, `effort: "low"` ver. Rapor sözleşmesini istemde yaz: en fazla ~15 satır ve 5 bulgu (fazlası tek satır: "diğer: N küçük bulgu"), bulgu başına tek satır, önem sırasıyla; övgü ve özet yok (raporlar ana oturumun bağlamına girer). İstem sırası: üyeler arasında aynı olan kısım (toplantı türü, kapsam, kabul kriterleri, kapı çıktısı) önce, üyeye özel kısım sonda; ortak baş önbellekten okunur. Düzeltmeden sonra yeniden bakılacaksa yeni üye başlatma: aynı üyeyi SendMessage ile sürdür ve yalnız düzeltilen farkı ver (soğuk başlangıç bir kez ödenir).
52
- 2b. **Konsey toplantısıysa** (§2) `.claude/board/council.md` aşama 1-4'ü uygula. Sentezi başkanın kararından kur; görüş ayrılığı satırına azınlık görüşünü yaz.
53
- 3. **Sentezle** (ana ajan; konseyde başkanın kararına göre):
31
+ | New feature, scope, user flow | board-product |
32
+ | Data model, migration, new module, new dependency, folder structure | board-architect |
33
+ | Auth, authorization, payment, webhook, file upload, environment variable, secret | security-auditor |
34
+ | Personal data field, new external service, log content, legal text | board-privacy |
35
+ | UI component, page, screen, copy | board-ux (+ board-performance on web) |
36
+ | API endpoint, contract, error format | board-api |
37
+ | Test, critical flow, bug fix | board-qa |
38
+ | CI, deploy, Docker, hosting, configuration | board-devops |
39
+ | Mobile permission, native module, store setting | board-mobile |
40
+ | Prompt, model call, eval | board-ai |
41
+
42
+ At task end, `node .claude/hooks/flow.mjs` suggests members from the changed paths (only those on the board, the one with the most matching files first; `security-auditor` on a sensitive path). The path is a guess. If the meaning of the change differs (a new feature → board-product, for example), correct it using the table.
43
+
44
+ Do not call a member who is not on the board. If the relevant area has no member, write "no X expert on the board" in the status block.
45
+
46
+ ## 4. How to run a meeting
47
+
48
+ 1. **Limit check** (`docs/workflow/usage-limits.md`): If the level is yellow, halve the member count. If red, ask the user (including the option to lighten the board). For a task-end meeting, `node .claude/hooks/flow.mjs` gives the member count and whether to run in parallel or in sequence (change size + limit; `code-reviewer` always attends, and `security-auditor` on a sensitive path).
49
+ 1b. **Deterministic gate** (commit, task end, phase end; not in the plan meeting): `node .claude/hooks/gate.mjs --run`. It runs the lint, type check and test from AGENTS.md → `Komutlar`, plus Semgrep. The result is stored with the change signature. If it is red or empty (no check ran), the commit gate does not open: fix first or fill in `Komutlar`. If the user explicitly asks for an intermediate commit, use `node .claude/hooks/commit-gate.mjs --skip "kullanıcı isteği"` (it always asks for approval). If the gate says "command approval required", show the commands to the user. If the user approves, run `node .claude/hooks/gate.mjs --approve` (a new or changed command does not run without approval).
50
+ 1c. **In a commit meeting, first** run `node .claude/hooks/commit-gate.mjs --status`. If it says "Approval valid", there is no meeting (the task-end meeting already reviewed the same changes). If it says "Changed since the last approval: …", give the members only the diff of those files.
51
+ 2. **Run the members in parallel** (Agent tool, each member as a separate subagent). Give each member: meeting type, scope (plan text / diff range / phase), task id, acceptance criteria and gate output (if any). In the call, pass the `model` and `effort` of the review role (`node .claude/hooks/models.mjs --show`). In a commit meeting, pass `model: "haiku"`, `effort: "low"`. Write the report contract in the prompt: max ~15 lines and 5 findings (any more as one line: "other: N minor findings"), one line per finding, in order of severity, no praise or summary (reports enter the main session's context). Prompt order: the part that is the same for all members (meeting type, scope, acceptance criteria, gate output) first, the member-specific part last; the shared head is read from cache. If a re-check is needed after fixes, do not start a new member. Continue the same member with SendMessage and give only the fixed diff (the cold start is paid once).
52
+ 2b. **If it is a council meeting** (§2), apply stages 1-4 of `.claude/board/council.md`. Build the synthesis from the chair's decision. Write the minority view on the disagreement line.
53
+ 3. **Synthesize** (main agent; in a council, from the chair's decision):
54
54
 
55
55
  ```
56
- ## Kurul: [tür] · [kapsam]
57
- Katılan: [üyeler] · Sonuç: ONAY | KOŞULLU ONAY | RET
58
- Kritik: [varsa]
59
- Önemli: [birleştirilmiş, tekrarsız, önem sırasıyla]
60
- Görüş ayrılığı: [varsa iki görüş]
61
- Kullanıcıya sorulacaklar: [üyelerin işaretlediği kararlar]
56
+ ## Board: [type] · [scope]
57
+ Attended: [members] · Result: ONAY | KOŞULLU ONAY | RET
58
+ Critical: [if any]
59
+ Important: [merged, no duplicates, in order of severity]
60
+ Disagreement: [the two views, if any]
61
+ To ask the user: [decisions the members flagged]
62
62
  ```
63
63
 
64
- 4. **Kullanıcıyı bilgilendir ve sor:** Sorulacak kararları AskUserQuestion ile sor. Hangi bulguların düzeltileceğini **çoklu seçimle** sor; KRİTİK olanlar önerilen olarak işaretli olsun.
65
- 5. **Kaydet:** `docs/workflow/board.md` → toplantı günlüğüne bir satır ekle. Kararları `docs/decisions/log.md` günlüğüne ekle. Açık kalan bulguları `docs/workflow/progress.md` → "Açık sorunlar"a yaz.
66
- 6. **Commit toplantısı sonucu ONAY veya KOŞULLU ONAY ise** commit kapısını aç: `node .claude/hooks/commit-gate.mjs --approve "<katılan üyeler>"`. RET ise açma; önce kullanıcıya sor.
64
+ 4. **Inform the user and ask:** Ask the decisions with AskUserQuestion. Ask which findings to fix as a **multi-select**, with KRİTİK ones marked as recommended.
65
+ 5. **Record:** Add one line to `docs/workflow/board.md` → "Toplantı günlüğü" (meeting log). Add the decisions to the decision log `docs/decisions/log.md`. Write open findings to `docs/workflow/progress.md` → "Açık sorunlar" (open issues).
66
+ 6. **If the commit meeting result is ONAY or KOŞULLU ONAY,** open the commit gate: `node .claude/hooks/commit-gate.mjs --approve "<attending members>"`. If RET, do not open it; ask the user first.
67
67
 
68
- Kullanıcı commit denetimini o an için atlamak isterse açıkça söylemesi gerekir. O durumda `node .claude/hooks/commit-gate.mjs --skip "kullanıcı isteği"` çalıştır (onaya sorulur) ve günlüğe yaz. Kalıcı olarak kapatmak için: `docs/workflow/board.md` → `**Commit denetimi:** kapalı`.
68
+ If the user wants to skip commit review for now, they must say so explicitly. Then run `node .claude/hooks/commit-gate.mjs --skip "kullanıcı isteği"` (it asks for approval) and write it to the log. To turn it off permanently: `docs/workflow/board.md` → `**Commit denetimi:** kapalı`.
69
69
 
70
- ## 5. Kurul nasıl kurulur (`/start` Kurul adımı veya `/board setup`)
70
+ ## 5. How to set up the board (`/start` board step or `/board setup`)
71
71
 
72
- 1. Proje tipine ve PRD'ye göre öneri (aşağıdaki tablo). AI eki varsa `board-ai`, kişisel veri varsa `board-privacy` mutlaka önerilir.
73
- 2. Kullanıcıya **çoklu seçimle** sor (önerilenler işaretli). "Other" ile yeni bir uzman isteyebilir. Örneğin "Erişilebilirlik uzmanı", "Oyun tasarımcısı" veya "Fintech uyum uzmanı". Bu durumda mevcut şablon yapısıyla yeni bir `board-<ad>.md` yaz.
74
- 3. Model sorulmaz: üyeler inceleme rolünün modeli ve effort'uyla çalışır (`docs/workflow/models.md`).
75
- 4. Seçilen her üye için `.claude/board/board-<role>.md` dosyasını `.claude/agents/board-<role>.md`'ye kopyala ve **"Bu proje" bölümünü doldur**: ürün özeti, seçilen stack, kritik akışlar, bu role özel riskler. `security-auditor` zaten `.claude/agents/` altında.
76
- 5. `docs/workflow/board.md` → durum, üye tablosu (Model sütununa "inceleme rolü") ve commit denetimi satırını doldur.
77
- 6. Kullanıcıya kurulu tanıt: Her üye ne yapar, ne zaman devreye girer, tahmini maliyeti nedir (tek satır).
78
- 7. Yeni ajanlar oturum yeniden başlatıldığında yüklenir. Kullanıcıya bunu söyle; bu oturumda gerekirse üyeyi genel amaçlı alt ajana rol dosyasının içeriğini vererek çalıştır.
72
+ 1. Recommend by project type and PRD (table below). If there is an AI add-on, `board-ai` is always recommended. If there is personal data, `board-privacy` is always recommended.
73
+ 2. Ask the user as a **multi-select** (recommended ones marked). With "Other" they can ask for a new expert, for example "Accessibility expert", "Game designer" or "Fintech compliance expert". In that case, write a new `board-<name>.md` using the existing template structure.
74
+ 3. Do not ask for a model: members work with the model and effort of the review role (`docs/workflow/models.md`).
75
+ 4. For each selected member, copy `.claude/board/board-<role>.md` to `.claude/agents/board-<role>.md` and **fill in the "This project" section**: product summary, chosen stack, critical flows, risks specific to this role. `security-auditor` is already under `.claude/agents/`.
76
+ 5. In `docs/workflow/board.md`, fill in the status, the member table (write "review role" in the Model column) and the commit review line.
77
+ 6. Introduce the board to the user: what each member does, when it steps in, the estimated cost (one line).
78
+ 7. New agents load when the session restarts. Tell the user this. In this session, if needed, run the member as a general-purpose subagent by giving it the content of the role file.
79
79
 
80
- | Tip | Önerilen kurul |
80
+ | Type | Recommended board |
81
81
  |---|---|
82
82
  | web-saas | urun, mimar, security-auditor, ux, performans, kvkk, qa (+ devops, + ai) |
83
83
  | mobil | urun, mimar, security-auditor, ux, mobil, kvkk, qa (+ devops, + ai) |
@@ -1,12 +1,12 @@
1
- # Bu kitle kurulan projeler için güvenlik rehberi
1
+ # Security guidance for projects set up with this kit
2
2
 
3
- security-guidance eklentisinin model incelemeleri bu dosyayı ek kontrol listesi olarak okur. Projeye özel kurallar `docs/security/checklist.md`'de; burada sadece her projede geçerli olanlar var.
3
+ The model reviews of the security-guidance plugin read this file as an extra checklist. Project-specific rules are in `docs/security/checklist.md`; this file holds only what applies to every project.
4
4
 
5
- - Supabase gizli anahtarı (`sb_secret_…`, eski `service_role`) ve her türlü gizli anahtar sadece sunucuda kullanılır; istemci koduna, `NEXT_PUBLIC_` / `EXPO_PUBLIC_` değişkenine girmez.
6
- - Supabase'de her tabloda RLS açıktır; yeni tablo RLS politikası olmadan eklenmez. Politika `auth.uid()` ile satır sahibini kontrol eder.
7
- - Her API ucu ve server action önce oturumu, sonra kaynağın sahibini kontrol eder (IDOR). İstemciden gelen `user_id` / `org_id` değerine güvenilmez.
8
- - Webhook'lar (ödeme, e-posta, üçüncü taraf) imza doğrulaması olmadan işlenmez; aynı olay iki kez gelirse iki kez işlenmez.
9
- - Kişisel veri (ad, e-posta, telefon, TC kimlik no, konum, sağlık) INFO veya üstü seviyede loglanmaz, hata izlemeye (Sentry) gönderilmez. KVKK.
10
- - Dosya yüklemede tür ve boyut sunucuda doğrulanır; yüklenen dosya herkese açık kovaya varsayılan olarak konmaz.
11
- - LLM çağrılarında kullanıcı girdisi ve dış içerik (web sayfası, belge) talimat olarak değil veri olarak ayrılır; modelin çıktısı doğrulanmadan SQL, kabuk komutu veya HTML olarak çalıştırılmaz.
12
- - Para, kredi, kota değiştiren işlemler sunucuda ve atomik yapılır; istemcinin gönderdiği fiyata güvenilmez.
5
+ - The Supabase secret key (`sb_secret_…`, formerly `service_role`) and every other secret key are used only on the server; they never go into client code or a `NEXT_PUBLIC_` / `EXPO_PUBLIC_` variable.
6
+ - In Supabase, RLS is on for every table; a new table is not added without an RLS policy. The policy checks the row owner with `auth.uid()`.
7
+ - Every API endpoint and server action checks the session first, then the owner of the resource (IDOR). A `user_id` / `org_id` value that comes from the client is not trusted.
8
+ - Webhooks (payment, email, third party) are not processed without signature verification; if the same event arrives twice, it is not processed twice.
9
+ - Personal data (name, email, phone, national ID number, location, health) is not logged at INFO level or above and is not sent to error tracking (Sentry). KVKK.
10
+ - On file upload, type and size are checked on the server; an uploaded file is not put in a public bucket by default.
11
+ - In LLM calls, user input and external content (web page, document) are kept apart as data, not as instructions; model output is not run as SQL, a shell command or HTML without validation.
12
+ - Operations that change money, credit or quota run on the server and are atomic; the price sent by the client is not trusted.