sync-upstream

Merge upstream cursor/plugins pstack changes into the Claude Code port via three-way git merge.

Updated Sep 23, 2026
One-click install
npx skills add https://github.com/lucasheriques/pstack --skill sync-upstream-lucasheriques
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: sync-upstream
Source: https://github.com/lucasheriques/pstack/tree/main/.claude/skills/sync-upstream
Command: npx skills add https://github.com/lucasheriques/pstack --skill sync-upstream-lucasheriques

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Keeping a Claude Code port of an upstream Cursor plugin current requires careful three-way merges that preserve local translations while adopting upstream changes, and doing this by hand risks losing intent or re-conflicting on resolved lines. ## Core Features & Use Cases - Upstream Mirroring: Fast-forwards a dedicated upstream branch from cursor/plugins and reports whether anything changed. - Guided Conflict Resolution: Applies standing translation rules from references/translation.md so upstream substance is kept while Cursor-specific harness, model, and path references are ported to Claude Code equivalents. - Verification Pipeline: Runs lint checks, bun tests, plugin validation, and agent behavior probes before shipping the merge as a draft PR. - Use Case: When poteto publishes new pstack commits upstream, run this Skill to mirror them, merge with correct conflict resolution, update the plugin version, and open a verified draft PR. ## Quick Start Ask the agent to sync upstream and pull poteto's latest pstack changes into this repository.

Frequently Asked Questions about sync-upstream

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I sync a Claude Code plugin port with its upstream Cursor repository?▼

Create a sync branch off main, run the sync-upstream script to fast-forward the upstream branch, then run git merge upstream. Resolve conflicts using the translation rules so upstream substance is kept while Cursor-specific references are ported.

How are merge conflicts resolved when porting Cursor skills to Claude Code?▼

Conflicts are resolved per the translation reference: take upstream's new substance and keep the port's translation of it. Files the port deliberately deleted stay deleted, and new Cursor-only content is removed rather than ported.

Why must the sync PR be merged with a merge commit instead of squash?▼

Squashing drops the upstream branch from main's ancestry, so every later sync re-conflicts on lines already resolved. A merge commit preserves the shared history that makes future three-way merges clean.

What verification steps run before the sync PR is marked ready?▼

The workflow runs the port lint to zero findings, bun tests for the check-port script and orchestration scripts, claude plugin validate, and agent behavior probes confirming skill paths load and read-only agents refuse writes.

What happens when upstream adds a file that only makes sense in Cursor?▼

Cursor-only files such as automations, docs, assets, and setup skills are deleted rather than ported. Before discarding an upstream edit, the workflow checks whether it carries a rule that belongs in a file the port kept.