# Oo Publish Skill

> oo Publish Skill

- Skill: `oomol-lab/oo-publish-skill` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add oomol-lab/oo-publish-skill`
- Raw SKILL.md: https://api.skillmd.com/api/skills/oomol-lab/oo-publish-skill/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: oomol-lab (https://skillmd.com/u/oomol-lab)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/oomol-lab/oo-publish-skill

---


# oo Publish Skill

Use this skill when the user wants to publish an existing agent skill to the
OOMOL registry or skill catalog. The source can be any valid agent skill
directory with a `SKILL.md`; it does not need to be an oo-specific skill.

## Workflow

### Share a published skill

If the user asks to share a published skill, run:

```bash
oo --lang zh skills share <skill-id> -y
oo --lang en skills share <skill-id> -y
```

Use the skill id from the current context when the user has just created,
published, or used a specific skill. If no likely skill id is available, ask the
user which skill or package to share. `oo skills share` will confirm the
resolved id and package, then print the copyable share prompt. Public packages
are shared directly. Private packages create a temporary share id and the
prompt must use `<packageName>#<shareID>`. Private package shares support optional limits:
`--days <days>` sets the share duration, defaults to 7, and cannot exceed 7;
`--downloads <downloads>` limits install count; omitting `--downloads` leaves installs unlimited.
Match the user's language when generating the prompt: use
`oo --lang zh skills share <skill-id> -y` for Chinese users and
`oo --lang en skills share <skill-id> -y` for English users. That prompt is
meant for recipients to follow a language-specific general install preparation
guide before running the final install command. It should include the package
name, skill name when applicable, Hub URL, the general install preparation URL,
and the exact `oo skills install ...` command. In the final response, put the
complete recipient-facing share prompt in one copyable `text` code block. Do not
use nested fenced code blocks inside it. Do not split the hub URL, guide URL, or
install command outside the block.

### 1. Identify the publish source

Ask for the missing skill id or skill directory path only when needed:

- skill id or path to a skill directory

Publish accepts a concrete path:

```bash
oo skills publish <path-to-skill-directory-or-SKILL.md>
```

If the user gives only a skill id, `oo skills locate <skill-id> --agent <!-- agentic:var agent -->`
can help resolve the local path. Use it when it is helpful, but do not force an
extra locate step when the path is already clear from context.

The publish command performs its own environment, authentication, and account
checks, so run it directly.

For first-time packages in non-interactive agent sessions, choose visibility
before publishing and pass `--visibility private` or `--visibility public`.
Use `--visibility public` when the user asks to publish to the public catalog or
otherwise clearly wants a public package. Use `--visibility private` only when
the user asks for a private package. If the user's intended visibility is
unclear, ask before publishing. Existing packages can omit `--visibility` when
the current registry visibility should be preserved.

Do not ask whether to publish to the current account. `oo skills publish`
resolves the account and asks any necessary ownership questions itself.

### 2. Publish through oo

Run the publish command directly:

```bash
oo skills publish ./my-skill --visibility public
oo skills publish /path/to/my-skill/SKILL.md --visibility private
oo skills publish ./already-published-skill
```

<!-- agentic:if agent=openclaw|qoderwork -->
If this shared skill file is running in another supported host, replace
`<!-- agentic:var agent -->` with that host id from the supported list.

<!-- agentic:endif -->
If the command prompts about publishing a registry-installed skill under the
active account or overwriting an existing remote package, let that prompt drive
the next user confirmation. Do not ask those questions in advance.

Do not package manually, do not use `npm publish`, and do not copy files into an
arbitrary fallback directory.

### 3. Report the result

Report the published package name, version, visibility, and hub URL from the
command output. Also mention any metadata writeback that occurred. If publish
fails, do not retry blindly; summarize the failing command, the user-facing
error, and the smallest next fix. If the failure says the self-hosted
connector only supports connector commands, or the JSON error code is
`not_authenticated` in self-hosted connector mode, publishing requires an
OOMOL account: ask the user to run `oo auth login`, then stop.

