natureco-cli 5.6.45 → 5.6.46
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/CHANGELOG.md +22 -0
- package/README.md +1 -2
- package/package.json +1 -1
- package/skills/caveman/SKILL.md +71 -0
- package/skills/caveman-compress/SKILL.md +81 -0
- package/skills/code-refactoring/SKILL.md +108 -0
- package/skills/frontend-design/SKILL.md +90 -0
- package/skills/mcp-builder/SKILL.md +98 -0
- package/skills/playwright/SKILL.md +116 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to NatureCo CLI will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [5.6.46] - 2026-06-24 — "README OVERHAUL"
|
|
6
|
+
|
|
7
|
+
### 📚 Documentation
|
|
8
|
+
- **README.md full rewrite** — 5.6.x serisine uygun:
|
|
9
|
+
- Hero slogan: "Yapay Zekânın Gücü artık parmaklarının ucunda / Terminalin hızını NatureCo ile keşfet"
|
|
10
|
+
- ASCII art banner
|
|
11
|
+
- Node badge: `>=16.0.0` (package.json engines ile uyumlu)
|
|
12
|
+
- npm version, downloads, GitHub stars badge'leri
|
|
13
|
+
- Quick Start 4 adım: install → setup → chat → code
|
|
14
|
+
- 51 komut / 10 kategori, gerçek örnekler
|
|
15
|
+
- Discord `https://discord.gg/4FwumbWph`, Twitter `https://twitter.com/naturecoofficial`
|
|
16
|
+
- GitHub: `natureco-official/natureco-cli`
|
|
17
|
+
- Karşılaştırma tablosu (Claude Code / Hermes / OpenClaw)
|
|
18
|
+
- 30s setup wizard tanıtımı
|
|
19
|
+
|
|
20
|
+
### 🎯 Versiyon Notu
|
|
21
|
+
- 5.6.45 → 5.6.46 (patch bump, README-only release)
|
|
22
|
+
- Kod değişikliği yok, npm sayfası güncellendi
|
|
23
|
+
- Yeni kullanıcılar README üzerinden kurulum yapabilir
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
5
27
|
## [4.2.0] - 2026-06-22 — "LAUNCH READY"
|
|
6
28
|
|
|
7
29
|
### 🚀 Headline
|
package/README.md
CHANGED
|
@@ -528,8 +528,7 @@ natureco mcp add github npx -y @modelcontextprotocol/server-github
|
|
|
528
528
|
- 📖 **Komut referansı:** [natureco.me/cli/commands](https://natureco.me/cli/commands)
|
|
529
529
|
- 🎓 **Tutorial:** [natureco.me/cli/getting-started](https://natureco.me/cli/getting-started)
|
|
530
530
|
- 🔧 **API:** [natureco.me/cli/api](https://natureco.me/cli/api)
|
|
531
|
-
- 💬 **Discord topluluğu:** [discord.gg/
|
|
532
|
-
- 📱 **Telegram grup:** [t.me/natureco](https://t.me/natureco)
|
|
531
|
+
- 💬 **Discord topluluğu:** [discord.gg/4FwumbWph](https://discord.gg/4FwumbWph)
|
|
533
532
|
- 🐦 **Twitter/X:** [@naturecoofficial](https://twitter.com/naturecoofficial)
|
|
534
533
|
|
|
535
534
|
---
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "natureco-cli",
|
|
3
|
-
"version": "5.6.
|
|
3
|
+
"version": "5.6.46",
|
|
4
4
|
"description": "OpenClaw'dan daha güvenli, daha hızlı, daha ucuz AI agent CLI. Multi-agent, self-evolving skills, audit log, maliyet optimizasyonu ve NatureCo platform-native.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"natureco": "bin/natureco.js"
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cavecrew
|
|
3
|
+
description: Token tasarrufu için subagent delegasyon karar rehberi. Ana thread cavecrew subagent'larına (investigator/builder/reviewer) ne zaman delege edeceğini bilir. Subagent çıktıları caveman-compressed formatta döner → %60 daha küçük context.
|
|
4
|
+
metadata: {"natureco": {"requires": {"bins": []}, "os": ["darwin","linux","win32"]}}
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Cavecrew Skill (Token Tasarrufu Subagent Pattern)
|
|
8
|
+
|
|
9
|
+
Subagent çıktıları main context'e aynen inject edilir. Vanilla Explore 2k token prose dönerse → 2k token harcarsın. Cavecrew ~700 token döner. 20 delegasyon = context bitme vs işi bitirme farkı.
|
|
10
|
+
|
|
11
|
+
## Hangi Subagent Ne Zaman
|
|
12
|
+
|
|
13
|
+
| İş | Kullan |
|
|
14
|
+
|-----|-------|
|
|
15
|
+
| "X nerede tanımlı / Y'yi kim çağırıyor / Z'nin kullanımları" | `cavecrew-investigator` |
|
|
16
|
+
| Aynısı + mimari yorum | vanilla `Explore` |
|
|
17
|
+
| Cerrahi edit, ≤2 dosya | `cavecrew-builder` |
|
|
18
|
+
| Yeni feature / 3+ dosya / cross-cutting | Ana thread veya `feature-dev:code-architect` |
|
|
19
|
+
| Diff/branch/file review (bug) | `cavecrew-reviewer` |
|
|
20
|
+
| Derin code review (gerekçe + alternatifler) | vanilla `Code Reviewer` |
|
|
21
|
+
| 1 satır cevap, zaten biliyorsun | Ana thread, subagent yok |
|
|
22
|
+
|
|
23
|
+
**Kural:** 1/3 token istiyorsan → cavecrew. Prose istiyorsan → vanilla.
|
|
24
|
+
|
|
25
|
+
## Output Formatları (Subagent sözleşmeleri)
|
|
26
|
+
|
|
27
|
+
**`cavecrew-investigator`:**
|
|
28
|
+
```
|
|
29
|
+
<Header>:
|
|
30
|
+
- path:line — `symbol` — kısa not
|
|
31
|
+
totals: <sayım>.
|
|
32
|
+
```
|
|
33
|
+
veya `No match.`
|
|
34
|
+
|
|
35
|
+
**`cavecrew-builder`:**
|
|
36
|
+
```
|
|
37
|
+
<path:line-range> — <change ≤10 kelime>.
|
|
38
|
+
verified: <re-read OK | mismatch @ path:line>.
|
|
39
|
+
```
|
|
40
|
+
veya `too-big.` / `needs-confirm.` / `ambiguous.` / `regressed.`
|
|
41
|
+
|
|
42
|
+
**`cavecrew-reviewer`:**
|
|
43
|
+
```
|
|
44
|
+
path:line: <emoji> <severity>: <problem>. <fix>.
|
|
45
|
+
totals: N🔴 N🟡 N🔵 N❓
|
|
46
|
+
```
|
|
47
|
+
veya `No issues.`
|
|
48
|
+
|
|
49
|
+
## Chaining (Sıralı Çağrı)
|
|
50
|
+
|
|
51
|
+
**Locate → fix → verify** (en yaygın):
|
|
52
|
+
1. `cavecrew-investigator` site listesi döner
|
|
53
|
+
2. Ana thread 1-2 site seçer, `cavecrew-builder`'a path verir
|
|
54
|
+
3. `cavecrew-reviewer` diff'i inceler
|
|
55
|
+
|
|
56
|
+
**Parallel scout** (geniş investigation):
|
|
57
|
+
Bir mesajda 2-3 `cavecrew-investigator` çağır (farklı açılar: defs/callers/tests). Ana thread'de topla.
|
|
58
|
+
|
|
59
|
+
**Single-shot edit** (site zaten biliniyor):
|
|
60
|
+
Investigator atla, direkt `cavecrew-builder`'a path:line ver.
|
|
61
|
+
|
|
62
|
+
## YAPMA
|
|
63
|
+
|
|
64
|
+
- `cavecrew-builder` → dosya bilinmiyorsa YAPMA. Önce investigator.
|
|
65
|
+
- 5-dosya refactor'da `investigator → builder` chain YAPMA. Builder `too-big.` döner.
|
|
66
|
+
- `cavecrew-reviewer`'dan "genel feedback" isteme YAPMA. Sadece findings.
|
|
67
|
+
- Prose bekleme YAPMA. Cavecrew output yapısal, kuru. İnsan okuyacaksa paraphrase et.
|
|
68
|
+
|
|
69
|
+
## Auto-clarity
|
|
70
|
+
|
|
71
|
+
Security uyarıları, irreversible-action onayları — subagent'lar caveman'dan normal İngilizce'ye geçer. Sonra devam.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: caveman-compress
|
|
3
|
+
description: Doğal dil dosyalarını (CLAUDE.md, memory, todo, preferences) caveman formatına sıkıştırır. Token tasarrufu. Teknik içerik (kod, URL, path) korunur. /caveman-compress FILEPATH veya "compress memory file" tetikleyicisi.
|
|
4
|
+
metadata: {"natureco": {"requires": {"bins": ["python3"]}, "os": ["darwin","linux","win32"]}}
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Caveman Compress Skill
|
|
8
|
+
|
|
9
|
+
Doğal dil dosyalarını caveman-speak'e sıkıştır. Input token tasarrufu. Compressed dosya orijinalin yerine geçer. Backup `FILE.original.md` olarak saklanır.
|
|
10
|
+
|
|
11
|
+
## Tetikleyici
|
|
12
|
+
|
|
13
|
+
`/caveman-compress filepath` veya "compress memory file" dediğinde.
|
|
14
|
+
|
|
15
|
+
## Sıkıştırma Kuralları
|
|
16
|
+
|
|
17
|
+
### ÇIKAR
|
|
18
|
+
- Article: a, an, the
|
|
19
|
+
- Filler: just, really, basically, actually, simply, essentially, generally
|
|
20
|
+
- Pleasantries: "sure", "certainly", "of course", "happy to"
|
|
21
|
+
- Hedging: "it might be worth", "you could consider"
|
|
22
|
+
- Redundant: "in order to" → "to", "make sure to" → "ensure"
|
|
23
|
+
- Connective fluff: "however", "furthermore", "additionally"
|
|
24
|
+
|
|
25
|
+
### KORU (Asla değiştirme)
|
|
26
|
+
- Kod blokları (fenced ``` ve indented)
|
|
27
|
+
- Inline code (`backtick`)
|
|
28
|
+
- URL'ler ve linkler (tam URL, markdown link)
|
|
29
|
+
- File paths (`/src/components/...`)
|
|
30
|
+
- Komutlar (`npm install`, `git commit`, `docker build`)
|
|
31
|
+
- Teknik terimler (kütüphane, API, protokol isimleri)
|
|
32
|
+
- Özel isimler (proje, kişi, şirket)
|
|
33
|
+
- Tarihler, versiyon, numerik değerler
|
|
34
|
+
- Env değişkenleri (`$HOME`, `NODE_ENV`)
|
|
35
|
+
|
|
36
|
+
### YAPIYI KORU
|
|
37
|
+
- Tüm markdown başlıkları (tam metin)
|
|
38
|
+
- Bullet point hiyerarşisi (nesting)
|
|
39
|
+
- Numaralı listeler (numaralar)
|
|
40
|
+
- Tablolar (hücre metni sıkıştırılabilir, yapı korunur)
|
|
41
|
+
- Frontmatter/YAML header
|
|
42
|
+
|
|
43
|
+
### SIKIŞTIR
|
|
44
|
+
- Kısa eş anlamlı: "big" not "extensive", "fix" not "implement a solution for"
|
|
45
|
+
- Fragment OK: "Run tests before commit" not "You should always run tests before committing"
|
|
46
|
+
- "you should", "make sure to", "remember to" → sadece eylemi söyle
|
|
47
|
+
- Aynı şeyi söyleyen fazla bullet'ları birleştir
|
|
48
|
+
- Birden fazla örnek aynı pattern'i gösteriyorsa bir tane bırak
|
|
49
|
+
|
|
50
|
+
## KRİTİK KURAL
|
|
51
|
+
|
|
52
|
+
```...``` içindeki her şey **TAM KORUNMALI**. Yapma:
|
|
53
|
+
- comment silme
|
|
54
|
+
- spacing kaldırma
|
|
55
|
+
- satır sırası değiştirme
|
|
56
|
+
- komut kısaltma
|
|
57
|
+
- hiçbir şeyi basitleştirme
|
|
58
|
+
|
|
59
|
+
Inline code (`...`) da tam korunmalı. Backtick içinde değişiklik yapma.
|
|
60
|
+
|
|
61
|
+
## Pattern
|
|
62
|
+
|
|
63
|
+
**ÖNCE:**
|
|
64
|
+
> You should always make sure to run the test suite before pushing any changes to the main branch. This is important because it helps catch bugs early and prevents broken builds from being deployed to production.
|
|
65
|
+
|
|
66
|
+
**SONRA:**
|
|
67
|
+
> Run tests before push to main. Catch bugs early, prevent broken prod deploys.
|
|
68
|
+
|
|
69
|
+
**ÖNCE:**
|
|
70
|
+
> The application uses a microservices architecture with the following components. The API gateway handles all incoming requests and routes them to the appropriate service. The authentication service is responsible for managing user sessions and JWT tokens.
|
|
71
|
+
|
|
72
|
+
**SONRA:**
|
|
73
|
+
> Microservices architecture. API gateway route all requests to services. Auth service manage user sessions + JWT tokens.
|
|
74
|
+
|
|
75
|
+
## Sınırlar
|
|
76
|
+
|
|
77
|
+
- **Sadece** doğal dil dosyaları sıkıştır (.md, .txt, .typ, extensionless)
|
|
78
|
+
- **Asla** değiştirme: .py, .js, .ts, .json, .yaml, .yml, .toml, .env, .lock, .css, .html, .xml, .sql, .sh
|
|
79
|
+
- Karışık içerikte **sadece prose** kısımlarını sıkıştır
|
|
80
|
+
- Emin değilsen → değiştirme
|
|
81
|
+
- Backup `FILE.original.md` olarak saklanır, **asla onu sıkıştırma**
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-refactoring
|
|
3
|
+
description: Clean code, SOLID prensipleri ve modern mühendislik pratikleri. Karmaşık kodu basitleştirmek, code smell'leri gidermek, testability artırmak istediğinde bu skill'i yükle.
|
|
4
|
+
metadata: {"natureco": {"requires": {"bins": []}, "os": ["darwin","linux","win32"]}}
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Code Refactoring Skill
|
|
8
|
+
|
|
9
|
+
Clean code, SOLID design patterns ve modern yazılım mühendisliği ile kod kalitesini artır.
|
|
10
|
+
|
|
11
|
+
## Ne Zaman Kullan
|
|
12
|
+
|
|
13
|
+
- Karmaşık, bakımı zor kodu refactor etmek
|
|
14
|
+
- Duplikasyon, karmaşıklık, code smell azaltmak
|
|
15
|
+
- Testability ve tasarım tutarlılığı artırmak
|
|
16
|
+
- Modülleri yeni feature'ler için güvenle hazırlamak
|
|
17
|
+
|
|
18
|
+
**Kullanma:** tek satırlık fix, change freeze, sadece dokümantasyon isteği varsa.
|
|
19
|
+
|
|
20
|
+
## Talimatlar
|
|
21
|
+
|
|
22
|
+
1. **Code smell'leri değerlendir:** duplikasyon, uzun fonksiyon, yüksek coupling
|
|
23
|
+
2. **Refactor planı oluştur:** incremental adımlarla
|
|
24
|
+
3. **Küçük dilimler halinde uygula** — davranış sabit kalmalı
|
|
25
|
+
4. **Testleri güncelle** ve regression olmadığını doğrula
|
|
26
|
+
|
|
27
|
+
## Extract Method (Pattern)
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// ÖNCE
|
|
31
|
+
function processOrder(order: Order) {
|
|
32
|
+
// validate
|
|
33
|
+
if (!order.items.length) throw new Error('empty');
|
|
34
|
+
// compute total
|
|
35
|
+
let total = 0;
|
|
36
|
+
for (const item of order.items) {
|
|
37
|
+
total += item.price * item.quantity;
|
|
38
|
+
}
|
|
39
|
+
// save
|
|
40
|
+
db.save({ orderId: order.id, total });
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// SONRA
|
|
44
|
+
function processOrder(order: Order) {
|
|
45
|
+
validateOrder(order);
|
|
46
|
+
const total = computeTotal(order);
|
|
47
|
+
saveOrder(order, total);
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## SOLID Prensipleri
|
|
52
|
+
|
|
53
|
+
- **S**ingle Responsibility — bir sınıf/fonksiyon tek bir değişim nedeni olmalı
|
|
54
|
+
- **O**pen/Closed — extension için açık, modification için kapalı
|
|
55
|
+
- **L**iskov Substitution — alt sınıflar üst sınıfların yerine geçebilmeli
|
|
56
|
+
- **I**nterface Segregation — interface'ler küçük ve öz olmalı
|
|
57
|
+
- **D**ependency Inversion — abstraction'lara bağımlı, concrete'lere değil
|
|
58
|
+
|
|
59
|
+
## Code Smell Kategorileri
|
|
60
|
+
|
|
61
|
+
| Smell | Tedavi |
|
|
62
|
+
|-------|--------|
|
|
63
|
+
| Long Method (>30 satır) | Extract Method |
|
|
64
|
+
| Long Class | Extract Class |
|
|
65
|
+
| Duplicate Code | Extract Method → call from both |
|
|
66
|
+
| Long Parameter List (>4) | Parameter Object |
|
|
67
|
+
| Divergent Change | Extract Class (her değişim için bir sınıf) |
|
|
68
|
+
| Shotgun Surgery | Move Method, Move Field |
|
|
69
|
+
| Feature Envy | Move Method (kendi verisini kullanan sınıfa) |
|
|
70
|
+
| Data Clumps | Extract Class |
|
|
71
|
+
| Primitive Obsession | Replace Type Code with Class |
|
|
72
|
+
| Switch Statements | Replace Conditional with Polymorphism |
|
|
73
|
+
| Parallel Inheritance | Move Method/Field |
|
|
74
|
+
| Lazy Class | Inline Class |
|
|
75
|
+
| Speculative Generality | Collapse Hierarchy |
|
|
76
|
+
| Temporary Field | Extract Class |
|
|
77
|
+
| Message Chains | Hide Delegate |
|
|
78
|
+
| Middle Man | Remove Middle Man |
|
|
79
|
+
| Inappropriate Intimacy | Move Method, Extract Class |
|
|
80
|
+
| Alternative Classes with Different Interfaces | Rename Method, Move Method |
|
|
81
|
+
| Refused Bequest | Replace Inheritance with Delegation |
|
|
82
|
+
| Comments | Rename Method (kendi kendini açıklayan) |
|
|
83
|
+
| Duplicated Code | Extract Method |
|
|
84
|
+
|
|
85
|
+
## Output Format
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
## Issues
|
|
89
|
+
- <code smell 1>: <path:line>
|
|
90
|
+
- <code smell 2>: <path:line>
|
|
91
|
+
|
|
92
|
+
## Plan
|
|
93
|
+
1. <step 1: Extract Method from X to Y>
|
|
94
|
+
2. <step 2: Rename Z to W>
|
|
95
|
+
...
|
|
96
|
+
|
|
97
|
+
## Changes
|
|
98
|
+
- <path:line-range> — <change>
|
|
99
|
+
|
|
100
|
+
## Tests
|
|
101
|
+
- <verification step>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Güvenlik
|
|
105
|
+
|
|
106
|
+
- External davranışı explicit onay olmadan değiştirme
|
|
107
|
+
- Diff'leri reviewable tut (küçük, atomic)
|
|
108
|
+
- Test'ler her zaman geçmeli
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend-design
|
|
3
|
+
description: Dikkat çekici, kasıtlı görsel tasarım rehberi. Yeni UI inşa ederken veya mevcut olanı yeniden şekillendirirken. Estetik yön, tipografi ve template default'larından kaçınma.
|
|
4
|
+
metadata: {"natureco": {"requires": {"bins": []}, "os": ["darwin","linux","win32"]}}
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Frontend Design Skill
|
|
8
|
+
|
|
9
|
+
Template gibi görünmeyen, özgün UI tasarımı için rehber.
|
|
10
|
+
|
|
11
|
+
## Temel Felsefe
|
|
12
|
+
|
|
13
|
+
Sen kısa bir stüdyonun tasarım direktörüsün. Her projeye özgün bir görsel kimlik veriyorsun. Brief'i oku, pinle, sonra bilinçli seçimler yap.
|
|
14
|
+
|
|
15
|
+
## Tasarım İlkeleri
|
|
16
|
+
|
|
17
|
+
### Hero = Tez
|
|
18
|
+
Sayfa, konunun dünyasındaki en karakteristik şeyle açılmalı. Headline, imaj, animasyon, live demo — brief'e en uygun olan.
|
|
19
|
+
|
|
20
|
+
### Tipografi = Kişilik
|
|
21
|
+
Display ve body font'ları bilinçli seç. Her projede aynı fontlara düşme. Type scale, weight, spacing — hepsi bilinçli.
|
|
22
|
+
|
|
23
|
+
### Yapı = Bilgi
|
|
24
|
+
Yapısal elementler (numara, divider, label) içeriğin gerçek yapısını kodlamalı, süs olmamalı. "01 / 02 / 03" gibi numaralar sadece gerçekten sıralı içerik varsa kullanılmalı.
|
|
25
|
+
|
|
26
|
+
### Hareket = Bilinçli
|
|
27
|
+
Animasyon her yerde değil, doğru yerde. Page-load sequence, scroll reveal, hover micro-interaction — orkestre edilmiş bir an, dağınık efektlerden iyidir.
|
|
28
|
+
|
|
29
|
+
### Karmaşıklık = Vizyon
|
|
30
|
+
Maximalist yönler detaylı işçilik ister. Minimal yönler spacing, type, detayda hassasiyet ister. İkisinde de elegance = vizyonu iyi uygulamak.
|
|
31
|
+
|
|
32
|
+
## AI Default'larından Kaçın
|
|
33
|
+
|
|
34
|
+
AI-generated design 3 cluster'da toplanır:
|
|
35
|
+
1. **Cream (#F4F1EA) + serif display + terracotta accent**
|
|
36
|
+
2. **Near-black + single bright accent (acid-green/vermilion)**
|
|
37
|
+
3. **Broadsheet-style (hairline rules, zero border-radius, dense columns)**
|
|
38
|
+
|
|
39
|
+
Bunlar legitimate ama **default**. Brief bunlardan birini isterse kullan, aksi halde default'a düşme.
|
|
40
|
+
|
|
41
|
+
## Process: Brainstorm → Explore → Plan → Critique → Build → Critique Again
|
|
42
|
+
|
|
43
|
+
### Pass 1: Plan
|
|
44
|
+
|
|
45
|
+
Compact token sistemi oluştur:
|
|
46
|
+
- **Color:** 4-6 named hex values
|
|
47
|
+
- **Type:** 2+ rol için typeface (display + body + utility)
|
|
48
|
+
- **Layout:** one-sentence prose description + ASCII wireframe
|
|
49
|
+
- **Signature:** tek unutulmaz element
|
|
50
|
+
|
|
51
|
+
### Pass 2: Critique
|
|
52
|
+
|
|
53
|
+
Plan'ı brief ile karşılaştır. "Bu herhangi bir projede yaparım" gibi geliyorsa → revize.
|
|
54
|
+
|
|
55
|
+
### Pass 3: Build
|
|
56
|
+
|
|
57
|
+
Sadece plan unique olduktan sonra code yaz. Her renk/type kararı plan'dan türemeli.
|
|
58
|
+
|
|
59
|
+
### CSS Dikkat
|
|
60
|
+
|
|
61
|
+
Type-based ve element-based selector'lar birbirini override edebilir. Specificity'ye dikkat.
|
|
62
|
+
|
|
63
|
+
## Yazım (Copy)
|
|
64
|
+
|
|
65
|
+
- **End-user bakış açısıyla yaz.** Sistem nasıl inşa edildi değil, kullanıcı ne kontrol ediyor → o.
|
|
66
|
+
- **Active voice.** "Save changes" değil "Submit".
|
|
67
|
+
- **Tutarlı isimlendirme.** Publish butonu → Published toast.
|
|
68
|
+
- **Hatalar yön gösterir.** Özür dilemesin, ne olduğunu söyle.
|
|
69
|
+
- **Boş ekran = davet.** "Henüz yok" değil, ne yapılacağını söyle.
|
|
70
|
+
- **Boş sohbet değil.** Plain verbs, sentence case, no filler.
|
|
71
|
+
|
|
72
|
+
## Restraint
|
|
73
|
+
|
|
74
|
+
Bir yerde cesur ol. Signature element tek unutulmaz şey olsun, gerisi sade kalsın. Chanel: "Eve çıkmadan önce aynaya bak ve bir aksesuarı çıkar."
|
|
75
|
+
|
|
76
|
+
Screenshots ile self-critique yap. Görsel inceleme 1000 token'a bedel.
|
|
77
|
+
|
|
78
|
+
## Özet
|
|
79
|
+
|
|
80
|
+
- Subject-first düşün
|
|
81
|
+
- Template default'larından kaçın
|
|
82
|
+
- Tek bir signature element
|
|
83
|
+
- Type, renk, spacing bilinçli
|
|
84
|
+
- Copy = design material, decoration değil
|
|
85
|
+
- Critique twice, build once
|
|
86
|
+
- Restraint > excess
|
|
87
|
+
|
|
88
|
+
## Reference
|
|
89
|
+
|
|
90
|
+
- Anthropic orijinal skill: https://github.com/anthropics/skills/tree/main/skills/frontend-design
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mcp-builder
|
|
3
|
+
description: MCP (Model Context Protocol) server geliştirme rehberi. AI agent'lar için araç expose etmek istediğinde bu skill'i yükle.
|
|
4
|
+
metadata: {"natureco": {"requires": {"bins": ["npx", "node"]}, "os": ["darwin","linux"]}}
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# MCP Builder Skill
|
|
8
|
+
|
|
9
|
+
AI agent'ların tool, resource ve prompt olarak kullanabileceği MCP server'ları geliştirmek için rehber.
|
|
10
|
+
|
|
11
|
+
## MCP Nedir
|
|
12
|
+
|
|
13
|
+
Anthropic'in açık protokolü. AI modeller ile veri kaynakları/araçlar arasında standart bağlantı. JSON-RPC tabanlı, server-client mimarisi.
|
|
14
|
+
|
|
15
|
+
## Ne Zaman Kullan
|
|
16
|
+
|
|
17
|
+
- NatureCo CLI'yi bir AI agent'a tool olarak bağlamak
|
|
18
|
+
- Yeni bir MCP server sıfırdan yazmak
|
|
19
|
+
- Mevcut bir API/CLI aracını MCP'ye çevirmek
|
|
20
|
+
- stdio vs HTTP+SSE vs streamable-HTTP transport seçmek
|
|
21
|
+
- fastmcp (Python) vs mcporter (Node) arasında seçim yapmak
|
|
22
|
+
|
|
23
|
+
## Hızlı Başlangıç (Python - fastmcp)
|
|
24
|
+
|
|
25
|
+
```python
|
|
26
|
+
from fastmcp import FastMCP
|
|
27
|
+
|
|
28
|
+
mcp = FastMCP("natureco-tools")
|
|
29
|
+
|
|
30
|
+
@mcp.tool()
|
|
31
|
+
def scan_repo(path: str, max_files: int = 200) -> dict:
|
|
32
|
+
"""NatureCo CLI üzerinden repo tarar."""
|
|
33
|
+
import subprocess
|
|
34
|
+
result = subprocess.run(
|
|
35
|
+
["natureco", "scan", path, "--max", str(max_files)],
|
|
36
|
+
capture_output=True, text=True, check=True,
|
|
37
|
+
)
|
|
38
|
+
return {"output": result.stdout}
|
|
39
|
+
|
|
40
|
+
if __name__ == "__main__":
|
|
41
|
+
mcp.run()
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Hızlı Başlangıç (Node - mcporter)
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { McpServer } from "mcporter";
|
|
48
|
+
|
|
49
|
+
const server = new McpServer({ name: "natureco-tools", version: "1.0.0" });
|
|
50
|
+
|
|
51
|
+
server.tool("scan_repo", {
|
|
52
|
+
description: "NatureCo CLI üzerinden repo tarar",
|
|
53
|
+
inputSchema: {
|
|
54
|
+
type: "object",
|
|
55
|
+
properties: {
|
|
56
|
+
path: { type: "string" },
|
|
57
|
+
max_files: { type: "integer", default: 200 },
|
|
58
|
+
},
|
|
59
|
+
required: ["path"],
|
|
60
|
+
},
|
|
61
|
+
}, async ({ path, max_files }) => {
|
|
62
|
+
return { content: [{ type: "text", text: `Scanned ${path}` }] };
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
await server.listen({ port: 3000 });
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## NatureCo için En İyi Pratikler
|
|
69
|
+
|
|
70
|
+
- **subprocess.run**: NatureCo CLI'yi subprocess olarak çağır
|
|
71
|
+
- **Type hints**: tüm tool parametrelerine açık tip ver
|
|
72
|
+
- **Docstring**: her tool'un ilk satırı açıklama olmalı
|
|
73
|
+
- **Async tools**: I/O işlemleri için async tanımla
|
|
74
|
+
- **Error handling**: subprocess.CalledProcessError'ı yakala
|
|
75
|
+
|
|
76
|
+
## Debug
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# MCP Inspector ile test
|
|
80
|
+
npx @modelcontextprotocol/inspector python my_server.py
|
|
81
|
+
|
|
82
|
+
# stdIO sunucu stdout'a yazma (protokol bozulur)
|
|
83
|
+
# Tüm logları stderr'e yönlendir
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Production Kontrol Listesi
|
|
87
|
+
|
|
88
|
+
- Her tool için timeout koy
|
|
89
|
+
- Rate limiting uygula
|
|
90
|
+
- Pagination ekle (büyük listeler için)
|
|
91
|
+
- OAuth 2.1 ile auth ekle (remote sunucular için)
|
|
92
|
+
- Her tool call'unu logla
|
|
93
|
+
|
|
94
|
+
## Reference
|
|
95
|
+
|
|
96
|
+
- Spec: https://modelcontextprotocol.io
|
|
97
|
+
- Python SDK: https://github.com/jlowin/fastmcp
|
|
98
|
+
- Node SDK: https://github.com/mcporter-ai/mcporter
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: playwright
|
|
3
|
+
description: Microsoft Playwright MCP ile browser otomasyonu. Sayfa açma, tıklama, form doldurma, ekran görüntüsü alma, accessibility snapshot ve JavaScript çalıştırma.
|
|
4
|
+
metadata: {"natureco": {"requires": {"bins": ["npx", "node"]}, "os": ["darwin","linux","win32"]}}
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Playwright Skill (Browser Otomasyonu)
|
|
8
|
+
|
|
9
|
+
Microsoft'un `@playwright/mcp` server'ı ile gerçek browser'da (Chromium/Firefox/WebKit) işlem yap.
|
|
10
|
+
|
|
11
|
+
## Ne Zaman Kullan
|
|
12
|
+
|
|
13
|
+
- Web sayfası açıp DOM'u incelemek (sadece HTML değil, gerçek JS çalıştırma)
|
|
14
|
+
- Buton tıklamak, form doldurmak, hover/drag/scroll
|
|
15
|
+
- Ekran görüntüsü almak
|
|
16
|
+
- Accessibility snapshot için (model pixel yerine yapı görsün)
|
|
17
|
+
- Sayfada JavaScript çalıştırmak (veri çekmek veya davranış test etmek)
|
|
18
|
+
- Multi-step akış (login, search, checkout) test etmek
|
|
19
|
+
- UI end-to-end doğrulaması
|
|
20
|
+
|
|
21
|
+
**Kullanma:** basit HTML scraping için `curl` + `web_extract` yeterli.
|
|
22
|
+
|
|
23
|
+
## Kurulum
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Claude Code'a MCP server olarak ekle
|
|
27
|
+
claude mcp add playwright npx @playwright/mcp@latest
|
|
28
|
+
|
|
29
|
+
# Proje-scoped
|
|
30
|
+
claude mcp add playwright -s project npx @playwright/mcp@latest
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
İlk çalıştırmada npx `@playwright/mcp` ve Playwright browser bundle (~150 MB) indirilir.
|
|
34
|
+
|
|
35
|
+
## Tool'lar (En Sık Kullanılanlar)
|
|
36
|
+
|
|
37
|
+
### Navigasyon
|
|
38
|
+
- `browser_navigate(url)` — URL aç
|
|
39
|
+
- `browser_navigate_back()` / `browser_navigate_forward()`
|
|
40
|
+
- `browser_close()`
|
|
41
|
+
|
|
42
|
+
### Gözlem
|
|
43
|
+
- `browser_snapshot()` — **en kullanışlı tool**. Accessibility tree + element ref'leri (`[ref=42]`)
|
|
44
|
+
- `browser_take_screenshot(filename?, fullPage?, type?)` — PNG/JPEG screenshot
|
|
45
|
+
- `browser_console_messages(onlyErrors?)` — console.log çıktısı
|
|
46
|
+
- `browser_evaluate(function)` — sayfada JS çalıştır
|
|
47
|
+
|
|
48
|
+
### Etkileşim
|
|
49
|
+
- `browser_click(element, ref)`
|
|
50
|
+
- `browser_type(element, ref, text, slowly?)`
|
|
51
|
+
- `browser_hover(element, ref)`
|
|
52
|
+
- `browser_drag(fromElement, fromRef, toElement, toRef)`
|
|
53
|
+
- `browser_select_option(element, ref, values)`
|
|
54
|
+
- `browser_press_key(key)` — Enter, Escape, Tab, ArrowDown
|
|
55
|
+
- `browser_scroll(direction, amount?)` — up/down/left/right
|
|
56
|
+
|
|
57
|
+
### Bekleme
|
|
58
|
+
- `browser_wait_for(time?, text?, textGone?)`
|
|
59
|
+
|
|
60
|
+
### Tablar
|
|
61
|
+
- `browser_tabs(action, index?)` — list/new/select/close
|
|
62
|
+
|
|
63
|
+
## Önerilen Workflow
|
|
64
|
+
|
|
65
|
+
1. `browser_navigate(url)` → `browser_snapshot()` (tersi değil!)
|
|
66
|
+
2. Major DOM değişiklikten sonra **mutlaka** yeni snapshot
|
|
67
|
+
3. **Snapshot tercih et**, screenshot sadece visual review için
|
|
68
|
+
4. Veri çekmek için `browser_evaluate` daha hızlı
|
|
69
|
+
5. İş bitince `browser_close()`
|
|
70
|
+
|
|
71
|
+
## Login Pattern
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
1. browser_navigate("https://example.com/login")
|
|
75
|
+
2. browser_snapshot()
|
|
76
|
+
3. browser_type("Email", "[ref=12]", "user@example.com")
|
|
77
|
+
4. browser_type("Password", "[ref=14]", "...")
|
|
78
|
+
5. browser_click("Sign in", "[ref=18]")
|
|
79
|
+
6. browser_snapshot() # giriş doğrula
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Konfigürasyon
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
claude mcp add playwright npx @playwright/mcp@latest -e HEADLESS=false # görünür browser
|
|
86
|
+
claude mcp add playwright npx @playwright/mcp@latest -e BROWSER=firefox
|
|
87
|
+
claude mcp add playwright npx @playwright/mcp@latest -e ISOLATED=true # temiz profil
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Env değişkenleri:
|
|
91
|
+
- `HEADLESS` — true (default) veya false
|
|
92
|
+
- `BROWSER` — chromium, firefox, webkit, msedge
|
|
93
|
+
- `ISOLATED` — true = ephemeral profile
|
|
94
|
+
- `VIEWPORT_SIZE` — default 1280x720
|
|
95
|
+
- `USER_DATA_DIR` — persistent profil yolu
|
|
96
|
+
- `CAPTURE_MODE` — screenshot/snapshot/none
|
|
97
|
+
|
|
98
|
+
## Sınırlamalar
|
|
99
|
+
|
|
100
|
+
- Dosya download dialog'ları native değil → JS ile tetikle
|
|
101
|
+
- Bazı siteler automation'ı algılar → stealth plugin veya USER_DATA_DIR kullan
|
|
102
|
+
- ~300 MB per browser context
|
|
103
|
+
- Cold start 5-10sn
|
|
104
|
+
- WebSocket/SSE sayfalar flaky olabilir → generous timeout
|
|
105
|
+
|
|
106
|
+
## Debug
|
|
107
|
+
|
|
108
|
+
- `browser_console_messages()` — genelde click'in neden başarısız olduğunu gösterir
|
|
109
|
+
- Click işe yaramadıysa → fresh snapshot al (ref değişmiş olabilir)
|
|
110
|
+
- CAPTCHA/login gibi durumlar için `ISOLATED=false` ve gerçek USER_DATA_DIR
|
|
111
|
+
|
|
112
|
+
## Reference
|
|
113
|
+
|
|
114
|
+
- Server: https://github.com/microsoft/playwright-mcp
|
|
115
|
+
- Playwright: https://playwright.dev/docs/intro
|
|
116
|
+
- MCP Spec: https://modelcontextprotocol.io
|