ousterhout-build-deep
Apa fungsinya
Gunakan saat menulis atau mengubah kode, sebelum menandai tugas selesai, kapan pun perubahan menambahkan nama yang diekspor atau dapat diimpor, membuat modul, kelas, komponen, helper, hook, layanan, atau pembungkus, atau memusatkan kode yang berulang. Daftar periksa saat penulisan untuk membangun modul yang mendalam: beri nama keputusan yang disembunyikan oleh batas, jalani tes kedalaman dan invarian, perbaiki masalah daripada memindahkannya, jangan pernah membagi hanya berdasarkan ukuran, dan akhiri dengan catatan desain singkat. Pendamping ringkas untuk ousterhout-quality-program, yang tetap menjadi lensa tinjauan penuh.
Pemasangan membuka entri ini di aplikasi desktop AgentsRoom Anda. Jika aplikasinya belum terpasang, Anda akan diarahkan ke halaman unduhan.
SKILL.md
--- name: ousterhout-build-deep description: Gunakan saat menulis atau mengubah kode, sebelum menandai tugas selesai, kapan pun perubahan menambahkan nama yang diekspor atau dapat diimpor, membuat modul, kelas, komponen, helper, hook, layanan, atau pembungkus, atau memusatkan kode yang berulang. Daftar periksa saat penulisan untuk membangun modul yang mendalam: beri nama keputusan yang disembunyikan oleh batas, jalani tes kedalaman dan invarian, perbaiki masalah daripada memindahkannya, jangan pernah membagi hanya berdasarkan ukuran, dan akhiri dengan catatan desain singkat. Pendamping ringkas untuk ousterhout-quality-program, yang tetap menjadi lensa tinjauan penuh. --- # Build it deep (Ousterhout, author-time) Anda sedang menulis kode, bukan meninjaunya. Jalankan ini pada perubahan Anda sendiri sebelum menganggap tugas selesai. ## 1. Gerbang Apakah perubahan menambahkan nama yang diekspor/diimpor, membuat modul, kelas, komponen, helper, hook, layanan atau pembungkus, atau memusatkan kode yang berulang? Jika tidak, lewati skill ini. Penggantian nama, codemods, pengeditan konfigurasi/data dan perbaikan satu baris dikecualikan. ## 2. Sebelum Anda menulis batasan - Temukan bagaimana repo ini sudah menyelesaikan masalah dengan bentuk ini dan ikuti kecuali Anda bisa menyatakan alasannya tidak. Baca dokumentasi dan tipe dependensi saat ini: API yang diingat dari memori adalah klaim, bukan sumber. - Tulis komentar antarmuka terlebih dahulu: apa yang dijanjikan, apa yang disembunyikan. Jika Anda tidak bisa menamai keputusan tersembunyi (format, kebijakan, aturan, pilihan skema), batasan itu tidak boleh ada. Sisipkan di dalamnya. - Namai dengan bahasa domain. Jika nama jujur satu-satunya adalah `utils`, `helpers` atau `manager`, pemisahannya salah tempat. ## 3. Dua tes - **Kedalaman.** Antarmuka harus menyembunyikan jauh lebih banyak daripada yang diungkapkan. Sebuah pembungkus yang meneruskan argumennya adalah biaya tanpa manfaat; hapus itu. - **Invarian.** Ekstrak kode bersama hanya ketika melindungi aturan bersama. Buktinya adalah perubahan bersama: salinan diperbaiki atau diubah bersama dalam sejarah. Yang mirip tapi berubah secara independen tetap diduplikasi. ## 4. Perbaikan harus menghilangkan masalah, bukan memindahkannya - Enam cast yang dipindahkan ke satu helper cast generik tetap enam cast. Tulis pemetaan bertipe yang ditutupi oleh cast tersebut. - Jangan tambahkan parameter atau flag yang mendorong keputusan ke pemanggil kecuali pemanggil benar-benar tahu sesuatu yang Anda tidak tahu. Serap kasus sulit di dalamnya. - Utamakan semantik di mana kasus error tidak bisa muncul daripada membuat setiap pemanggil menanganinya. - Memindahkan kompleksitas domain penting ke file lain bukanlah penyederhanaan. ## 5. Di bawah tekanan "bersihkan ini" atau "file ini terlalu besar" Jangan pernah membagi hanya berdasarkan ukuran. Satu modul 400 baris yang menyembunyikan satu keputusan lebih baik daripada empat modul 100 baris yang membocorkan sambungan yang sama. Tanyakan keputusan apa yang disembunyikan setiap pemisahan; jika tidak ada, jangan pisah. ## 6. Keamanan Kode yang ada: kunci perilaku saat ini dengan tes sebelum memperdalamnya. Kode baru: tulis tes yang mendefinisikan perilaku yang diinginkan. ## 7. Laporan Jika gerbang aktif, akhiri pesan akhir Anda dengan catatan desain 2-4 baris: setiap batasan yang Anda tambahkan dan keputusan yang disembunyikannya; duplikasi yang Anda tinggalkan dengan sengaja dan alasannya; apa pun yang dangkal yang Anda terima dan alasannya. Untuk panggilan yang diperdebatkan atau tinjauan penuh, muat `ousterhout-quality-program`.
Tag
Bacaan lanjutan
Claude Ads: skill Claude Code yang mengaudit akun iklanmu
Claude Ads adalah skill open source untuk Claude Code: 250+ pemeriksaan di Google, Meta, LinkedIn, TikTok, atau Amazon Ads, skor dari 100, dan rencana aksi berprioritas dalam sekitar sepuluh menit. Instalasi, perintah, batasan, dan cara mengorkestrasinya di AgentsRoom.
AGENTS.md: Satu File Konteks untuk Semua Coding Agent (Codex, Antigravity, Claude)
AGENTS.md adalah file instruksi portabel yang dibaca coding agent AI kamu sebelum menyentuh kodemu. Apa saja yang perlu ditaruh di dalamnya, bedanya dengan CLAUDE.md, dan cara menjaga satu konteks tetap konsisten di Codex, Antigravity, dan Claude.
Unduh AgentsRoom
Jalankan semua agen AI Anda, di semua proyek Anda, dari satu jendela.
Aplikasi pendamping: pantau agen Anda saat bepergian
Gunakan Claude, Codex, Antigravity CLI, atau penyedia AI lainnya.
Kirim bug dan permintaan langsung ke backlog publik Anda.