hermes-forge
Skill4 starsChanged 48 days agoMITView on GitHub
Hermes⇄Forge boundary: Hermes CONSUMES Forge state, never a second source of truth. Use whenever a Hermes session runs on a Forge repo: at session start, before acting on an issue, or when you need CURRENT state. Read state ONLY via `forge orient` / `forge recap <issue-id>` (bounded JSON envelope), citing each source's `path`/`authority`; never reconstruct it from raw stores or kernel internals. Writeback ONLY via `forge comment`/`update`/`create`; NEVER leak Hermes profile or session memory into Forge state. Triggers: "orient me / current project state", "where did this fact come from, cite it", "orient came back truncated", "persist a decision into Forge", "safe to store in kernel state?". NOT the Forge session router over stage skills (kernel), NOT the human "what stage am I in" report (status), NOT everyday issue create/update/close/search CRUD (issue-basics), NOT ranking the next ready issue (triage-ready), NOT live PR monitoring (shepherd—outside Hermes, unseen by orient).
In this repository51 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .cursor/rules/permissions-guidance.mdcCursor rule
- claim-safetySkill
- devSkill
- gatesSkill
- hermes-forgeSkill
- issue-basicsSkill
- kernelSkill
- memorySkill
- parallel-deep-researchSkill
- planSkill
- portabilitySkill
- researchSkill
- reviewSkill
- rollbackSkill
- setupSkill
- shepherdSkill
- shipSkill
- smithSkill
- sonarcloud-analysisSkill
- sonarcloudSkill
- statusSkill
- triage-readySkill
- using-forgeSkill
- validateSkill
- verifySkill
- worktreeSkill
- claim-safetySkill
- devSkill
- gatesSkill
- issue-basicsSkill
- kernelSkill
- memorySkill
- parallel-deep-researchSkill
- planSkill
- portabilitySkill
- researchSkill
- reviewSkill
- rollbackSkill
- setupSkill
- shepherdSkill
- shipSkill
- smithSkill
- sonarcloud-analysisSkill
- sonarcloudSkill
- statusSkill
- triage-readySkill
- using-forgeSkill
- validateSkill
- verifySkill
- worktreeSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 3 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 46
Before acting on a specific issue (issue recap).
- Distinctive: line 90
Default budget: 2000 estimated tokens.
- Very specific: line 100
Every fact Hermes surfaces to a user MUST be attributable.
- Very specific: line 110
When Hermes states a project fact, cite at least the path and authority of the backing source.
- Very specific: line 129
Treat any truncated section as incomplete.
- Distinctive: line 170
If a piece of context only matters to Hermes, it belongs in Hermes-native memory.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Hermes ⇄ Forge consumption contract
Hermes is a consumer of Forge project state, not an owner of it. This skill defines how a Hermes session reads, cites, and writes back to a Forge project without ever becoming a second source of truth.
The boundary between what Forge owns and what Hermes owns is specified in the
Forge repo at docs/reference/HERMES_INTEGRATION.md (repo-relative path — this
skill is synced to .hermes/skills/hermes-forge/, so relative links would not
resolve from the installed location).
When to use
- At the start of any Hermes session on a Forge repo (orientation).
- Before acting on a specific issue (issue recap).
- Whenever you need current project state — never reconstruct it from raw files.
Authority: orient / recap are the only state source
The Forge Kernel is the single source of truth. Hermes obtains project state exclusively through two thin CLI wrappers and must not infer state by reading raw issue stores, design files, or kernel internals directly:
forge orient --json # bounded project orientation (envelope)
forge orient --budget 4000 --json
forge recap <issue-id> --json # bounded per-issue recap (envelope)forge orient and forge recap <issue-id> emit the deterministic JSON envelope
described below (assembly deterministic-file-assembly-v1). Parse the JSON; do
not screen-scrape the human text form.
Note:
forge recapalways requires an issue id — bareforge recap --json(no id) prints its usage and exits non-zero rather than returning a summary. Useforge orientfor project-level orientation, orforge recap <issue-id>for a single issue; both emit the deterministic envelope.
Envelope shape
| Field | Meaning |
schema_version | Contract version (currently 1). Reject unknown majors. |
kind | orientation, issue_recap, or prime. |
generated_at | Assembly timestamp. |
assembly | deterministic-file-assembly-v1 — same inputs ⇒ same output. |
token_budget | Budget accounting (see below). |
sections[] | Ordered content blocks, each independently cited. |
sources[] | Deduplicated provenance across all sections. |
next_commands[] | Suggested follow-up forge commands. Prefer these for navigation. |
Each sections[] entry: { id, title, content, sources, truncated, estimated_tokens }.
Token budget
forge orient / forge recap <issue-id> are bounded so they fit a context
window deterministically.
- Default budget: 2000 estimated tokens. Minimum honored: 40.
- Estimation is approximate:
token_budget.approximate === true,token_budget.chars_per_token === 4. token_budget.requestedis what you asked for;token_budget.usedis the estimate actually emitted.- Raise the ceiling with
--budget Nwhen you need more depth; do not retry blindly — request a specific larger budget.
Citation & provenance model
Every fact Hermes surfaces to a user MUST be attributable. Each section carries
sources: [{ path, source_kind, authority, role }]:
path— the file the content came from.source_kind— the kind of artifact (e.g. design, decision, claim, queue).authority— how authoritative the source is. Prefer higher-authority sources when two sources conflict; surface the conflict rather than silently picking one.role— the role the source plays in the section.
When Hermes states a project fact, cite at least the path and authority of
the backing source. The top-level sources[] is the deduplicated set for the
whole payload.
Truncation policy
Truncation is deterministic, never random:
- Non-preserved sections are trimmed in the order given by
token_budget.truncation_order; when the budget is exhausted, sections later in that order are trimmed first. Preserved sections are kept whole and trimmed only as a last resort if the payload is still over budget. The authoritative per-section signal is each section'struncatedflag andestimated_tokens— there is no per-sectionpriorityfield; the overall trim order istoken_budget.truncation_order. - A trimmed section ends with the literal marker
[truncated deterministically by token budget]and hastruncated: true. token_budget.truncated === truemeans the payload as a whole was trimmed.
Treat any truncated section as incomplete. Do not present a truncated
section as exhaustive; if completeness matters, re-request with a higher
--budget or recap the specific issue.
Writeback path: Hermes → Forge Kernel
Evidence and decisions discovered during a Hermes session flow back into the
Forge Kernel only through Forge CLI commands. Use the issue command surface
documented in the Forge repo at
docs/reference/forge-kernel-issue-command-contract.md:
forge comment <id> <body...> # attach evidence, a decision, or a note to an issue
forge update <id...> [flags] # update issue state/fields
forge create [title] [flags] # open a new issue for follow-up workNote:
forge auditis verify-only (forge audit verify) and does not append evidence — record evidence as an issue comment viaforge comment.
These writes land in the Forge Kernel issue store, where they become part of the
issue's durable history (view them via the issue itself, e.g. forge show <id>).
Note the read/write asymmetry: the bounded forge orient / forge recap
envelope is assembled from project docs, docs/work artifacts, and the issue
summary — it surfaces issue/design/decision state but does not echo
individual issue comments back. Do not assume evidence added via forge comment
reappears verbatim in the next orient/recap payload; it lives in the issue
history, reachable from the issue record.
No-profile-write guard (hard boundary)
Hermes MUST NOT write Hermes profile state, conversation memory, or any Hermes-native artifact into Forge Kernel state — not into kernel storage, not into design/decision files, not into the issue backend. Hermes-native memory stays in Hermes' own store.
- ✅ Read state via
forge orient/forge recap. - ✅ Write evidence/decisions via
forge comment/forge update. - ❌ Never persist Hermes profile/session memory into Forge Kernel state.
- ❌ Never edit Forge state files directly to record Hermes-side context.
If a piece of context only matters to Hermes, it belongs in Hermes-native memory. If it is a project fact, decision, or evidence item, write it through the Forge CLI so it becomes part of the shared, cited source of truth.
PR shepherd (external scheduler, not orientation)
The PR shepherd runs outside Hermes. An external scheduler invokes
forge shepherd <pr> as discrete bounded passes — each pass reads CI/check
state, takes at most one idempotent action (re-run a flaky required check), or
escalates, then exits. It never merges (the human merges in the GitHub UI)
and never resolves review threads.
Hermes does not run the shepherd and does not learn shepherd progress through
forge orient (which is deterministic-source orientation with no live PR
awareness). Shepherd progress is durable on the PR itself — its comments and
labels. When a Hermes session needs PR/CI status, read the PR directly; do not
expect orient to carry it.
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.

