con un clic
upstream-pr
Load this skill whenever working in a fork of a third-party project.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Load this skill whenever working in a fork of a third-party project.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
| name | upstream-pr |
| description | Load this skill whenever working in a fork of a third-party project. |
This skill manages the full lifecycle of contributing a fix from a fork back to an
upstream repository, following a draft-in-tree convention: a PULL_REQUEST_DRAFT.md
file lives in every commit on the PR branch and is git rm'd immediately before
submission.
Every commit on a PR branch must contain PULL_REQUEST_DRAFT.md at the repo root.
Format:
# PR Title Here (this line → `gh pr create --title`)
Everything below this line becomes the PR body (`--body`).
## Problem
…
## Solution
…
## Testing
…
# H1 line is the PR title..gitignore it — it must be visible in git log and reviewable.git rm just before creating the PR (see Submission step).In a fork, always name remotes:
| Remote | Points to |
|---|---|
origin | Your fork (read/write) |
upstream | The original project |
If upstream is not configured:
git remote add upstream https://github.com/OWNER/REPO.git
git fetch upstream
akaihola Working Branch (git-knit)All unmerged feature branches must be stacked into a single working branch
called akaihola using git-knit. This gives a single integration branch that
combines every in-flight change on top of upstream/main.
# akaihola = working branch, upstream/main = base, list any existing branches
git knit init akaihola upstream/main [fix/branch-a fix/branch-b ...]
If akaihola already exists in the remote, verify git knit status matches
what is currently checked out before touching it.
git knit status # show base, working branch, and all knitted branches
git knit add fix/new-branch # add a newly-created feature branch
git knit remove fix/old-branch # drop a merged/abandoned branch
git knit rebuild # rebuild akaihola from scratch (after rebases, etc.)
git knit restack # restack feature branches with git-spice
git knit add-ed immediately after creation.upstream/main, run
git knit rebuild to regenerate akaihola.akaihola — it is a derived branch. All real commits
go to individual fix/* / feat/* / docs/* branches.git knit remove <branch> and
git knit rebuild.Determine what needs contributing. Common sources:
main not in upstream/mainUseful commands:
# Commits in fork's main not in upstream
git log --oneline upstream/main..main
# Diff a specific file between fork and upstream
git diff upstream/main..main -- path/to/file.go
# Check if content already merged upstream (empty = already there)
git cherry -v upstream/main <your-branch>
Always verify the change is not already in upstream before creating a PR branch.
Upstream may have merged the content under different commit SHAs. Use
git diff upstream/main...<your-branch> (three dots = content diff from merge base)
to confirm actual differences exist.
git fetch upstream
git checkout -b <branch-name> upstream/main
Branch naming convention:
fix/<short-description> for bug fixesfeat/<short-description> for new featureschore/<short-description> for non-functional changesdocs/<short-description> for documentationChoose the cleanest approach:
a) Cherry-pick (when the commit applies cleanly):
git cherry-pick <commit-sha>
# Resolve any conflicts if needed
b) Apply a file diff (when cherry-pick would drag in unrelated changes):
git diff upstream/main..main -- path/to/file > /tmp/fix.patch
git apply /tmp/fix.patch
git add path/to/file
git commit -m "fix: description of the fix"
c) Implement fresh (when rewriting is cleaner than patching): Just make the changes and commit normally.
After the fix commit exists (or as part of it), add PULL_REQUEST_DRAFT.md:
cat > PULL_REQUEST_DRAFT.md << 'EOF'
# fix: concise imperative title matching upstream's commit style
## Problem
Describe what was broken and why it mattered.
## Solution
Explain what the fix does. Reference the functions/files changed.
## Testing
How to verify the fix works. Include commands if applicable.
EOF
git add PULL_REQUEST_DRAFT.md
git commit --amend --no-edit # or: git commit -m "..." if draft is a separate commit
For multi-commit PRs, include PULL_REQUEST_DRAFT.md in every commit
(use git commit --amend or update it at each step). The file should always
reflect the PR's current intended title and description.
git push origin <branch-name>
Note: the agent cannot push to GitHub. Remind the user to run ghpp on atom
or use git push from a machine with push access.
When the branch is ready to submit, use the helper script:
# From the repo root, with the PR branch checked out:
bash /path/to/skills-akaihola/upstream-pr/scripts/submit-pr.sh [--upstream-repo OWNER/REPO]
The script:
PULL_REQUEST_DRAFT.md and extracts title + bodygit rm PULL_REQUEST_DRAFT.md && git commit -m "chore: remove PR draft before submission"git push origin <branch> (if needed)gh pr create --repo OWNER/REPO --title "..." --body "..."Manual equivalent (if not using the script):
TITLE=$(grep -m1 '^# ' PULL_REQUEST_DRAFT.md | sed 's/^# //')
BODY=$(tail -n +2 PULL_REQUEST_DRAFT.md | sed '1{/^$/d}')
git rm PULL_REQUEST_DRAFT.md
git commit -m "chore: remove PR draft before submission"
git push origin <branch>
gh pr create --repo OWNER/REPO --title "$TITLE" --body "$BODY"
When cherry-picking produces conflicts:
git diff and understand both sides.git add resolved files, then git cherry-pick --continue.--strategy-option theirs/ours blindly — read the conflict.Before pushing, confirm the branch only contains what you intend:
# Should list only your PR commits
git log --oneline upstream/main..<branch>
# Should show only your intended file changes
git diff --stat upstream/main...<branch>
# PULL_REQUEST_DRAFT.md must be present
git show HEAD:PULL_REQUEST_DRAFT.md | head -3
If upstream/main advances while your PR is under review:
git fetch upstream
git rebase upstream/main
# Update PULL_REQUEST_DRAFT.md if anything changed
git push --force-with-lease origin <branch>
cd ~/mitto
git fetch upstream
git checkout -b fix/my-bug-fix upstream/main
git cherry-pick abc1234
cat > PULL_REQUEST_DRAFT.md << 'EOF'
# fix(web): correct the thing that was broken
## Problem
Widget exploded when user did X.
## Solution
Guard against nil pointer in `handleFoo()`.
## Testing
`go test ./internal/web/...` passes. Manually verified: X no longer explodes.
EOF
git add PULL_REQUEST_DRAFT.md
git commit --amend --no-edit
git push origin fix/my-bug-fix
# Then ask the user to push with `ghpp` on atom, or run the submit script
upstream/main as the base, not origin/main or main.Fixes #N.Apply local edits to a Claude Code plugin and propagate them to the installed plugin cache so they take effect without a full marketplace reinstall. Use when you have edited a plugin's source under a local clone (e.g. ~/prg/skills-akaihola/<plugin>/) and need the running Claude Code to pick up the change — the cache copy at ~/.claude/plugins/cache/ is what Claude actually loads, not the source clone. Triggers on "sync the plugin cache", "my plugin edit isn't taking effect", "push plugin changes", or iterating on a slash command / skill / hook that lives in an installed plugin.
Fetch USD/EUR currency exchange rates from European Central Bank (ECB) and save to CSV. Provides 2025 rates and conversion guidance.
Convert Markdown to PDF using Pandoc with the Typst engine — a fast, lightweight alternative to LaTeX (no TeX install needed, ~tens of MB). Produces clean output for technical docs, plans, summaries, and logs. Supports CJK fonts, code highlighting, tables, math, and custom Typst templates. Use when the user asks to "convert markdown to pdf with typst", "render md to pdf using pandoc", "md2pdf without LaTeX", or wants a typeset PDF without the LaTeX toolchain. Prefer over the `any2pdf` skill when the user explicitly mentions Pandoc, Typst, or wants the output to look typeset (rather than reportlab-rendered).
Use when processing a batch of scanned receipt PDFs that need image extraction, OCR, structured plaintext generation, and descriptive renaming.
Search and analyze Pi agent session logs stored as JSONL files under ~/.pi/agent/sessions/, and query CCM (Claude Code Mux) proxy logs via journalctl. Use when investigating what Pi did in a past session, why a build or tool call failed, how Pi used interactive_shell, what CCM routed and at what latency, or reconstructing a full session transcript. Covers searching by text, timeline inspection, tool-call auditing, and correlating Pi session timestamps with CCM routing decisions.
This skill should be used when the user asks to "query projects", "show active projects", "update project status", "mark project as completed", "generate project dashboard", or mentions project metadata management in Obsidian-style markdown repositories. Provides automated tools for querying, updating, and tracking projects with structured YAML frontmatter.