Skip to main content

pr-to-green

Bring a pull request to green by syncing with main, resolving conflicts safely, and fixing failing checks with CausalPy conventions.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
pymc-labs/CausalPy
آخر نشاط في المصدر
١٠ يونيو ٢٠٢٦ في ١٠:١٨
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١٬١٩٠
التفرعات
١١٤

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
pr-to-green
description
Bring a pull request to green by syncing with main, resolving conflicts safely, and fixing failing checks with CausalPy conventions.
# PR to Green This skill provides a deterministic maintainer workflow for taking an in-flight PR branch to green. ## When to use - A PR is behind `main` and needs sync/rebase - There are merge conflicts to resolve intelligently - Remote checks are failing (tests, docs, lint, or packaging) - You need a concise update for the PR describing what was fixed and what remains ## Preconditions - Confirm branch and remotes before making git changes - Preserve user/unrelated local modifications; never discard unknown work - Use CausalPy environment commands: - `$CONDA_EXE run -n CausalPy <command>` - For PyMC/PyTensor/matplotlib imports and test commands, request full permissions as needed ## PR number entrypoint (manual invocation) If the user provides a PR number (for example `PR #724`), do this first: 1. Resolve PR metadata from GitHub - `gh pr view <number>` to get title, state, head branch, base branch, mergeability, and check summary. - `gh pr checks <number>` to get per-check pass/fail/pending status. 2. Move local repo to the PR branch - `gh pr checkout <number>` (preferred) so local branch tracks the PR head. 3. Verify branch context before edits - Confirm current branch, tracking status, and whether local uncommitted work exists. 4. Continue with the main workflow below using the PR base branch from GitHub metadata (not assumptions about `main`). ## Workflow 1. Triage and early exit - Assess PR state from entrypoint metadata: branch divergence, mergeability, and check results. - If the PR is up-to-date with its base branch, has no conflicts, and all remote checks pass: - Report "PR is green — no action needed" and stop. - Otherwise, classify what needs fixing: behind-base, conflicts, failing checks, or a combination. 2. Sync branch with base - Prefer `git fetch upstream` then `git rebase upstream/<base-branch>` (or maintainer-preferred merge strategy). - If the PR cannot be checked out, report the blocker and ask for maintainer guidance. - Resolve conflicts file-by-file with intent preservation. - Re-run targeted checks after conflict resolution to detect semantic drift. 3. Fix failing checks with smallest valid change - Lint/type: apply minimal code changes, avoid broad refactors. - Tests: patch root cause and add/adjust tests under `causalpy/tests/` if behavior changes. - Docs/doctest: follow docs placement and glossary/citation conventions. - Packaging/release checks: verify version and install/import expectations. 4. Re-run checks in escalating scope - Fast local signal first (targeted tests/lint). - Then full gate commands required by project norms. - Always run `prek run --all-files` before final handoff. - If fixes introduced new failures, loop back to step 3 with the new failure set. Do not push until a full local pass is achieved or blockers are identified. 5. Push and verify remote - Push fixes to the PR branch (`git push`). - Monitor remote checks via `gh pr checks <number>` until they complete or a timeout is reached. - If remote checks fail on issues not reproducible locally, note the discrepancy explicitly. 6. Prepare maintainer-ready status update - What was failing. - What changed to fix it. - Which checks now pass (local and remote). - Remaining blockers (if any) and exact next steps. ## Subagent delegation Use subagents (via the Task tool) when work is noisy, broad, or high-risk. Each subagent runs in its own context window and returns a condensed result. ### `ci-failure-investigator` Trigger when CI logs are long/noisy, failures span multiple jobs, or failure family is unclear. Handoff (include in Task prompt): - PR number and branch name - Failed job names and relevant log snippets or `gh run view` output - Ask for: root cause ranking, fix-first order, and minimal patch plan ### `merge-conflict-analyst` Trigger when rebase/merge produces non-trivial conflicts, intent differs across branches, or conflict count is high. Handoff (include in Task prompt): - Target branch and merge/rebase direction - Full conflict list (`git diff --name-only --diff-filter=U`) and key conflict markers/snippets - Ask for: conflict risk map, lowest-risk resolution order, and explicit escalations ### Maintainer escalation clause (required) Do not auto-resolve and continue silently when conflicts are highly complex. Instead, stop and request maintainer input with a brief report. Escalate by default when: - `.ipynb` conflicts are messy (overlapping cell content plus metadata/output churn) - conflict resolution would drop one branch's meaningful behavior - conflicts touch core contracts and intent is ambiguous (experiments/models/tests/docs all changed around same behavior) Escalation report must include: - conflicted file list and risk class - resolution options (1-2) with trade-offs - recommended next step and what decision is needed from maintainer ### Scope drift / upstream compatibility escalation (required) Do not keep patching silently when greening a PR turns into broader compatibility work outside the PR's feature surface. Stop after root-cause identification and ask the maintainer whether to continue in the PR or split the work into a separate branch/PR from `main`. Escalate by default when: - the failing checks are caused by third-party API or version drift in shared/core code - the fix would benefit multiple open PRs or the default branch, not just the current PR - the next fix would modify shared integrations beyond the feature the PR is introducing - successive CI reruns keep exposing new failure families outside the original PR scope Scope-drift report must include: - the original PR goal and the newly discovered broader issue - which files are feature-specific versus shared/core compatibility files - options: patch in the PR, split a separate compatibility PR, or pause for maintainer direction - the recommended next step and why ## CausalPy guardrails - Never use destructive git commands unless explicitly requested - Do not create ad hoc test scripts; use `pytest` tests in `causalpy/tests/` - Keep PyMC-heavy tests runtime-controlled via `sample_kwargs` - Keep docs/notebooks in correct locations and formats - If checks cannot be run, report exactly what was skipped and why
عرض على GitHub