tillerhand 3.37.0 → 3.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/build.md +3 -3
- package/.claude/commands/start.md +1 -1
- package/.claude/hooks/progress.mjs +23 -1
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/docs/workflow/usage-limits.md +1 -1
- package/kit/CHANGELOG.md +10 -0
- package/kit/VERSION +1 -1
- package/kit/guide.html +2 -2
- package/package.json +1 -1
|
@@ -6,7 +6,7 @@ argument-hint: [görev kodu, boşsa sıradaki görev]
|
|
|
6
6
|
Görev: $ARGUMENTS
|
|
7
7
|
Boşsa `docs/workflow/progress.md` → "Sıradaki adım" veya `docs/product/roadmap.md`'deki ilk işaretsiz görevi al.
|
|
8
8
|
|
|
9
|
-
0. **Limit ve bağlam:** Limiti oku
|
|
9
|
+
0. **Limit ve bağlam:** Limiti oku ve başlangıcı kaydet: `node .claude/hooks/progress.mjs --start` (masaüstünde durum çubuğu yok: `--limit <5 saatlik %>`, `get_usage`'dan). Bağlam %50'yi geçmişse önce `/wrap-up` + `/clear` öner. Seviye sarı/kırmızıysa veya tahmin kalan payı aşıyorsa bunu tek satırla söyle ve başla (`docs/workflow/usage-limits.md` §3; soru sorma). `docs/workflow/progress.md` → "Kaldığı yer" doluysa oradan devam et.
|
|
10
10
|
0b. **Model ve effort** (`docs/workflow/models.md`): Son seçimi `node .claude/hooks/models.mjs --show` ile oku. İki AskUserQuestion çağrısı yap: önce dört soru, her rolün modeli (Opus / Sonnet / Haiku); sonra dört soru, her rolün effort'u (düşük / orta / yüksek / ekstra yüksek). Her soruda models.md'deki önerilen seçenek ilk sırada ve "(Önerilen)" etiketli; son seçim farklıysa o seçeneğin açıklamasına "son seçim" yaz. Cevabı `node .claude/hooks/models.mjs --set plan=<model>:<effort> code=… review=… docs=…` ile kaydet. Ana oturumun modeli veya effort'u plan rolünden farklıysa tek satırla `/model <ad>` ve `/effort <düzey>` öner. Soru modunda `maliyet` konusu kapalıysa sorma ve `--set` çalıştırma: son seçim geçerli kalır, durum bloğunda "otomatik" yaz.
|
|
11
11
|
1. Görevi ve kabul kriterlerini bana tek cümleyle tekrar et. `docs/workflow/progress.md` → aktif görevi güncelle.
|
|
12
12
|
2. Bu görev için onaylanmış bir plan yoksa ve 2'den fazla dosyaya dokunacaksa önce `/plan-task` adımlarını uygula (karar noktaları dahil), onay bekle.
|
|
@@ -35,8 +35,8 @@ Boşsa `docs/workflow/progress.md` → "Sıradaki adım" veya `docs/product/road
|
|
|
35
35
|
6b. **Görev sonu kurul toplantısı** (`.claude/board/rules.md`; kurul kurulduysa). Bu, değişikliğin tek tam denetimidir: değişikliğe ilgili, akışın (2a) söylediği sayıda üye (en fazla 3) + `code-reviewer` (değişiklik auth, ödeme, kişisel veri gibi hassas bir yola dokunuyorsa `security-auditor` da), inceleme rolünün `model` ve `effort`'uyla. RET varsa görev bitmez; bulguyu ve seçenekleri sor. ONAY veya KOŞULLU ONAY ise ve kapı (adım 4) yeşilse `node .claude/hooks/commit-gate.mjs --approve "görev sonu: <katılanlar>"`: commit aynı değişiklikler için kurulu yeniden toplamaz, sonradan değişen dosyalar varsa yalnız onlar incelenir. Toplantıyı `docs/workflow/board.md` günlüğüne yaz. Kurul kurulmadıysa adım 9'da `/review-changes` öner.
|
|
36
36
|
7. `AGENTS.md` → "Bitti tanımı" listesini tek tek kontrol et.
|
|
37
37
|
8. Kapsam kalkanını kapat (komut kullanıcıya sorulur): `node .claude/hooks/freeze-guard.mjs --plan-end`. PRD'de sadece testi yeşil olan kriterleri işaretle. Testleri JUnit raporuyla çalıştır (`docs/architecture/stack.md` → Kabul testleri) ki pano güncellensin. Limiti tekrar oku. Roadmap, maliyet günlüğü ve progress yazımı mekaniktir, model çağrısı harcama; tek komutla yaz:
|
|
38
|
-
`node .claude/hooks/progress.mjs --done <görev kodu> --cost "<görev kodu> <kısa ad>" <K|O|B>
|
|
39
|
-
`--check` progress.md'nin kalın etiketli satırlarını (durum çubuğu ve pano okur) denetler; bozuksa düzelt. Açık sorunlar ve bekleyen kararlar gibi düz metin bölümlerini gerekirse elle yaz.
|
|
38
|
+
`node .claude/hooks/progress.mjs --done <görev kodu> --cost "<görev kodu> <kısa ad>" <K|O|B> --task "-" --did "<görev kodu>: <tek satır ne yapıldı>" --next "<sıradaki görev>" --check`
|
|
39
|
+
`--cost` başlangıcı adım 0'dan alır, bitişi ve süreyi kendisi hesaplar (masaüstünde `--limit <%>` ekle). `--check` progress.md'nin kalın etiketli satırlarını (durum çubuğu ve pano okur) denetler; bozuksa düzelt. Açık sorunlar ve bekleyen kararlar gibi düz metin bölümlerini gerekirse elle yaz.
|
|
40
40
|
9. Rapor ver:
|
|
41
41
|
- Ne yapıldı (2-3 satır)
|
|
42
42
|
- Bu görevde alınan kararlar (kullanıcı / otomatik)
|
|
@@ -7,7 +7,7 @@ Fikir: $ARGUMENTS
|
|
|
7
7
|
|
|
8
8
|
Bu bir **9 adımlı sihirbaz** (0-9). Kullanıcı hiçbir şeyi bilmiyormuş gibi davran: Her kararı `docs/workflow/decision-protocol.md`'ye göre sor (AskUserQuestion, önerilen seçenek ilk sırada, her seçeneğin ne zaman daha iyi olduğu açıklamalı). Kendi kafana göre karar verme. Bu oturumda uygulama kodu yazma. Her kararı tek yönlü / çift yönlü kapı olarak sınıfla (`docs/workflow/decision-protocol.md` §2a); veritabanı, auth, ödeme ve veri modeli gibi tek yönlü kararlarda önce kurul görüşü al (veritabanı ve auth'ta karar konseyi; profil kuralı `.claude/board/council.md`).
|
|
9
9
|
|
|
10
|
-
**Devam etme:** `docs/workflow/progress.md` → `**Başlangıç adımı:**` 0'dan büyükse kaldığın adımdan devam et ve bunu kullanıcıya söyle. Her adım bitince bu satırı (`N/9`) ve `**Son güncelleme:**` satırını güncelle; sonra durum bloğunu yaz.
|
|
10
|
+
**Devam etme:** `docs/workflow/progress.md` → `**Başlangıç adımı:**` 0'dan büyükse kaldığın adımdan devam et ve bunu kullanıcıya söyle. Her adım bitince bu satırı (`N/9`) ve `**Son güncelleme:**` satırını güncelle; sonra durum bloğunu yaz. Ağır adımlardan (1b araştırma, 4, 6, 7) sonra sıradaki adıma geçmeden tek satırla `/clear` öner: adımın sonucu dosyalarda, sonraki adım onları okur; her tur bütün bağlamı yeniden okuduğu için temiz oturum ucuzdur. `/start` yeniden çağrılınca kaldığı adımdan devam eder.
|
|
11
11
|
|
|
12
12
|
**Kararlar anında kaydedilir:** Her kararı verildiği anda `docs/decisions/log.md` → Karar günlüğüne yaz (adım sonunu bekleme). Pano kararları ve adım ilerlemesini oradan canlı gösterir.
|
|
13
13
|
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
// Mechanical doc writes at task end, by script instead of a model call (0 tokens, the format cannot drift).
|
|
3
3
|
// node .claude/hooks/progress.mjs --done G-012 roadmap: [ ] → [x]
|
|
4
4
|
// node .claude/hooks/progress.mjs --cost "<iş>" <K|O|B|BOARD|DESIGN|FINDINGS> <başlangıç %> <bitiş %> <dk> ["<not>"]
|
|
5
|
+
// node .claude/hooks/progress.mjs --start [--limit N] at task start: keeps the 5-hour % and the time
|
|
6
|
+
// node .claude/hooks/progress.mjs --cost "<iş>" <boyut> ["<not>"] [--limit N] start from --start, end now (once)
|
|
5
7
|
// node .claude/hooks/progress.mjs --task "<aktif görev>" --did "<yapılan>" --next "<sıradaki adım>"
|
|
6
8
|
// node .claude/hooks/progress.mjs --check progress.md labels the status line and dashboard read
|
|
7
9
|
// Every progress write also sets **Son güncelleme:** to today. Flags can be combined in one call.
|
|
@@ -9,10 +11,11 @@ import fs from 'node:fs';
|
|
|
9
11
|
import path from 'node:path';
|
|
10
12
|
import { findRoot, isMain } from './shared.mjs';
|
|
11
13
|
import { clean, labels } from './status-read.mjs';
|
|
14
|
+
import { readLimits } from './usage.mjs';
|
|
12
15
|
|
|
13
16
|
const LABELS = ['Son güncelleme', 'Aktif faz', 'Aktif görev', 'Başlangıç adımı', 'Soru modu', 'Profil'];
|
|
14
17
|
const SIZES = ['K', 'O', 'B', 'BOARD', 'DESIGN', 'FINDINGS'];
|
|
15
|
-
const USAGE = 'Kullanım: node .claude/hooks/progress.mjs [--done G-NNN] [--cost "<iş>" <K|O|B|BOARD|DESIGN|FINDINGS> <başlangıç %> <bitiş %> <dk> ["<not>"]] [--task "<metin>"] [--did "<metin>"] [--next "<metin>"] [--check]';
|
|
18
|
+
const USAGE = 'Kullanım: node .claude/hooks/progress.mjs [--done G-NNN] [--start] [--cost "<iş>" <K|O|B|BOARD|DESIGN|FINDINGS> [<başlangıç %> <bitiş %> <dk>] ["<not>"]] [--limit N] [--task "<metin>"] [--did "<metin>"] [--next "<metin>"] [--check]';
|
|
16
19
|
// One line per value: a newline would break a label, a list item or a table row
|
|
17
20
|
const line = (s) => clean(String(s).replace(/\s*\r?\n\s*/g, ' ')).trim();
|
|
18
21
|
const today = () => new Date().toLocaleDateString('sv-SE');
|
|
@@ -69,13 +72,32 @@ if (isMain(import.meta.url)) {
|
|
|
69
72
|
console.log(r.note);
|
|
70
73
|
}
|
|
71
74
|
|
|
75
|
+
// 5-hour %: --limit (desktop app: from get_usage) or the status line's .claude/state/usage.json
|
|
76
|
+
const limit = () => { const v = value('--limit'); const n = v != null ? Number(v) : readLimits(root)?.five_hour?.percent; return Number.isFinite(n) ? n : null; };
|
|
77
|
+
const startFile = file('.claude/state/task-start.json');
|
|
78
|
+
if (argv.includes('--start')) {
|
|
79
|
+
const percent = limit() ?? fail('Limit okunamadı: --limit <5 saatlik %> ver (masaüstünde get_usage).');
|
|
80
|
+
fs.mkdirSync(path.dirname(startFile), { recursive: true });
|
|
81
|
+
fs.writeFileSync(startFile, JSON.stringify({ percent, at: Date.now() }));
|
|
82
|
+
console.log(`Görev başlangıcı kaydedildi: 5s %${percent}.`);
|
|
83
|
+
}
|
|
84
|
+
|
|
72
85
|
const c = argv.indexOf('--cost');
|
|
73
86
|
if (c > -1) {
|
|
74
87
|
const args = [];
|
|
75
88
|
for (let i = c + 1; i < argv.length && !argv[i].startsWith('--'); i++) args.push(argv[i]);
|
|
89
|
+
const auto = args.length <= 3;
|
|
90
|
+
if (auto) {
|
|
91
|
+
// Only job and size (and a note): the start comes from --start, used once so an old start never leaks into the next task
|
|
92
|
+
let start;
|
|
93
|
+
try { start = JSON.parse(fs.readFileSync(startFile, 'utf8')); } catch { fail('Görev başlangıcı yok: görev başında progress.mjs --start çalıştır ya da yüzdeleri ver.'); }
|
|
94
|
+
const end = limit() ?? fail('Limit okunamadı: --limit <5 saatlik %> ver (masaüstünde get_usage).');
|
|
95
|
+
args.splice(2, 0, String(start.percent), String(end), String(Math.round((Date.now() - start.at) / 60000)));
|
|
96
|
+
}
|
|
76
97
|
const row = costRow(args) ?? fail(USAGE);
|
|
77
98
|
const log = file('docs/workflow/cost-log.md');
|
|
78
99
|
fs.writeFileSync(log, `${fs.readFileSync(log, 'utf8').trimEnd()}\n${row}\n`);
|
|
100
|
+
if (auto) fs.rmSync(startFile, { force: true });
|
|
79
101
|
console.log(`Maliyet satırı eklendi: ${row}`);
|
|
80
102
|
}
|
|
81
103
|
|
package/README.en.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
9
|
-
<a href="kit/CHANGELOG.md"><img alt="Version" src="https://img.shields.io/badge/version-3.
|
|
9
|
+
<a href="kit/CHANGELOG.md"><img alt="Version" src="https://img.shields.io/badge/version-3.38.0-2a78d6?style=flat-square"></a>
|
|
10
10
|
<a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-2a78d6?style=flat-square"></a>
|
|
11
11
|
<img alt="Claude Code" src="https://img.shields.io/badge/Claude%20Code-ready-d97757?style=flat-square">
|
|
12
12
|
<img alt="Also Codex and Antigravity" src="https://img.shields.io/badge/also-Codex%20%C2%B7%20Antigravity-5b6577?style=flat-square">
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
9
|
-
<a href="kit/CHANGELOG.md"><img alt="Sürüm" src="https://img.shields.io/badge/s%C3%BCr%C3%BCm-3.
|
|
9
|
+
<a href="kit/CHANGELOG.md"><img alt="Sürüm" src="https://img.shields.io/badge/s%C3%BCr%C3%BCm-3.38.0-2a78d6?style=flat-square"></a>
|
|
10
10
|
<a href="LICENSE"><img alt="Lisans: MIT" src="https://img.shields.io/badge/lisans-MIT-2a78d6?style=flat-square"></a>
|
|
11
11
|
<img alt="Claude Code" src="https://img.shields.io/badge/Claude%20Code-haz%C4%B1r-d97757?style=flat-square">
|
|
12
12
|
<img alt="Codex ve Antigravity" src="https://img.shields.io/badge/ayr%C4%B1ca-Codex%20%C2%B7%20Antigravity-5b6577?style=flat-square">
|
|
@@ -76,4 +76,4 @@ Max planda yüzdeler daha düşüktür. Günlük doldukça tahmin kendini düzel
|
|
|
76
76
|
|
|
77
77
|
## 5. Maliyet günlüğü (tahmini kalibre etmek için)
|
|
78
78
|
|
|
79
|
-
`/build` ve tam kurul toplantıları başlangıçta ve sonda 5 saatlik yüzdeyi okur ve `docs/workflow/cost-log.md`'ye bir satır ekler: `node .claude/hooks/progress.mjs --cost "<iş>" <boyut
|
|
79
|
+
`/build` ve tam kurul toplantıları başlangıçta ve sonda 5 saatlik yüzdeyi okur ve `docs/workflow/cost-log.md`'ye bir satır ekler: başta `node .claude/hooks/progress.mjs --start`, sonda `--cost "<iş>" <boyut>` (yüzdeler, fark ve süre hesaplanır; pencere arada yenilendiyse fark `?`; masaüstünde iki çağrıya da `--limit <%>`). Yüzdeler elle de verilebilir: `--cost "<iş>" <boyut> <başlangıç %> <bitiş %> <dk>`. Limit okunamıyorsa satır eklenmez.
|
package/kit/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
Kit sürümü `kit/VERSION` dosyasında. Bir projeyi güncellemek: projede `/kit-update`.
|
|
4
4
|
"Elle uyarla" notu olan maddeler projeye ait dosyalardadır; güncelleme bunlara dokunmaz.
|
|
5
5
|
|
|
6
|
+
## [3.38.0] - 2026-10-26
|
|
7
|
+
|
|
8
|
+
### Değişen
|
|
9
|
+
- **Maliyet günlüğü satırı kendiliğinden doluyor.** `/build` görev başında `progress.mjs --start` ile 5 saatlik yüzdeyi ve saati kaydeder. Görev sonunda `--cost "<iş>" <boyut>` başlangıcı, bitişi, farkı ve süreyi kendisi yazar. Başlangıç bir kez kullanılır, sonraki göreve karışmaz. Masaüstü uygulamasında durum çubuğu olmadığı için yüzde `--limit` ile verilir.
|
|
10
|
+
|
|
11
|
+
## [3.37.1] - 2026-10-26
|
|
12
|
+
|
|
13
|
+
### Değişen
|
|
14
|
+
- **`/start` ağır adımlardan sonra `/clear` önerir.** Araştırma, teknoloji kararları, kurul ve tasarım yönü adımlarının sonucu dosyalara yazılır; sonraki adım onları okur. Temiz oturumda devam etmek daha ucuz, `/start` kaldığı adımdan sürer.
|
|
15
|
+
|
|
6
16
|
## [3.37.0] - 2026-10-26
|
|
7
17
|
|
|
8
18
|
### Değişen
|
package/kit/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.38.0
|
package/kit/guide.html
CHANGED
|
@@ -287,7 +287,7 @@ footer .container { display: flex; flex-wrap: wrap; gap: 16px; justify-content:
|
|
|
287
287
|
<section class="hero">
|
|
288
288
|
<div class="container">
|
|
289
289
|
<div>
|
|
290
|
-
<span class="pill"><b>v3.
|
|
290
|
+
<span class="pill"><b>v3.38.0</b> Claude Code için başlangıç kiti · MIT</span>
|
|
291
291
|
<h1>Kodu AI yazar.<br><em>Dümen sende.</em></h1>
|
|
292
292
|
<p class="sub">TillerHand, Claude Code ile bir ürünü fikirden canlıya ve bakıma kadar götürür. Her önemli kararda AI sana seçenekleri, önerisini ve her seçeneğin bedelini sunar. Bir uzman kurulu işi denetler, korumalar hatayı daha olmadan durdurur.</p>
|
|
293
293
|
<div class="install"><span id="cmd">npx tillerhand init</span><button class="copy" type="button" data-copy="cmd">Kopyala</button></div>
|
|
@@ -1055,7 +1055,7 @@ Sıradaki: G-013 şifre sıfırlama · bekleyen karar: e-posta servisi</pre>
|
|
|
1055
1055
|
<footer>
|
|
1056
1056
|
<div class="container">
|
|
1057
1057
|
<a class="brand" href="#top" style="font-size:16px"><svg class="mark" style="width:22px;height:22px"><use href="#mark"/></svg>TillerHand</a>
|
|
1058
|
-
<span>Sürüm 3.
|
|
1058
|
+
<span>Sürüm 3.38.0 · <a href="https://github.com/burakdogrul/TillerHand">GitHub</a> · <a href="https://github.com/burakdogrul/TillerHand/blob/main/LICENSE">MIT lisansı</a> · KVKK bölümü kontrol listesidir, hukuki görüş değildir.</span>
|
|
1059
1059
|
</div>
|
|
1060
1060
|
</footer>
|
|
1061
1061
|
|
package/package.json
CHANGED