실제 제품을 적절한 조작 환경에서 실행해 변경 사항을 검증하고, 사용자가 확인할 수 있는 증거를 모아 인수 보고서로 게시합니다. 기존 검증 계획을 확인하거나 점검 항목을 만들고, `lh` CLI로 결과를 게시할 수 있습니다.
- 변경된 제품 동작을 실제로 확인하기
- 스크린샷 등 검증 증거 수집하기
- 검증 계획과 보고서 작성하기
ESLint로 표현하기 어려운 판단을 다루는 모델 기반 코드 규칙을 `packages/alint`에서 관리합니다. 실제 코드로 오탐을 조정하고 결과를 분류하며, 실제 PR 데이터로 경고를 오류로 승격할 기준을 정하고 토큰 비용도 확인합니다.
Maintain LobeHub's model-backed alint rule set in packages/alint: author a rule, calibrate its false positives against real source, decide its severity (warn vs error) from real PR data, and track its token cost. Use for adding or narrowing an alint rule, classifying findings as true/false positives, promoting or demoting a rule, or running the weekly rule-set review.
실행 점수 미검증
설치 방법 보기이 스킬은 ESLint로 표현하기 어려운 판단을 다루는 모델 기반 코드 검사 규칙을 packages/alint에서 관리합니다. 실제 코드와 리뷰 의견을 바탕으로 규칙을 정하고, 검출 결과를 참 양성과 오탐으로 분류하는 절차를 안내합니다. 반복되는 오탐은 제외 조건과 테스트용 픽스처에 반영합니다. 새 규칙은 경고로 시작하며, 실제 풀 리퀘스트 결과를 확인해 오탐이 없을 때만 오류로 승격합니다. 검출이 지나치게 많은 규칙을 감사용 검사로 옮기는 판단과 실행별 토큰 사용량 확인도 다룹니다.
팀에 자체 코드 품질 규칙을 도입하거나 기존 규칙의 오탐을 줄이려는 경우에 사용할 수 있습니다. 경고를 오류로 바꾸는 기준을 정하고, 정기적으로 규칙의 정확도와 실행 비용을 검토하려는 담당자에게도 유용합니다.
규칙을 편집하기 전에 packages/alint/README.md를 읽어야 합니다. 교정 실행에는 .alint/config.toml과 ALINT_API_KEY 또는 DEEPSEEK_API_KEY가 필요합니다. 규칙을 편집한 뒤에는 캐시를 삭제하고 bun run i18n과 구분되는 alint 전용 명령을 사용해야 합니다.
이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.
AI가 SKILL.md의 내용에서 주의가 필요한 작업과 도입 전제를 확인했습니다. 점수는 실제로 실행한 결과(실행 검증)만으로 매깁니다.
점수에는 넣지 않았습니다. 2026년 10월 26일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.
설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
packages/alint holds the model-backed lint rules for the judgement calls ESLint cannot
express — semantic rules such as "fan-out over a runtime-sized list needs pMap" or "a
secondary button is not primary". Each rule is a prompt that runs per file through
alint and is cached by file content.
This skill owns the lifecycle of that rule set: how a rule is written, how its false
positives are removed, when it earns error, and what it costs. It does not own the
rules themselves (they live in packages/alint/rules) and it does not restate the reading
contract — that is packages/alint/README.md. Read that file once before editing a rule.
Everything below is one cycle. An ad-hoc task runs the phase it needs; the weekly review runs the incremental phases on a schedule.
| Phase | What it does | Reference |
|---|---|---|
| A · Collect the standard | Pull the owner's recent review rejections, read them, keep the part that recurs and one file decides | calibration.md |
| B · Author the rule | rule.alint.toml: what to report, where to anchor, and an explicit "do not report" list | rule-authoring.md |
| C · Calibrate | Scan → sample → classify TP/FP → write the recurring FP patterns back as carve-outs → cold-run fixtures | calibration.md |
| D · Map the problems | Cluster findings across rules by file/area; that is the cleanup backlog | calibration.md |
| E · Promote | Read the rule's findings on real PRs; warn → error only at zero false positives | promotion.md |
| F · Account for the cost | Token usage per run; cache invalidation is the cost driver | cost.md |
These are the calls that are easy to get wrong. They are not suggestions.
no-node-in-browser kept only the "does this npm package need Node at runtime" half and
handed the import-path half to ESLint.good-*
fixture, so the exemption stays true.[[config.group]] files, never includeFiles inside a rule. includeFiles
only filters reports, so every file still runs (double the jobs) and the rule becomes
uncacheable.error is a promotion, not a starting point. A new rule starts at warn, and is
promoted only after its findings have been read on real PRs and measured at zero false
positives. Fixture groups stay warn so a rule PR never fails on its own bad-* fixtures.alint.audit.toml
(bun run alint:audit). test-the-exit-not-the-entry was deleted for producing 92% of all
findings and drowning the sharper rules.A calibration run fails expensively when the setup is not real. Check these in order; do not interpret a skipped suite as a pass.
.alint/config.toml exists (gitignored; bun run alint:setup, needs ALINT_API_KEY or
DEEPSEEK_API_KEY). Without it the fixture suite skips rather than fails — silence is
not a pass.bun run alint plugin install has run, and is re-run after adding a rule or a
packages/<pkg>/alint/rules directory. A missing lock entry exits 2 with no JSON.node_modules resolves
@lobechat/* to the main checkout, so rule reads and type-checks lie..alintcache after every rule edit while calibrating. The local cache is keyed
by file content, so an edited rule otherwise replays the previous rule's findings.packages/alint/rules/<name>/rule.alint.toml (repo-wide, plugin prefix
lobehub). A rule about one package lives in packages/<pkg>/alint/rules under its own
prefix (e.g. hetero) and is registered in the matching [[config.group]].packages/alint/fixtures/<name>/ (mirrored next to a package-level rule):
bad-* with // alint-expect on the line above the anchor line (JSX children use
{/* alint-expect */}), and one good-* per carve-out.alint.config.toml (the PR check) and alint.audit.toml (the bulk
audit). Everything a repo-wide group needs is files, ignores, plugins, rules.bun run check --alint (changed lines by default; explicit paths lint whole
files), bun run alint --dirty, bun run alint:audit..agents/scripts/check/alint.ts (the --alint selector),
packages/alint/report.ts (the ALint check run, its annotations, one PR summary comment
with marker <!-- alint-summary -->, and a usage line), and the ALint & Test Desktop App
job in .github/workflows/test.yml. The check is not required, so a red check informs
rather than blocks.scripts/: collect-rejections.ts,
sample-findings.ts, pull-alint-runs.ts, cost-report.ts.acceptance (the rejection loop this rule set is fed by), ux (the design values the
ui-* rules encode), react / compose-atoms / data-fetching-architecture (the sources
of the engineering rules), pr (how a rule PR is opened and stacked on its base).
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
실제 제품을 적절한 조작 환경에서 실행해 변경 사항을 검증하고, 사용자가 확인할 수 있는 증거를 모아 인수 보고서로 게시합니다. 기존 검증 계획을 확인하거나 점검 항목을 만들고, `lh` CLI로 결과를 게시할 수 있습니다.
LobeHub에 AI 모델 제공자를 추가하는 과정을 안내합니다. 런타임 연동, 모델 정보와 설정, 브랜드 표시, 문서화 및 인수 확인을 다루며, 기존 제공자에 모델만 추가하는 경우와 새 연동이 필요한 경우를 구분합니다.
서버 환경 변수로 사용자 설정의 기본값을 지정하도록 구현하는 절차를 안내합니다. 변수 검증, 서버 설정 구성, 사용자 저장소 반영부터 예시 환경 파일과 셀프 호스팅 문서 갱신까지 다룹니다.
에이전트 실행 단계, 도구 호출, 사람의 승인, 컨텍스트 압축, 하위 에이전트 호출에 훅을 등록하는 방법을 안내합니다. 이벤트를 관찰하고 로컬 도구 결과를 모의하거나 설정에 따라 웹훅으로 도구 호출을 허용 또는 거부할 수 있습니다.
에이전트의 이벤트 기반 백그라운드 작업을 설계하고 구현하도록 돕습니다. 소스, 시그널, 액션, 정책의 역할을 나누고 비동기 처리, 중복 실행 방지, 완료 기록과 관측 기능을 다룹니다.
실제 데스크톱 채팅 앱에서 봇 채널의 인수 테스트를 진행합니다. Discord, Slack, Telegram, WeChat, Lark, QQ에서 메시지를 보내고 응답을 기다린 뒤 결과 화면을 캡처합니다. iMessage는 BlueBubbles 브리지를 사용합니다.