From media-library
Provision a new media-library workspace on disk. Use when the user wants to start cataloging, tagging, or organising a mixed-media library (photos, videos, audio). Scaffolds the workspace, personalises CLAUDE.md from the user's global memory, and (by default) creates a GitHub repo.
How this skill is triggered — by the user, by Claude, or both
Slash command
/media-library:new-workspaceThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Creates a new workspace for cataloging and organising a mixed-media library. This plugin's commands (`/media-library:catalog`, `/media-library:tag`, `/media-library:search-library`, etc.) are globally available once installed — this skill only provisions the **data scaffold** (CLAUDE.md, inputs/, working/, metadata/, etc.) that those commands read from and write to.
Creates a new workspace for cataloging and organising a mixed-media library. This plugin's commands (/media-library:catalog, /media-library:tag, /media-library:search-library, etc.) are globally available once installed — this skill only provisions the data scaffold (CLAUDE.md, inputs/, working/, metadata/, etc.) that those commands read from and write to.
$ARGUMENTS is parsed as:
~/repos/github/my-repos.--local-only (optional): skip GitHub repo creation and push. Default: create a public GitHub repo and push.--private (optional): create the GitHub repo as private. Default: public./media-library:new-workspace family-photo-archive
/media-library:new-workspace camera-roll-dump ~/Projects
/media-library:new-workspace sensitive-library --private --local-only
Extract workspace name, target parent path, and flags from $ARGUMENTS. If workspace name is missing, ask the user for it before proceeding.
The bundled scaffold lives at ${CLAUDE_SKILL_DIR}/../../template/. Confirm it exists before copying.
Read ~/.claude/CLAUDE.md if it exists. Extract OS, locale, timezone, and user identity facts. These will personalise the workspace's CLAUDE.md at step 5.
mkdir -p <target-parent>/<workspace-name>
cp -r ${CLAUDE_SKILL_DIR}/../../template/. <target-parent>/<workspace-name>/
Do not copy any .claude/ tree — the plugin's primitives are global. The scaffold deliberately contains no .claude/ directory.
Open the new workspace's CLAUDE.md and:
{Replace this text ...} project-context placeholder with a short description the user provides (ask if not given).Ask the user only for facts this plugin can't infer:
CLAUDE.md as LIBRARY_SOURCE). Can be inside inputs/ (repo mode) or an external path (e.g. /mnt/backup/photos/).Project Context section of CLAUDE.md.metadata/vocabulary.txt.cd <target-parent>/<workspace-name>
git init
git add .
git commit -m "Initial workspace from media-library plugin"
Unless --local-only is set:
gh repo create <workspace-name> --<public|private> --source=. --push
Use --public by default, --private if flag was passed.
Tell the user:
/media-library:catalog against the source path./media-library:sort-by-type → /media-library:group-by-date → /media-library:dedupe-media./media-library:tag once they have a subset to annotate; /media-library:search-library to query it back.${CLAUDE_SKILL_DIR}/../../template/ (not ${CLAUDE_PLUGIN_ROOT} — that variable isn't exported in skill bash injection, only in hooks/MCP)..claude/commands/, .claude/agents/, or .claude/skills/ into the new workspace. If the user wants workspace-local overrides, they can add them manually later.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin media-library