office-skill-distribution
Skill0 starsChanged 19 days agoMITView on GitHub
Use when distributing shared skills across Hermes profiles.
In this repository86 other files it gives its agents.
- ai-assistant-editor-setupSkill
- api-and-interface-designSkill
- banner-designSkill
- brainstormingSkill
- caveman-exploreSkill
- caveman-reviewSkill
- chat-silence-diagnosisSkill
- ci-cd-and-automationSkill
- code-auditSkill
- codebase-designSkill
- koordinator-team-dispatchSkill
- constraint-driven-developmentSkill
- context-engineeringSkill
- cpanel-shared-hosting-deploySkill
- cross-profile-cron-opsSkill
- deprecation-and-migrationSkill
- documentation-and-adrsSkill
- domain-modelingSkill
- doubt-driven-developmentSkill
- finishing-a-development-branchSkill
- frontend-designSkill
- git-workflow-and-versioningSkill
- graphic-design-laneSkill
- hermes-gateway-web-uiSkill
- hermes-profile-hygieneSkill
- hermes-profile-provisioningSkill
- hermes-service-persistenceSkill
- hermes-stream-stale-diagnosisSkill
- hermes-team-dashboardSkill
- idea-refineSkill
- incremental-implementationSkill
- indonesian-official-lettersSkill
- internal-commsSkill
- interview-meSkill
- investigate-firstSkill
- kanban-rate-limit-resilienceSkill
- karpathy-guidelinesSkill
- large-project-gated-deliverySkill
- lean-buildSkill
- live-agent-office-operationsSkill
- live-react-runtime-qaSkill
- live-web-release-verificationSkill
- markdown-pdf-pipelineSkill
- marketing-strategySkill
- meta-social-publishingSkill
- meta-threads-oauth-lifecycleSkill
- migrationSkill
- multi-profile-project-orchestrationSkill
- network-operationsSkill
- observability-and-instrumentationSkill
- organization-site-menu-researchSkill
- performance-optimizationSkill
- php-upload-size-limitsSkill
- planning-and-task-breakdownSkill
- ponytail-auditSkill
- ponytail-debtSkill
- ponytail-reviewSkill
- ponytailSkill
- portable-app-handoffSkill
- receiving-code-reviewSkill
- The first 60 shown.
The file
Files
When to Use
Pakai saat owner minta "pasang/bagikan skill ke profil tertentu", saat menambah skill baru ke kantor, atau saat sebuah profil melaporkan skill hilang/kebanyakan. Mekanisme, perintah, verifikasi 4 lapis, dan jebakan ada di bagian bawah.
Distribusi skill bersama per profil (tanpa duplikasi)
Pustaka kantor: ~/.hermes/skills-office (53 skill, satu salinan fisik).
Dua tuas, keduanya per profil di <root>/config.yaml:
skills.external_dirs: [~/.hermes/skills-office]→ skill terdeteksi.skills.disabled: [...]→ hanya profil yang berhak yang dapat skill itu (dipakaiagent/prompt_builder.pyuntuk iklan skill di prompt DANtools/skills_tool.pyuntuk skill_view). Jadi relevansi diatur tanpa menyalin file, dan skill tak relevan tidak membakar token tiap request.
Peta sebaran (peran → jumlah aktif): default 53, koordinator 49, code-analyst 47,
program-developer 46, koordinator 45, planner 27, netops 16, marketing 13,
social-media 12, graphic-designer 10, sales-analyst 10. Daftar mesin-baca +
alasan per peran: .office-skill-map.json (kunci assign = daftar skill
AKTIF, bukan dimatikan) dan README.md di folder itu.
Provenance batch 28 Okt 2026 (10 skill, 5 repo): pbakaus/impeccable
(Apache-2.0, jalur .hermes/ resmi upstream), miqdadbadjuber/anti-slop
(MIT, core antislop + 5 sub; profil dengan sub WAJIB punya core),
conorbronsdon/avoid-ai-writing (MIT, self-contained), hardikpandya/stop-slop
(MIT), petergyang/no-ai-slop (MIT). Sudah diaudit: lisensi permisif semua,
tanpa injeksi prompt/eksfiltrasi. Dependensi teruji: impeccable (engine Go
ter-cache di ~/.impeccable, telemetry sudah dimatikan), node v26
untuk avoid-ai-writing/detector, python3 untuk antislop-human.
Sumber upstream lengkap: ~/.hermes/upstream-sources/office-2026-10-28.
Provenance: 16 skill dari github.com/addyosmani/agent-skills (14 sudah ada
sejak awal + 4 baru 27 Okt: git-workflow-and-versioning, idea-refine,
interview-me, spec-driven-development — patch AskUserQuestion/Glob ke
cara Hermes sebelum dipasang). 7 kandidat addyosmani ditolak karena duplikasi
fungsi; daftar lengkap + alasannya di README folder.
Cara mengubah sebaran
hermes -p <profile-id> config set skills.disabled '<json array of nama yang dimatikan>'- Selalu
-p <profile-id>eksplisit (defaultnya profil sendiri). - Peringatan
"not a recognized config key ... saved anyway"itu benign: key tetap tersimpan dan terbaca_skills_cfg. Verifikasi tetap wajib. auto_loadboleh diubah hanya kalau skill itu relevan peran dan badannya kecil. Aturan: badan < 6.000 char, dan skill harus AKTIF di profil itu (auto_load + disabled berlawanan = skill di-skip, bukan error, tapi diam-diam). Status per profil 28 Okt:.autoload-status-2026-10-28.mddi folder pustaka.
Mekanisme "tanpa disuruh" — lapis SOUL.md (28 Okt 2026)
Untuk memaksa satu profil memakai kumpulan skill tertentu tanpa owner perlu menyebutnya, urutan mekanisme dari yang paling murah:
- SOUL.md protocol block — pilihan terbaik. SOUL.md di-render ke
stable_parts, jadi biayanya sekali per sesi, bukan tiap turn, dan selalu ada di prompt. Tulis blok## MANDATORY SKILL PROTOCOLberisi urutan kerja- skill yang wajib dipanggil
skill_view+ stop condition. Sudah dipakai di program-developer, code-analyst, graphic-designer (backup.bak-protocol-<ts>).
- skill yang wajib dipanggil
- auto_load — untuk badan < 6.000 char yang memang selalu relevan.
- Deskripsi — untuk skill besar (badan 10-45K char); deskripsi masuk tiap
turn, badan menyusul saat model memanggil
skill_view.
Skill besar jangan pernah di-auto_load: task-observer 44447,
design-taste-frontend 40724, avoid-ai-writing 32953, graphify 38465.
Contoh SOUL.md block yang sudah terpasang: 3 profil eksekusi
(program-developer / code-analyst / graphic-designer, ## MANDATORY SKILL
PROTOCOL versi engineer) dan planner (## MANDATORY SKILL PROTOCOL — peran
program planner, 12 langkah). Backup .bak-protocol-<ts>. Verifikasi: 6
layer — L1 bentuk YAML, L2 resolve==config, L3 missing=0, L4 no kolisi
disabled, L5 blok benar-benar masuk load_soul_md(), L6 SEMUA skill yang
disebut di blok harus LOADS (kalau DISABLED → perbaiki config, jangan
pangkas bloknya).
Pitfall: backup dir — jangan iterate string (insiden 28 Okt 2026)
Jangan pernah menulis backup loop sebagai for d in PATH + "/skills": —
variabel itu string, jadi loop per KARAKTER. Satu karakter "/" lulus cek
os.path.isdir("/") → shutil.copytree("/", "/.bak-...") menyalin seluruh
filesystem root. Kasus nyata: artefak 64 GB di /, disk 45% → penuh, script
hang sampai timeout.
Aturan: simpan path ke variabel dulu (SKILLS = f"{HOME}/skills"), lalu for
di list literal nama skill. Selalu curigai copytree yang mungkin menyentuh
/, /root, atau /home. Backup yang benar untuk restore-additive (graphify)
bahkan tidak perlu copytree — cukup if not os.path.isdir(dst).
Verifikasi: hati-hati bug di VERIFIER-nya sendiri
Tiga kali sesi ini layer False ternyata salah di skrip verifikasi, bukan di
konfigurasi. Pola yang terbukti:
- Cross-process mismatch — membandingkan list milik subprocess profil
dengan
resolve_auto_load_skills()yang dipanggil di proses induk (config berbeda) → selaluFalse. Jalankan assertion di SATU proses. - Urutan itu bermakna —
resolved == sorted(resolved)salah; urutan auto_load harus persis seperti di config (request-token-efficiencydulu). all()melahap list kosong —all([True, [], True]) == Falsepadahal[]berarti "tidak ada pelanggaran" = lulus. Pisahkan pengecekan list.
Kalau hasil verifikasi aneh, perbaiki dulu verifier-nya, jangan langsung
mengubah config. Simpan print isi list mentah tiap layer supaya bisa bedakan
"config salah" vs "assertion salah".
graphify (dipulihkan 28 Okt 2026)
Skill graphify, graphify-query-first, graphify-request-hemat sempat dipindah
ke ~/.hermes/_disabled-graphify/<role>/skills/ pada 22 Okt tanpa catatan
alasan. Kini dipulihkan ke program-developer, code-analyst, graphic-designer.
Plugin graphify-bridge sejak awal aktif (tools graphify_query/graphify_update
- hook
pre_tool_callyang mengalihkan grep buta ke graph lokal). Graph lokal offline = 0 request API. Verifikasi nyata 28 Okt:graphify_querybalas 91 node dari graph 308.556 node.
Memasang skill baru ke beberapa profil sekaligus
Skill yang ditulis lewat skill_manage mendarat hanya di profil sendiri
(~/.hermes/profiles/<id>/skills/<kategori>/<nama>/SKILL.md). Untuk kelas kerja
yang harus dipakai beberapa peran (mis. playbook delivery web), salin berkasnya ke
tiap profil sasaran, jangan mengandalkan external_dirs kalau skill itu belum masuk
~/.hermes/skills-office:
for pr in ['program-developer', 'code-analyst', 'graphic-designer', 'planner']:
dst = f'~/.hermes/profiles/{pr}/skills/web/<nama-skill>'
os.makedirs(dst, exist_ok=True)
shutil.copy2(SRC_SKILL_MD, dst + '/SKILL.md')Verifikasi per profil — grep nama pendek, bukan nama penuh: kolom nama di
hermes skills list terpotong ±15 huruf, jadi grep -c '<nama-penuh>' selalu 0
padahal skill-nya enabled.
HERMES_PROFILE=<id> hermes skills list | grep -i '<12-huruf-pertama-nama>'Aturan tambahan: description di frontmatter dibatasi 60 char dan itulah yang
masuk prompt tiap turn — taruh frasa pemicu bahasa Indonesia owner di situ, karena
badan skill baru terbaca saat model memanggil skill_view. Setelah menyalin,
selaraskan kembali: sumber diubah → salin ulang ke semua profil (salinan tidak
otomatis ikut).
Mau tahu skill/tool apa yang benar-benar dipakai tiap profil sebelum memutuskan
apa yang dipasang/di-auto_load? Resep audit dari state.db: references/skill-usage-audit.md.
Verifikasi wajib (4 lapis, semua harus lolos)
# 1) bentuk YAML: skills.disabled == ALL - peta
# 2) loader API
HERMES_HOME=~/.hermes/profiles/<id> python3 -c \
"import sys; sys.path.insert(0,'~/.hermes/hermes-agent'); \
import agent.skill_utils as su; print(sorted(su.get_disabled_skill_names()))"
# 3) hitungan CLI (baris kolom source = external)
hermes -p <id> skills list --enabled-only --source local
# 4) probe prompt: jumlah nama skill yang benar-benar muncul di banner
HERMES_HOME=... python3 -c \
"import sys; sys.path.insert(0,'~/.hermes/hermes-agent'); \
from agent.prompt_builder import build_skills_system_prompt; \
t=build_skills_system_prompt(); print(sum(1 for n in NAMES if n in t))"Lapis 4 adalah satu-satunya yang mengukur apa yang dilihat model; jalankan setelah setiap perubahan config.
Jebakan yang sudah ketemu
~/.hermes/profiles/defaultitu ORPHAN, bukan profil. Roster asli ditentukanhermes profile list; profil root =~/.hermes. Bug klasik: loophomes[d] = ...di atas direktori profiles menimpa kuncidefaultdengan path orphan → hasil 0 skill terlihat seperti kegagalan padahal pengukurannya salah arah. Kunci path per profil harus dijaga manual.hermes skills inspect <nama>menelusuri registry remote, bukan katalog lokal; menemukan beberapa kandidat ≠ ada duplikat di lokal..office-skill-map.jsonbisa hilang sesaat saat dibaca (dua kali ketemu FileNotFoundError lalu bisa lagi — dugaan penulisan ulang proses kurator). Baca peta dengan retry (6× jeda 0,7 dtk) sebelum menganggapnya rusak.- Snapshot prompt (
.skills_prompt_snapshot.jsondi tiap root) hanya menyimpan tier lokal; tier external selalu dipindai live, jadi snapshot tidak perlu dihapus saat menambah external dir. - Nama terpotong di tabel
hermes skills list(kolom nama max 15 huruf) → jangan hitung/cocokkan nama dari tabel; pakai baris--enabled-onlyatau API loader. - Rollback: hapus blok
disabled:di config profil, atau pakaiconfig.yaml.bak-before-office-skillsdi direktori profil.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

