From unitism
Use this skill when the user pastes a cross-repo handoff message originating from the `non-engineer-frontend-contribution` skill. Triggers specifically on messages containing the header "## Cross-repo change requested" or the block "## Paste-ready brief for Claude Code", or on pastes that start with "I need to add a backend change to support a frontend PR that's waiting." Also triggers when the user pastes any message that names a frontend PR URL from `tennis-miami-web`, `arenna-link`, or `tennis-miami` and asks for a matching backend change. This skill parses the message, identifies the target repo, creates a branch from `development`, implements the specified change, opens a PR back to `development` linked to the originating frontend PR, and — on merge — generates a notification message for the original requester (Asad or Kath). Installed on Yuval's and Yudi's Claude Code only. Do NOT trigger on general feature requests unconnected to a non-engineer handoff, on discussions about the handoff flow itself, or on frontend-only changes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/unitism:cross-repo-handoff-messageThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The non-engineer contribution flow produces paste-ready handoff messages whenever Asad or Kath hit a scope boundary (their PR needs a backend change to work). This skill is the other half: it's what runs on Yuval's or Yudi's Claude Code when they paste that message in.
The non-engineer contribution flow produces paste-ready handoff messages whenever Asad or Kath hit a scope boundary (their PR needs a backend change to work). This skill is the other half: it's what runs on Yuval's or Yudi's Claude Code when they paste that message in.
Goal: zero re-explanation. Paste the message, the work happens, the frontend PR gets unblocked.
Status: draft. Written alongside skill #1 before week-2 dogfood data exists. Expect to edit this based on the first 2–3 real handoffs. If a handoff doesn't parse cleanly, the first instinct is to improve the producer (skill #1's template) rather than to add parsing cleverness here.
The user — Yuval or Yudi — pastes a message into Claude Code (desktop or mobile). The message follows the structure defined in non-engineer-frontend-contribution/templates/cross-repo-handoff-message.md.
Key markers that the skill should look for:
## Cross-repo change requested OR## Paste-ready brief for Claude Code ORI need to add a backend change to support a frontend PR that's waiting. ORtennis-miami-web, arenna-link, or tennis-miami and requests a corresponding backend changeIf none of these match but the request is clearly a handoff, the receiver may not match — ask the user if they want to run it as a handoff anyway, or as a free-form request.
From the pasted message, extract:
| Field | Where it comes from |
|---|---|
| Requester | "From: " line |
| Requester's role | Context or known team mapping (Asad → UX, Kath → CS) |
| Frontend repo | "working in <repo>" |
| Frontend PR URL | Branch line or PR URL in the message |
| Target repo | "Target repo: <repo>" |
| Change needed | "What needs to change:" bullets |
| Must-not-break list | "What should stay the same / not break:" bullets |
| Tests to pass | "Tests to pass:" or explicit test names |
| Suggested PR title | Optional — use "When done: Open a PR with title" line if present |
If any mandatory field is missing (target repo, change needed, or frontend PR URL) — STOP, tell the user what's missing, don't guess.
Before creating a branch:
cd into the target repo (user may already be in it; if not, note the path)development branch exists. If not, STOP and tell the user — this is a repo-level setup issue, not a per-PR issuegit fetch origin
git checkout -b {owner}/{type}/{slug} origin/development
Where:
{owner} — lowercase first name of whoever is running this skill (from git config user.name). Usually yuval or yudi.{type} — inferred from the change: new endpoint → feat, bug fix to existing behavior → fix, migration → chore, schema change without behavior change → chore.{slug} — derived from the suggested PR title if present, otherwise from the change description. Max 4 hyphenated words.Announce: "Starting handoff work on {branch-name} in {target-repo}, branched from latest development. Frontend PR waiting: {frontend_pr_url}."
Follow the instructions exactly as specified in the message. Do not creatively extend scope — the frontend PR is already built against a specific interface, so shipping more than what was asked breaks the coupling.
If the instructions are ambiguous on a specific point:
npm test / yarn test / pytest / whatever the repo uses by default)gh pr create \
--base development \
--title "<suggested title or inferred from change>" \
--body "$(...)"
PR body should include:
## Context
Unblocks {frontend_pr_url} from {requester}.
## What changed
<description of the backend change>
## Link back
- Frontend PR: {frontend_pr_url}
- Requester: @{requester}
## Verification
- [ ] Tests passing: <list>
- [ ] Manual check: <specific manual verification if applicable>
- [ ] Must-not-break list reviewed
## Review
Tag @yuval and @yudi — first responder wins.
---
Generated by `cross-repo-handoff-message` skill on behalf of {requester}.
Emit a one-liner the user can paste into the team chat to notify the original requester:
@{requester} — backend change for your PR {frontend_pr_url} is open at {backend_pr_url}. Once it merges, run
doneagain in your frontend branch.
If you know the team has a shared Slack / Asana / ClickUp channel for this, name it; otherwise default to "send this to {requester} directly."
If the user returns later after the backend PR is merged and says something like "done" / "merged" / "notify asad" — emit the notification message:
@{requester}, the backend change your PR depended on is live on
development. Go back to your frontend branch and saydoneand your PR will open.
Ideally this step is automated by a CI hook or a GitHub Action, but for now: manual, triggered by the engineer.
master or any branch other than development-derived{owner}/{type}/{slug} — consistency makes the audit trail readableIf the pasted message doesn't match the expected template structure:
../non-engineer-frontend-contribution/SKILL.md../non-engineer-frontend-contribution/templates/cross-repo-handoff-message.mdCreates, 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 yuvalklein/unitism-skills --plugin unitism