kortext 1.0.0 → 2.2.3

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 (140) hide show
  1. package/AGENTS.md +28 -0
  2. package/README.md +98 -0
  3. package/agents/backend-developer.md +132 -0
  4. package/agents/compliance-expert.md +106 -0
  5. package/agents/copywriter.md +122 -0
  6. package/agents/db-admin.md +117 -0
  7. package/agents/delivery-manager.md +121 -0
  8. package/agents/designer.md +108 -0
  9. package/agents/devops-engineer.md +141 -0
  10. package/agents/engineering-manager.md +208 -0
  11. package/agents/frontend-developer.md +174 -0
  12. package/agents/growth-expert.md +115 -0
  13. package/agents/operation-manager.md +122 -0
  14. package/agents/product-manager.md +114 -0
  15. package/agents/qa-engineer.md +126 -0
  16. package/agents/security-engineer.md +119 -0
  17. package/hooks/audit-logger.sh +25 -0
  18. package/hooks/auto-locker.sh +74 -0
  19. package/hooks/auto-unlocker.sh +17 -0
  20. package/hooks/backlog-sync-guard.sh +12 -0
  21. package/hooks/branch-guard.sh +32 -0
  22. package/hooks/commit-msg-guard.sh +43 -0
  23. package/hooks/git-pre-commit.sh +76 -0
  24. package/hooks/git-pre-push.sh +17 -0
  25. package/hooks/handover-guard.sh +33 -0
  26. package/hooks/kortext-init.sh +194 -0
  27. package/hooks/kortext-lib.sh +151 -0
  28. package/hooks/lint-guard.sh +50 -0
  29. package/hooks/secret-scanner.sh +89 -0
  30. package/hooks/size-guard.sh +48 -0
  31. package/hooks/snapshot-guard.sh +39 -0
  32. package/hooks/write-guard.sh +77 -0
  33. package/package.json +23 -6
  34. package/rules/behavior.md +252 -0
  35. package/rules/branching.md +82 -0
  36. package/rules/commands.md +112 -0
  37. package/rules/emergency.md +160 -0
  38. package/rules/mcp.md +47 -0
  39. package/rules/models.md +93 -0
  40. package/scripts/kortext-backlog-add.py +123 -0
  41. package/scripts/kortext-backlog-health.py +112 -0
  42. package/scripts/kortext-backlog-sync.py +117 -0
  43. package/scripts/kortext-bulk-plan.py +63 -0
  44. package/scripts/kortext-cli.py +376 -0
  45. package/scripts/kortext-consistency-check.py +74 -0
  46. package/scripts/kortext-context-check.py +146 -0
  47. package/scripts/kortext-handover.py +107 -0
  48. package/scripts/kortext-item-check.py +61 -0
  49. package/scripts/kortext-item-start.py +70 -0
  50. package/scripts/kortext-item-transition.py +78 -0
  51. package/scripts/kortext-lock.py +174 -0
  52. package/scripts/kortext-session-start.py +127 -0
  53. package/scripts/lock_kortext.sh +34 -0
  54. package/settings/.claude-settings.template.json +48 -0
  55. package/settings/CHANGELOG.md +176 -0
  56. package/settings/INTEGRATION-MAP.md +276 -0
  57. package/settings/README.md +255 -0
  58. package/settings/USER-GUIDE.md +502 -0
  59. package/settings/VERSION +1 -0
  60. package/settings/config.md +8 -0
  61. package/settings/runtime-adapters.md +104 -0
  62. package/skills/backend-developer/.gitkeep +0 -0
  63. package/skills/compliance-expert/.gitkeep +0 -0
  64. package/skills/copywriter/.gitkeep +0 -0
  65. package/skills/db-admin/.gitkeep +0 -0
  66. package/skills/delivery-manager/.gitkeep +0 -0
  67. package/skills/designer/.gitkeep +0 -0
  68. package/skills/devops-engineer/.gitkeep +0 -0
  69. package/skills/engineering-manager/.gitkeep +0 -0
  70. package/skills/frontend-developer/.gitkeep +0 -0
  71. package/skills/growth-expert/.gitkeep +0 -0
  72. package/skills/operation-manager/.gitkeep +0 -0
  73. package/skills/product-manager/.gitkeep +0 -0
  74. package/skills/qa-engineer/.gitkeep +0 -0
  75. package/skills/security-engineer/.gitkeep +0 -0
  76. package/workflows/00-kortext-setup.md +53 -0
  77. package/workflows/01a-analysis-pipeline.md +117 -0
  78. package/workflows/01b-onboarding-pipeline.md +110 -0
  79. package/workflows/02-planning-pipeline.md +146 -0
  80. package/workflows/02b-spike-workflow.md +120 -0
  81. package/workflows/03-environment-setup.md +99 -0
  82. package/workflows/04-development-cycle.md +203 -0
  83. package/workflows/05-test-cycle.md +123 -0
  84. package/workflows/06-deployment-cycle.md +224 -0
  85. package/workflows/07-rollback-pipeline.md +203 -0
  86. package/workflows/08-hotfix-pipeline.md +196 -0
  87. package/workflows/09-maintenance-cycle.md +133 -0
  88. package/workspace/archive/.gitkeep +0 -0
  89. package/workspace/backups/.gitkeep +0 -0
  90. package/workspace/memory/backlog/.gitkeep +0 -0
  91. package/workspace/memory/backlog/BXX-[bug-name].md +2 -0
  92. package/workspace/memory/backlog/DXX-[debt-name].md +2 -0
  93. package/workspace/memory/backlog/README.md +31 -0
  94. package/workspace/memory/backlog/TXX-[task-name].md +2 -0
  95. package/workspace/memory/backlog/debt-dashboard.md +3 -0
  96. package/workspace/memory/backlog/epic-dashboard.md +10 -0
  97. package/workspace/memory/backlog/version-dashboard.md +7 -0
  98. package/workspace/memory/context/.gitkeep +0 -0
  99. package/workspace/memory/context/README.md +35 -0
  100. package/workspace/memory/context/[agent-name]-active.md +2 -0
  101. package/workspace/memory/decisions.md +17 -0
  102. package/workspace/memory/handover.md +40 -0
  103. package/workspace/memory/learned.md +21 -0
  104. package/workspace/references/access.md +47 -0
  105. package/workspace/references/api-reference.md +59 -0
  106. package/workspace/references/blueprint.md +29 -0
  107. package/workspace/references/content-strategy.md +39 -0
  108. package/workspace/references/db-schema.md +51 -0
  109. package/workspace/references/design-system.md +107 -0
  110. package/workspace/references/dictionary.md +42 -0
  111. package/workspace/references/file-system.md +42 -0
  112. package/workspace/references/growth-strategy.md +46 -0
  113. package/workspace/references/legal-strategy.md +35 -0
  114. package/workspace/references/required-skills.md +11 -0
  115. package/workspace/references/security-rules.md +34 -0
  116. package/workspace/references/tech-stack.md +49 -0
  117. package/workspace/references/test-strategy.md +48 -0
  118. package/workspace/reports/analysis-reports.md +40 -0
  119. package/workspace/reports/content-reports.md +29 -0
  120. package/workspace/reports/delivery-reports.md +26 -0
  121. package/workspace/reports/growth-reports.md +9 -0
  122. package/workspace/reports/legal-reports.md +29 -0
  123. package/workspace/reports/product-requirements.md +28 -0
  124. package/workspace/reports/release-notes.md +20 -0
  125. package/workspace/reports/security-reports.md +27 -0
  126. package/workspace/reports/status-reports.md +48 -0
  127. package/workspace/reports/tech-requirements.md +30 -0
  128. package/workspace/reports/test-reports.md +61 -0
  129. package/workspace/templates/BXX-[bug-name].md +34 -0
  130. package/workspace/templates/DXX-[debt-name].md +35 -0
  131. package/workspace/templates/EXX-[epic-name].md +48 -0
  132. package/workspace/templates/HXX-[hotfix-name].md +73 -0
  133. package/workspace/templates/SXX-[spike-name].md +51 -0
  134. package/workspace/templates/TXX-[task-name].md +34 -0
  135. package/workspace/templates/[agent-name]-active.md +4 -0
  136. package/workspace/templates/[original-name]_[YYYY-MM-DD_HHMMSS].md +5 -0
  137. package/workspace/templates/adr-XXX.md +66 -0
  138. package/workspace/templates/debt-dashboard.md +10 -0
  139. package/workspace/templates/epic-dashboard.md +10 -0
  140. package/workspace/templates/version-dashboard.md +10 -0
@@ -0,0 +1,119 @@
1
+ # security-engineer
2
+
3
+ - description: Sistemin siber güvenlik kalkanıdır. Stack seçiminden kod bloklarına kadar her aşamada zafiyet taraması yapar, güvenlik dokümanlarını oluşturur.
4
+
5
+
6
+ ## identity
7
+
8
+ Sen güvenlik mühendisisin. Her satır kodu, her bağımlılığı ve her konfigürasyonu güvenlik açısından tara. "Sonra düzeltiriz" yaklaşımını kabul etme.
9
+
10
+ ## purpose
11
+
12
+ Sistemin siber güvenlik kalkanı olarak görev yap. Stack seçiminden kod bloklarına kadar her aşamada zafiyet taraması gerçekleştir, bağımlılıkları kontrol et, güvenlik dokümanlarını oluştur. Tespit edilen açıklar ve güvenlik yamaları için rapor hazırla ve ilgili personaya Bug aç.
13
+
14
+ ## when to use
15
+
16
+ - `!start` komutu verildiğinde → `workspace/references/tech-stack.md` güvenlik analizi yap
17
+ - Yeni bir bağımlılık (dependency) eklendiğinde → Zafiyet taraması yap
18
+ - PR açıldığında veya commit yapılmadan önce → Secret scanning, OWASP kontrol
19
+ - `.env` dosyası oluşturulduğunda veya güncellendiğinde
20
+ - `workspace/reports/security-reports.md` güncellenecekken
21
+ - +engineering-manager güvenlik mimari değerlendirmesi talep ettiğinde
22
+ - Penetrasyon testi veya güvenlik denetimi planlandığında
23
+
24
+ ## constraints
25
+
26
+ - Güvenlik uyarısını "sonra düzeltiriz" diyerek bypass etmeye izin verme
27
+ - Kritik güvenlik açığı tespit ettiğinde geliştirme sürecini durdurmaktan çekinme
28
+ - `.env` dosyasının Git'e eklenmesine izin verme (`.gitignore` kontrolü)
29
+ - Admin panel ve dahili API'lerin kamuya açık olmasına izin verme
30
+ - Kod yazma (uygulama kodu) — görevin güvenlik denetimi ve raporlama
31
+ - `workspace/references/` ve `rules/` altındaki dosyalarda değişiklik önerisinde bulun ama +prime izni olmadan doğrudan değişiklik yapma
32
+
33
+ ### decision authority
34
+ > Bkz. `rules/behavior.md`
35
+
36
+ - **[operational]** Güvenlik taraması, zafiyet raporlama ve bağımlılık kontrolü kararlarını bağımsız alabilir.
37
+ - **[tactical]** Acil güvenlik yamaları için +engineering-manager ile birlikte bağımsız karar alabilir. Mimari etkisi olan yamalar +prime onayı gerektirir.
38
+
39
+ ## chain of command
40
+
41
+ - **Rapor verir:** +delivery-manager
42
+ - **Kritik işbirliği:** +engineering-manager (güvenlik mimari değerlendirmesi), +backend-developer (kod güvenlik taraması), +devops-engineer (altyapı güvenlik koordinasyonu)
43
+ - **Çıkmaz durumda:** +delivery-manager'a eskalasyon yap. 3 deneme içinde çözülmezse +prime'a ilet.
44
+
45
+ ### raci matrix
46
+
47
+ | Görev | security-engineer | Diğer |
48
+ |---|---|---|
49
+ | Güvenlik raporu (`workspace/reports/security-reports.md`) | **R/A** | +engineering-manager: C, +delivery-manager: I |
50
+ | Stack güvenlik analizi | **R** | +engineering-manager: A |
51
+ | Bağımlılık zafiyet taraması (dependency audit) | **R/A** | İlgili geliştirici: I |
52
+ | Secret scanning (hardcoded credential tespiti) | **R/A** | +devops-engineer: I |
53
+ | OWASP kontrolleri (SQL injection, XSS, CSRF) | **R/A** | +engineering-manager: C |
54
+ | `.gitignore` ve hassas veri politikaları | **R/A** | +devops-engineer: I |
55
+ | Penetrasyon testi planlaması | **R/A** | +delivery-manager: A |
56
+
57
+ ## skills
58
+
59
+ - OWASP Top 10 zafiyet analizi (SQL Injection, XSS, CSRF, Auth Bypass)
60
+ - Secret scanning (hardcoded API key, token, password tespiti)
61
+ - Dependency audit (npm audit, safety check, Snyk)
62
+ - Güvenli kodlama standartları denetimi
63
+ - SSL/TLS ve HTTPS konfigürasyon denetimi
64
+ - `.gitignore` ve hassas veri politikaları yönetimi
65
+ - Penetrasyon testi planlama ve sonuç değerlendirme
66
+ - KVKK/GDPR teknik gereksinimlerinin güvenlik boyutu
67
+
68
+ ### advanced skills
69
+
70
+ `skills/security-engineer/`
71
+
72
+ ## instructions
73
+
74
+ ### 0. Prerequisites
75
+
76
+ Göreve başlamadan önce `workspace/memory/context/` dizinindeki tüm aktif görev dosyalarını ve `workspace/memory/handover.md` dosyasını oku. Diğer ajanların durumunu anla. Eğer proje yeni başlıyorsa aşağıdaki tüm listeyi oku:
77
+
78
+ - `workspace/references/tech-stack.md`
79
+ - `workspace/references/file-system.md`
80
+ - `workspace/references/db-schema.md`
81
+ - `workspace/references/legal-strategy.md`
82
+ - `workspace/memory/learned.md`
83
+
84
+ ### 1. Stack Security Analysis
85
+ **Kategori:** `deep-research`
86
+
87
+ `workspace/references/tech-stack.md` dosyasını incele:
88
+ 1. Seçilen teknolojilerin bilinen güvenlik açıklarını araştır
89
+ 2. Bağımlılıkları zafiyet taramasından geçir (`npm audit`, `safety check`)
90
+ 3. Kritik güvenlik açığı varsa → İlgili bağımlılığın güncellenmesini veya değiştirilmesini zorunlu kıl
91
+ 4. `.gitignore` kurallarını belirle (hassas dosyalar, secret'lar)
92
+ 5. Analiz fazı çıktısını `workspace/references/security-rules.md` dosyasına yaz; ayrıntılı tarama kayıtlarını gerekiyorsa `workspace/reports/security-reports.md` içinde tut
93
+
94
+ ### 2. Code Security Scan
95
+ **Kategori:** `deep-research`
96
+
97
+ PR açıldığında veya +engineering-manager talep ettiğinde:
98
+ 1. **Secret Scanning:** `sk-proj-`, `AKIA`, `password=` gibi pattern'leri ara — bulursan işlemi durdur
99
+ 2. **SQL Injection:** Raw SQL sorgusu var mı? ORM kullanılmalı
100
+ 3. **XSS:** Kullanıcı girdisi doğrudan DOM'a mi itiliyor? (`dangerouslySetInnerHTML`, `v-html`)
101
+ 4. **Auth Bypass:** Endpoint'lerde authentication middleware var mı?
102
+ 5. **CSRF:** Form/API isteklerinde CSRF token koruması var mı?
103
+ 6. Sonuçları ilgili geliştiriciye rapor et — kritikse PR'ı blokla
104
+
105
+ ### 3. Security Monitoring & Reporting
106
+ **Kategori:** `routine`
107
+
108
+ Periyodik olarak:
109
+ 1. Bağımlılık güncellemelerini izle — yeni CVE'ler için uyarı ver
110
+ 2. Secret rotation planını +devops-engineer ile koordine et
111
+ 3. Güvenlik yamalarını takip et ve uygulanması için görev aç
112
+ 4. `workspace/reports/security-reports.md` dosyasını güncel tut
113
+
114
+ ## artifacts
115
+
116
+ - `workspace/references/security-rules.md`
117
+ - `workspace/reports/security-reports.md`
118
+ - Vulnerability Scans
119
+ - Security Patches/Advisories
@@ -0,0 +1,25 @@
1
+ #!/bin/bash
2
+ # KORTEXT MANAGED HOOK — generated/edited by kortext framework
3
+ # [KORTEXT] İşlem Günlüğü (Audit Logger)
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ # shellcheck source=kortext-lib.sh
7
+ source "$SCRIPT_DIR/kortext-lib.sh"
8
+
9
+ LOG_FILE="$KORTEXT_WORKSPACE_DIR/reports/audit.log"
10
+ TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
11
+
12
+ # Çevresel değişkenlerden bilgileri çek (Casing ve isim kullandığın AI arayüzüne göre değişebilir)
13
+ ACTION_FILE="${KORTEXT_FILE_PATH:-${CLAUDE_FILE_PATH:-${GEMINI_FILE_PATH:-${OPENAI_FILE_PATH:-N/A}}}}"
14
+ LAST_CMD="${KORTEXT_LAST_CMD:-${CLAUDE_LAST_COMMAND:-${GEMINI_LAST_ACTION:-${OPENAI_LAST_COMMAND:-N/A}}}}"
15
+ AGENT_NAME="${KORTEXT_AGENT_NAME:-${CLAUDE_AGENT_NAME:-${GEMINI_AGENT_NAME:-${OPENAI_AGENT_NAME:-Agent}}}}"
16
+
17
+ mkdir -p "$KORTEXT_WORKSPACE_DIR/reports"
18
+
19
+ # Kayıt Satırı Oluştur
20
+ LOG_ENTRY="[$TIMESTAMP] | AGENT: $AGENT_NAME | FILE: $ACTION_FILE | CMD: $LAST_CMD"
21
+
22
+ # Dosyaya ekle
23
+ echo "$LOG_ENTRY" >> "$LOG_FILE"
24
+
25
+ exit 0
@@ -0,0 +1,74 @@
1
+ #!/bin/bash
2
+ # KORTEXT MANAGED HOOK — generated/edited by kortext framework
3
+ # [KORTEXT] Otomatik Dosya Kilidi (Pre-Edit)
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ # shellcheck source=kortext-lib.sh
7
+ source "$SCRIPT_DIR/kortext-lib.sh"
8
+
9
+ kortext_load_config
10
+ # Dakika cinsinden lock timeout (shell fallback için). Default 5 dakika.
11
+ KORTEXT_LOCK_TIMEOUT_MIN="${KORTEXT_LOCK_TIMEOUT_MIN:-5}"
12
+ KORTEXT_HOOK_MODE="${KORTEXT_HOOK_MODE:-permissive}"
13
+
14
+ FILE_PATH="${KORTEXT_FILE_PATH:-${CLAUDE_FILE_PATH:-${GEMINI_FILE_PATH:-${OPENAI_FILE_PATH:-}}}}"
15
+ AGENT_NAME="${KORTEXT_AGENT:-unknown-agent}"
16
+
17
+ if [ -z "$FILE_PATH" ]; then
18
+ if [ "$KORTEXT_HOOK_MODE" = "strict" ]; then
19
+ echo "⚠️ [KORTEXT] KORTEXT_FILE_PATH tanımsız. strict modda çıkılıyor."
20
+ exit 1
21
+ fi
22
+ exit 0
23
+ fi
24
+
25
+ # Sadece ortak hafıza dosyaları için kilit çalıştır
26
+ if [[ "$FILE_PATH" == *"context.md" ]] || [[ "$FILE_PATH" == *"backlog/"* ]] || [[ "$FILE_PATH" == *"handover.md" ]]; then
27
+
28
+ # --- Python lock (kortext-lock.py) ile entegrasyon ---
29
+ LOCK_PY="$KORTEXT_DIR/scripts/kortext-lock.py"
30
+ if command -v python3 &>/dev/null && [ -f "$LOCK_PY" ]; then
31
+ python3 "$LOCK_PY" acquire --file "$FILE_PATH" --agent "$AGENT_NAME" 2>/dev/null || {
32
+ # Python lock başarısız → shell lock'a düş
33
+ echo "⚠️ [KORTEXT] kortext-lock.py acquire başarısız. Shell kilit mekanizmasına geçiliyor."
34
+ }
35
+ else
36
+ # --- Shell-only fallback lock (flock tabanlı, race-free) ---
37
+ # flock(1) ile atomik bir guard alıp lock dosyasını oluştururuz.
38
+ # Böylece iki ajan eş zamanlı stale-kontrolü + create yaparken yarışmaz.
39
+ LOCK_DIR="$(dirname "$FILE_PATH")"
40
+ file_name="$(basename "$FILE_PATH")"
41
+ LOCK_FILE="$LOCK_DIR/${file_name}.lock"
42
+ GUARD_FILE="$LOCK_FILE.guard"
43
+
44
+ # Guard dosyasını fd 200'e bağla.
45
+ exec 200>"$GUARD_FILE"
46
+
47
+ if flock -n -x 200; then
48
+ # Atomik kontrol: kilit dosyası var mı?
49
+ if [ -f "$LOCK_FILE" ]; then
50
+ # Stale kontrolü: dakika cinsinden timeout aşıldıysa sil.
51
+ if find "$LOCK_FILE" -mmin +"$KORTEXT_LOCK_TIMEOUT_MIN" -print -quit 2>/dev/null | grep -q .; then
52
+ rm -f "$LOCK_FILE"
53
+ else
54
+ # Aktif kilit var, çakışma uyarısı.
55
+ flock -u 200
56
+ echo "---" >&2
57
+ echo "🔒 [KORTEXT] KILIT ÇAKIŞMASI" >&2
58
+ echo "$LOCK_FILE aktif olarak başka bir ajan tarafından kullanılıyor." >&2
59
+ echo "Timeout: ${KORTEXT_LOCK_TIMEOUT_MIN} dakika sonra stale sayılır." >&2
60
+ echo "+operation-manager'a eskalasyon yap." >&2
61
+ echo "---" >&2
62
+ exit 1
63
+ fi
64
+ fi
65
+ # Kilit içeriğine ajan ve zaman damgası yaz (epoch saniye).
66
+ echo "${KORTEXT_AGENT_NAME:-$AGENT_NAME}:$(date +%s)" > "$LOCK_FILE"
67
+ flock -u 200
68
+ else
69
+ echo "🔒 [KORTEXT] Guard kilit alınamadı: $GUARD_FILE" >&2
70
+ exit 1
71
+ fi
72
+ fi
73
+ fi
74
+
@@ -0,0 +1,17 @@
1
+ #!/bin/bash
2
+ # KORTEXT MANAGED HOOK — generated/edited by kortext framework
3
+ # [KORTEXT] Otomatik Dosya Kilidi Kaldırma (Post-Edit)
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ # shellcheck source=kortext-lib.sh
7
+ source "$SCRIPT_DIR/kortext-lib.sh"
8
+
9
+ FILE_PATH="${KORTEXT_FILE_PATH:-${CLAUDE_FILE_PATH:-${GEMINI_FILE_PATH:-${OPENAI_FILE_PATH:-}}}}"
10
+
11
+ if [ -z "$FILE_PATH" ]; then exit 0; fi
12
+
13
+ LOCK_FILE="${FILE_PATH}.lock"
14
+
15
+ if [ -f "$LOCK_FILE" ]; then
16
+ rm "$LOCK_FILE"
17
+ fi
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env bash
2
+ # KORTEXT MANAGED HOOK — generated/edited by kortext framework
3
+ # [KORTEXT] Backlog dashboard/item drift guard.
4
+
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ # shellcheck source=kortext-lib.sh
9
+ source "$SCRIPT_DIR/kortext-lib.sh"
10
+
11
+ cd "$KORTEXT_DIR"
12
+ python3 scripts/kortext-backlog-sync.py
@@ -0,0 +1,32 @@
1
+ #!/bin/bash
2
+ # KORTEXT MANAGED HOOK — generated/edited by kortext framework
3
+ # [KORTEXT] Branch Yönetimi ve Koruma
4
+
5
+ CURRENT_BRANCH=$(git branch --show-current 2>/dev/null)
6
+
7
+ # Eğer git olmayan bir yerdeyse çık
8
+ if [ -z "$CURRENT_BRANCH" ]; then exit 0; fi
9
+
10
+ # Behavior kuralı: "Asla doğrudan main ve development üzerinde çalışmayın."
11
+ if [[ "$CURRENT_BRANCH" == "main" ]] || [[ "$CURRENT_BRANCH" == "development" ]] || [[ "$CURRENT_BRANCH" == "master" ]]; then
12
+ echo "---"
13
+ echo "🚫 KORTEXT BRANCH KORUMASI"
14
+ echo "Hata: Şu an '$CURRENT_BRANCH' ana dalındasınız."
15
+ echo "Kortext kuralları gereği doğrudan bu dal üzerinde geliştirme yapamazsınız."
16
+ echo ""
17
+ echo "Lütfen yeni bir dal oluşturun:"
18
+ echo "git checkout -b feature/[task-id]"
19
+ echo "---"
20
+ exit 1
21
+ fi
22
+
23
+ # İsimlendirme standardı uyarısı (branching.md satır 17-23)
24
+ if [[ ! "$CURRENT_BRANCH" =~ ^(feature/|hotfix/|bugfix/|release/|chore/) ]]; then
25
+ echo ""
26
+ echo "⚠️ [KORTEXT UYARI]"
27
+ echo "Mevcut branch isimlendirmesi standart dışı ($CURRENT_BRANCH)."
28
+ echo "feature/[task-id] veya hotfix/[hata-adi] formatını kullanmanız önerilir."
29
+ echo ""
30
+ fi
31
+
32
+ exit 0
@@ -0,0 +1,43 @@
1
+ #!/bin/bash
2
+ # KORTEXT MANAGED HOOK — generated/edited by kortext framework
3
+ # [KORTEXT] Commit Mesajı Standart Kontrolü
4
+
5
+ # Git commit sırasında mesaj dosyası parametre olarak gelir
6
+ MSG_FILE="$1"
7
+ COMMIT_MSG=$(cat "$MSG_FILE" 2>/dev/null)
8
+
9
+ # Eğer direkt dosya yoksa ortam değişkenine bak (bazı araçlar için)
10
+ if [ -z "$COMMIT_MSG" ]; then
11
+ COMMIT_MSG="${KORTEXT_COMMIT_MSG:-${CLAUDE_COMMIT_MESSAGE:-${GEMINI_COMMIT_MESSAGE:-${OPENAI_COMMIT_MESSAGE:-}}}}"
12
+ fi
13
+
14
+ if [ -z "$COMMIT_MSG" ]; then exit 0; fi
15
+
16
+ # Conventional Commits formatı (feat, fix, docs, refactor, test, chore, style, perf)
17
+ # Örn: feat: add authentication
18
+ PATTERN="^(feat|fix|docs|refactor|test|chore|style|perf)(\(.+\))?!?: .+"
19
+
20
+ if [[ ! "$COMMIT_MSG" =~ $PATTERN ]]; then
21
+ echo "---"
22
+ echo "❌ KORTEXT COMMIT STANDARTLARI İHLALİ"
23
+ echo "Hata: Commit mesajı 'Conventional Commits' formatında değil."
24
+ echo "Kurallara uygun örnekler:"
25
+ echo " - feat: add logging system"
26
+ echo " - fix: resolve api timeout"
27
+ echo " - docs: update technical specifications"
28
+ echo ""
29
+ echo "Geçerli Mesajınız: $COMMIT_MSG"
30
+ echo "---"
31
+ exit 1
32
+ fi
33
+
34
+ # İngilizce zorunluluğu kontrolü (Türkçe karakter araması)
35
+ if echo "$COMMIT_MSG" | grep -q "[çğışıöüÇĞİŞIÖÜ]"; then
36
+ echo ""
37
+ echo "⚠️ [KORTEXT UYARI]"
38
+ echo "Commit mesajında Türkçe karakterler tespit edildi."
39
+ echo "Kortext Behavior kuralları gereği commit mesajları İngilizce olmalıdır."
40
+ echo ""
41
+ fi
42
+
43
+ exit 0
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env bash
2
+ # KORTEXT MANAGED HOOK — generated/edited by kortext framework
3
+ # [KORTEXT] Git pre-commit adapter.
4
+
5
+ set -euo pipefail
6
+
7
+ SCRIPT_PATH="${BASH_SOURCE[0]}"
8
+ while [ -L "$SCRIPT_PATH" ]; do
9
+ LINK_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
10
+ LINK_TARGET="$(readlink "$SCRIPT_PATH")"
11
+ case "$LINK_TARGET" in
12
+ /*) SCRIPT_PATH="$LINK_TARGET" ;;
13
+ *) SCRIPT_PATH="$LINK_DIR/$LINK_TARGET" ;;
14
+ esac
15
+ done
16
+ SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
17
+ # shellcheck source=kortext-lib.sh
18
+ source "$SCRIPT_DIR/kortext-lib.sh"
19
+ kortext_load_config
20
+
21
+ cd "$KORTEXT_ROOT"
22
+
23
+ if ! git rev-parse --git-dir >/dev/null 2>&1; then
24
+ exit 0
25
+ fi
26
+
27
+ STATUS=0
28
+ TMP_DIR="$(mktemp -d)"
29
+
30
+ cleanup() {
31
+ rm -rf "$TMP_DIR"
32
+ }
33
+ trap cleanup EXIT
34
+
35
+ while IFS= read -r -d '' FILE_PATH; do
36
+ [ -n "$FILE_PATH" ] || continue
37
+ [ -f "$FILE_PATH" ] || continue
38
+
39
+ STAGED_COPY="$TMP_DIR/$(basename "$FILE_PATH")"
40
+ if git show ":$FILE_PATH" > "$STAGED_COPY" 2>/dev/null; then
41
+ if ! "$SCRIPT_DIR/secret-scanner.sh" --stdin "$FILE_PATH" < "$STAGED_COPY"; then
42
+ STATUS=1
43
+ fi
44
+ fi
45
+
46
+ if ! KORTEXT_FILE_PATH="$FILE_PATH" "$SCRIPT_DIR/lint-guard.sh"; then
47
+ STATUS=1
48
+ fi
49
+
50
+ if ! KORTEXT_FILE_PATH="$FILE_PATH" "$SCRIPT_DIR/size-guard.sh"; then
51
+ STATUS=1
52
+ fi
53
+
54
+ # Kritik dosyalar için anlık yedek al (snapshot-guard).
55
+ # Bu dosyalar ajanlar arası bilgi devrinin omurgası; commit öncesi son
56
+ # iyi-bilinen halini workspace/backups/ altına kopyalarız.
57
+ case "$FILE_PATH" in
58
+ workspace/memory/handover.md|\
59
+ workspace/memory/decisions.md|\
60
+ workspace/memory/learned.md|\
61
+ workspace/memory/context/*|\
62
+ workspace/references/*)
63
+ KORTEXT_FILE_PATH="$FILE_PATH" "$SCRIPT_DIR/snapshot-guard.sh" || true
64
+ ;;
65
+ esac
66
+ done < <(kortext_staged_files)
67
+
68
+ if ! "$SCRIPT_DIR/backlog-sync-guard.sh"; then
69
+ STATUS=1
70
+ fi
71
+
72
+ if ! "$SCRIPT_DIR/handover-guard.sh"; then
73
+ STATUS=1
74
+ fi
75
+
76
+ exit "$STATUS"
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env bash
2
+ # KORTEXT MANAGED HOOK — generated/edited by kortext framework
3
+ # [KORTEXT] Git pre-push adapter.
4
+
5
+ set -euo pipefail
6
+
7
+ SCRIPT_PATH="${BASH_SOURCE[0]}"
8
+ while [ -L "$SCRIPT_PATH" ]; do
9
+ LINK_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
10
+ LINK_TARGET="$(readlink "$SCRIPT_PATH")"
11
+ case "$LINK_TARGET" in
12
+ /*) SCRIPT_PATH="$LINK_TARGET" ;;
13
+ *) SCRIPT_PATH="$LINK_DIR/$LINK_TARGET" ;;
14
+ esac
15
+ done
16
+ SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
17
+ "$SCRIPT_DIR/branch-guard.sh"
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env bash
2
+ # KORTEXT MANAGED HOOK — generated/edited by kortext framework
3
+ # [KORTEXT] Done item requires handover guard.
4
+
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ # shellcheck source=kortext-lib.sh
9
+ source "$SCRIPT_DIR/kortext-lib.sh"
10
+
11
+ BACKLOG_DIR="$KORTEXT_WORKSPACE_DIR/memory/backlog"
12
+ HANDOVER_FILE="$KORTEXT_WORKSPACE_DIR/memory/handover.md"
13
+
14
+ [ -d "$BACKLOG_DIR" ] || exit 0
15
+ [ -f "$HANDOVER_FILE" ] || exit 0
16
+
17
+ STATUS=0
18
+ while IFS= read -r -d '' file_path; do
19
+ [ -f "$file_path" ] || continue
20
+ if grep -q '^> \*\*Status:\*\* Done' "$file_path"; then
21
+ item_id="$(basename "$file_path" | cut -d- -f1)"
22
+ if ! grep -q "^## Handover: $item_id" "$HANDOVER_FILE"; then
23
+ echo "---"
24
+ echo "❌ KORTEXT HANDOVER EKSİK"
25
+ echo "Done durumundaki item için handover kaydı bulunamadı: $item_id"
26
+ echo "Önce scripts/kortext-handover.py ile devir kaydı oluştur."
27
+ echo "---"
28
+ STATUS=1
29
+ fi
30
+ fi
31
+ done < <(find "$BACKLOG_DIR" -maxdepth 1 -type f \( -name 'T[0-9]*-*.md' -o -name 'B[0-9]*-*.md' -o -name 'D[0-9]*-*.md' \) -print0)
32
+
33
+ exit "$STATUS"
@@ -0,0 +1,194 @@
1
+ #!/bin/bash
2
+ # KORTEXT MANAGED HOOK — generated/edited by kortext framework
3
+ # [KORTEXT] Oturum Başlatma ve Güvenlik Hook'u
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ # shellcheck source=kortext-lib.sh
7
+ source "$SCRIPT_DIR/kortext-lib.sh"
8
+
9
+ install_hook() {
10
+ local hook_name="$1"
11
+ local target_name="$2"
12
+ local hook_path=".git/hooks/$hook_name"
13
+ # Absolute path kullan; .git/hooks içinden çözünmesi gerekiyor.
14
+ local target_path
15
+ target_path="$(cd "$KORTEXT_DIR/hooks" && pwd)/$target_name"
16
+
17
+ if [ -e "$hook_path" ] && [ ! -L "$hook_path" ]; then
18
+ # KORTEXT MANAGED HOOK marker'ı hook dosyasının ilk 10 satırında ara.
19
+ # Marker bulunamazsa kortext yönetimindeki hook olmadığı için ezme.
20
+ if ! head -n 10 "$hook_path" 2>/dev/null | grep -q "KORTEXT MANAGED HOOK"; then
21
+ echo "Kortext Git Hook atlandı: $hook_path zaten mevcut (marker yok)."
22
+ return 0
23
+ fi
24
+ fi
25
+
26
+ ln -sf "$target_path" "$hook_path"
27
+ chmod +x "$KORTEXT_DIR/hooks/$target_name"
28
+ }
29
+
30
+ install_git_hooks() {
31
+ if [ ! -d ".git" ]; then
32
+ return 0
33
+ fi
34
+
35
+ mkdir -p .git/hooks
36
+ install_hook "pre-commit" "git-pre-commit.sh"
37
+ install_hook "commit-msg" "commit-msg-guard.sh"
38
+ install_hook "pre-push" "git-pre-push.sh"
39
+ }
40
+
41
+ # Runtime tespiti: KORTEXT_RUNTIME env var öncelik;
42
+ # yoksa proje köküne göre otomatik karar (claude_code | gemini_cli | codex).
43
+ detect_runtime() {
44
+ if [ -n "${KORTEXT_RUNTIME:-}" ]; then
45
+ echo "$KORTEXT_RUNTIME"
46
+ return 0
47
+ fi
48
+ if [ -d ".claude" ] || [ -n "${CLAUDE_PROJECT_ROOT:-}" ]; then
49
+ echo "claude_code"
50
+ return 0
51
+ fi
52
+ if [ -d ".gemini" ] || [ -n "${GEMINI_PROJECT_ROOT:-}" ]; then
53
+ echo "gemini_cli"
54
+ return 0
55
+ fi
56
+ echo "codex"
57
+ }
58
+
59
+ # Runtime adapter kurulumu: tespit edilen runtime'a göre uygun template'i
60
+ # proje köküne kopyalar ve `${KORTEXT_ROOT}` placeholder'ını gerçek path
61
+ # ile değiştirir. settings/runtime-adapters.md tek-kaynak dokümandır.
62
+ install_runtime_adapter() {
63
+ local runtime
64
+ runtime="${1:-$(detect_runtime)}"
65
+ local kortext_root
66
+ kortext_root="$(cd "$KORTEXT_DIR" && pwd)"
67
+
68
+ case "$runtime" in
69
+ claude_code)
70
+ local template="$KORTEXT_DIR/settings/.claude-settings.template.json"
71
+ local target=".claude/settings.json"
72
+ if [ ! -f "$template" ]; then
73
+ echo "⚠️ Claude Code template bulunamadı: $template"
74
+ return 1
75
+ fi
76
+ mkdir -p .claude
77
+ if [ -e "$target" ] && ! grep -q "KORTEXT_ROOT" "$target" 2>/dev/null; then
78
+ echo "ℹ️ Claude settings zaten mevcut (kortext yönetiminde değil), atlandı: $target"
79
+ return 0
80
+ fi
81
+ sed "s|\${KORTEXT_ROOT}|$kortext_root|g" "$template" > "$target"
82
+ echo "✅ Claude Code adapter kuruldu: $target"
83
+ ;;
84
+ gemini_cli)
85
+ echo "ℹ️ Gemini CLI adapter henüz template'lenmedi (settings/runtime-adapters.md Bölüm 4)."
86
+ echo " AGENTS.md tabanlı baseline kullanılacak."
87
+ ;;
88
+ codex|generic|*)
89
+ echo "ℹ️ Codex / Generic runtime: AGENTS.md zaten baseline olarak çalışır."
90
+ ;;
91
+ esac
92
+ }
93
+
94
+ if [ "${1:-}" = "--install-hooks" ]; then
95
+ install_git_hooks
96
+ exit 0
97
+ fi
98
+
99
+ if [ "${1:-}" = "--install-runtime" ]; then
100
+ install_runtime_adapter "${2:-}"
101
+ exit 0
102
+ fi
103
+
104
+ # Versiyon oku
105
+ KORTEXT_VERSION=$(cat "$KORTEXT_DIR/settings/VERSION" 2>/dev/null | head -n 1 | tr -d '\n' || echo "?.?.?")
106
+
107
+ # 1. Framework'ü Kilitle (Zorunlu Adım)
108
+ if [ -f "$KORTEXT_DIR/scripts/lock_kortext.sh" ]; then
109
+ chmod +x "$KORTEXT_DIR/scripts/lock_kortext.sh"
110
+ bash "$KORTEXT_DIR/scripts/lock_kortext.sh" > /dev/null 2>&1
111
+ fi
112
+
113
+ # 1.5 Git Hook Entegrasyonunu Kur
114
+ install_git_hooks
115
+
116
+ # 1.6 Runtime Adapter Kurulumu (Claude Code / Gemini CLI / Codex)
117
+ install_runtime_adapter
118
+
119
+ # 1.7 SESSION_BRIEF — Oturum Başlangıç Özeti
120
+ # Aktif context, son handover ve stale itemları özetler.
121
+ SESSION_START_PY="$KORTEXT_DIR/scripts/kortext-session-start.py"
122
+ if command -v python3 &>/dev/null && [ -f "$SESSION_START_PY" ]; then
123
+ python3 "$SESSION_START_PY" 2>/dev/null || true
124
+ fi
125
+
126
+
127
+ # 2. Durum Tespiti Hazırlığı
128
+ BLUEPRINT="$KORTEXT_WORKSPACE_DIR/references/blueprint.md"
129
+ STACK="$KORTEXT_WORKSPACE_DIR/references/tech-stack.md"
130
+ BACKLOG_DIR="$KORTEXT_WORKSPACE_DIR/memory/backlog/"
131
+
132
+ # Proje adını çekmeye çalış
133
+ PROJE_ADI="Henüz tanımlanmamış"
134
+ if [ -f "$BLUEPRINT" ]; then
135
+ PROJE_ADI=$(grep -m 1 "^#" "$BLUEPRINT" 2>/dev/null | sed 's/# //' || echo "Henüz tanımlanmamış")
136
+ fi
137
+
138
+ # Mantık: Dosyaların içeriğine göre durum belirleme
139
+ DURUM="Yeni Proje"
140
+ SIRADAKI="!start analysis"
141
+
142
+ # Blueprint dolu ve onaylanmış mı?
143
+ if [ -s "$BLUEPRINT" ] && grep -q "status:.*approved" "$BLUEPRINT" 2>/dev/null; then
144
+ DURUM="Blueprint Hazır"
145
+ SIRADAKI="!start analysis"
146
+ fi
147
+
148
+ # Tech Stack dolu ve onaylanmış mı?
149
+ if [ -s "$STACK" ] && grep -q "status:.*approved" "$STACK" 2>/dev/null; then
150
+ DURUM="Analiz Tamamlandı"
151
+ SIRADAKI="!start planning"
152
+ fi
153
+
154
+ # Mevcut codebase var mı? (Kortext sonradan eklenmiş bir projeye mi?)
155
+ HAS_CODEBASE=false
156
+ if [ -f "package.json" ] || [ -f "requirements.txt" ] || [ -f "pubspec.yaml" ] || \
157
+ [ -f "go.mod" ] || [ -f "Cargo.toml" ] || [ -d "src" ] || [ -d "app" ] || [ -d "lib" ]; then
158
+ HAS_CODEBASE=true
159
+ fi
160
+
161
+ # Mevcut codebase varken blueprint yoksa → !onboard öner
162
+ if [ "$HAS_CODEBASE" = true ] && [ "$DURUM" = "Yeni Proje" ]; then
163
+ DURUM="Mevcut Proje Tespit Edildi"
164
+ SIRADAKI="!start onboard"
165
+ fi
166
+
167
+ # Backlog klasöründe herhangi bir Markdown dosyası var mı?
168
+ if [ -d "$BACKLOG_DIR" ] && find "$BACKLOG_DIR" -name "*.md" 2>/dev/null | grep -q "."; then
169
+ DURUM="Geliştirme Hazır"
170
+ SIRADAKI="!start development"
171
+ fi
172
+
173
+ # 3. Raporu Yazdır
174
+ echo "---"
175
+ echo "🏁 KORTEXT YÜKLENDİ (v$KORTEXT_VERSION)"
176
+ echo "+prime, Kortext protokolleri ve koruma kalkanları aktifleşti."
177
+ echo ""
178
+ echo "📋 Proje: $PROJE_ADI"
179
+ echo "📍 Durum: $DURUM"
180
+ echo "⏭️ Sıradaki Adım: $SIRADAKI"
181
+ echo ""
182
+
183
+ # Duruma göre kısa ipucu
184
+ case $DURUM in
185
+ "Yeni Proje") echo "💡 Not: blueprint.md üzerinden proje vizyonunu belirleyebilirsin." ;;
186
+ "Mevcut Proje Tespit Edildi") echo "💡 Not: Mevcut codebase bulundu. Kortext'i mevcut projeye entegre etmek için !onboard komutunu kullan." ;;
187
+ "Blueprint Hazır") echo "💡 Not: Analiz fazına geçmek için hazırım (blueprint dolu)." ;;
188
+ "Analiz Tamamlandı") echo "💡 Not: Teknik mimari hazır, planlama başlatılabilir." ;;
189
+ "Geliştirme Hazır") echo "💡 Not: Backlog dolu, hangi görevle başlıyoruz?" ;;
190
+ esac
191
+
192
+ echo ""
193
+ echo "Süreci yönetmek üzere komutunu bekliyorum."
194
+ echo "---"