PR #46(v4.8.3) 병합 후 본 체크아웃에서 tests/test_issue42_skill_blocks.py::test_claude_skills_link_resolves_to_agents_skills 가 실패한다. 테스트만 고친다.
원인
테스트는 .claude/skills 를 .agents/skills 로 가는 심볼릭 링크 하나로 가정했다. 이 디렉터리는 로컬(git-ignored)이고, 이 워크스페이스처럼 스킬별 링크를 담은 디렉터리일 수도 있다(모든 링크는 정상). PR #46 의 리뷰·스위트는 워크트리에서 돌아 디렉터리가 없어 skip 이었으므로 병합 전에 드러나지 않았다.
수정
단일 링크(→ .agents/skills) 또는 여덟 스킬 각각이 .agents/skills/<skill> 로 해석되는 디렉터리를 모두 받는다.
.claude/skills 배치
새 테스트
이전 테스트
없음(워크트리)
skip
—
스킬별 링크(이 체크아웃)
pass
fail
링크 하나가 다른 스킬을 가리킴
fail
—
단일 링크
pass
—
제품 코드 변경 없음. tests/test_issue42_skill_blocks.py 전체 통과.
PR #46(v4.8.3) 병합 후 본 체크아웃에서 `tests/test_issue42_skill_blocks.py::test_claude_skills_link_resolves_to_agents_skills` 가 실패한다. 테스트만 고친다.
## 원인
테스트는 `.claude/skills` 를 `.agents/skills` 로 가는 심볼릭 링크 하나로 가정했다. 이 디렉터리는 로컬(git-ignored)이고, 이 워크스페이스처럼 스킬별 링크를 담은 디렉터리일 수도 있다(모든 링크는 정상). PR #46 의 리뷰·스위트는 워크트리에서 돌아 디렉터리가 없어 skip 이었으므로 병합 전에 드러나지 않았다.
## 수정
단일 링크(→ `.agents/skills`) 또는 여덟 스킬 각각이 `.agents/skills/<skill>` 로 해석되는 디렉터리를 모두 받는다.
| `.claude/skills` 배치 | 새 테스트 | 이전 테스트 |
|---|---|---|
| 없음(워크트리) | skip | — |
| 스킬별 링크(이 체크아웃) | pass | fail |
| 링크 하나가 다른 스킬을 가리킴 | fail | — |
| 단일 링크 | pass | — |
제품 코드 변경 없음. `tests/test_issue42_skill_blocks.py` 전체 통과.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
test_claude_skills_link_resolves_to_agents_skills assumed .claude/skills is
one symlink to .agents/skills. It is local and git-ignored, and a checkout
may instead hold a directory with one link per skill (this workspace's
layout), where every link is correct but the test failed. PR #46's reviews
and suites ran in worktrees, where the directory is absent and the test
skips, so the failure only showed in the main checkout after the merge.
The test now accepts a single link to .agents/skills, or a directory whose
entry for each of the eight skills resolves to the matching
.agents/skills/<skill>. Checked against no link (skip), per-skill links
(pass; the old test fails), one link pointing at the wrong skill (fail) and
a single link (pass).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VCgu9Fa9iT7TbJUSzdq4Ff
Path.exists() follows the link, so a dangling top-level .claude/skills read
as "absent" and the test skipped: every skill's load path could be broken
with the suite still green (codex R1 on PR #47; the exists() branch predates
this PR).
The check moves into claude_skills_problems(link, skills_dir, names):
absence is "neither exists nor is a symlink"; a symlink must resolve to
.agents/skills; a directory must hold each skill resolving to the matching
.agents/skills/<skill>. test_claude_skills_layouts runs it on synthetic
layouts (absent, single link, per-skill links, a link to the wrong skill, a
dangling top-level link, a dangling per-skill link), so it is exercised in
a worktree too. Replaying the review's probe (a dangling .claude/skills in
the tree) now fails; the main checkout's per-skill layout reports nothing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VCgu9Fa9iT7TbJUSzdq4Ff
Godopu
merged commit c5c7eff6f7 into main2026-10-04 04:54:59 +00:00
codex R1: Path.exists() 는 링크를 따라가므로 깨진 최상위 .claude/skills 가 "없음"으로 skip 됐다(이전 버전에도 있던 구멍). 150b493 에서 검사를 claude_skills_problems() 로 옮기고, 부재는 "존재하지도 않고 링크도 아님"일 때만으로 한정했다. 합성 배치 6 개(없음·단일 링크·스킬별 링크·다른 스킬을 가리키는 링크·깨진 최상위 링크·깨진 스킬 링크)를 테스트로 두어 워크트리에서도 검사한다.
확인: 병합 후 본 체크아웃에서 tests/test_issue42_skill_blocks.py·tests/test_version_consistency.py41 passed, skip 없음(PR #46 병합 후 실패하던 링크 검사 포함). 테스트 함수 하나만 바뀌어 전체 스위트는 돌리지 않았다.
## 병합 요약 (v4.8.4)
병합 커밋 c5c7eff, 릴리스 65dc7fd.
| 회차 | head | claude | agy | grok | codex |
|---|---|---|---|---|---|
| 1 | e1ed270 | PASS | PASS | PASS | NOT PASS (R1) |
| 2 | 150b493 | PASS | PASS | PASS | PASS |
- **codex R1**: `Path.exists()` 는 링크를 따라가므로 깨진 최상위 `.claude/skills` 가 "없음"으로 skip 됐다(이전 버전에도 있던 구멍). 150b493 에서 검사를 `claude_skills_problems()` 로 옮기고, 부재는 "존재하지도 않고 링크도 아님"일 때만으로 한정했다. 합성 배치 6 개(없음·단일 링크·스킬별 링크·다른 스킬을 가리키는 링크·깨진 최상위 링크·깨진 스킬 링크)를 테스트로 두어 워크트리에서도 검사한다.
- **확인**: 병합 후 본 체크아웃에서 `tests/test_issue42_skill_blocks.py`·`tests/test_version_consistency.py` **41 passed, skip 없음**(PR #46 병합 후 실패하던 링크 검사 포함). 테스트 함수 하나만 바뀌어 전체 스위트는 돌리지 않았다.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
PR #46(v4.8.3) 병합 후 본 체크아웃에서
tests/test_issue42_skill_blocks.py::test_claude_skills_link_resolves_to_agents_skills가 실패한다. 테스트만 고친다.원인
테스트는
.claude/skills를.agents/skills로 가는 심볼릭 링크 하나로 가정했다. 이 디렉터리는 로컬(git-ignored)이고, 이 워크스페이스처럼 스킬별 링크를 담은 디렉터리일 수도 있다(모든 링크는 정상). PR #46 의 리뷰·스위트는 워크트리에서 돌아 디렉터리가 없어 skip 이었으므로 병합 전에 드러나지 않았다.수정
단일 링크(→
.agents/skills) 또는 여덟 스킬 각각이.agents/skills/<skill>로 해석되는 디렉터리를 모두 받는다..claude/skills배치제품 코드 변경 없음.
tests/test_issue42_skill_blocks.py전체 통과.🤖 Generated with Claude Code
병합 요약 (v4.8.4)
병합 커밋
c5c7eff, 릴리스65dc7fd.e1ed270150b493Path.exists()는 링크를 따라가므로 깨진 최상위.claude/skills가 "없음"으로 skip 됐다(이전 버전에도 있던 구멍).150b493에서 검사를claude_skills_problems()로 옮기고, 부재는 "존재하지도 않고 링크도 아님"일 때만으로 한정했다. 합성 배치 6 개(없음·단일 링크·스킬별 링크·다른 스킬을 가리키는 링크·깨진 최상위 링크·깨진 스킬 링크)를 테스트로 두어 워크트리에서도 검사한다.tests/test_issue42_skill_blocks.py·tests/test_version_consistency.py41 passed, skip 없음(PR #46 병합 후 실패하던 링크 검사 포함). 테스트 함수 하나만 바뀌어 전체 스위트는 돌리지 않았다.🤖 Generated with Claude Code