Batch Orchestration
rohitg00/pro-workflow
Decompose large-scale changes into independent units and spawn parallel agents in isolated worktrees.
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
$ npx skills add tinyhumansai/openhuman --skill migrate-to-submodule -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tinyhumansai/openhuman migrate-to-submodule --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/tinyhumansai/openhuman.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/migrate-to-submodule .claude/skills/migrate-to-submodule && 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 "migrate-to-submodule" agent skill from https://github.com/tinyhumansai/openhuman/tree/main/.claude/skills/migrate-to-submodule into .claude/skills/migrate-to-submodule/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migrate-to-submodule", 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/tinyhumansai/openhuman/tree/main/.claude/skills/migrate-to-submoduleType 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 tinyhumansai/openhuman --skill migrate-to-submodule -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tinyhumansai/openhuman migrate-to-submodule --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tinyhumansai/openhuman.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/migrate-to-submodule .agents/skills/migrate-to-submodule && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "migrate-to-submodule" agent skill from https://github.com/tinyhumansai/openhuman/tree/main/.claude/skills/migrate-to-submodule into .agents/skills/migrate-to-submodule/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migrate-to-submodule", 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 tinyhumansai/openhuman --skill migrate-to-submodule -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tinyhumansai/openhuman migrate-to-submodule --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tinyhumansai/openhuman.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/migrate-to-submodule .cursor/skills/migrate-to-submodule && 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 "migrate-to-submodule" agent skill from https://github.com/tinyhumansai/openhuman/tree/main/.claude/skills/migrate-to-submodule into .cursor/skills/migrate-to-submodule/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migrate-to-submodule", 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/tinyhumansai/openhuman.git --path .claude/skills/migrate-to-submodule--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 tinyhumansai/openhuman --skill migrate-to-submodule -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tinyhumansai/openhuman migrate-to-submodule --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tinyhumansai/openhuman.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/migrate-to-submodule .gemini/skills/migrate-to-submodule && 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 "migrate-to-submodule" agent skill from https://github.com/tinyhumansai/openhuman/tree/main/.claude/skills/migrate-to-submodule into .gemini/skills/migrate-to-submodule/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migrate-to-submodule", 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 tinyhumansai/openhuman migrate-to-submoduleInstalls 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 tinyhumansai/openhuman --skill migrate-to-submodule -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tinyhumansai/openhuman.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/migrate-to-submodule .github/skills/migrate-to-submodule && 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 "migrate-to-submodule" agent skill from https://github.com/tinyhumansai/openhuman/tree/main/.claude/skills/migrate-to-submodule into .github/skills/migrate-to-submodule/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migrate-to-submodule", 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 tinyhumansai/openhuman --skill migrate-to-submodule -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tinyhumansai/openhuman migrate-to-submodule --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tinyhumansai/openhuman.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/migrate-to-submodule .opencode/skills/migrate-to-submodule && 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 "migrate-to-submodule" agent skill from https://github.com/tinyhumansai/openhuman/tree/main/.claude/skills/migrate-to-submodule into .opencode/skills/migrate-to-submodule/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migrate-to-submodule", 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.
migrate-to-submodulePlans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
This is a maintainer workflow for the OpenHuman repository, where the host handles composition, config, security policy, approvals, lifecycle and adapters, and behavior that is not specific to OpenHuman belongs in the owning vendor tiny project. The skill drives one migration from start to finish: plan, move code and tests, ship the submodule release, re-pin the host. It defaults to executing and uses plan mode only for the split decision when the boundary is unclear or the move is large. Work happens in a worktree, never on main, and commits are not squashed.
The design hinges on TinyBus. A loadable module is a first-party cdylib that speaks the TinyBus module ABI, downloaded from a pinned release and attached to an in-process broker, and the core calls it through a typed contract rather than a Rust import. A migration usually has three pieces: the implementation in the module crate, new or changed methods and types in the bus crate with a bumped contract version, and a thin host adapter that forwards to the bus and keeps policy, config and credentials. Credentials never travel in tool arguments.
Not every submodule is a loadable module. Pure libraries such as tinyagents, tinytools and tinyvoice are linked through Cargo, so moving code into them needs only a gitlink bump, without a bus contract or digest re-pin. Module code must never depend on the host crate.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 7578346. 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:
cargogitghnodepnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, gh and pnpm, which can reach the network depending on how they are called.
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.
Migrate Core Code to Submodules loads about 2.6k tokens when it runs. Until then it costs about 98 tokens; SKILL.md has 1,347 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 tinyhumansai/openhuman at commit 7578346, republished under its GPL-3.0 licence (© tinyhumansai). 1,347 words, ~2,597 tokens.
.claude/skills/migrate-to-submodule/SKILL.md (or your agent's skills folder).OpenHuman is the host: composition, config, security policy, approvals,
lifecycle, and adapters. Behavior that is not specific to OpenHuman belongs in
the owning vendor/tiny* project (see "Submodule ownership" in CLAUDE.md).
This skill drives one migration end to end: plan, move code + tests, ship the
submodule release, re-pin the host.
Default to executing. Use plan mode only for step 1 (the split decision), and
only when the boundary is genuinely ambiguous or the move is large. Work in a
worktree (worktree <slug> from the repo root); never on main. Do not squash
commits; the auto-commit hook checkpoints for you.
TinyBus is the seam that makes this migration possible and shapes its design.
cdylib speaking the TinyBus module ABI,
downloaded from a pinned GitHub release and attached to an in-process broker
as a bus peer. The core calls it through a typed contract, not a Rust
import.*-bus contract crate (names, methods, request/response
types, contract version). It is synchronous and free of I/O and runtime deps.
Never redeclare a contract type in OpenHuman; call members through the
contract constants.*-bus crate (bump its contract version), (c) a thin
host adapter under crates/openhuman-core/src/modules/<name>.rs (or the
domain that calls it) that forwards to the bus and keeps policy/config/creds.modules/memory_host.rs). Credentials never ride in tool arguments;
they go through module init/reinit config.openhuman. Host callbacks are traits/bus
services the module defines and the host implements.tinyagents,
tinytools, tinychannels, tinyskills, tinyvoice, tinywallet, ...) are
linked via Cargo; a move there needs no bus contract or digest re-pin, only a
gitlink bump. Check the module's MODULE.md/README to know which kind it is.Identify the code to move and read its callers. Use Explore/Grep on
crates/openhuman-core/src/<domain>/.
Classify every item as moves or stays:
| Moves to the submodule | Stays in OpenHuman |
|---|---|
| Algorithms, parsers, protocol/wire types, engines, generic tools, provider clients with no product identity | Config schema and loading, SecurityPolicy/approvals/sandbox decisions, credential resolution (resolve_backend_credential), Outcome<T> controllers and RPC schemas, event-bus publishing, product identity/attribution headers, Redux/Tauri glue |
| Tests that exercise only the moved logic | Cross-module tests, host-adapter tests, JSON-RPC E2E, anything needing the mock backend or CoreContext |
Pick the destination using the ownership table in CLAUDE.md. Put the change
in the repo that owns the behavior, not where it is easiest to land. Read the
target's README.md, AGENTS.md, crate boundaries and *-bus crate first.
You may create new crates in the submodule workspace when the code has no
good home (e.g. a new tinyfoo-<thing> library crate, or a new *-bus if a
new module needs its own contract). Prefer extending an existing crate. Only
propose a brand-new submodule/repo when no existing project owns the concept;
that one is a user decision, so stop and ask.
Write the plan down briefly (in the PR description or docs/plans/): what
moves, what stays, new crates, bus contract changes, dependency direction,
and the release order. Skip a formal doc for a small, obvious move.
Dependency rules to check while planning: the core must not depend on
tinyhumans-sdk (only openhuman-tinyhumans may); a module must not depend on
openhuman; there is one tinytools copy (via vendor/tinyagents/); tool-call
parsing/dialects/agent loop belong in tinyagents, not the host.
Submodule PRs go first, raised against that repo's canonical upstream
(tinyhumansai/<name>), never a fork. Follow the submodule's own AGENTS.md/
CONTRIBUTING.md (fmt, clippy -D warnings, per-file coverage gates such as
90% in tinysearch's release workflow).
worktree helper
already put every submodule on branch <slug>). Do not create nested
worktrees.git mv-style history
where practical. Keep public API minimal and documented; keep files
under about 500 lines.*-bus crate for any new wire
type. Tests that need the host stay in OpenHuman.Outcome<T>
controllers and RPC namespace strings (wire contracts) unchanged.cargo fmt --all -- --check,
cargo clippy --all-targets --all-features -- -D warnings,
cargo test --all-features (plus the coverage gate if the repo has one).If the change spans nested submodules (tinyagents/vendor/tinytools,
tinymemory/vendor/tinycortex, ...), release/merge the innermost first and bump
gitlinks outward.
Only for loadable modules (a cdylib with a registry record). Pure Cargo
libraries just need the merged commit.
Release workflow (workflow_dispatch on main,
input bump: patch/minor/major/current), e.g.
gh workflow run release.yml -R tinyhumansai/<name> -f bump=patch.
It runs fmt/clippy/tests, builds per-platform archives, tags vX.Y.Z, and
publishes a GitHub release with checksum.toml.gh run watch). Confirm the release has one archive
per host key the registry lists (macOS 15/26 arm64+x86_64, Ubuntu 22.04/24.04
x86_64+arm64, Windows) plus checksum.toml.Modules are pinned twice, and both must describe the same release
(scripts/ci/check-module-pins.mjs):
git -C vendor/<name> fetch --tags && git -C vendor/<name> checkout vX.Y.Z,
then stage the gitlink in the superproject.crates/openhuman-core/src/modules/registry/records_*.rs
for the module: version, release_url, and every PlatformAsset
archive name and sha256.checksum.toml
(gh release download vX.Y.Z -R tinyhumansai/<name> -p checksum.toml).checksum.toml, compares it
with the host pin, hashes the archive, then extracts. A re-cut tag stops
matching instead of silently replacing what runs in-process.scripts/ci/module-pin-exemptions.json with a reason. Prefer a fresh
release over an exemption.*-bus version moved,
and update crates/openhuman-core/src/modules/README.md and
platform/about_app/ if the layout or user-visible capability changed.node scripts/ci/check-module-pins.mjs
node scripts/ci/check-submodule-monotonic.mjs
pnpm rust:layout
cargo check --manifest-path Cargo.toml
cargo test -p openhuman-cli --test <affected> # or: pnpm debug rust <filter>CARGO_TARGET_DIR. Run long CI-style commands through
scripts/ci-cancel-aware.sh.upstream (tinyhumansai/openhuman), ready for review, not draft.
If the submodule release is not out yet, say so and mark draft only then.pr-babysitter for CI and review threads.checksum.toml (loadable modules)version/release_url/digests agree, digests copied from the releasecheck-module-pins and check-submodule-monotonic pass© tinyhumansai, GPL-3.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 .claude/skills/migrate-to-submodule of tinyhumansai/openhuman.
Open the folder on GitHubat commit 7578346
Migrate Core Code to Submodules 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 |
|---|---|---|---|---|---|---|
| Migrate Core Code to Submodules this skilltinyhumansai/openhuman | 41k | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| Batch Orchestrationrohitg00/pro-workflow | 2.9k | — | ~1.2k | Automated safety check: Pass | None | |
| Best Of N Solvingspencerpauly/awesome-cursor-skills | 841 | — | ~698 | Automated safety check: Pass | CC0-1.0 | |
| ast-grep Structural Searchcode-yeongyu/oh-my-openagent | 70k | — | ~3.3k | Automated safety check: Pass | MIT | |
| Rust Best Practicesfarm-fe/farm | 5.6k | 3 repos | ~1.1k | Automated safety check: Pass | MIT | |
| RTK Rust Design Patternsrtk-ai/rtk | 83k | — | ~1.9k | Automated safety check: Pass | Apache-2.0 |
rohitg00/pro-workflow
Decompose large-scale changes into independent units and spawn parallel agents in isolated worktrees.
spencerpauly/awesome-cursor-skills
Solve a hard problem by trying multiple approaches in parallel using isolated git worktrees.
code-yeongyu/oh-my-openagent
Searches and rewrites code by syntax-tree shape across 25 languages with ast-grep, for codemods, structural queries and YAML lint rules, using a Python wrapper script.
farm-fe/farm
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
rtk-ai/rtk
Describes seven Rust design patterns for the RTK CLI filter modules, with when to use each, RTK examples, and notes on when a pattern is overkill.
openinterpreter/openinterpreter
Rules for choosing Rust types for filesystem paths in new Codex code, covering protocol types, internal use and model tool arguments.
Works with
Categories
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host. This is a maintainer workflow for the OpenHuman repository, where the host handles composition, config, security policy, approvals, lifecycle and adapters, and behavior that is not specific to OpenHuman belongs in the owning vendor tiny project. The skill drives one migration from start to finish: plan, move code and tests, ship the submodule release, re-pin the host.
Migrate Core Code to Submodules fits situations like: moving code out of the OpenHuman core into a tiny submodule; extracting a crate so the host keeps only composition and policy; releasing a submodule and re-pinning the registry digests; deciding where the boundary between host and module code falls.
Run `npx skills add tinyhumansai/openhuman --skill migrate-to-submodule -a claude-code`. Or copy the skill folder (.claude/skills/migrate-to-submodule in tinyhumansai/openhuman) into .claude/skills/migrate-to-submodule in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tinyhumansai/openhuman --skill migrate-to-submodule -a codex`. Or copy the skill folder (.claude/skills/migrate-to-submodule in tinyhumansai/openhuman) into .agents/skills/migrate-to-submodule 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 tinyhumansai/openhuman --skill migrate-to-submodule -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/migrate-to-submodule, .gemini/skills/migrate-to-submodule, .github/skills/migrate-to-submodule and .opencode/skills/migrate-to-submodule in your project.
Going by SKILL.md and its folder, Migrate Core Code to Submodules needs the command-line tools its instructions call (cargo, git, gh, node and pnpm). Our summary lists: The OpenHuman repository with its vendored tiny submodules; Git worktree support.
SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. 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.
Migrate Core Code to Submodules is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k 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 Migrate Core Code to Submodules: Batch Orchestration (rohitg00/pro-workflow, 2.9k stars), Best Of N Solving (spencerpauly/awesome-cursor-skills, 841 stars), ast-grep Structural Search (code-yeongyu/oh-my-openagent, 70k stars) and Rust Best Practices (farm-fe/farm, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tinyhumansai (a GitHub organization) maintains it in tinyhumansai/openhuman, which has 41,472 GitHub stars. The repository was last updated on October 6, 2026.
Source: tinyhumansai/openhuman on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.