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.
- package/AGENTS.md +28 -0
- package/README.md +98 -0
- package/agents/backend-developer.md +132 -0
- package/agents/compliance-expert.md +106 -0
- package/agents/copywriter.md +122 -0
- package/agents/db-admin.md +117 -0
- package/agents/delivery-manager.md +121 -0
- package/agents/designer.md +108 -0
- package/agents/devops-engineer.md +141 -0
- package/agents/engineering-manager.md +208 -0
- package/agents/frontend-developer.md +174 -0
- package/agents/growth-expert.md +115 -0
- package/agents/operation-manager.md +122 -0
- package/agents/product-manager.md +114 -0
- package/agents/qa-engineer.md +126 -0
- package/agents/security-engineer.md +119 -0
- package/hooks/audit-logger.sh +25 -0
- package/hooks/auto-locker.sh +74 -0
- package/hooks/auto-unlocker.sh +17 -0
- package/hooks/backlog-sync-guard.sh +12 -0
- package/hooks/branch-guard.sh +32 -0
- package/hooks/commit-msg-guard.sh +43 -0
- package/hooks/git-pre-commit.sh +76 -0
- package/hooks/git-pre-push.sh +17 -0
- package/hooks/handover-guard.sh +33 -0
- package/hooks/kortext-init.sh +194 -0
- package/hooks/kortext-lib.sh +151 -0
- package/hooks/lint-guard.sh +50 -0
- package/hooks/secret-scanner.sh +89 -0
- package/hooks/size-guard.sh +48 -0
- package/hooks/snapshot-guard.sh +39 -0
- package/hooks/write-guard.sh +77 -0
- package/package.json +23 -6
- package/rules/behavior.md +252 -0
- package/rules/branching.md +82 -0
- package/rules/commands.md +112 -0
- package/rules/emergency.md +160 -0
- package/rules/mcp.md +47 -0
- package/rules/models.md +93 -0
- package/scripts/kortext-backlog-add.py +123 -0
- package/scripts/kortext-backlog-health.py +112 -0
- package/scripts/kortext-backlog-sync.py +117 -0
- package/scripts/kortext-bulk-plan.py +63 -0
- package/scripts/kortext-cli.py +376 -0
- package/scripts/kortext-consistency-check.py +74 -0
- package/scripts/kortext-context-check.py +146 -0
- package/scripts/kortext-handover.py +107 -0
- package/scripts/kortext-item-check.py +61 -0
- package/scripts/kortext-item-start.py +70 -0
- package/scripts/kortext-item-transition.py +78 -0
- package/scripts/kortext-lock.py +174 -0
- package/scripts/kortext-session-start.py +127 -0
- package/scripts/lock_kortext.sh +34 -0
- package/settings/.claude-settings.template.json +48 -0
- package/settings/CHANGELOG.md +176 -0
- package/settings/INTEGRATION-MAP.md +276 -0
- package/settings/README.md +255 -0
- package/settings/USER-GUIDE.md +502 -0
- package/settings/VERSION +1 -0
- package/settings/config.md +8 -0
- package/settings/runtime-adapters.md +104 -0
- package/skills/backend-developer/.gitkeep +0 -0
- package/skills/compliance-expert/.gitkeep +0 -0
- package/skills/copywriter/.gitkeep +0 -0
- package/skills/db-admin/.gitkeep +0 -0
- package/skills/delivery-manager/.gitkeep +0 -0
- package/skills/designer/.gitkeep +0 -0
- package/skills/devops-engineer/.gitkeep +0 -0
- package/skills/engineering-manager/.gitkeep +0 -0
- package/skills/frontend-developer/.gitkeep +0 -0
- package/skills/growth-expert/.gitkeep +0 -0
- package/skills/operation-manager/.gitkeep +0 -0
- package/skills/product-manager/.gitkeep +0 -0
- package/skills/qa-engineer/.gitkeep +0 -0
- package/skills/security-engineer/.gitkeep +0 -0
- package/workflows/00-kortext-setup.md +53 -0
- package/workflows/01a-analysis-pipeline.md +117 -0
- package/workflows/01b-onboarding-pipeline.md +110 -0
- package/workflows/02-planning-pipeline.md +146 -0
- package/workflows/02b-spike-workflow.md +120 -0
- package/workflows/03-environment-setup.md +99 -0
- package/workflows/04-development-cycle.md +203 -0
- package/workflows/05-test-cycle.md +123 -0
- package/workflows/06-deployment-cycle.md +224 -0
- package/workflows/07-rollback-pipeline.md +203 -0
- package/workflows/08-hotfix-pipeline.md +196 -0
- package/workflows/09-maintenance-cycle.md +133 -0
- package/workspace/archive/.gitkeep +0 -0
- package/workspace/backups/.gitkeep +0 -0
- package/workspace/memory/backlog/.gitkeep +0 -0
- package/workspace/memory/backlog/BXX-[bug-name].md +2 -0
- package/workspace/memory/backlog/DXX-[debt-name].md +2 -0
- package/workspace/memory/backlog/README.md +31 -0
- package/workspace/memory/backlog/TXX-[task-name].md +2 -0
- package/workspace/memory/backlog/debt-dashboard.md +3 -0
- package/workspace/memory/backlog/epic-dashboard.md +10 -0
- package/workspace/memory/backlog/version-dashboard.md +7 -0
- package/workspace/memory/context/.gitkeep +0 -0
- package/workspace/memory/context/README.md +35 -0
- package/workspace/memory/context/[agent-name]-active.md +2 -0
- package/workspace/memory/decisions.md +17 -0
- package/workspace/memory/handover.md +40 -0
- package/workspace/memory/learned.md +21 -0
- package/workspace/references/access.md +47 -0
- package/workspace/references/api-reference.md +59 -0
- package/workspace/references/blueprint.md +29 -0
- package/workspace/references/content-strategy.md +39 -0
- package/workspace/references/db-schema.md +51 -0
- package/workspace/references/design-system.md +107 -0
- package/workspace/references/dictionary.md +42 -0
- package/workspace/references/file-system.md +42 -0
- package/workspace/references/growth-strategy.md +46 -0
- package/workspace/references/legal-strategy.md +35 -0
- package/workspace/references/required-skills.md +11 -0
- package/workspace/references/security-rules.md +34 -0
- package/workspace/references/tech-stack.md +49 -0
- package/workspace/references/test-strategy.md +48 -0
- package/workspace/reports/analysis-reports.md +40 -0
- package/workspace/reports/content-reports.md +29 -0
- package/workspace/reports/delivery-reports.md +26 -0
- package/workspace/reports/growth-reports.md +9 -0
- package/workspace/reports/legal-reports.md +29 -0
- package/workspace/reports/product-requirements.md +28 -0
- package/workspace/reports/release-notes.md +20 -0
- package/workspace/reports/security-reports.md +27 -0
- package/workspace/reports/status-reports.md +48 -0
- package/workspace/reports/tech-requirements.md +30 -0
- package/workspace/reports/test-reports.md +61 -0
- package/workspace/templates/BXX-[bug-name].md +34 -0
- package/workspace/templates/DXX-[debt-name].md +35 -0
- package/workspace/templates/EXX-[epic-name].md +48 -0
- package/workspace/templates/HXX-[hotfix-name].md +73 -0
- package/workspace/templates/SXX-[spike-name].md +51 -0
- package/workspace/templates/TXX-[task-name].md +34 -0
- package/workspace/templates/[agent-name]-active.md +4 -0
- package/workspace/templates/[original-name]_[YYYY-MM-DD_HHMMSS].md +5 -0
- package/workspace/templates/adr-XXX.md +66 -0
- package/workspace/templates/debt-dashboard.md +10 -0
- package/workspace/templates/epic-dashboard.md +10 -0
- 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 "---"
|