Skip to content
Apothem
Arsitektur

Kontrak pemaketan kohor

Kontrak yang stabil dan dapat dikonsumsi hilir untuk pemaketan kohor dan manifest plugin — mengenumerasi kohor dan me-resolve target native per-harness-nya tanpa menurunkan ulang pemetaannya.

Kontrak Pemaketan Kohor

Dokumen ini menetapkan kontrak yang stabil dan dapat dikonsumsi hilir untuk pemaketan kohor dan manifest plugin. Konsumen membaca kontrak ini untuk mengenumerasi kohor dan me-resolve target native per-harness-nya tanpa menurunkan ulang pemetaannya.

Artefak

ArtefakPeran
src/apothem/schemas/cohort.schema.jsonJSON Schema untuk dokumen manifest kohor.
src/apothem/schemas/cohort-manifest.yamlInstans manifest kohor — keenam kohor (core, developer, security, research, ai-engineering, full) terisi dengan himpunan anggotanya; full adalah gabungan dari kelima kohor lainnya.
src/apothem/schemas/plugin.schema.jsonJSON Schema untuk manifest plugin per-bundel (plugin.json).
src/apothem/lib/propagation-manifest.yamlSumber kebenaran untuk target native per-harness.

Bentuk manifest kohor

Manifest kohor adalah objek tingkat atas dengan tiga kunci:

  • version — string SemVer dari manifest.
  • cohorts[] — satu entri per kohor. Setiap entri memiliki id (dari himpunan tertutup core | developer | security | research | ai-engineering | full), name, description, dan members (objek yang mengelompokkan pengenal anggota menurut tipe katalog: skills / agents / commands / rules / hooks).
  • per_harness_targets — kontrak resolusi (di bawah).

Setiap pengenal anggota adalah nama kebab-case yang stabil yang berpadanan dengan artefak nyata di bawah src/apothem/ (skills/<name>/, agents/<name>.md, commands/<name>.md, rules/<name>.md, atau entri hooks — baik hooks/<name>.py yang dapat dieksekusi maupun konteks pesan anjuran di hooks/messages/<name>.md yang dikirimkan melalui dispatcher).

Mengenumerasi kohor

Konsumen memuat cohort-manifest.yaml, memvalidasinya terhadap cohort.schema.json, lalu mengiterasi cohorts[]. Untuk setiap kohor, konsumen membaca members.<type> untuk memperoleh pengenal anggota dari setiap tipe katalog.

Me-resolve target native per-harness (tanpa penurunan ulang)

Manifest kohor tidak menyatakan ulang pemetaan harness. Sebagai gantinya, per_harness_targets.source menunjuk ke lib/propagation-manifest.yaml, satu-satunya sumber kebenaran. Aturan resolusinya:

Untuk anggota kohor bertipe katalog T (salah satu dari skills, agents, commands, rules, hooks) dan harness target H (salah satu yang tercantum dalam per_harness_targets.harnesses), target plugin native adalah bidang target dari entri di lib/propagation-manifest.yaml di bawah harnesses.H.install yang source-nya cocok dengan T/.

Sebagai contoh, skill kohor core yang dipasang untuk claude_code di-resolve melalui entri harnesses.claude_code.install dengan source: "skills/" menjadi target: "${HARNESS_ROOT}/skills/". Skill yang sama untuk opencode di-resolve menjadi ${HARNESS_ROOT}/skills/; untuk gemini_cli menjadi ${PROJECT_ROOT}/.gemini/skills/. Konsumen tidak pernah mengarang target harness — mereka mencarinya.

Placeholder ${HARNESS_ROOT} / ${PROJECT_ROOT} di-resolve saat pemasangan oleh setiap adapter harness; konsumen kohor memperlakukan target yang telah di-resolve apa adanya.

Peran manifest plugin

plugin.schema.json mendeskripsikan sebuah plugin.json — bundel anggota katalog yang mendeskripsikan dirinya sendiri (skills / commands / agents / hooks / rules) dengan bidang wajib name, version SemVer, dan description. Metadata opsional mencakup displayName (nama yang ditampilkan sebagai pengganti name) dan bidang daftar direktori plugin: documentationUrl, supportUrl, privacyPolicyUrl, dan termsOfServiceUrl, masing-masing berupa URL https://, ditambah jalur icon di dalam plugin. Paket Claude Code yang dihasilkan menetapkan displayName, documentationUrl, dan supportUrl. Direktori Anthropic membaca bidang daftar tersebut dan Claude Code mengabaikannya saat memuat. Sinkronisasi marketplace claude.ai melaporkan kedua tautan itu sebagai kunci yang tidak dikenali dan menghapusnya, sehingga marketplace di sana menampilkan "1 with warnings". Peringatan itu memang diharapkan, dan plugin dimuat tanpa perubahan. Manifest plugin adalah unit yang dimaterialisasikan adapter harness ke permukaan plugin native-nya; kohor memilih anggota mana yang dibawa sebuah plugin, dan manifest propagasi me-resolve tempat anggota-anggota itu mendarat per harness.

Keputusan pemaketan — satu bundel payung, kohor logis

Kohor adalah lapisan seleksi logis (manifest ini), bukan sekumpulan bundel terpisah yang dapat dipasang secara independen. Apothem mengirimkan satu bundel payung yang membawa katalog lengkap; manifest kohor memungkinkan konsumen memilih subhimpunan yang koheren, dan manifest propagasi me-resolve tempat setiap anggota terpilih mendarat per harness.

Memecah katalog menjadi bundel per-kohor yang terpisah (mis. satu bundel per keluarga developer / security / research) dapat dicapai tanpa duplikasi di tingkat repositori melalui pola symlink meta-plugin yang didokumentasikan oleh permukaan distribusi utama: satu katalog marketplace mencantumkan beberapa plugin kohor, dan setiap direktori plugin kohor menyimpan symlink ke katalog bersama bersumber-tunggal alih-alih salinan. Ketika sebuah kohor dipasang, harness mendereferensi setiap symlink di dalam marketplace — menyalin isi target ke cache kohor tersebut — sehingga kohor yang terpasang bersifat mandiri, sementara repositori mempertahankan satu sumber kebenaran yang dirangkai oleh symlink (perangkaian alih-alih redundansi, persis seperti yang diutamakan disiplin deduplikasi). Pembacaan sebelumnya bahwa bundel kohor "menduplikasi secara mekanis" katalog mencampuradukkan duplikasi cache saat pemasangan (salinan per-plugin normal milik harness) dengan duplikasi repositori; pola symlink menghindari yang terakhir.

Apothem saat ini mengirimkan satu bundel payung karena itulah permukaan distribusi paling sederhana, bukan karena kohor mustahil secara mekanis. Mengadopsi bentuk per-kohor adalah pertukaran UX dan pemeliharaan yang sesungguhnya, bukan pelanggaran deduplikasi: keuntungannya adalah pengalaman "pasang hanya keluarga ini" yang lebih halus; biayanya adalah memelihara N direktori symlink kohor beserta entri marketplace-nya, permukaan konformitas / pengujian / golden yang lebih besar, dan salinan cache saat pemasangan per kohor. Lapisan kohor logis di atas sudah memberikan hasil seleksi "pasang hanya yang Anda butuhkan" dari bundel tunggal; pemaketan per-kohor adalah langkah berikutnya kapan pun pengalaman pemasangan yang lebih halus diinginkan.

On this page