profile
Manages the shared oss-contribute profile. All other skills in the plugin (find-issues, contribute-upstream) read from this same file.
Usage
/oss-contribute:profile # show current profile (default)
/oss-contribute:profile show # same as above
/oss-contribute:profile edit # open in $EDITOR (or run interactive setup if missing)
Profile location
Resolve in this order and use the first one that exists. If none exist and the subcommand is show, report which paths were checked; if edit, create the first one (plugin data dir).
$CLAUDE_PLUGIN_DATA/profile.md— when running as an installed plugin (Claude Code sets this env var). Survives plugin updates.~/.claude/plugins/data/oss-contribute/profile.md— same path as #1, for explicitness.~/.claude/skills/oss-contribute/profile.md— local-development fallback.
Phase A — show (or no arg)
Print the current profile and the file path it was loaded from. Read-only.
If no profile exists, print:
No profile found. Checked:
- $CLAUDE_PLUGIN_DATA/profile.md
- ~/.claude/plugins/data/oss-contribute/profile.md
- ~/.claude/skills/oss-contribute/profile.md
Run: /oss-contribute:profile edit to set one up.
Phase B — edit
If the profile exists, open it in $EDITOR (or vi if $EDITOR is unset).
If the profile is missing, walk through interactive setup, asking one question at a time:
- Which GitHub repos do you want to watch? (
owner/repolist) - Which languages / frameworks do you work in?
- Which
gh-logged-in account should the plugin fork/PR from? (rungh auth statusand let the user pick) - Default time budget? (
30m/1h/half-day/weekend) - Anything specific that makes an issue feel "ripe" for you? (free text)
Write to $CLAUDE_PLUGIN_DATA/profile.md (or the local-mode path if that env var is unset) using the schema below. Confirm contents with the user before writing.
Profile schema
# oss-contribute profile
## Watched repos
- owner/repo
- ...
## Languages
typescript, go, python
## Stack
next.js, react, prisma, vitest
## Default GitHub account
shiminshen
## Default budget
1h
## What "ripe" means to me
Small diff (<50 lines). Clear repro in the issue body. No assignee. No linked PR.
Maintainer has triaged (has a label). Repo has merged something in the last 30 days.
Hard rules
showis read-only. Never modify the profile in show mode.- Profile is the source of truth. Other skills must not silently override profile values from args; conflicts surface to the user.
- No remote secrets. The profile is a local preferences file. Do not store API tokens or credentials here —
ghhandles GitHub auth, and that's where account selection terminates.