소스 정보
- 저장소
- iopsystems/rezolus
- 최근 소스 활동
- 2026년 7월 17일 14:51
- 감지된 SKILL.md 언어
- 영어
- 스타
- 272
- 포크
- 21
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/iopsystems/rezolus --skill sync-viewer-symlinks명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
SOC 직업 분류 기준
| name | sync-viewer-symlinks |
| description | Ensure site/viewer/lib has correct symlinks to src/viewer/assets/lib |
Synchronize symlinks in site/viewer/lib/ so that the site viewer picks up
all shared modules from src/viewer/assets/lib/.
The site viewer (site/viewer/) shares most of its JavaScript and CSS with
the agent viewer (src/viewer/assets/). Shared files are kept as symlinks
in site/viewer/lib/ pointing into src/viewer/assets/lib/. A small set of
site-specific files are standalone (not symlinked).
When new files are added to src/viewer/assets/lib/, the corresponding
symlink in site/viewer/lib/ must be created manually. This skill detects
and fixes any missing symlinks.
Only these two top-level files in site/viewer/lib/ are site-specific real
files (site keeps its own copy):
script.js — site-specific entry pointviewer_api.js — site-specific API transport layer (calls the in-browser
WASM registry instead of the HTTP backend)Everything else — including data.js — is a same-name symlink into
src/viewer/assets/lib/. (There is no data_base.js; that was an older
architecture. dashboards.js no longer exists.)
Most of site/viewer/lib/ is per-file symlinks, but some subtrees are covered
by a directory symlink — e.g. site/viewer/lib/embed -> ../../../src/viewer/assets/lib/embed — which serves every file underneath it.
So the invariant is resolution, not per-file-symlink presence: every shared
module must resolve at the same relative path under site/viewer/lib/.
A tool that looks only for a per-file symlink (or a find that doesn't descend
through a directory symlink) will false-flag files under a directory
symlink. Test with [ -e "$link" ] (follows all symlinks), never [ -L ].
CAUTION: because site/viewer/lib/embed is a directory symlink into src/,
writing to site/viewer/lib/embed/X writes through it into src/…/embed/X —
never mkdir/ln inside a directory-symlinked path.
scripts/check-viewer-symlinks.sh implements this (resolution-based) check and
runs on every PR via .github/workflows/viewer-symlinks.yml. Run it locally
before pushing a viewer change: bash scripts/check-viewer-symlinks.sh.
Scan src/viewer/assets/lib/ recursively for all .js and .css files
For each source file, determine the expected path in site/viewer/lib/:
script.js, viewer_api.js[ -e ])
via either a per-file symlink or a covering directory symlinkCheck whether the expected symlink exists and points to the correct
target. Compute the relative path from the symlink location back to the
source file (e.g., ../../../src/viewer/assets/lib/charts/chart.js for a
file in site/viewer/lib/charts/).
Create any missing symlinks. Create parent directories if needed. Report each symlink created.
Detect any stale symlinks in site/viewer/lib/ that point to
non-existent source files, and report them (but don't delete without
asking).
Stage newly created symlinks with git add.
Report a summary: how many symlinks checked, how many created, any stale links found.
A Claude Code hook at .claude/settings.json runs
.claude/scripts/pre-commit-check.sh before every git commit. It blocks
the commit if:
site/viewer/lib/src/viewer/dashboard/ or src/viewer/plot.rs files are staged)The hook wiring (.claude/settings.json) is per-checkout Claude Code
config, so the hook only fires for local Claude Code users — that is exactly
why the symlink check is also enforced in CI (viewer-symlinks.yml →
scripts/check-viewer-symlinks.sh), which is the binding gate for every PR.
To set up the local hook on a fresh checkout, create .claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash(git commit*)",
"hooks": [
{
"type": "command",
"command": ".claude/scripts/pre-commit-check.sh",
"timeout": 120
}
]
}
]
}
}
And copy or recreate .claude/scripts/pre-commit-check.sh (see the
existing copy in this repo's working tree for reference).