소스 정보
- 저장소
- XRPLF/xrpl-py
- 최근 소스 활동
- 2026년 5월 26일 17:24
- 감지된 SKILL.md 언어
- 영어
- 스타
- 241
- 포크
- 135
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/XRPLF/xrpl-py --skill batch-deps-upgrade명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | batch-deps-upgrade |
| description | Batch all open Dependabot dependency upgrade PRs into a single PR |
| disable-model-invocation | true |
Batch all open Dependabot dependency upgrade PRs into a single PR for this repository.
Run: gh pr list --repo XRPLF/xrpl-py --label dependencies --state open --limit 500 --json number,title,headRefName,body,url
Parse each PR to extract package names and versions. Dependabot PRs come in two formats:
bump <pkg> from <old> to <new> — parse from titlebump <pkg1> and <pkg2> with no versions — parse from PR body, which contains a structured list of package updates with version rangesIf any PR can't be parsed from either title or body, flag it for manual review. Build a table of all proposed upgrades. Report the table to the user before proceeding.
deps/batch-deps-upgrade-YYYY-QN (use current year and quarter)pyproject.toml constraints and run poetry show <pkg> to check if any other dependency pins a version range that would block the upgrade. Mark conflicts as Skipped (dependency conflict: pyproject.toml under [tool.poetry.dependencies] or [tool.poetry.group.dev.dependencies]): update the version constraint in pyproject.toml to the new version using caret (^<new_version>), then run poetry update <pkg>. Always update pyproject.toml for direct deps — even if the current constraint already allows the new version — so the pinned minimum stays current.pyproject.toml): run poetry update <pkg> to update within the existing constraint rangepoetry lock to regenerate poetry.lock. Do NOT delete poetry.lock and regenerate from scratch.poetry install to sync the virtual environment.pyproject.toml and poetry.lock against main to classify each Dependabot PR as:
## [Unreleased] in CHANGELOG.md.Run the full validation suite across all Python versions from the CI matrix. Repeat until everything passes.
Read each workflow file under .github/workflows/ to determine the Python versions used:
.github/workflows/unit_test.yml — the unit-test job uses a matrix of Python versions; the lint-and-type-check job uses a single Python version (not a matrix).github/workflows/integration_test.yml — the integration-test job uses a matrix of Python versions.github/workflows/faucet_test.yml — the faucet-test job uses a matrix of Python versionsExtract the exact Python versions from each workflow's matrix.python-version array (or the PYTHON_VERSION env var for lint). These versions are the source of truth for validation.
To switch Python versions for testing, use pyenv and poetry:
pyenv install <version> # install if not already present
pyenv local <version> # set the local Python version
poetry env use python<version> # point poetry to the correct interpreter
poetry install # reinstall deps for this interpreter
Replace <version> with the target version (e.g. 3.10, 3.11, 3.12, 3.13, 3.14). After running all tests for one version, repeat these steps to switch to the next.
Run validation in parallel across all Python versions from the unit test matrix to speed things up. For each Python version, create a separate working directory (e.g. using git worktree or by spawning parallel agents) so that each version's virtual environment does not interfere with the others.
For each Python version, run the following in order:
Lint and type-check (only on the single lint Python version from the lint-and-type-check job):
poetry run poe lint
poetry run mypy --strict --implicit-reexport xrpl
Unit tests:
poetry run poe test_unit
poetry run coverage report --fail-under=85
Integration tests (requires a single shared xrpld Docker container — start it once before running integration tests for any Python version):
docker rm -f xrpld-service 2>/dev/null || truedocker run \
--detach \
--publish 5005:5005 \
--publish 6006:6006 \
--volume "$PWD/.ci-config/:/etc/xrpld/" \
--name xrpld-service \
rippleci/xrpld:develop --standalone
SECONDS=0
until nc -z localhost 6006 || [ $SECONDS -gt 120 ]; do sleep 2; done
if ! nc -z localhost 6006; then
echo "Error: xrpld did not start within 120s"
docker logs xrpld-service
exit 1
fi
poetry run poe test_integration
poetry run coverage report --fail-under=70
docker logs xrpld-service && docker stop xrpld-serviceFaucet tests:
poetry run poe test_faucet
Collect results from all parallel runs. All Python versions must pass.
If any step fails, attempt to fix the breaking change with code modifications before rolling back. Common patterns:
Only roll back and mark as Skipped if:
If a failure is traced to a specific dependency upgrade, revert that upgrade in pyproject.toml, re-run poetry lock && poetry install, mark it as Skipped, and re-run validation until green.
After all upgrades are applied and validation passes, generate the following outputs:
Write .claude/skills/batch-deps-upgrade/code-changes.md documenting every non-pyproject.toml source code change, explaining what broke, why, and the minimal fix applied.
Write .claude/skills/batch-deps-upgrade/pr-description.md following the repo's PR template (.github/pull_request_template.md):
CHANGELOG.md entry was added in Step 2.7.No if the major version number did not change. Otherwise Yes plus a link for each major version crossed. For example, 1.x → 3.x yields Yes ([v2](url), [v3](url)). Each link should point to the package's release notes or changelog for that major version. Verify each link returns HTTP 200 and has meaningful content (e.g., curl -sL -o /dev/null -w "%{http_code}" <url>); if a package doesn't publish per-version GitHub releases, fall back to the CHANGELOG file or the closest valid release tag.