Omh V18 Loop Taxonomy logo

Omh V18 Loop Taxonomy

Community
witt3rd
omh-v18-loop-taxonomy

Saturate loop kind taxonomy: six typed loop kinds, per-kind specs, turn results, terminal states. OMH v18 skill→kind mapping.

Overview

Publisherwitt3rd
Repositoryoh-my-hermes
Skill nameomh-v18-loop-taxonomy
Stars
371
Forks
33
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by witt3rd on GitHub. Read the source before you install it.

Installation

Install the Omh V18 Loop Taxonomy AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/witt3rd/oh-my-hermes/tree/master/plugins/omh/skills/omh-v18-loop-taxonomy
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/witt3rd/oh-my-hermes.git /tmp/oh-my-hermes
mkdir -p .claude/skills
cp -r /tmp/oh-my-hermes/plugins/omh/skills/omh-v18-loop-taxonomy .claude/skills/omh-v18-loop-taxonomy
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Omh V18 Loop Taxonomy in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Omh V18 Loop Taxonomy on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Omh V18 Loop Taxonomy is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

OMH v18 Loop Taxonomy

The loop taxonomy lives in Saturate and OMH maps to it. Every OMH skill is an instance of a Saturate loop kind. The kind determines iteration semantics, turn result types, terminal states, and spec schema.

Source of truth: ~/src/witt3rd/saturate/ARCHITECTURE.md (Loop Taxonomy section) OMH architecture: ~/src/witt3rd/oh-my-hermes/docs/v18/architecture.md


The Six Loop Kinds

python
class MetricOptimizationKind(LoopKind): pass  # hypothesis → measure → keep/revert
class ConsensusKind(LoopKind):          pass  # agents deliberate until agreement
class TaskExecutionKind(LoopKind):      pass  # tasks executed until plan verified
class InformationSeekingKind(LoopKind): pass  # search until gaps close
class ClarificationKind(LoopKind):
    HUMAN_GATED: ClassVar[bool] = True        # ONLY human complete() ends this
class SelectionKind(LoopKind):          pass  # spawn N candidates, keep top-k, repeat

Plus structural (non-loop) kinds: BatchKind (fan-out/synthesize), OnceKind (single execution).


OMH Skill → Loop Kind Mapping

OMH SkillSaturate LoopKindNotes
omh-ralplanConsensusKindPlanner/Architect/Critic until AllApprove
omh-ralphTaskExecutionKindTasks executed until plan verified complete
omh-autopilotTaskExecutionKindMulti-phase pipeline
omh-deep-researchInformationSeekingKindSearch until gaps close
omh-deep-interviewClarificationKind (HUMAN_GATED)NO queue backend
omh-triageBatchKindFan-out, no loop state
omh-autoresearch (Arc 2)MetricOptimizationKindFuture
Future evolutionarySelectionKindFuture

ClarificationKind.HUMAN_GATED is structural

The scheduler NEVER marks a ClarificationKind task terminal. There is no should_terminate overload for it. Only an explicit human complete() call ends it. This is a type property, not configuration.

omh-deep-interview does NOT post to the work queue. It manages state via plain file I/O to .omh/state/interview--{id}.json. The sentinel (.omh/specs/*-spec.md with status: confirmed) is the output.


Per-Kind Turn Result Algebras (key patterns)

MetricOptimizationKind:

python
Accepted(hypothesis, previous_value, new_value)  # keep + advance baseline
Discarded(hypothesis, reason: Regressed|Crashed|Unchanged)  # revert
# crashed ≠ regressed — crashed does NOT update baseline stats

ConsensusKind:

python
RoundComplete(round, verdicts: Dict[Role, Verdict])
ConsensusReached(proposal, rounds)
# Terminal: ConsensusTerminalReached | Deadlocked | Blocked | Cancelled

TaskExecutionKind:

python
TaskPassed(task_id, learning)
TaskFailed(task_id, error_fingerprint)
AllTasksPassed(summary)
# Terminal: PlanComplete | PlanBlocked | Exhausted | Cancelled

InformationSeekingKind:

python
FindingsAdded(new_findings, remaining_gaps)
Sufficient(findings)
# Terminal: InformationSufficient | InformationExhausted | Cancelled

ClarificationKind (HUMAN_GATED):

python
CoverageUpdated(dimension, new_level)
HumanConfirmed(spec)  # only terminal — no automatic predicate

The Four-Operation Queue Interface

OMH v18 plugin exposes omh_queue with these operations:

post(mode, instance_id, kind, name, ...)    → task_id
claim(mode, instance_id)                    → ClaimResult{status: claimed|not_found|running}
release(mode, instance_id)                  → None  # CRITICAL: resets RUNNING→PENDING on clean exit
write_state(mode, instance_id, state)       → None  # updates last_heartbeat
cancel(mode, instance_id)                   → None  # sets cancel_requested=1
complete(mode, instance_id, terminal_state) → None  # marks terminal
status(mode, instance_id)                   → dict|None  # read-only

release() is critical for ralph/autopilot: Each driver iteration exits cleanly after write_state(). Without release(), the next claim() waits 300s for crash-recovery timeout. With release(), reclaim is immediate.

Three backends, detected at runtime:

  1. OMH internal queue (always — zero config, embedded SQLite)
  2. Kanban (if omh_backend: "kanban" in config)
  3. Saturate (if SATURATE_URL set — v18.2+)

When this fires

Load when:

  • Working on any OMH v18+ skill and need to know which loop kind applies
  • Designing a new OMH skill and need to declare its loop kind
  • Working on Saturate integration and need the OMH side of the interface
  • Debugging queue behavior — especially claim() returning running vs not_found

⚒️

Frequently asked questions

What does the Omh V18 Loop Taxonomy AI skill do?

Saturate loop kind taxonomy: six typed loop kinds, per-kind specs, turn results, terminal states. OMH v18 skill→kind mapping.

Why use Omh V18 Loop Taxonomy on TypingMind?

Because you install it once and use it with any model. Omh V18 Loop Taxonomy is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Omh V18 Loop Taxonomy in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/witt3rd/oh-my-hermes/tree/master/plugins/omh/skills/omh-v18-loop-taxonomy. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Omh V18 Loop Taxonomy?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Omh V18 Loop Taxonomy?

As many as you like. As long as a model supports skills, you can use Omh V18 Loop Taxonomy with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Omh V18 Loop Taxonomy AI skill free?

Yes. It is published on GitHub by witt3rd under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇