install-from-github
Use when the user points at a GitHub repo (an agent skill, MCP server, or "Claude plugin"-ish project) and wants to install or register it.
Skill by danielrosehill
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/danielrosehill-install-from-github
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/install-from-github
What's inside
- Skill name
install-from-github- Description
- Use when the user points at a GitHub repo (an agent skill, MCP server, or "Claude plugin"-ish project) and wants to install or register it. Routes between native plugin install, MCP server registration, and adding to the user's third-party marketplace. Triggers on phrases like "install this from GitHub", "add this skill to my setup", "register this as a third-party plugin", "is this available as a Claude plugin".
- License
- MIT
- Instructions
- 249 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
The user has found something on GitHub — a skill, an MCP server, a "Claude plugin" — and wants it integrated into their Claude Code setup **without leaving loose, untracked artefacts on disk**. The goal of this skill is to be a router: figure out what the project actually is, and pick the cleanest install path so the result is reproducible across machines.
Guiding principle: **everything the user installs should be reachable through a server-controlled surface** (the Skill-Substrate, when available; otherwise a marketplace they control), so a fresh machine can be reconstituted by reconnecting to the substrate or re-adding marketplaces. Loose skills dropped into `~/.claude/skills/` or one-off MCP entries scattered across configs are the failure mode this skill exists to prevent.
## Routing precedence (highest to lowest)
When a repo classifies as `claude-plugin` or `claude-marketplace`:
1. **Skill-Substrate** — if the user runs the substrate (i.e. has the `Skill-Substrate-Admin` plugin installed and the substrate is reachable), register the repo as a marketplace there. Subscriptions are server-side, so the install is reproducible across all the user's hosts without per-host bookkeeping. This is the default for Daniel.
2. **User's primary marketplace** — if the upstream is the user's own work and a primary marketplace exists.
3. **User's third-party marketplace** — for upstream by others, fork-and-wrap.
4. **Direct GitHub install** — last resort, only for one-off testing.
Detect substrate availability by checking for `~/.claude/plugins/Skill-Substrate-Admin/` or by attempting `ssh residencehome "docker ps --filter name=skill-substrate --format '{{.Names}}'"` (returns non-empty on substrate hosts). Skip the substrate path silently if neither indicator is present.
## Step 0: Onboarding — third-party marketplace pointer
This skill assumes the user has a dedicated **third-party marketplace** repo: a marketplace whose entries are wrappers around upstream projects authored by other people, kept distinct from the user's own original plugins.
Read config from:
```
${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/claude-rudder/config.json
```
Expected shape:
```json
{
"third_party_marketplace": {
"repo": "<owner>/<repo-name>",
"local_path": "<absolute path to local clone>"
},
"primary_marketplace": {
"repo": "<owner>/<repo-name>",
"local_path": "<absolute path to local clone>"
}
}
```
If `third_party_marketplace` is missing:
1. Tell the user this skill needs a designated third-party marketplace and explain why (portability — wrapped third-party skills live in one place, can be re-added on another machine via `claude plugins marketplace add`).
2. Ask whether they want to (a) point at an existing repo, or (b) bootstrap a new one.
3. If (b), scaffold a minimal marketplace repo: `.claude-plugin/marketplace.json` with empty `plugins: []`, a README explaining "this marketplace contains wrappers around third-party Claude Code skills and MCP servers", MIT license. Push to GitHub. Suggested name: `Claude-Third-Party-Plugins`.
4. Write the path back to `config.json`. Create the file (and its parent dir) if missing.
Never proceed past this step without a populated `third_party_marketplace.repo`.
## Step 1: Inspect the input
The user will give you a GitHub URL or `owner/repo`. Fetch enough to classify:
```bash
gh repo view <owner>/<repo> --json name,description,defaultBranchRef,url
gh api repos/<owner>/<repo>/contents -q '.[].name'
```
Then pull the files that disambiguate:
- `.claude-plugin/plugin.json` — it's a Claude Code plugin
- `.claude-plugin/marketplace.json` — it's a marketplace (multiple plugins inside)
- `SKILL.md` at root, or `skills/*/SKILL.md` without a `plugin.json` — loose skill(s)
- `package.json` with a `bin` field, or README mentioning `npx`, `mcpServers`, `claude_desktop_config.json` — MCP server
- `pyproject.toml` / `setup.py` exposing a CLI that speaks MCP — Python MCP server
- None of the above — out of scope; tell the user and stop
Use `gh api repos/<owner>/<repo>/contents/<path>` or `gh api repos/<owner>/<repo>/readme` to read files without cloning.
Record what you found in a short summary you'll show the user before acting.
## Step 2: Classify
Pick exactly one of:
| Class | Signal |
|---|---|
| `claude-plugin` | Has `.claude-plugin/plugin.json` |
| `claude-marketplace` | Has `.claude-plugin/marketplace.json` |
| `loose-skill` | Has `SKILL.md` or `skills/*/SKILL.md` but no `plugin.json` |
| `mcp-server` | NPX/Python package documented for MCP, no Claude plugin manifest |
| `other` | None of the above (CLI tool, library, demo) |
If the repo is **mixed** (e.g. an MCP server that also ships an example skill), prefer the most installable surface — usually `mcp-server` — and mention the secondary surface to the user.
## Step 3: Route
Show the user the classification and the proposed action, then act on confirmation.
### 3a. `claude-plugin`
Best case — it's already structured for native install.
1. Check whether the repo is already known to any of the user's surfaces:
- **Substrate** (if available): `ssh residencehome "docker exec skill-substrate-skills-ingester-1 skills marketplace list"` — match on `source_repo`.
- **Local marketplaces**: `claude plugins marketplace list`, then for each, check its `marketplace.json` for an entry whose `source.repo` matches.
2. **If found on the substrate** as marketplace `M`, the install command is:
```
ssh residencehome "docker exec skill-substrate-skills-ingester-1 \
skills install <M>:<plugin-name>"
```
(Or call the `Skill-Substrate-Admin:admin-subscribe` skill.) Subscription is server-side; no further action needed.
3. **If found in a local marketplace** `M` (legacy / external host), the install command is:
```bash
claude plugins install <plugin-name>@<M>
```
Show the command. **Do not auto-install at user scope.** Mention `--scope project` for ad-hoc use.
4. **If not found anywhere**, offer routes in precedence order:
- **Substrate route (preferred when substrate is reachable)** — register the repo as a one-plugin marketplace on the substrate, then ingest and subscribe:
```
ssh residencehome "docker exec skill-substrate-skills-ingester-1 \
skills marketplace add <owner>-<repo> --repo https://github.com/<owner>/<repo>.git \
--visibility private --authorship third_party"
ssh residencehome "docker exec skill-substrate-skills-ingester-1 \
skills marketplace ingest <owner>-<repo>"
ssh residencehome "docker exec skill-substrate-skills-ingester-1 \From danielrosehill/Claude-Rudder, MIT.
More from danielrosehill/Claude-Rudder
- 0.470score
context-gate
danielrosehill
One-shot context-checkpoint workflow — when the current session is getting cluttered, write a structured handover plan capturing what's done and what's…
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
plugin-data-storage
danielrosehill
Canonical reference for where Claude Code plugins should persist user data.
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
scaffold-planning
danielrosehill
Create a lightweight `planning/` folder in the current repo with leftover-tasks.md, blockers.md, session-logs/, and handovers/.
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
context-workflow-reference
danielrosehill
Reference and worked example for the CONTEXT.md / CLAUDE.md two-file workflow.
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
save-plan
danielrosehill
Save a Claude Code plan (from ExitPlanMode, design discussion, or multi-step task) to persistent storage.
SkillAFreshness: A★ 2Claude Code +9 - 0.467score
setup-agent-logs
danielrosehill
First-run setup for the session log archive.
SkillAFreshness: A★ 2Claude Code +9 - 0.467score
extract-skill
danielrosehill
Synthesize a new SKILL.md from the procedure that was just followed in this session, so the next session can replay it without being briefed from scratch.
SkillAFreshness: A★ 2Claude Code +9 - 0.348score
spawn-docs-repo
danielrosehill
Create a sibling docs repo for the current project, move documentation out of the main repo into it, seed CLAUDE.md, and push to GitHub.
SkillDFreshness: D★ 2Claude Code +9 - 0.348score
fork-new-direction
danielrosehill
Create a new repo that starts from the current repo's state but takes a new direction — copy the code, seed CLAUDE.md with the revised approach, and push.
SkillDFreshness: D★ 2Claude Code +9 - 0.348score
log-blocker
danielrosehill
Append a known blocker to `<repo>/planning/blockers.md` (auto-scaffolds if missing).
SkillDFreshness: D★ 2Claude Code +9 - 0.348score
mirror-to-private
danielrosehill
Create a private GitHub repo that mirrors the current public repo.
SkillDFreshness: D★ 2Claude Code +9 - 0.348score
repo-from-thread
danielrosehill
Create a new GitHub repo seeded with context from the current conversation.
SkillDFreshness: D★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 15, 2026 (14 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/danielrosehill/Claude-Rudder
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from danielrosehill
- 0.470score
plugin-data-storage
danielrosehill
Canonical reference for where Claude Code plugins should persist user data.
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
save-plan
danielrosehill
Save a Claude Code plan (from ExitPlanMode, design discussion, or multi-step task) to persistent storage.
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
onboard
danielrosehill
First-run onboarding for the adb-ops plugin.
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
context-gate
danielrosehill
One-shot context-checkpoint workflow — when the current session is getting cluttered, write a structured handover plan capturing what's done and what's…
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
context-workflow-reference
danielrosehill
Reference and worked example for the CONTEXT.md / CLAUDE.md two-file workflow.
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
scaffold-planning
danielrosehill
Create a lightweight `planning/` folder in the current repo with leftover-tasks.md, blockers.md, session-logs/, and handovers/.
SkillAFreshness: A★ 2Claude Code +9
Cite this page
install-from-github skill. Agent Mart. https://agentmart.dev/skills/danielrosehill-install-from-github (last updated 2026-10-24)