Skip to content
Santekno.com | Level Up Your Engineering Skills
ID
📖 0%
02 Sep 2026 · 18 mnt baca ·Artikel 36 / 208
Go

Spec Kit untuk Tim Golang: Onboarding dan Shared Constitution

Cara menggunakan GitHub Spec Kit untuk kolaborasi tim Golang. Setup shared constitution, onboarding developer baru, dan workflow tim yang konsisten dengan specify CLI.

IH
Ihsan Arif
Penulis di Santekno · Backend Engineer

Spec Kit untuk Tim: Onboarding dan Shared Constitution

Menggunakan Spec Kit untuk tim Golang mengubah cara developer bekerja bersama, bukan sekadar cara satu orang menulis kode. Arsitekturnya — folder .specify/ yang di-commit ke git plus constitution.md yang dibagikan ke seluruh tim — memang dirancang untuk kolaborasi, bukan hanya workflow solo. Di artikel ini kita bahas bagaimana shared constitution, onboarding terstruktur, dan metrics tim membuat kualitas jadi konsisten lintas developer.


16.1 Tantangan Kolaborasi Tim Tanpa Spec Kit

Sebelum bicara solusi, ada baiknya kita jujur soal masalah yang biasa muncul di tim tanpa shared spec workflow. Daftar berikut merangkum keluhan klasik yang hampir pasti pernah kamu dengar di standup.

text
1Masalah umum:
2- "Spec ada di dokumen Google Docs yang sudah 3 versi lama"
3- "PR review butuh waktu lama karena reviewer tidak paham konteks"
4- "Kode yang sama di-implement berbeda oleh developer berbeda"
5- "Developer baru butuh 2 minggu untuk paham codebase"
6- "Tidak jelas apakah implementasi sesuai requirement atau tidak"

Benang merahnya jelas: semua masalah di atas berakar pada tidak adanya satu sumber kebenaran yang hidup di dalam repo. Spec Kit menutup celah ini dengan struktur yang konsisten dan ter-version bersama kode.


16.2 Shared Constitution: Kontrak Tim

constitution.md adalah dokumen paling kritikal untuk kolaborasi tim. Ia bukan sekadar catatan gaya, tapi kontrak yang disepakati bersama — prinsip yang tidak boleh dilanggar oleh siapapun, dari junior sampai tech lead.

Menulis constitution yang efektif adalah aktivitas tim, bukan tugas individu. Sesi berikut sebaiknya dijalankan sebagai workshop dengan pertanyaan pemandu, bukan sekadar satu orang mengetik sendiri di pojok.

bash
 1# Sesi constitution writing (workshop, bukan individual)
 2# Libatkan: tech lead, 2-3 senior developer, product
 3
 4specify constitution
 5
 6# Prompts:
 7# - "Apa arsitektur yang kita gunakan dan mengapa?"
 8# - "Apa convention naming yang harus diikuti?"
 9# - "Apa yang tidak boleh dilakukan di codebase ini?"
10# - "Bagaimana error handling yang benar?"

Karena constitution disusun kolektif lewat pertanyaan-pertanyaan ini, setiap aturannya punya pemilik dan alasan — sehingga lebih sulit diabaikan dibanding dokumen yang ditulis satu orang. Hasil akhirnya kira-kira seperti contoh konkret berikut untuk proyek Santekno Shop.

markdown
 1# Constitution: Santekno Shop
 2# Version: 2.0
 3# Last reviewed: 2025-07-01
 4# Reviewed by: @budi (tech lead), @andi, @citra, @dewi
 5
 6## Prinsip Arsitektur
 7
 8### Clean Architecture
 9WAJIB ikuti layer ini (tanpa exception):
101. Domain: entity, value object, repository interface, usecase interface
112. UseCase: business logic, tidak boleh import repository implementation
123. Repository: implementasi persistence, import hanya domain package
134. Delivery: HTTP handler, import usecase interface
14
15Dependency rule: lapisan luar boleh import lapisan dalam, TIDAK sebaliknya.
16Violation contoh: usecase yang import delivery/http = PELANGGARAN SERIUS.
17
18### Error Handling
191. Repository: return (nil, nil) untuk not found, bukan error
202. UseCase: return domain error types (ErrNotFound, ErrForbidden, etc.)
213. Handler: mapping domain errors ke HTTP status + error code JSON
224. Error code format: UPPERCASE_SNAKE_CASE
235. Error wrap: selalu fmt.Errorf("context: %w", err)
24
25### Database
261. UUID untuk SEMUA primary keys
272. int64 cents untuk SEMUA monetary values (TIDAK float64)
283. Timestamps: timestamptz (bukan timestamp)
294. Soft delete: deleted_at TIMESTAMPTZ + deleted_by UUID
305. Koneksi: pgx/v5 ONLY (tidak database/sql)
316. Transaction: selalu gunakan pgx.Tx untuk operasi multi-table
32
33### API
341. REST: kebab-case untuk URL path (/cancel-order, bukan /cancelOrder)
352. HTTP verbs: GET (read), POST (create), DELETE (delete), PUT (replace), PATCH (partial update)
363. Response: JSON selalu, Content-Type: application/json
374. Pagination: cursor-based untuk list > 100 items (bukan offset)
38
39## Haram Dilakukan (Never Do)
40
41- JANGAN return error database (pgx errors) ke layer atas
42- JANGAN gunakan float64 untuk monetary values
43- JANGAN import delivery dari usecase atau repository
44- JANGAN skip error wrap (selalu fmt.Errorf("%w", err))
45- JANGAN gunakan global state atau singleton
46- JANGAN panic dalam handler (hanya untuk truly unrecoverable)
47
48## Wajib Ada di Setiap PR
49
50- Spec reference (.specify/features/*/spec.md)
51- Test coverage >= 85%
52- specify audit --feature [name] PASS
53- go test -race pass
54- Tidak ada golangci-lint warnings

Perhatikan bahwa constitution ini mencampur prinsip arsitektur, aturan teknis konkret (UUID, int64 cents), daftar larangan, dan checklist PR dalam satu dokumen. Kombinasi inilah yang membuatnya berfungsi sebagai kontrak — bukan filosofi abstrak, tapi aturan yang bisa langsung dicek saat review.


16.3 Onboarding dengan Spec Kit: Framework

Dengan Spec Kit, onboarding developer baru berubah dari “belajar sambil meraba” menjadi jalur yang terstruktur. Checklist minggu pertama berikut memetakan apa yang harus dipahami di setiap hari, dari konteks hingga PR pertama.

markdown
 1## Developer Onboarding Checklist (Week 1)
 2
 3### Day 1: Context
 4- [ ] Baca README.md
 5- [ ] Baca CLAUDE.md (project context)
 6- [ ] Baca .specify/constitution.md (prinsip wajib)
 7- [ ] Setup development environment
 8- [ ] Run tests: go test ./...
 9
10### Day 2-3: Codebase exploration via .specify
11- [ ] Baca .specify/features/ — lihat 2-3 spec fitur yang sudah selesai
12- [ ] Baca salah satu plan.md + tasks.md lengkap
13- [ ] Trace spec ke kode: ikuti AC dari spec.md ke implementasinya
14
15### Day 4: First task
16- [ ] Ambil task kecil dari backlog
17- [ ] Run specify feature untuk task tersebut
18- [ ] Review dan approval dari senior developer
19- [ ] Implement dengan specify implement
20
21### Day 5-7: First PR
22- [ ] Selesaikan implementasi
23- [ ] Run specify audit — pastikan semua AC implemented
24- [ ] Buat PR dengan PR description dari specify pr
25- [ ] Minta review dari senior developer

Kekuatan checklist ini adalah tracing spec ke kode di Day 2-3: developer baru belajar pola proyek dari spec historis yang sudah terbukti, bukan dari penjelasan lisan yang mudah lupa. Onboarding jadi self-service, dan senior developer tidak perlu mengulang penjelasan yang sama tiap ada anggota baru.


16.4 Role-Based Access ke Spec Kit

Di tim besar, tidak semua orang perlu — atau boleh — menjalankan semua perintah. Konfigurasi berikut memetakan permission per role, dari product manager sampai tech lead, lengkap dengan approval gate.

yaml
 1# .speckit-config.yaml
 2
 3team:
 4  roles:
 5    product_manager:
 6      can_run: [feature, clarify]
 7      cannot_run: [implement, audit]
 8      description: "PM dapat tulis spec dan participate di clarification"
 9
10    junior_developer:
11      can_run: [feature, clarify, plan, tasks, implement, audit]
12      requires_approval: [plan, implement]
13      description: "Junior dapat semua, tapi plan dan implement butuh approval senior"
14
15    senior_developer:
16      can_run: all
17      can_approve: [plan, implement]
18      description: "Senior dapat semua dan bisa approve plan junior"
19
20    tech_lead:
21      can_run: all
22      can_approve: all
23      can_modify: [constitution, claude_md]
24      description: "Tech lead yang update constitution dan CLAUDE.md"

Yang penting dari konfigurasi ini adalah requires_approval pada junior developer: mereka tetap bisa belajar seluruh workflow, tapi tahap berisiko (plan dan implement) diberi gerbang review. Role-based access seperti ini menyeimbangkan otonomi dan kontrol tanpa memblokir siapapun dari belajar.


16.5 Spec Review Process untuk Tim

Sebelum speckit.plan boleh dijalankan, spec perlu lolos review dulu — ini adalah gerbang kualitas paling awal. Alur berikut menunjukkan bagaimana review request dibuat, siapa yang menilai, dan bentuk output-nya.

bash
 1# Workflow dengan approval gate
 2
 3# Developer: tulis spec
 4specify feature
 5specify clarify
 6
 7# Buat spec review request
 8specify review-request --feature product-review --reviewers budi,dewi
 9
10# Tech lead / senior developer review:
11specify review --feature product-review
12
13# Output:
14# Review: product-review
15# Reviewer: @budi
16#
17# Checking spec quality...
18# All ACs have clear acceptance criteria (OK)
19# Edge cases are defined (OK)
20# Out of scope explicitly stated (OK)
21# AC13 ambiguous: "order yang valid" — what defines valid? PENDING? DELIVERED?
22# NFR missing: no performance requirement specified
23#
24# Decision: [approve/request-changes/reject]: request-changes
25# Comment: "Clarify AC13 and add performance NFR"
26
27# Developer update spec dan minta review lagi
28specify review-request --feature product-review --update

Perhatikan bahwa reviewer menangkap ambiguitas (AC13) dan NFR yang hilang sebelum satu baris kode ditulis. Menggeser deteksi masalah ke fase spec inilah yang membuat PR review nantinya jauh lebih cepat — konteks sudah jelas sejak awal.


16.6 Shared Templates di Tim

Tim yang sering membuat tipe fitur serupa bisa menstandarkan struktur spec lewat template bersama. Perintah berikut membuat, memakai, dan men-share template melalui git.

bash
1# Buat template untuk tipe fitur yang sering dibuat
2specify template create --name crud-api
3# Template dibuat di: .specify/templates/crud-api.md
4
5# Gunakan template saat specify feature:
6specify feature --template crud-api
7
8# Template di-share di git dan di-update bersama
9git commit .specify/templates/ -m "spec: add crud-api template with standard ACs"

Karena template hidup di git, satu perbaikan template langsung dinikmati semua developer di PR berikutnya. Isi templatenya sendiri berupa kerangka AC yang siap diisi, seperti contoh CRUD API berikut.

markdown
 1# Template: CRUD API
 2# Untuk: endpoint yang melakukan Create, Read, Update, Delete
 3
 4## User Stories
 5[Definisikan User Story di sini]
 6
 7## Acceptance Criteria
 8
 9### Happy Path — Create
10- AC1: POST /[resources] menerima {[required fields]}
11- AC2: System memvalidasi [validation rules]
12- AC3: System menyimpan dengan status [default status]
13- AC4: Response: 201 Created dengan [entity data]
14
15### Happy Path — Read (List)
16- AC5: GET /[resources] mengembalikan list dengan pagination
17- AC6: Response menyertakan: total count, items, next cursor
18
19### Happy Path — Read (Single)
20- AC7: GET /[resources]/:id mengembalikan single entity
21
22### Happy Path — Update
23- AC8: PUT /[resources]/:id menerima {[updateable fields]}
24- AC9: Response: 200 OK dengan updated entity
25
26### Happy Path — Delete
27- AC10: DELETE /[resources]/:id menghapus entity
28- AC11: Response: 204 No Content
29
30### Error Cases
31- AC12: Invalid input → 400 Bad Request + INVALID_[FIELD]
32- AC13: Entity tidak ditemukan → 404 NOT_FOUND
33- AC14: Unauthorized → 401 UNAUTHORIZED
34- AC15: Forbidden → 403 FORBIDDEN
35
36## Edge Cases
37- EC1: Concurrent create/update (race condition)
38- EC2: DB failure (atomic concern)
39
40## Out of Scope
41[List fitur yang TIDAK masuk PR ini]

Template ini menstandarkan hal-hal yang mudah terlupa — error case, edge case, dan bagian Out of Scope. Dengan begitu setiap spec CRUD baru dimulai dari baseline yang sama, dan reviewer tidak perlu mengingatkan hal dasar berulang kali.


16.7 Tim Metrics dari Spec Kit

Salah satu keuntungan menyimpan spec di git adalah histori-nya bisa diolah jadi metrics tim otomatis. Perintah berikut menghasilkan ringkasan bulanan lengkap dengan breakdown per-developer.

bash
 1# Generate team metrics dari spec history
 2specify metrics --team --since "2025-06-01" --until "2025-07-01"
 3
 4# Output:
 5# Team Metrics — June 2025
 6#
 7# Features completed: 8
 8# ACs implemented: 112/115 (97.4%)
 9#
10# Per-developer:
11# @andi:  3 features, 42 ACs, avg 89% coverage, avg spec audit 96
12# @budi:  2 features (tech lead, lower count), 28 ACs, avg 94% coverage
13# @citra: 3 features, 42 ACs, avg 87% coverage, avg spec audit 94
14#
15# Deviation stats:
16# Most common: error code case mismatch (5 times)
17# Action: Update constitution.md with stronger language
18#
19# Time metrics:
20# Avg spec phase: 45 min/feature
21# Avg implementation: 4.2 hr/feature
22# Avg review: 1.3 hr/feature
23# Total: 6 hr/feature (vs 12 hr estimate before Spec Kit)

Metrics ini bukan alat untuk menghakimi individu, melainkan untuk menemukan pola sistemik — misalnya “error code case mismatch” yang berulang 5 kali menandakan constitution perlu bahasa yang lebih tegas, bukan developer yang perlu ditegur. Insight seperti ini yang biasanya mustahil didapat tanpa tracking manual.


16.8 Constitution Update Process

Constitution bukan dokumen mati; ia perlu bisa diubah, tapi secara terkontrol. Alur RFC berikut memastikan perubahan konstitusi lewat proses voting, bukan edit sepihak.

bash
 1# Buat RFC (Request for Constitution Change)
 2specify constitution-rfc --title "Add pgx advisory locks as preferred pattern"
 3
 4# Output: .specify/rfcs/2025-07-01-pgx-advisory-locks.md
 5
 6# Team review di GitHub (PR/issue)
 7# Voting: minimal 2 senior devs approval
 8
 9# Setelah approval:
10specify constitution-apply --rfc 2025-07-01-pgx-advisory-locks
11
12# Constitution.md ter-update dan semua developer di-notify

Dengan model RFC ini, perubahan aturan fundamental selalu punya jejak keputusan dan minimal dua persetujuan senior. Ini mencegah constitution berubah diam-diam dan menjaga setiap anggota tim tetap sinkron dengan aturan terbaru.


16.9 Cross-Team Spec Review

Fitur yang menyentuh lebih dari satu tim butuh reviewer dari kedua sisi. Perintah berikut menandai reviewer lintas tim sehingga input mereka tertangkap sejak fase spec.

bash
1# Feature spec yang butuh input dari team lain
2specify feature --feature cross-service-cancel-notification
3
4# Tag reviewer dari multiple team
5specify review-request --feature cross-service-cancel-notification \
6                       --reviewers @order-team/budi,@notification-team/eko
7
8# Cross-team review captured di clarifications.md

Karena keputusan lintas tim direkam di clarifications.md, tidak ada lagi kesepakatan yang hilang di chat atau meeting. Ini krusial untuk fitur event-driven yang implementasinya tersebar di beberapa service.


16.10 Spec Kit dalam Sprint Planning

Output Spec Kit juga berguna langsung untuk sprint planning karena tasks.md menghasilkan estimasi yang bisa diagregasi. Skrip berikut men-generate spec untuk beberapa ticket sekaligus lalu menghitung total estimasi terhadap kapasitas tim.

bash
 1# Sebelum sprint: generate spec untuk semua stories yang akan dikerjakan
 2for ticket in SHOP-789 SHOP-790 SHOP-791; do
 3    specify feature --ticket $ticket
 4done
 5
 6# Estimasi dari tasks.md untuk semua stories
 7specify estimate --features "product-review,shipping-calc,flash-sale"
 8
 9# Output:
10# Sprint Estimation from Spec Kit:
11#
12# product-review:    14 tasks, 8.5 jam  (SHOP-789, @citra)
13# shipping-calc:     9 tasks,  5.5 jam  (SHOP-790, @andi)
14# flash-sale:        18 tasks, 11 jam   (SHOP-791, @budi+@andi)
15#
16# Total: 41 tasks, 25 jam
17# Team capacity (2 devs, 2 weeks): 40 jam
18#
19# Recommendation: Flash-sale perlu dipecah atau di-push ke sprint berikutnya

Estimasi ini berbasis breakdown task nyata dari spec, bukan tebakan story point di planning poker. Hasilnya, keputusan seperti “flash-sale perlu dipecah” muncul dari data, bukan optimisme — dan sprint jadi lebih realistis.


16.11 Handling Disagreement di Spec

Ketidaksepakatan antar developer adalah hal sehat, asalkan terekam dan terselesaikan formal. Contoh berikut menunjukkan bagaimana review menangkap keberatan atas sebuah AC dan mengarahkannya ke resolusi.

bash
 1# Developer A menulis spec untuk payment gateway
 2specify feature --feature payment-gateway
 3
 4# Developer B review dan tidak setuju dengan AC5:
 5specify review --feature payment-gateway --reviewer andi
 6
 7# Output review @andi:
 8# AC5: "3D Secure harus selalu enabled" — saya tidak setuju
 9#    Alasan: 3D Secure menambahkan friction, business memutuskan optional
10#    Saran: "3D Secure diaktifkan berdasarkan bank requirement, bisa optional"
11# Decision: request-changes
12
13# Resolution: meeting 30 menit dengan PM → clarification baru di clarifications.md

Nilai pentingnya: keberatan @andi terhubung ke alasan bisnis yang konkret, dan resolusinya mendarat kembali di clarifications.md sebagai keputusan permanen. Debat teknis jadi produktif karena selalu berujung pada dokumen, bukan sekadar perang argumen di komentar PR.


16.12 Spec Kit untuk Remote/Async Tim

Tim yang tersebar di beberapa timezone tidak bisa mengandalkan review sinkron. Alur async berikut memungkinkan reviewer meninggalkan pertanyaan tanpa memblokir, lalu penulis menjawab di jam kerjanya sendiri.

bash
 1# Developer A (Jakarta, 9am) tulis spec:
 2specify feature  # -> spec.md
 3
 4# Developer B (Singapore, beda timezone) review async:
 5specify review --feature payment-gateway \
 6               --async \  # submit review tanpa blocking
 7               --comments "Q1: Apakah 3D Secure wajib?"
 8
 9# Developer A (besok pagi) lihat comments:
10specify review-status --feature payment-gateway
11# -> Pending review dari @developer-b (Q1 submitted)
12
13# Jawab async:
14specify clarify --answer "Q1: 3D Secure optional, diaktifkan per bank requirement"

Pola async ini membuat perbedaan timezone berhenti jadi hambatan: review dan klarifikasi mengalir tanpa harus mempertemukan semua orang di jam yang sama. Untuk tim remote, ini yang menjaga velocity tetap tinggi.


16.13 Constitution sebagai Onboarding Document

Constitution yang baik bisa menggantikan berjam-jam sesi onboarding lisan. Fitur quiz berikut bahkan mengubahnya jadi alat self-assessment untuk developer baru.

bash
 1# Tes onboarding comprehension (untuk assessment):
 2specify quiz --constitution
 3
 4# Output: 10 pertanyaan berdasarkan constitution
 5# Q1: Jika repository mendapat not-found dari DB, apa yang harus di-return?
 6# A: nil, nil (bukan error)
 7#
 8# Q2: Apa format error code yang benar?
 9# A: UPPERCASE_SNAKE_CASE (PURCHASE_REQUIRED, bukan purchase_required)
10#
11# Developer baru bisa self-assess sebelum PR pertama

Dengan quiz ini, developer baru bisa memverifikasi pemahamannya sendiri sebelum menyentuh kode produksi. Constitution berubah dari dokumen pasif yang jarang dibaca menjadi materi pembelajaran aktif yang terukur.


16.14 Tim Dashboard

Untuk visibilitas harian, Spec Kit bisa merangkum status seluruh tim dalam satu dashboard. Perintah berikut menghasilkan ringkasan progress sprint, compliance, dan review yang tertunda.

bash
 1# Generate team dashboard
 2specify dashboard --team
 3
 4# Output (bisa di-export sebagai HTML):
 5#
 6# Sprint Progress
 7# 83% (10/12 features complete)
 8#
 9# Spec Compliance This Sprint
10# AC compliance: 97.4%
11# Coverage avg: 89%
12# Lint: 0 issues
13#
14# Pending Reviews
15# product-review: waiting @budi review (2 hari)
16# flash-sale spec: waiting @dewi approval (1 hari)
17#
18# Recent Merges
19# cancel-order (SHOP-456) — @andi — 2025-07-01
20# product-review (SHOP-789) — @citra — 2025-07-02

Dashboard ini memberi tech lead dan manajemen gambaran sehat-tidaknya tim tanpa perlu bertanya satu per satu. Item “Pending Reviews” dengan durasi tunggu, misalnya, langsung menyorot bottleneck yang perlu didorong hari itu juga.


16.15 Spec Anti-Patterns untuk Tim

Adopsi Spec Kit bisa gagal bukan karena tool-nya, tapi karena pola kerja yang keliru. Kumpulan anti-pattern berikut merangkum jebakan paling umum beserta perbaikannya.

markdown
 1## Anti-Pattern 1: "Spec by Committee"
 2
 3Problem: 5 orang edit spec.md bersamaan → tidak koheren
 4Fix: Satu spec writer, satu reviewer, satu approver (RACI model)
 5
 6## Anti-Pattern 2: "Living Spec yang Tidak Pernah Di-approve"
 7
 8Problem: Spec terus di-edit setelah implement mulai → scope creep
 9Fix: Spec-lock sebelum specify plan — setelah plan, spec tidak boleh berubah
10
11## Anti-Pattern 3: "Constitution yang Tidak Pernah Di-enforce"
12
13Problem: Constitution ada tapi tidak ada konsekuensi violation
14Fix: CI check untuk constitution compliance, code review protocol yang strict
15
16## Anti-Pattern 4: "Spec Hanya untuk Junior Developer"
17
18Problem: Senior developer skip Spec Kit dan langsung coding
19Fix: Semua developer, semua level, wajib ikuti Spec Kit workflow

Benang merah keempat anti-pattern ini adalah disiplin yang tidak konsisten. Spec Kit hanya bekerja jika seluruh tim — termasuk senior — patuh pada proses yang sama; begitu ada pengecualian, seluruh sistem kepercayaan pada spec runtuh.


16.16 Scaling: Dari 3 Developer ke 30 Developer

Workflow Spec Kit yang sama bertahan di berbagai ukuran tim, hanya tingkat formalitasnya yang bergeser. Tabel berikut menunjukkan bagaimana tanggung jawab constitution, review, implement, dan audit berkembang seiring bertambahnya developer.

Ukuran TimConstitutionSpec ReviewImplementAudit
1-3 devsSatu personPeer reviewIndividualOptional CI
4-10 devsTech leadSenior reviewPer developerCI required
10-30 devsArchitecture boardDomain lead reviewPer squadCI required + weekly audit
30+ devsArchitecture teamMultiple level reviewPer squadFull CI pipeline

Yang perlu diingat dari tabel ini: prinsipnya konstan, formalitasnya yang naik. Tim 3 orang cukup dengan peer review, sementara tim 30 orang butuh architecture board dan CI wajib — tapi keduanya tetap berangkat dari constitution dan spec yang sama.


16.17 Spec Kit Training Program

Tim yang baru mengadopsi Spec Kit sebaiknya tidak langsung memaksakan 100% coverage. Rencana adopsi empat minggu berikut membangun kebiasaan secara bertahap, dari workshop constitution sampai enforcement penuh.

markdown
 1## Spec Kit Adoption Plan (4 minggu)
 2
 3### Week 1: Constitution dan Setup
 4- Workshop: tulis constitution.md bersama (half day)
 5- Setup: semua developer install specify CLI
 6- Latihan: setiap developer specify feature untuk fitur kecil yang sudah ada
 7
 8### Week 2: Pilot Feature
 9- Pilih satu fitur baru sebagai pilot
10- Jalani full workflow: specify → clarify → plan → tasks → implement
11- Retrospektif: apa yang berjalan baik, apa yang perlu disesuaikan
12
13### Week 3: Paralel Run
14- 2-3 fitur secara paralel dengan Spec Kit
15- Senior developer support untuk tiap session
16
17### Week 4: Full Adoption
18- Semua fitur baru wajib pakai Spec Kit
19- Update PR template dan CI untuk enforcement

Kunci rencana ini adalah pilot feature di Week 2 sebelum paralel run: tim membuktikan workflow di skala kecil dan menyesuaikannya lewat retrospektif, sehingga saat full adoption tiba, prosesnya sudah teruji dan bukan lagi teori.


16.18 Tips & Gotchas

Tip 1: Constitution review setiap quarter — constitution yang tidak pernah di-review akan cepat outdated. Jadwalkan sesi review tiap kuartal.

Tip 2: Libatkan PM dalam speckit.clarify — sesi klarifikasi jauh lebih bernilai jika PM hadir langsung, bukan jawaban yang di-relay lewat developer.

Tip 3: Celebrasi Spec Kit wins — ketika fitur selesai lebih cepat atau dengan coverage lebih tinggi berkat Spec Kit, bagikan metrics-nya di team channel.

Tip 4: Spec Kit bukan pengganti komunikasi — untuk keputusan yang sangat signifikan (breaking API change, major refactor), diskusi sinkron tetap perlu dilakukan lebih dulu.

Gotcha 1: Constitution yang terlalu rigid menghambat inovasi — jangan mengatur terlalu detail. Fokus pada prinsip, bukan implementasi detail.

Gotcha 2: Senior developer bypass bisa jadi precedent — jika satu senior skip Spec Kit, yang lain akan ikut. Enforcement harus konsisten dari semua level.

Gotcha 3: Spec Kit bisa memperlambat di awal — 2-4 minggu pertama akan terasa lebih lambat. Ini normal, investasi untuk kecepatan jangka panjang.

Gotcha 4: Terlalu banyak approver memperlambat cycle — spec review dengan 5+ approver bisa membuat spec terjebak antrean. 1-2 approver sudah cukup.


16.19 Mengukur Adopsi Spec Kit

Untuk tahu apakah adopsi benar-benar berjalan, ukur secara berkala berapa persen fitur yang benar-benar melewati Spec Kit. Perintah berikut menghasilkan laporan adopsi bulanan beserta dampaknya ke velocity.

bash
 1# Monthly adoption metrics
 2specify metrics --adoption --month "2025-07"
 3
 4# Output:
 5# Spec Kit Adoption — July 2025
 6#
 7# Features completed: 12
 8# With Spec Kit: 10 (83.3%)
 9# Without Spec Kit: 2 (hotfixes - expected)
10#
11# Spec quality:
12# Avg ACs per feature: 9.4 (target: 8+)
13# Avg clarification Qs: 4.2 (good — thorough)
14#
15# Velocity impact:
16# Avg feature duration: 5.2 hr (vs 9.1 hr last month) -43%
17# PR review duration: 1.1 hr (vs 2.8 hr last month) -61%
18#
19# Adoption growing! Target 100% for August 2025.

Angka -43% durasi fitur dan -61% durasi review adalah bukti kuantitatif bahwa disiplin spec-first berbuah kecepatan, bukan hambatan. Data seperti ini yang perlu kamu tunjukkan saat tim mulai meragukan apakah “ribet di depan” ini sepadan.


16.20 Ringkasan

Spec Kit untuk tim bukan cuma soal tools — ini tentang shared language dan shared standards yang membuat setiap developer bekerja dengan cara yang konsisten dan predictable.

constitution.md adalah fondasinya: dokumen yang disepakati bersama dan menjadi kontrak teknikal untuk semua implementasi. Onboarding menjadi jauh lebih efektif karena developer baru bisa belajar dari spec historis di .specify/features/ — setiap fitur yang sudah ada adalah studi kasus siap baca. Dan metrics dari Spec Kit memberi visibility ke tim maupun management soal kecepatan, kualitas, dan konsistensi tanpa perlu tracking manual.

Di artikel berikutnya, kita bahas bagaimana Spec Kit bekerja di monorepo — satu konstitusi untuk banyak service dengan specify yang bisa dikonfigurasi per service.

Artikel Terkait

💬 Komentar