Botmaker logo

Botmaker

Community
techjanitor
botmaker

Use when creating specialist Hermes bots.

Overview

Publishertechjanitor
Repositorybotmaker
Skill namebotmaker
Stars
288
Forks
16
Bundled files
5
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.

  • 5 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

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

Installation

Install the Botmaker 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/techjanitor/botmaker/tree/main/skills/autonomous-ai-agents/botmaker
  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/techjanitor/botmaker.git /tmp/botmaker
mkdir -p .claude/skills
cp -r /tmp/botmaker/skills/autonomous-ai-agents/botmaker .claude/skills/botmaker
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Botmaker 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 Botmaker 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 Botmaker 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.

Botmaker

Design, scaffold, certify, and document specialist Hermes bots. Load this skill on every in-scope question. You draft; the child earns. Seeding files is not a bot.

Details: references/soul-craft.md (SOUL + human gate), references/process.md (mechanics), references/vault.md (vault conventions). Shared-skill linker: scripts/link_skill_tree.py. Drift tripwire: scripts/drift_check.py.

When to Use

  • Your human wants a new specialist bot, or a SOUL drafted for one — in chat, or as a task card assigned to botmaker (if your fleet dispatches work by kanban). A card carrying a human-signed SOUL spec satisfies the human gate.
  • An existing specialist bot's identity/job/voice is wrong and needs a SOUL rewrite (human gate)
  • Bots/ in the vault needs a specialist note, roster row, or making-bots.md changelog
  • A shared skill is about to be copied into a profile (stop; symlink files instead)

Don't use for: operating the inference server, ComfyUI, or any service; general coding; rewriting default ~/.hermes/SOUL.md; spawning botmaker-2. @hermes is not the bot coordinator — you are.

Prerequisites

  • Hermes CLI (hermes profile create --help)
  • Canonical skills live under ~/.hermes/skills/ (default Hermes home), not $HERMES_HOME/skills when you are the botmaker profile
  • Vault: <your-vault-path> (see references/vault.md)
  • Human guide, fleet roster, changelog: vault Bots/making-bots.md (create it on first ship). Method lives here only; fleet state lives there only — patch a lesson's one owner and log one changelog line.

How to Run

  1. Interview. Refuse to scaffold until job / independence failure / not-list are sharp. See Procedure.
  2. Draft a one-screen SOUL (references/soul-craft.md). Stop. Your human signs it.
  3. Scaffold (references/process.md). Alias preflight first. --no-skills, pin the brain, file-level skill links, USER.md lockstep sentence if the skill is shared.
  4. Kickoff in the child's Bot Chat. Do not babysit its tools. Do not write its MEMORY.md.
  5. After certification: vault note + roster row (references/vault.md). Not before.

Quick Reference

NeedDo
New botAlias preflight (Procedure C) → Interview → SOUL draft → human sign-off → hermes profile create NAME --no-skills --description "…"
Pin a brainhermes -p NAME config set model.provider … then model.default …. Then unset the copied base_url / api_key (create copies your default profile's model block, whatever it currently is)
Shared skillCanonical ~/.hermes/skills/<cat>/<name>/; profile files via scripts/link_skill_tree.py. Never a directory symlink. Load linked references/ with read_file on the canonical path
Vault after certBots/<name>.md (type: bot-reference), roster row on making-bots.md, one line on Home.md
Child memoryChild writes it. You do not.

Procedure

A. Interview (before any profile create)

Ask, and do not proceed until 1–3 are sharp:

  1. One-sentence job. If "and also," split into two bots. Job may be a CLI, an HTTP API, a GUI sock — ComfyUI counts. "CLI-only" is how we create the profile, not what the specialist is allowed to operate.
  2. Failure the brain must survive → model pin (if the bot's job lives on a local box, that usually means a hosted provider — the bot must still think when the box is down).
  3. What it is not.
  4. Does default Hermes need the same skill? → canonical under ~/.hermes/skills/ + file-level symlinks.
  5. Who is the client to ping (@hermes, another specialist, nobody).
  6. Voice: inherit vs write. Inheritance is tone, not the model's stock identity — that is costume unless the bot is a persona bot (if your fleet has one).

B. SOUL draft

Write one screen. Identity (job name first), Job, Hard constraints as their own heading, Voice, What you are not, Disagreement. No live pins, no IPs, no last-incident notes, no "helpful assistant," no pasted stock-model # Style block. Full rules in references/soul-craft.md.

Human gate: do not run hermes profile create until your human signs the draft — chat sign-off or a signed spec on the task card (references/soul-craft.md §Human gate). Iterate in the conversation or on the card, not on disk.

C. Scaffold

Full mechanics and the command sequence: references/process.md. The stop points:

Alias preflight — mandatory, before any profile create NAME. The default alias wrapper can destroy a real CLI through a ~/.local/bin symlink:

text
zsh -lc 'which -a NAME'
# and, even if which is empty:
test -e "$HOME/.local/bin/NAME" || test -L "$HOME/.local/bin/NAME"

If either finds anything: --no-alias (rationale and the landmines: references/process.md §--no-skills).

  • --no-skills; never --clone / desktop clone. Pin the brain, then unset the copied base_url/api_key; config get model must show only default + provider.
  • Peers + memory provider — check after every create (site-specific; commands and verification: references/process.md §Independence). The invariant: every rostered profile has every peer it must reach. Do not print keys.
  • Sibling-profile CLI from this profile: always prefix HERMES_HOME=$HOME/.hermes.
  • By default, SOUL.md writes prompt your human (security.protected_instruction_files: true) — that prompt is the human gate materialized. If your fleet disabled it for headless provisioning (see profile/config.yaml in this repo), the signature is the only gate: no human-signed draft or signed spec, no write. If a write is blocked anyway, stop — do not sneak it in via the shell.
  • Never hand-edit config.yaml — config set only (your human may hand-edit their own; you do not). Never copy credentials. Never print auth.api_key / secret_key.

Then: write signed SOUL.md, thin memories/USER.md — if the skill is shared, include the lockstep sentence: one line stating that the canonical skill lives under ~/.hermes/skills/<category>/<name>/, the profile files are symlinks, and process changes patch the canonical tree (so later sessions do not re-flag the drift). Then empty-or-tiny memories/MEMORY.md (the child fills this). Install the runbook skill; link shared skills file-level (references/process.md §Shared skills). Not every specialist needs a custom skill — @hostadmin is hermes-agent + earned MEMORY. Do not invent a runbook so the folder looks complete.

Stop. Do not fill the child's MEMORY.md. Do not add a vault roster row yet.

D. Certification (child's Bot Chat)

Kickoff: first look at the real box/job → one failure path → client ping if there is a client. The child patches its own skill + MEMORY.md. You may message_agent one job ("first look") and then get out.

Certified when it has done the job against the live system, rewritten the stale bits of its runbook (if it has one), and pinged the client (or you agreed there isn't one). A first look that finds nothing broken is still a first look — do not invent a failure to practice. Your human saying "document it in the vault" is a ship signal. Uncertified profiles do not get a Bots/<name>.md or a roster row unless your human overrides.

E. Vault

Only after D. See references/vault.md.

Failure modes (symptom → owner)

One line each; mechanics live with the owner.

SymptomRuleWhere
Skill invisible / empty indexnever directory-symlink a skill (rglob)references/process.md §Shared skills
skill_view/skill_manage file_path rejectedfile-symlink escape — read_file canonicalreferences/process.md §Shared skills
Second copy after a patchskill_manage unlinks — patch canonical, ls -lreferences/process.md §Shared skills
"Independent" bot on default's providerunset the create-leftover base_url/api_keyreferences/process.md §Independence
DM acks then vanishesa peer missing on the sender profilereferences/process.md §Independence
Honcho peer (not set)(Honcho users) honcho sync + memory.provider honchoreferences/process.md §Independence
Real CLI destroyed by aliaspreflight before profile createreferences/process.md §--no-skills
Unknown skill(s) at worker initlink the injected skill file-level; don't always-loadreferences/process.md §--no-skills
ui_meta empty / toolsets says hermes-clititle in profile.yaml; spec list is platform_toolsets.clireferences/process.md §Scaffold sequence
Worker files to the wrong board / sibling inherits kanban envstrip HERMES_KANBAN_*; one terminal call per workerreferences/process.md §Kanban intake
Child sounds like a costumeidentity = job name; inherit tone, not selfreferences/soul-craft.md
SOUL written unsignedthe signature is the gatereferences/soul-craft.md §Human gate
Uncertified bot in the vault; persona in Bots/write after certification onlyreferences/vault.md
Filling child MEMORY · botmaker-2 · default SOUL · operating servicesconstitutionprofile/SOUL.md

Verification

A new bot is done when:

  1. hermes profile list shows it on the pinned model, not silently riding your default profile's.
  2. hermes -p NAME config get model is only provider + default.
  3. .no-bundled-skills exists in the profile root.
  4. (If your fleet has peers) hermes -p NAME peer list shows every peer it must reach — or DMs will ack then vanish.
  5. (Honcho users) hermes honcho peers lists NAME with a real user peer (not (not set)). memory.provider is honcho.
  6. SOUL.md matches the signed draft (one screen).
  7. Shared skills: ls -l on profile SKILL.md shows l (symlink), canonical is a regular file. rglob from the profile skills dir finds SKILL.md.
  8. After certification only: vault note + roster row + Home line + making-bots.md changelog.
  9. python3 "$HOME/.hermes/skills/autonomous-ai-agents/botmaker/scripts/drift_check.py" exits 0.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Botmaker AI skill do?

Use when creating specialist Hermes bots.

Why use Botmaker on TypingMind?

Because you install it once and use it with any model. Botmaker 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 Botmaker in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/techjanitor/botmaker/tree/main/skills/autonomous-ai-agents/botmaker. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Botmaker?

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 Botmaker?

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

Is the Botmaker AI skill free?

Yes. It is published on GitHub by techjanitor 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 👇