Running `npx skills add` at the repo root replaces the tracked skills/ source tree with symlinks and breaks lint
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- bun, node.js, typescript
- Lĩnh vực
- build-system, tooling
Hướng nghiên cứu
Reproduce the issue with npx skills add heygen-com/hyperframes --all, then inspect scripts/check-skill-mirror.mjs and trace the installer entry point that creates the symlinks. Verify behavior against the tracked skills/, .claude/skills/, and .agents/skills/ trees. Done means the install cannot replace tracked source or corrupt the mirror, and bun run lint still exits 0.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
Running the public installer inside this repo destroys its own source tree and then breaks bun run lint. npx skills add heygen-com/hyperframes at the repo root replaces all 20 tracked skills/<name>/ directories with symlinks into .agents/skills/<name>/, and fills .agents/skills/ with 20 skills that do not belong there. Git reports 914 tracked files as deleted.
Separate from #3861, which is about the metadata.internal gate: same command, different failure.
Reproduction
git clone https://github.com/heygen-com/hyperframes && cd hyperframes
git status --porcelain | wc -l # 0
bun run lint # exit 0
npx skills add heygen-com/hyperframes --all
git status --porcelain | wc -l # 935
bun run lint # exit 1
Observed
$ git status --porcelain | awk '{print $1}' | sort | uniq -c
21 ??
914 D
$ ls -ld skills/embedded-captions
lrwxr-xr-x 1 user staff 35 skills/embedded-captions -> ../.agents/skills/embedded-captions
The six repo-native skills under .claude/skills/ survive as real directories, so the damage is confined to the marketplace source under skills/ and to the mirror. Three distinct effects:
1. The marketplace source is replaced by symlinks. All 20 entries under skills/ become links into ../.agents/skills/<same-name>: embedded-captions, faceless-explainer, figma, general-video, hyperframes, hyperframes-animation, hyperframes-audio, hyperframes-cli, hyperframes-core, hyperframes-creative, hyperframes-keyframes, hyperframes-registry, media-use, motion-graphics, music-to-video, pr-to-video, product-launch-video, remotion-to-hyperframes, slideshow, talking-head-recut.
2. The skill mirror check fails, so the build gate fails. .agents/skills/ is meant to be a byte-identical copy of .claude/skills/, which is the six repo-native skills plus a README, and scripts/check-skill-mirror.mjs enforces that. After the install it holds 27 entries. bun run lint exits 1:
only in .agents/skills/: talking-head-recut/references/styles/whiteboard.html
only in .agents/skills/: talking-head-recut/references/styles/xhs.html
Rebuild the mirror: cp -r .claude/skills/. .agents/skills/ (or vice-versa)
error: script "lint" exited with code 1
Note that oxlint itself reports Found 0 warnings and 0 errors on stdout while the mirror failure goes to stderr. Anything that surfaces only the tail of stdout will report this as a clean pass.
3. Stray paths. 20 shadowing symlinks land in .claude/skills/ beside the six real repo-native directories, and a agent/skills/ directory appears at the repo root.
Expected
The installer's symlink strategy assumes the target is a consumer project. When the destination already contains the source of the skills being installed, linking a source path at its own output location is not safe. Either:
- Detect that the target is the skills' own repo and refuse, the way a package manager refuses to install a package over its own working copy, or
- Never write into a path tracked by the target's git index, or
- At minimum warn and require a confirmation flag before replacing a tracked directory with a symlink.
- Treat
.agents/skills/as off-limits in this repo, sincescripts/check-skill-mirror.mjsowns its contents.
Recovery
For anyone who hits this, before anything is committed:
for n in skills/*; do [ -L "$n" ] && rm "$n"; done
git checkout -- skills/
for n in .claude/skills/*; do [ -L "$n" ] && rm "$n"; done
rm -rf agent/
# restore the mirror: keep only README.md and the six repo-native skills
KEEP="README.md captions-overlay changelog-video cut-the-curve motion-doctrine oversized-cursor seam-craft"
for e in .agents/skills/*; do
n=$(basename "$e")
case " $KEEP " in *" $n "*) continue;; esac
git ls-files --error-unmatch "$e" >/dev/null 2>&1 || rm -rf "$e"
done
git status --porcelain | wc -l # 0
bun run lint # exit 0
Verified on a repo that hit this: 915 tracked files restored, all six repo-native skills intact, mirror identical to .claude/skills/, lint back to exit 0, working tree clean. Nothing is lost as long as the deletions were never committed.
Impact
Anyone who clones this repo to contribute a skill, then follows the README's own install instructions to try the skills locally, silently deletes the source they came to edit and breaks their build gate. The deletion is invisible until git status, and the lint failure reads as a mirror problem rather than as installer fallout.
Environment
macOS 15.6, repo at 14b9e2039, installer npx skills add resolved fresh.
- Ngôn ngữ chính
- TypeScript
- Star
- 54.1k
- Fork
- 4.9k
- Merge trung bình
- 7 giờ 18 phút
- Pull request đã merge (30 ngày)
- 784
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của heygen-com/hyperframes
-
Docs: clarify that "Enable auto-update" is only available in the Claude Code terminal (CLI) /plugin UICó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
heygen-com/hyperframes#5027 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
fix(producer): propagate useGpu to HDR layered streaming encoderCó thể đã có người làm @Monster-GM đã nhận 2 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 87/100
heygen-com/hyperframes#5002 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
heygen-com/hyperframes#4702 · 1 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Studio catalog prompt editor has no accessible nameCó thể đã có người làm @lorenzozanee đã nhận 12 ngày trước. Đang mởbug difficulty/easy triage/ready
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
heygen-com/hyperframes#4384 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
lint: validate composition variables declared on supported root elementsCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mởbug difficulty/easy triage/ready
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
heygen-com/hyperframes#4383 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của heygen-com/hyperframes
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
wardian-app/Wardian#1603 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Sign the pledgeĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
input-output-hk/devx-updates#168 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
github/docs#46222 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
agent-ready area: config area: skills type: chore upstream: brain-kit
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 95/100
-
dev experience frontend good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
cuttle-cards/cuttle#1403 ·
Maintainer thường phản hồi trong vòng 1 ngày