Agents Best Practices
DenisSergeevitch/agents-best-practices
A skill your agent uses when designing, generating an MVP blueprint for, auditing, troubleshooting, refactoring, or explaining an agentic harness for any domain.
A skill your agent uses when installing, verifying or configuring OMNI, when command output carries an [OMNI: ...] marker, or when output looks shorter than expected.
$ npx skills add fajarhide/omni --skill omni -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install fajarhide/omni omni --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/fajarhide/omni.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/claude-code/skills/omni .claude/skills/omni && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "omni" agent skill from https://github.com/fajarhide/omni/tree/main/plugins/claude-code/skills/omni into .claude/skills/omni/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omni", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/fajarhide/omni/tree/main/plugins/claude-code/skills/omniType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add fajarhide/omni --skill omni -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install fajarhide/omni omni --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/fajarhide/omni.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/claude-code/skills/omni .agents/skills/omni && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "omni" agent skill from https://github.com/fajarhide/omni/tree/main/plugins/claude-code/skills/omni into .agents/skills/omni/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omni", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add fajarhide/omni --skill omni -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install fajarhide/omni omni --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/fajarhide/omni.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/claude-code/skills/omni .cursor/skills/omni && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "omni" agent skill from https://github.com/fajarhide/omni/tree/main/plugins/claude-code/skills/omni into .cursor/skills/omni/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omni", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/fajarhide/omni.git --path plugins/claude-code/skills/omni--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add fajarhide/omni --skill omni -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install fajarhide/omni omni --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/fajarhide/omni.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/claude-code/skills/omni .gemini/skills/omni && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "omni" agent skill from https://github.com/fajarhide/omni/tree/main/plugins/claude-code/skills/omni into .gemini/skills/omni/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omni", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install fajarhide/omni omniInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add fajarhide/omni --skill omni -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/fajarhide/omni.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/claude-code/skills/omni .github/skills/omni && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "omni" agent skill from https://github.com/fajarhide/omni/tree/main/plugins/claude-code/skills/omni into .github/skills/omni/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omni", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add fajarhide/omni --skill omni -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install fajarhide/omni omni --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/fajarhide/omni.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/claude-code/skills/omni .opencode/skills/omni && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "omni" agent skill from https://github.com/fajarhide/omni/tree/main/plugins/claude-code/skills/omni into .opencode/skills/omni/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omni", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
omniA skill your agent uses when installing, verifying or configuring OMNI, when command output carries an [OMNI: ...] marker, or when output looks shorter than expected.
Omni is an agent skill from fajarhide/omni. Use when installing, verifying or configuring OMNI, when command output carries an [OMNI: ...] marker, or when output looks shorter than expected. OMNI is a local hook that shortens shell output before the model reads it and hands back a handle for what it cut.
Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in AI & LLM Engineering, covering LLM cost and token optimization. It works with Model Context Protocol, Homebrew and Rust. The repository describes itself as: Your agent pays twice for output it has already seen. OMNI returns a handle instead: 97.2% off a file read twice. Nothing deleted, nothing invented. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit d351899. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
brewclaudeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Omni loads about 1.1k tokens when it runs. Until then it costs about 67 tokens; SKILL.md has 630 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from fajarhide/omni at commit d351899, republished under its Apache-2.0 licence (© fajarhide). 630 words, ~1,109 tokens.
.claude/skills/omni/SKILL.md (or your agent's skills folder).OMNI runs on the machine, as a hook the agent host calls. It rewrites the output of a shell tool call before the model reads it, and every cut it makes leaves a marker and a handle to fetch the bytes back. No account, no telemetry, nothing about the machine leaves it.
brew install fajarhide/tap/omni
omni initWithout Homebrew, take the release archive for the platform from
https://github.com/fajarhide/omni/releases, pull the line for that archive out
of the SHA256SUMS published beside it into a file of its own, and verify it
with sha256sum -c <that file>, or shasum -a 256 -c <that file> on macOS.
Then untar and put the binary on the path. Two things decide whether the check is
worth anything. The manifest line has to reach the tool as a file rather than a
pipe, because a grep that matches nothing sends an empty stream and macOS reads
that as a pass, so a mistyped archive name would install unverified. And the
verification has to gate the untar with &&, because a shell running pasted
lines carries on past a failed one.
Do not name a host you have not established you are running in. With no
terminal to draw its menu on, which is the case when an agent runs it, omni init
configures the host it is running inside and prints which one it picked. If it
cannot name the host, a plain shell for instance, it stops and lists the flags
rather than installing somewhere nobody asked for. Only then pick one:
--claude, --cursor, --codex, --gemini and the rest under
omni init --help. omni init --all takes every supported host and also writes
a .vscode/mcp.json in the working directory.
The hooks land in that host's own configuration, and the host has to restart before they run, so say that rather than reporting the install as active.
omni doctorA healthy install names the binary, the config directory, the database, and one line per host:
Binary: omni v0.7.5 [LATEST]
Config dir: ~/.omni/ [OK]
Database: ~/.omni/omni.db (0 distillations, 0 sessions) [OK]
Agent Integrations:
Claude Code: Full, 5 checks [OK]Full is the line to check: it means this host applies the rewrite, so the model
reads shortened output. MCP-only means memory and session state and no shell
distillation. omni doctor --fix repairs what it can, and reports what it could
not rather than claiming success.
A marker means bytes were cut and can be fetched back. Do not treat the shortened output as the whole output, and do not write a file back from output that carries one.
| marker | what happened |
|---|---|
[OMNI: 40 lines omitted, omni retrieve <handle> for full output] | the distiller kept the signal and archived the rest |
[OMNI: 40 lines already shown, omni retrieve <handle>] | those lines are in this session's context already |
[OMNI: identical to the 40 lines already shown, omni retrieve <handle>] | the whole re-run matched an earlier one |
[OMNI: 40 lines not shown here, omni retrieve <handle>] | another session in this project saw them and this one never did, so retrieve before relying on them |
[OMNI: identical to 40 lines from an earlier session, none shown here, omni retrieve <handle>] | the whole reply matched an earlier session's, and none of it arrived here |
[OMNI: 2 sensitive value(s) redacted] | values under a key that names a credential |
Pull the full bytes with the command the marker prints:
omni retrieve <handle>The omni_retrieve MCP tool does the same without a shell. Reach for either
whenever the answer depends on what was cut: a count, an exact line, or a file
being rewritten from what was read.
Corrupted output, a success reported for something that failed, or a marker
written into a file is a bug, not compression. Capture the command and its output
and file it at https://github.com/fajarhide/omni/issues, then get a clean copy
by running the command through omni exec with the pipeline off:
OMNI_PASSTHROUGH=1 omni exec <the command>© fajarhide, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/claude-code/skills/omni of fajarhide/omni.
Open the folder on GitHubat commit d351899
Omni next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Omni this skillfajarhide/omni | 374 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Agents Best PracticesDenisSergeevitch/agents-best-practices | 2.4k | — | ~7.4k | Automated safety check: Pass | MIT | |
| Flowflow Spacesmirkobozzetto/flowflow | 171 | — | ~1k | Automated safety check: Pass | EUPL-1.2 | |
| Agentbro Releaseshirenchuang/agentbro | 203 | — | ~2.5k | Automated safety check: Pass | Apache-2.0 | |
| CodexBar Usage Readersteipete/CodexBar | 22k | — | ~320 | Automated safety check: Pass | MIT | |
| Agenttrace Session Auditluoyuctl/agenttrace | 140 | 1 repos | ~656 | Automated safety check: Pass | MIT |
DenisSergeevitch/agents-best-practices
A skill your agent uses when designing, generating an MVP blueprint for, auditing, troubleshooting, refactoring, or explaining an agentic harness for any domain.
mirkobozzetto/flowflow
Use FlowFlow spaces safely through their scoped MCP server. An agent skill from mirkobozzetto/flowflow.
shirenchuang/agentbro
A skill your agent uses when releasing AgentBro from this repository: merging dev/main, bumping versions, updating release notes, tagging, pushing, monitoring GitHub Actions, Homebrew cask…
steipete/CodexBar
CodexBar read. Provider usage, limits, credits, config health. JSON. No writes.
luoyuctl/agenttrace
Audit local AI coding-agent sessions with agenttrace. An agent skill from luoyuctl/agenttrace.
bitrouter/bitrouter
A skill your agent uses when evaluating BitRouter route decisions or Eval Exchange subjects with task-native verifiers, human reviewers, private enterprise evaluators, agentic judges, or genuinely…
Works with
Categories
A skill your agent uses when installing, verifying or configuring OMNI, when command output carries an [OMNI: ...] marker, or when output looks shorter than expected. Omni is an agent skill from fajarhide/omni.] marker, or when output looks shorter than expected.
Omni fits situations like: configuring OMNI; command output carries an [OMNI: ...] marker; output looks shorter than expected.
Run `npx skills add fajarhide/omni --skill omni -a claude-code`. Or copy the skill folder (plugins/claude-code/skills/omni in fajarhide/omni) into .claude/skills/omni in your project. Claude Code loads it when a task matches its description.
Run `npx skills add fajarhide/omni --skill omni -a codex`. Or copy the skill folder (plugins/claude-code/skills/omni in fajarhide/omni) into .agents/skills/omni in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add fajarhide/omni --skill omni -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/omni, .gemini/skills/omni, .github/skills/omni and .opencode/skills/omni in your project.
Going by SKILL.md and its folder, Omni needs the command-line tools its instructions call (brew and claude).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Omni is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.1k tokens (SKILL.md is roughly 4.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Omni: Agents Best Practices (DenisSergeevitch/agents-best-practices, 2.4k stars), Flowflow Spaces (mirkobozzetto/flowflow, 171 stars), Agentbro Release (shirenchuang/agentbro, 203 stars) and CodexBar Usage Reader (steipete/CodexBar, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
fajarhide (a GitHub user) maintains it in fajarhide/omni, which has 374 GitHub stars. The repository was last updated on October 6, 2026.
Source: fajarhide/omni on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.