Kursus
Repositori GitHub modern sering kali kekurangan dokumentasi yang jelas dan terstruktur, khususnya wiki.
Membuat halaman-halaman ini secara manual dapat memakan waktu berjam-jam untuk membaca kode, memahami arsitektur, dan mengorganisir konten.
Agen AI Wiki GitHub dapat menyelesaikan masalah ini.
Dalam tutorial ini, saya akan memandu Anda membangun Agen AI Wiki GitHub yang sepenuhnya otomatis, sebuah alat baris perintah yang menggunakan Claude Opus 4.5 dan Claude Agent SDK untuk menghasilkan wiki repositori GitHub lengkap dengan satu instruksi.
Alih-alih menulis dokumentasi secara manual, alat ini menganalisis basis kode Anda, memahami strukturnya, dan menghasilkan konten wiki multi-halaman yang rapi yang otomatis di-commit dan dipublikasikan ke repositori Anda.
Semua berjalan melalui aplikasi CLI interaktif yang dirancang terasa cepat, cerdas, dan ramah pengembang.
Dalam panduan ini, kita akan mengikuti proses tiga langkah sederhana untuk menyiapkan lingkungan, membangun Agen AI Wiki GitHub, dan mengujinya pada repositori nyata:
- Menyiapkan lingkungan: memasang dependensi, memasang dan melakukan autentikasi Claude Code, mengonfigurasi token GitHub, dan mengaktifkan fitur Wiki.
- Membangun aplikasi: membuat alat CLI, mengonfigurasi Claude Agent, mengintegrasikan alat MCP GitHub, menambahkan pelacakan biaya, dan mengimplementasikan logika pembuatan wiki (Home, Getting Started, Architecture & Tools).
- Menguji agen: menjalankannya pada repositori nyata (ECom-Intel dan Issue-Analyzer) untuk memverifikasi cloning, analisis, pembuatan wiki, dan push otomatis.
Jika Anda baru dalam dunia agen AI dan ingin belajar lebih lanjut, saya sarankan melihat jalur keterampilan AI Agent Fundamentals. Anda juga perlu membaca tutorial tentang Claude Cowork dan panduan kami untuk Claude Opus 4.6 yang baru.
Menyiapkan Lingkungan Anda untuk Tutorial GitHub Wiki Claude Opus 4.5
Sebelum membangun Agen Wiki GitHub dengan Opus 4.5, pastikan lingkungan Anda dikonfigurasi dengan benar. Bagian ini memandu Anda melalui semua prasyarat dan langkah penyiapan.
1. Prasyarat untuk menjalankan Wiki Agent Claude Opus 4.5
- Python 3.11 atau lebih tinggi (diperlukan oleh Python Claude Agent SDK).
- Node.js dan npm (diperlukan untuk memasang Claude Code), yang menjadi tulang punggung aplikasi kita dan menyediakan agen, alat, dan integrasi untuk server MCP.
2. Pasang dan autentikasi Claude Code
Buka terminal Anda (Command Prompt, PowerShell, atau Terminal macOS) dan jalankan perintah berikut untuk memasang CLI Claude Code:
npm install -g @anthropic-ai/claude-code
Ketik claude di terminal Anda untuk memulai Claude Code. Lalu, di dalam chat Claude, ketik /login untuk melakukan autentikasi dan mendapatkan akses ke model dan alat Opus 4.5, seperti terlihat di bawah.

Anda dapat mempelajari lebih lanjut tentang Claude Code dalam tutorial praktis kami.
3. Hasilkan Fine-grained GitHub Personal Access Token
Untuk menghasilkan Fine-grained GitHub Personal Access Token, buka GitHub dan arahkan ke:
Settings → Developer Settings → Personal Access Tokens → Fine-grained tokens.
Buat token baru dan pilih repositori yang akan Anda gunakan di bagian Repository. Lalu konfigurasikan Permissions. Demi keamanan, disarankan untuk menetapkan masa berlaku token yang singkat.

Kemudian, atur Personal Access Token sebagai variabel lingkungan:
export GITHUB_PAT="your-github-personal-access-token"
4. Inisialisasi GitHub Wiki Anda
Saat ini GitHub tidak mendukung pembuatan Wiki secara lokal terlebih dahulu.
Jadi Anda harus menginisialisasi wiki secara manual dengan:
- Membuka repositori Anda di GitHub
- Mengklik tab Wiki
- Mengklik “Create the first page”
- Menyimpan halaman (judul apa pun bisa)

5. Pasang Claude Agent SDK
Kita akan memasang kerangka kerja Agentic Claude yang menangani segala hal mulai dari penggunaan MCP hingga memanggil alat, membuat berkas, dan mendorong perubahan ke remote.
pip install claude-agent-sdk
Membangun Auto Wiki Agent dengan Claude Opus 4.5
Kita akan membuat aplikasi CLI Python bernama gh_wiki_cli.py. Berkas ini akan memuat konfigurasi, agen, alat, klien MCP, prompt sistem, aplikasi CLI itu sendiri, dan fungsi pembantu.
Komponen-komponen ini akan memastikan pengguna dapat memberikan tautan ke repositori dan agen tahu cara menanganinya dengan benar untuk memublikasikan wiki GitHub.
1. Imports
Bagian ini mengambil modul stdlib Python, pembantu typing, dan Claude Agent SDK.
asynciountuk I/O async (chat + streaming).os,sysuntuk variabel lingkungan dan keluar.dataclassuntuk melacak statistik.- Impor Claude Agent SDK untuk berkomunikasi dengan agen + alat MCP.
import asyncio
import os
import sys
from dataclasses import dataclass
from typing import Dict
# --- SDK Imports ---
from claude_agent_sdk import (
AssistantMessage,
ClaudeAgentOptions,
ClaudeSDKClient,
McpSdkServerConfig,
ResultMessage,
TextBlock,
ToolResultBlock,
ToolUseBlock,
)
2. Prompt sistem
Ini adalah “otak” agen. Kita akan menginstruksikan model Opus 4.5 tentang bagaimana ia harus berperilaku dan cara menggunakan alat.
SYSTEM_PROMPT = """
You are an expert Technical Writer and GitHub Wiki specialist.
TOOLS
- Read, Write, Glob, Grep:
- Use these to inspect files and folders in the project directory (e.g. /tmp/Issue-Analyzer) and in wiki_clone/.
- Use them to list files, read contents, and search for patterns.
- Write:
- Use this ONLY to write or update three wiki pages inside wiki_clone/:
- wiki_clone/Home.md
- wiki_clone/Getting-Started.md
- wiki_clone/Architecture-and-Tools.md
- Bash:
- Bash is ONLY allowed for git commands, never for inspection or editing.
- Allowed commands (with cd wiki_clone/ when needed):
- git clone <repo>.wiki.git wiki_clone (if wiki_clone does not already exist)
- git status
- git add .
- git commit -m "Update wiki"
- git push
- Do NOT use Bash for ls, cat, grep, find, python, or any other way of reading/writing files.
WORKFLOW
1. When the user gives a GitHub repo URL:
- Use Bash to clone the wiki if wiki_clone/ does not already exist:
git clone <repo>.wiki.git wiki_clone
2. Use Read/Glob/Grep (and any GitHub MCP tools) to explore the project:
- Read important files in the project folder (e.g. README, docs/, src/).
- Use that information to generate documentation.
3. Use Write to create or update ONLY:
- wiki_clone/Home.md
- wiki_clone/Getting-Started.md
- wiki_clone/Architecture-and-Tools.md
4. When the wiki pages are ready:
- Use Bash from wiki_clone/ to:
git add .
git commit -m "Update wiki"
git push
RULES
- You may READ from the whole project directory and wiki_clone/.
- You may WRITE only to the three wiki pages inside wiki_clone/.
- Never use Bash to inspect or edit files; only use it for git commands.
- Keep documentation clear, concise, and in GitHub Wiki style.
"""
3. Penanganan warna untuk CLI
Ini membuat output CLI lebih enak dilihat, namun tetap berjalan jika colorama tidak terpasang.
- Mencoba menggunakan colorama untuk teks berwarna.
- Beralih ke MockColors agar skrip tetap berjalan (tanpa warna, tanpa crash).
try:
from colorama import Fore, Style, init
init()
except ImportError:
class MockColors:
def __getattr__(self, name):
return ""
Fore = Style = MockColors()
4. Melacak statistik sesi
Sebuah dataclass kecil untuk melacak biaya, jumlah giliran, dan durasi.
total_cost: jumlah biaya $ dari Claude SDK.total_turns: berapa banyak kueri pengguna yang Anda kirim.duration_ms: akumulasi durasi dalam milidetik.
@dataclass
class SessionStats:
total_cost: float = 0.0
total_turns: int = 0
duration_ms: int = 0
5. Membuat opsi agen
Selanjutnya, kita akan membuat objek ClaudeAgentOptions dan terhubung ke server MCP kita. Fungsi di bawah ini memvalidasi variabel lingkungan yang diperlukan, mengonfigurasi server MCP GitHub jika tersedia, dan membatasi alat yang dapat digunakan agen.
Kita sengaja membatasi allowed_tools agar Opus 4.5 dapat: menggunakan Bash untuk operasi Git, memanggil server MCP GitHub untuk menginspeksi konten repositori, dan menggunakan Read/Write (bersama Glob dan Grep) untuk bekerja dengan dan memvalidasi berkas Markdown lokal.
def create_agent_options() -> ClaudeAgentOptions:
"""Validates env vars and configures the agent options."""
anthropic_key = os.getenv("ANTHROPIC_API_KEY")
github_pat = os.getenv("GITHUB_PAT")
if not anthropic_key:
print(
f"{Fore.RED}Error: ANTHROPIC_API_KEY environment variable is required.{Style.RESET_ALL}"
)
sys.exit(1)
# Configure MCP servers
mcp_servers: Dict[str, McpSdkServerConfig] = {}
if github_pat:
mcp_servers["github"] = {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {"Authorization": f"Bearer {github_pat}"},
}
return ClaudeAgentOptions(
model="claude-opus-4-5",
system_prompt=SYSTEM_PROMPT,
mcp_servers=mcp_servers,
permission_mode="bypassPermissions",
allowed_tools=[
"Read",
"Write",
"Glob",
"Grep",
"Bash",
"mcp__github__*",
],
)
6. Memproses respons streaming
Fungsi ini mendengarkan stream dan mencetak teks, penggunaan alat, serta output alat.
- Menggunakan
client.receive_response()sebagai stream async. - Mencetak teks asisten saat masuk.
- Ketika sebuah alat dipanggil → mencetak
[Tool Use: ...]. - Ketika sebuah alat mengembalikan output → memotong dan mencetak pratinjau satu baris yang singkat.
- Ketika
ResultMessagetiba → memperbaruiSessionStatsdengan biaya + durasi.
async def process_response_stream(client: ClaudeSDKClient, stats: SessionStats):
"""Handles the stream of messages from the agent."""
async for message in client.receive_response():
# 1. Handle Assistant Content (Text & Tool Requests)
if isinstance(message, AssistantMessage):
for block in message.content:
if isinstance(block, TextBlock):
print(block.text, end="", flush=True)
elif isinstance(block, ToolUseBlock):
print(f"\n{Fore.CYAN}[Tool Use: {block.name}]{Style.RESET_ALL}")
# 2. Handle Tool Results (Outputs)
if hasattr(message, "content") and isinstance(message.content, list):
for block in message.content:
if isinstance(block, ToolResultBlock):
# Truncate output for cleaner CLI
raw_output = str(block.content)
clean_output = raw_output.replace("\n", " ")
short_output = (
clean_output[:200] + "..."
if len(clean_output) > 200
else clean_output
)
print(
f"{Fore.YELLOW} -> [Output]: {short_output}{Style.RESET_ALL}"
)
# 3. Handle Result Metrics (Cost & Usage)
if isinstance(message, ResultMessage):
if message.total_cost_usd:
stats.total_cost += message.total_cost_usd
if message.duration_ms:
stats.duration_ms += message.duration_ms
7. Mencetak ringkasan di akhir
Statistik akhir sesi yang rapi untuk aplikasi CLI yang menampilkan jumlah giliran, durasi, dan biaya dalam dolar.
- Mengonversi
duration_mske detik. - Menampilkan total biaya dengan format 4 desimal.
def print_summary(stats: SessionStats):
"""Prints the final session statistics."""
print(f"\n\n{Fore.GREEN}=== Session Summary ==={Style.RESET_ALL}")
print(f"Total Turns: {stats.total_turns}")
print(f"Duration: {stats.duration_ms / 1000:.2f}s")
print(f"Total Cost: ${stats.total_cost:.4f}")
print(f"{Fore.GREEN}======================={Style.RESET_ALL}")
8. Fungsi async utama
Ini adalah alur kontrol inti aplikasi: menangani penyiapan, terhubung ke layanan, membaca input pengguna, dan mengirim kueri. Fungsi memanggil create_agent_options() dan menginisialisasi statistik. Fungsi mencetak banner pengantar dan menyebutkan server MCP mana yang diaktifkan. Fungsi juga membuat ClaudeSDKClient menggunakan konteks asinkron.
Aplikasi menjalankan REPL (Read-Eval-Print Loop) sederhana:
- Ketik 'exit' atau 'quit' untuk keluar dari aplikasi.
- Setiap kueri valid menambah
stats.total_turnssebesar 1. await client.query(user_input)mengirim pesan pengguna.await process_response_stream(...)mencetak hasil streaming.- Pengecualian apa pun ditangkap dan menampilkan pesan kesalahan berwarna merah.
- Terakhir, fungsi selalu memanggil
print_summary(stats).
async def main():
options = create_agent_options()
stats = SessionStats()
# Welcome message
print(f"{Fore.GREEN}=== GitHub Wiki AI Agent (Auto-Mode) ==={Style.RESET_ALL}")
print(
f"MCP Servers: {', '.join(options.mcp_servers.keys()) if options.mcp_servers else 'None'}"
)
print("Ask me to help with a GitHub wiki by mentioning the repository URL!")
print("Type 'exit' to quit.\n")
async with ClaudeSDKClient(options=options) as client:
try:
await client.connect()
while True:
try:
user_input = input(f"\n{Fore.BLUE}>> {Style.RESET_ALL}").strip()
except EOFError:
break
if not user_input:
continue
if user_input.lower() in ["exit", "quit"]:
break
stats.total_turns += 1
# Send query
await client.query(user_input)
print() # Spacer
# Process response stream using helper function
await process_response_stream(client, stats)
except Exception as e:
print(f"\n{Fore.RED}Session Error: {e}{Style.RESET_ALL}")
finally:
print_summary(stats)
9. Titik masuk skrip
Terakhir, kita mendefinisikan titik masuk skrip agar CLI berjalan ketika berkas dieksekusi langsung. Blok di bawah memulai loop async utama dan menangani penghentian secara bersih:
if __name__ == "__main__":
try:
asyncio.run(main())
except KeyboardInterrupt:
print("\nSession interrupted.")
sys.exit(0)
Menguji Auto Wiki Agent
Setelah semuanya terpasang, mulai aplikasi chat CLI, dan pastikan aplikasi CLI Claude Code Anda berfungsi:
python gh_wiki_cli.py
Sekarang Anda dapat berinteraksi dengan agen seperti antarmuka chat. Ajukan pertanyaan umum atau langsung minta untuk membangun wiki untuk repositori Anda:
create the github wiki for https://github.com/kingabzpro/ECom-Intel

Jika pengguna meminta membuat wiki, agen secara otomatis melakukan:
- Cloning wiki: Membuat atau menggunakan kembali folder
wiki_clone/dan menarik konten wiki terbaru. - Inspeksi repositori: Membaca berkas-berkas kunci dari repositori GitHub menggunakan alat MCP.
- Pembuatan halaman: Secara otomatis menyusun dan menulis halaman, seperti:
- Home.md
- Getting-Started.md
- Architecture-and-Tools.md
- Commit dan push: Agen melakukan staging halaman baru, melakukan commit, dan mendorong pembaruan ke:
<your-repo>.wiki.git - Contoh Output Berhasil: Setelah selesai, Anda akan melihat pesan konfirmasi yang bersih. Dan wiki akan tayang di: https://github.com/kingabzpro/ECom-Intel/wiki
Saya benar-benar terkesan dengan kemampuan agen mengumpulkan gambar demo, bagan, dan informasi kunci lainnya, lalu menyusun beranda wiki yang koheren.

Wiki kini mencakup daftar isi yang semestinya, penjelasan tentang asisten dan alat, serta instruksi “getting started” yang jelas.

Di akhir proses, ringkasan sesi menunjukkan bahwa satu sesi ini memakan biaya hampir 1 USD, yang cukup mahal untuk menghasilkan wiki tiga halaman. Jika repositorinya lebih besar dan kita membutuhkan, misalnya, wiki 12 halaman, biayanya akan meningkat signifikan.
=== Session Summary ===
Total Turns: 1
Duration: 282.99s
Total Cost: $0.9047
=======================
Dalam pengujian kedua, saya meminta agen membuat wiki untuk repositori lain:
create the github wiki for https://github.com/kingabzpro/Issue-Analyzer
Hasilnya bahkan lebih baik. Wiki yang dihasilkan, tersedia di https://github.com/kingabzpro/Issue-Analyzer/wiki, kini berisi dokumentasi yang layak yang menjelaskan apa yang dilakukan proyek dan cara memulainya.

Wiki tersebut mencakup tabel yang terstruktur dengan baik, diagram arsitektur, dan bagian inti lainnya yang memungkinkan Anda memahami seluruh proyek dalam waktu sekitar lima menit, alih-alih berhari-hari membaca kode.

Pemikiran Akhir
Saat pertama kali mendengar Opus 4.5 digadang-gadang sebagai model coding dan agentic terbaik di dunia, saya benar-benar antusias, terutama karena harganya mirip dengan model Sonnet.
Namun, antusiasme saya berkurang ketika menyadari bahwa bereksperimen dan membangun aplikasi kecil akhirnya menelan biaya sekitar $15 dalam penggunaan API.

Opus 4.5 kuat tetapi mahal. Saya juga mencoba mereplikasi alur kerja yang sama menggunakan Haiku dan Sonnet, namun pengalamannya terasa jauh di bawah untuk tugas agentic yang berat dokumentasi seperti ini.
Keduanya sering kembali menggunakan alat Bash, bahkan ketika saya secara eksplisit meminta mereka menggunakan alat MCP untuk membaca berkas GitHub. Selain itu, mereka sering menempuh cara yang lebih lama dan kurang langsung untuk menyelesaikan masalah.
Jika Anda memprioritaskan akurasi, keandalan, serta pembuatan kode dan dokumentasi berkualitas tinggi, Opus 4.5 sangat layak dipertimbangkan.
Namun, jika kasus penggunaan Anda kurang kritis atau Anda sangat sensitif terhadap biaya, Anda mungkin ingin tetap menggunakan Sonnet atau model open source yang lebih murah. Biaya terkait Opus 4.5 dapat cepat meningkat, terutama untuk alur kerja agentic multi-langkah di repositori besar.
Jika Anda tertarik dengan proyek ini, Anda dapat menemukan kode sumber lengkapnya di sini, yang dapat Anda clone dan jalankan secara lokal: kingabzpro/GitHub-Wiki-Agent.
Jika Anda ingin terus membangun agen AI, saya sarankan melihat kursus Multi-Agent Systems with LangGraph.
Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.

