본문으로 건너뛰기
cccskills
무료GitHub에 공개한국어 소개

hermes-agent-skill-authoring

Hermes Agent 저장소에서 배포할 스킬을 공통 규약에 따라 만들고 수정합니다. 저장 위치와 SKILL.md 구성부터 테스트, 관련 문서 갱신까지 다룹니다.

원문원문 설명 보기

Author in-repo SKILL.md files: frontmatter and structure.

AI 평가90점/ 100설치 방법 보기

이럴 때 유용합니다

  • 재사용할 절차를 저장소 스킬로 정리
  • 기존 SKILL.md 수정
  • 기본 포함과 선택 설치 위치 결정
  • PR 전 설정·테스트·문서 확인

한국어 소개

할 수 있는 일

Hermes Agent 저장소에서 배포하는 스킬을 공통 작성 규약에 따라 만들고 수정합니다. 기본 포함 여부와 선택 설치 여부를 판단하고, 저장할 분류와 SKILL.md 앞부분의 YAML 설정, 본문 구성을 차례로 정리합니다. 지원 운영체제와 관련 스킬 확인, 테스트, 문서 생성, PR 작성 절차도 다룹니다.

이럴 때 유용합니다

재사용할 작업 절차를 Hermes Agent에 추가하거나 기존 스킬을 수정해 검토를 요청할 때 적합합니다. 설명 길이, 작성자 표기, 완료 여부를 확인할 수 있는 절차처럼 놓치기 쉬운 규약을 점검할 수 있습니다.

사용 예시

  • “이 작업을 저장소 안의 스킬로 정리하고 저장 위치와 본문 구성을 정해 주세요.”
  • “기존 SKILL.md를 작성 규약에 따라 확인하고 테스트와 문서도 갱신해 주세요.”

주의 사항

대상은 skills/와 optional-skills/ 아래이며, 개인용 ~/.hermes/skills/와는 생성 방법이 다릅니다. 규약의 기준은 대상 저장소의 AGENTS.md입니다. 검증에는 pytest 등을 사용합니다. 새 스킬은 생성한 세션의 로드된 스킬 목록에 반영되지 않습니다.

이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.

객관 평가

AI가 SKILL.md의 내용만을 근거로 4가지 관점에서 판정했습니다. 스타 수나 인기도는 판정에 넣지 않았습니다.

지시의 명확성언제 쓰고 무엇을 하는지 알 수 있는가
A양호저장소 스킬의 생성·수정을 대상으로 명시하고 개인용 스킬과의 차이도 설명합니다.
절차의 구체성절차·입출력·예시가 구체적으로 적혀 있는가
A양호저장 위치 선택, YAML 필수 항목, 글자 수 제한과 본문 구성을 구체적으로 제시합니다.
안전성전송·삭제·명령 실행 등을 명시하고 있는가
B일부 부족write_file과 git add를 사용하지만 기존 내용을 덮어쓰기 전 확인 절차는 없습니다.
도입의 용이성필요한 도구나 API 키가 적고 적혀 있는가
A양호대상 저장소와 Hermes 도구를 명시하며 추가 API 키를 요구하지 않습니다.

총점은 각 항목을 A=25점, B=15점, C=5점으로 더한 값입니다. 2026년 10월 20일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.

평가가 다르다고 생각되면 재검토를 요청하기

어느 항목이 왜 다르다고 생각하는지 적어 주세요. 로그인은 필요 없습니다. SKILL.md와 대조해 평가를 다시 만들고 이곳에 반영합니다.

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

포함된 파일(1)

  • SKILL.md14.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Authoring Hermes-Agent Skills (in-repo)

Overview

There are two places a SKILL.md can live:

  1. User-local: ~/.hermes/skills/<maybe-category>/<name>/SKILL.md — personal, not shared. Created via skill_manage(action='create').
  2. In-repo (this skill is about this case): skills/<category>/<name>/SKILL.md or optional-skills/<category>/<name>/SKILL.md inside the hermes-agent repo — committed, shipped with the package. Use write_file + git add. skill_manage(action='create') does NOT target this tree.

In-repo skills must meet the repo's hardline authoring standards (see AGENTS.md, "Skill authoring standards (HARDLINE)" — that section is the source of truth; this skill is the operational walkthrough). Reviewers reject PRs that violate them, so meeting them up front is cheaper than a salvage pass later.

When to Use

  • User asks you to add a skill "in this branch / repo / commit"
  • You're committing a reusable workflow that should ship with hermes-agent
  • You're editing an existing skill under skills/ or optional-skills/ (use patch for small edits, write_file for rewrites; skill_manage still works for patch on in-repo skills, but not for create)
  • Don't use for: personal skills in ~/.hermes/skills/ (just use skill_manage)

Decide the Tier First: Bundled vs Optional

  • Bundled (skills/<category>/) — daily-driver behavior, broadly useful across many user types, low footprint. Hard bar: you can say "a user will load this in 5+ sessions per month" with a straight face.
  • Optional (optional-skills/<category>/) — niche, vertical-specific (blockchain, gaming, finance, one app), recurring-job/task skills, or anything heavy. Installed via hermes skills install official/<category>/<skill>.

When in doubt, optional. Promoting later is easy; demoting is churn. "Would be useful to anyone who ever needs this" is an optional-tier argument, not a bundled one.

Pick the category by what the tool IS, not what it feels like (an AI-agent CLI goes in autonomous-ai-agents/ even if it "feels productivity"). Confirm existing categories with search_files(pattern='*', target='files', path='skills') and don't invent new top-level categories casually.

No router / index / hub skills. A skill whose core content is a routing table pointing at sibling skills adds an indirection hop and duplicates the siblings' own When to Use triggers. If the skill would be empty without "load skill X instead" pointers, don't write it — the catalog and each sibling's triggers already do that job.

Required Frontmatter

Validator source of truth: tools/skill_manager_tool.py::_validate_frontmatter. Validator hard requirements:

  • Starts with --- as the first bytes (no leading blank line).
  • Closes with \n---\n before the body.
  • Parses as a YAML mapping.
  • name field present.
  • description field present (validator ceiling 1024 chars — but see the repo hardline below, which is much stricter).
  • Non-empty body after the closing ---.

Repo-standard shape (all fields expected, even where the validator doesn't enforce them):

---
name: my-skill-name               # lowercase, hyphens, ≤64 chars (MAX_NAME_LENGTH)
description: Concise capability statement, under sixty chars.
version: 0.1.0                    # semver; new skills start at 0.1.0
author: Real Name (github-handle), Hermes Agent
license: MIT
platforms: [linux, macos, windows]   # audit, don't guess — see Platform Gating
metadata:
  hermes:
    tags: [Short, Descriptive, Tags]
    related_skills: [other-in-repo-skill]
---

description rules (HARDLINE — the validator's 1024 is NOT the standard)

  • ≤ 60 characters. One sentence. Ends with a period.
  • State the capability, not the implementation, and don't repeat the skill name.
  • No marketing words ("powerful", "comprehensive", "seamless", "advanced").
  • The system prompt skill index truncates at 57 chars + "..." — the trigger/capability must be self-contained in that window.
  • If the description contains a :, wrap it in double quotes or YAML parses it as a mapping and the docs generator crashes. Quotes don't count toward the 60.

Good: Track named companies for material news with cited digests. Bad: Use when a user asks to monitor named competitors or companies for product launches, pricing changes, funding, ... (240 chars — rejected in review)

author rules

  • Credit the human first, then "Hermes Agent" as secondary collaborator: Ben Barclay (benbarclay), Hermes Agent.
  • Never author: Hermes Agent alone for contributed skills — credit the human, not the tool, even (especially) when an agent drafted the text.
  • Maintainer-authored skills: Teknium (teknium1), Hermes Agent.

related_skills rules

  • Every entry must resolve to an existing in-repo skill in the same tree state as your PR. Do not reference skills that were only planned, live in another PR, or exist only in ~/.hermes/skills/.
  • Verify each entry: search_files(pattern='<name>', target='files', path='skills') (and optional-skills/).

Platform Gating: audit, don't trust

platforms: gates loading by host OS. Set it from what the skill's prose and scripts actually invoke:

Skill uses only…platforms:
Hermes tools + stdlib Python + cross-platform CLIs[linux, macos, windows]
bash pipelines, grep/awk/sed chains, heredocs[linux, macos]
osascript, defaults, pmset[macos]
apt/systemctl//proc[linux]
<!-- no-tmp: ok — names the anti-pattern skill authors must avoid -->

POSIX-only signals to search for in scripts/: fcntl, termios, pty, os.fork, os.killpg, signal.SIGKILL, os.kill(pid, 0) liveness checks, hardcoded /tmp /proc /etc. Default posture: fix cross-platform first (tempfile.gettempdir(), pathlib.Path, psutil.pid_exists); gate narrower only when the dependency is genuinely platform-bound, and say why in ## Pitfalls.

Size Limits

  • Full SKILL.md: ≤ 100,000 chars enforced (MAX_SKILL_CONTENT_CHARS), but target ~100 lines for a simple skill, ~200 for a complex one. Peer skills sit at 8-14k chars.
  • Bulky or branch-specific material goes in references/*.md, templates/, or scripts/ — pointed to from SKILL.md, not inlined.
  • Don't expect the model to inline-write parsers or non-trivial logic every call — ship a helper script in scripts/ and reference it by path.

Body Structure (modern section order)

# <Skill> Skill
2-3 sentence intro: what it does, what it doesn't do, dependency stance.

## When to Use          — bulleted triggers (+ "Don't use for:" counter-triggers)
## Prerequisites        — exact env vars, installs, API key sourcing
## How to Run           — canonical invocation through the `terminal` tool
## Quick Reference      — flat command list, no narration
## Procedure            — numbered steps, each with a checkable completion criterion
## Pitfalls             — known limits, things that look broken but aren't
## Verification         — how to prove the skill worked

Not every section applies to every skill (a pure-procedure task skill may have no Quick Reference), but When to Use + actionable body + Pitfalls + Verification are the minimum. Cut marketing intros, "Setup Check" no-ops, and re-explanations of env vars already in Prerequisites.

Reference Hermes tools, not raw shell

When the skill needs a capability, name the proper Hermes tool in backticks: terminal, read_file, write_file, patch, search_files, web_search, web_extract, browser_navigate, vision_analyze, delegate_task, cronjob. Do NOT name shell utilities the agent already has wrapped (grep → search_files, cat → read_file, sed/awk → patch, find/ls → search_files target='files'). A CLI-wrapper skill should frame invocations as terminal(command="{tool} ...", timeout=...) — bare shell prose ("run foo --version") is a review-blocking non-conformance. If the skill depends on an MCP server, name it and document setup in Prerequisites.

Never use machine-local paths

Write repo-relative paths (skills/..., tools/skill_manager_tool.py). A /home/<you>/... path baked into a committed skill breaks for every other user and is an instant review flag.

Writing Quality Principles

A skill exists to make the agent's process more predictable — the agent reliably follows the same useful discipline.

  1. Optimize for process predictability. If a line does not change behavior, cut it.
  2. Choose the right context load. The description is paid for every turn; details go in the body or linked references.
  3. End steps with completion criteria. Checkable and, when it matters, exhaustive: "every modified file accounted for" beats "summarize changes."
  4. Co-locate rules with the concept they govern.
  5. Use strong leading words ("tight loop," "root cause," "regression test") over long repeated explanations.
  6. Prune duplication and no-ops. "Be careful" and "use best practices" don't change model behavior — replace with a checkable criterion or delete.

Tests and Docs (required for repo skills)

  1. Tests live at tests/skills/test_<skill>_skill.py — stdlib + pytest + unittest.mock only, no live network. Run via scripts/run_tests.sh tests/skills/test_<skill>_skill.py -q. (The generic tests/tools/test_skill_manager_tool.py passing proves nothing about YOUR skill.)
  2. Docs regen: run python website/scripts/generate-skill-docs.py, then apply scope discipline — the generator rewrites EVERY auto-gen page. git checkout -- everything that isn't yours; the final diff must show only your SKILL.md, your one per-skill docs page, a one-line catalog row, and a one-line website/sidebars.ts insertion (verify with search_files(pattern='<your-slug>', path='website/sidebars.ts') — exactly one hit, or the page is an orphan).
  3. .env.example (only if the skill needs new env vars): one clearly delimited commented block; touch nothing else in the file.

Workflow

  1. Survey peers in the target category with search_files(target='files') and read 2-3 peer SKILL.md files to match tone and structure. Prefer extending an existing skill over creating a narrow sibling.
  2. Decide tier and category (see above). When in doubt, optional — and ask before pushing rather than defaulting.
  3. Draft with write_file to skills/<category>/<name>/SKILL.md (or optional-skills/...).
  4. Validate locally:
    import re, pathlib
    from ruamel.yaml import YAML
    content = pathlib.Path("skills/<category>/<name>/SKILL.md").read_text()
    assert content.startswith("---")
    m = re.search(r'\n---\s*\n', content[3:])
    fm = YAML(typ="safe").load(content[3:m.start()+3])
    assert "name" in fm and "description" in fm
    assert len(fm["description"]) <= 60, f"description {len(fm['description'])} chars — hardline is 60"
    assert fm["description"].endswith(".")
    assert "platforms" in fm
    assert len(content) <= 100_000
    
    Also verify every related_skills entry exists in-repo.
  5. Add tests + regen docs (previous section).
  6. Git add + commit on the active branch; open a PR.
  7. Note: the CURRENT session's skill loader is cached — skill_view / skills_list will not see the new skill until a new session. This is expected, not a bug.

Editing Existing In-Repo Skills

  • Small fix: skill_manage(action='patch', ...) works on in-repo skills, as does patch.
  • Major rewrite: write_file the whole SKILL.md.
  • Supporting files: write_file to references/, templates/, or scripts/ under the skill dir.
  • Always commit — in-repo skills are source, not runtime state. Re-run the docs generator when frontmatter changed.

Common Pitfalls

  1. Using skill_manage(action='create') for an in-repo skill. It writes to ~/.hermes/skills/, not the repo tree. Use write_file.
  2. Trusting the validator's limits as the standard. The validator allows 1024-char descriptions; review rejects anything over 60. The validator doesn't check platforms:, author format, tests, or docs — review does.
  3. author: Hermes Agent on a contributed skill. Credit the human first.
  4. Leading whitespace before ---. Validation fails on any leading blank line or BOM.
  5. Description too generic or trigger buried past char 57.
  6. related_skills pointing at skills that don't exist in-repo (user-local, planned, or in a sibling PR).
  7. Duplicating a peer. Survey the category first; extend rather than sibling.
  8. Skipping the docs generator or pushing its unrelated drift. Both directions are wrong: no regen = orphan skill with no docs page; blind regen = a ballooned diff full of other skills' drift.
  9. Expecting the current session to see the new skill. The loader is initialized at session start.
  10. Letting skills accumulate sediment. When adding a rule, remove the old wording it replaces.

Verification Checklist

  • Tier decided deliberately (bundled bar: 5+ sessions/month; else optional-skills/)
  • File at skills/<category>/<name>/SKILL.md or optional-skills/<category>/<name>/SKILL.md
  • Frontmatter starts at byte 0 with ---, closes with \n---\n
  • name, description, version, author, license, platforms, metadata.hermes.{tags, related_skills} all present
  • Description ≤ 60 chars, one sentence, ends with a period, no marketing words
  • author credits the human contributor first
  • platforms: audited against actual prose/scripts, not copied from a sibling
  • Every related_skills entry resolves in-repo
  • Body follows the modern section order; commands framed through Hermes tools
  • No machine-local paths anywhere in the file
  • Each ordered step has a checkable completion criterion
  • Tests at tests/skills/test_<skill>_skill.py pass under scripts/run_tests.sh
  • Docs regenerated with scope discipline; sidebar has exactly one entry for the slug
  • git add + commit on the intended branch; PR opened

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

1password

무료요약 있음AI 평가 100점

1Password에 저장한 비밀번호와 API 키를 명령과 설정 템플릿에 사용합니다. CLI 설치와 인증부터 비밀 값 조회 및 환경 변수 전달까지 안내합니다.

  • 1Password CLI 설치와 설정
  • 저장된 API 키로 명령 실행
  • 설정 템플릿에 비밀 값 삽입
NousResearch/hermes-agent25.6만2026년 10월 21일 업데이트

3-statement-model

무료요약 있음AI 평가 90점

손익계산서·재무상태표·현금흐름표를 수식으로 연결한 Excel 모델을 만듭니다. 실적과 예측 가정을 입력하고 시나리오를 비교하며 세 재무제표의 일관성을 단계별로 확인합니다.

  • 재무 템플릿에 실적 입력
  • 세 재무제표가 연동되는 예측 작성
  • 기본·상향·하향 시나리오 비교
NousResearch/hermes-agent25.6만2026년 10월 21일 업데이트

accelerate

무료요약 있음AI 평가 80점

기존 PyTorch 학습 코드를 적은 수정으로 여러 GPU나 컴퓨터에 맞게 구성합니다. 혼합 정밀도, 메모리 절약 설정과 학습 실행 방법을 안내합니다.

  • 단일 GPU 학습을 여러 GPU로 옮깁니다
  • 혼합 정밀도 학습을 설정합니다
  • DeepSpeed나 FSDP로 메모리를 절약합니다
NousResearch/hermes-agent25.6만2026년 10월 21일 업데이트

actual-setup

무료요약 있음AI 평가 100점

Hermes에서 Actual Computer로 자신의 기기에 AI 모델을 실행하도록 연결을 설정합니다. 중계 서비스와 로컬 연결, 모델 선택, 응답 확인 및 오류 점검을 다룹니다.

  • Actual 키로 Hermes를 연결합니다
  • 자신의 기기에서 모델을 실행합니다
  • 로컬 모델을 찾아 내려받고 불러옵니다
NousResearch/hermes-agent25.6만2026년 10월 21일 업데이트

adversarial-ux-test

무료요약 있음AI 평가 80점

기술에 익숙하지 않고 쉽게 불만을 느끼는 사용자로 앱을 시험합니다. 혼란스러운 조작과 이탈 원인을 찾고, 개선 과제와 개인적 불만을 나눠 수정안을 정리합니다.

  • 출시나 시연 전에 사용성을 확인합니다
  • 신규 사용자의 경험을 점검합니다
  • 가입과 결제 과정의 어려움을 찾습니다
NousResearch/hermes-agent25.6만2026년 10월 21일 업데이트

agent-merge-conflict-arbiter

무료요약 있음AI 평가 100점

두 에이전트가 각각 수정한 브랜치의 Git 충돌을 양쪽 변경 내용과 의도에 따라 중립적으로 해결합니다. 충돌별 판단 이유를 기록하고 빌드나 테스트로 통합 결과를 확인합니다.

  • 두 에이전트의 브랜치 충돌 해결
  • 병렬 worktree의 변경 내용 통합
  • 충돌하는 설계 판단의 이유 확인
NousResearch/hermes-agent25.6만2026년 10월 21일 업데이트

NousResearch의 스킬 모두 보기

이 스킬의 문제 신고