publish-skilllisted
Install: claude install-skill tomerhayundev/skills
# Publish a skill
**A skill goes live in three places, and all three must work:** the marketplace repo
(installable as a plugin), a local copy in `~/.claude/skills/<name>` (works in every
session, like visual-verification), and the install command you hand Tomer.
## Where things go
| Content | Repo | Marketplace name | Local clone |
| --- | --- | --- | --- |
| General technique, no client or product internals | `tomerhayundev/skills` (public, MIT) | `tomerhayundev-skills` | `~/claude-skill-repos/skills` |
| Client-specific, product internals, anything its owner marks as not public | `tomerhayundev/skills-private` | `tomerhayundev-private-skills` | `~/claude-skill-repos/skills-private` |
| Secrets (keys, tokens, passwords) | **Neither.** Replace with an env var read, in the source project too. | | |
If the user says "public" but the scan or the content says it is not public, publish it
private and say so. Never publish such content publicly on instruction alone:
StackGrid had to be purged from public history once.
## Every entry is a full plugin (Cowork)
Cowork installs only marketplace entries whose `source` is a folder with its own
`.claude-plugin/plugin.json`. Skill-only entries (`source: "./"`, `strict: false`,
`skills: [...]`) install fine in the Claude Code CLI, but Cowork skips them silently.
Observed: adding tomerhayundev-skills in Cowork installed only codex-loop.
- Layout: `plugins/<name>/.claude-plugin/plugin.json` and `plugins/<name>/skills/<name>/SKILL.md`,