Team onboarding plugin with clarity workflow commands, worktree skill, and commit guards.
Install these before using the plugin:
jq (JSON processor - required for hooks):
# Ubuntu/Debian
sudo apt install jq
# Mac
brew install jqgh (GitHub CLI):
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt update
sudo apt install gh
gh auth loginuv (Python package manager):
curl -LsSf https://astral.sh/uv/install.sh | shgit-worktree-runner (worktree management):
git clone https://github.com/coderabbitai/git-worktree-runner.git
cd git-worktree-runner
./install.shHomebrew (package manager for WSL):
# Install build-essential first (required for WSL)
sudo apt-get update
sudo apt-get install build-essential
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Add to PATH
test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
echo "eval \$($(brew --prefix)/bin/brew shellenv)" >> ~/.bashrc
source ~/.bashrcSupabase CLI (database operations):
npm install -g supabase
supabase loginhand-picked-tools MCP (AI tools):
claude mcp add hand-picked-tools --transport http --scope user https://metamcp.iitr-cloud.de/metamcp/hand-picked-tools/mcpGoogle Chrome (for Chrome DevTools MCP):
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt --fix-broken installmcp2rest (MCP gateway - optional):
npm install -g mcp2rest
# Install as service (use env to preserve PATH for nvm users)
sudo env "PATH=$PATH" npx mcp2rest service install
# Or run in foreground
npx mcp2rest start
# Add Chrome DevTools server
npx mcp2rest add chrome chrome-devtools-mcp@latest
# Verify
curl http://localhost:28888/health/plugin marketplace add MariusWilsch/claude-code-team-marketplace
/plugin install claude-code-team-plugin@wilsch-ai-plugins
/plugin marketplace update wilsch-ai-plugins
/plugin update claude-code-team-plugin@wilsch-ai-plugins
Restart Claude Code after updating for changes to take effect.
If /plugin marketplace add fails with a clone error:
-
Remove any existing marketplace entry:
/plugin marketplace remove wilsch-ai-plugins -
Clean up leftover files:
rm -rf ~/.claude/plugins/marketplaces/MariusWilsch-claude-code-team-marketplace -
Retry:
/plugin marketplace add MariusWilsch/claude-code-team-marketplace
If this repo is made private, each user needs to configure GitHub authentication.
Step 1: Create a GitHub Fine-Grained Personal Access Token (PAT)
- Go to GitHub Settings > Developer Settings > Fine-grained tokens
- Configure the token:
- Token name:
claude-code-team-marketplace - Repository access: "Only select repositories" >
MariusWilsch/claude-code-team-marketplace - Permissions: Contents > Read-only
- Expiration: choose based on your security policy
- Token name:
- Click "Generate token" and copy it (
github_pat_...)
Step 2: Set the token in your shell environment
Add to ~/.zshrc (Mac) or ~/.bashrc (Linux):
export GITHUB_TOKEN=github_pat_xxxxxxxxxxxxThen reload:
source ~/.zshrc # or source ~/.bashrcStep 3: Add marketplace and install
/plugin marketplace add MariusWilsch/claude-code-team-marketplace
/plugin install claude-code-team-plugin@wilsch-ai-plugins
Note: The
GITHUB_TOKENenv var is required for both initial clone and background auto-updates. Without it, Claude Code cannot authenticate against private repos because it runs git with terminal prompts disabled. See Claude Code docs on private repositories for details.
| Command | Purpose |
|---|---|
/onboarding |
Start session, link issue, bootstrap context |
/requirements-clarity |
Disambiguate WHAT to build |
/implementation-clarity |
Plan HOW to build |
/evaluation-clarity |
Define success criteria |
/ac-verify |
Verify acceptance criteria (separate session) |
/rubber-duck |
Thinking partner (Stage 2.7 with execution gate) |
/merge |
Safe PR merge workflow with verification |
/flag-for-improvement |
Capture system issues |
/issue-comment |
Post GitHub issue comments |
Note: Plugin skills require full qualified name: claude-code-team-plugin:skill-name
| Skill | Invocation | Purpose |
|---|---|---|
worktree |
claude-code-team-plugin:worktree |
Create isolated git worktrees for issue work |
conversation-reader |
claude-code-team-plugin:conversation-reader |
Extract and read Claude conversation JSONL files |
deliverable-tracking |
claude-code-team-plugin:deliverable-tracking |
Create GitHub Issues for client deliverables |
| Hook Type | Trigger | Script |
|---|---|---|
| SessionStart | Session begins | Export CLAUDE_CONVERSATION_PATH |
| PreToolUse (Bash) | Before Bash | jsonl-blocker, pip-blocker, gh-api-guard, git-commit-guard, gh-issue-create-blocker |
| PreToolUse (Read) | Before Read | jsonl-blocker |
| PostToolUse (Bash) | After git push | context-check |
| SessionEnd | Session terminates | session-upload (conversation upload) |
onboarding_bootstrap.py- Session context capturefetch_issue_context.py- GitHub issue fetcherlist_skills_by_discovery.py- Skill discovery helper
The list_skills_by_discovery.py script discovers skills by discovery phase (e.g., rubber-duck, implementation-clarity).
Discovery sources (checked in order):
- Local skills:
~/.claude/skills/*/SKILL.md - Plugin skills: Enabled plugins →
installed_plugins.json→{installPath}/skills/*/SKILL.md - Local commands:
~/.claude/commands/*.md
How it works:
settings.json (enabled plugins) → installed_plugins.json (install paths) → skill files
Adding discovery tags to your skills:
---
name: my-skill
description: "My skill description (discovery: rubber-duck)"
---The (discovery: phase) pattern in the description field determines when the skill is suggested during onboarding.
The plugin includes a statusline script that displays the linked issue number from /onboarding.
Display format:
~/path/to/project
➜ git:(main) ✗ | 45% | opus
deliverable-tracking#335
Setup:
- Copy the script:
cp ~/.claude/plugins/cache/*/claude-code-team-plugin/*/scripts/statusline-command.sh ~/.claude/statusline-command.sh
chmod +x ~/.claude/statusline-command.sh- Create the session state directory and add to .gitignore:
mkdir -p ~/.claude/.session-state
echo ".session-state/" >> ~/.claude/.gitignore- Add to
~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "bash ~/.claude/statusline-command.sh",
"padding": 0
}
}How it works:
/onboardingwritesrepo#issueto~/.claude/.session-state/{session_id}- Statusline reads
session_idfrom Claude Code's JSON input - Displays shortened repo name + issue number on 3rd line
Requirements: jq must be installed (brew install jq or apt install jq)
Plugins can't include permissions. Add these to your ~/.claude/settings.json:
{
"permissions": {
"allow": [
"Bash(gh:*)", "Bash(git:*)", "Bash(uv:*)",
"mcp__hand-picked-tools__**",
"Skill(worktree)", "Skill(hippocampus)",
"SlashCommand(/rubber-duck:*)"
],
"deny": [
"Bash(git push origin --delete:*)",
"Bash(git branch -D:*)"
],
"ask": [
"Bash(rm:*)", "Bash(gh pr create:*)",
"Bash(gh issue create:*)"
]
}
}See full recommended settings: settings-template.md
Includes CLAUDE.md with:
- Task lifecycle (clarity phases)
- Confidence gating (✗/✓)
- Authority model (investigation vs execution)
- JIT knowledge retrieval