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.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin media-libraryThis skill is limited to using the following tools:
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.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
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.