用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/tomevault-io/tomes --skill beutl命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
> Use when this capability is needed.
Use when writing kernel, account, or note MASM code that reads from or writes to the advice provider (advice stack / advice map) — validate advice data.
Use when writing a Rust test that exercises a failure path or a MASM test that expects a `panic` / `assert` — assert on the specific expected error variant or error code.
基于 SOC 职业分类
正在显示 SKILL.md
| name | beutl |
| description | | Use when this capability is needed. |
Mirror the CI review surface so the loop "push → wait → fix" collapses into "fix → push".
Unless $ARGUMENTS already specifies quick or full, ask with AskUserQuestion:
@beutl-reviewer + @beutl-xaml-binderSkip the prompt if the user already said which one in this turn, or if $ARGUMENTS was passed.
/beutl-pre-pr should also catch changes the user has not committed yet — otherwise running it before the final commit silently skips the most likely cause of CI failures. Union four sets: committed-but-unpushed, staged, unstaged, and untracked.
git fetch origin main --quiet
BASE=$(git merge-base HEAD origin/main)
CHANGED=$( {
git diff --name-only "$BASE"...HEAD # committed on this branch
git diff --name-only --cached # staged
git diff --name-only # unstaged
git ls-files --others --exclude-standard # untracked
} | sort -u )
If CHANGED is empty, report Nothing to check — branch and working tree are clean against origin/main and stop.
dotnet format Beutl.slnx --verify-no-changes --no-restore
If this fails: stop here and offer to run dotnet format Beutl.slnx (writing). Do not auto-apply.
The PreToolUse hook .claude/hooks/check-gpl-mit-boundary.sh only inspects fragments from Edit / Write tool calls (new_string, content, edits[].new_string) — it cannot scan the working tree retroactively. So this step runs the shared diff-side scan script, which targets only the two forbidden linkage forms (ProjectReference and Compile Include); a bare mention of the Beutl.FFmpegWorker namespace in a comment, doc string, or already-linked source file is fine.
The scan mirrors the hook's one sanctioned exception: src/Beutl/Beutl.csproj may carry a build-order-only <ProjectReference ... ReferenceOutputAssembly="false" /> (paired with its CopyFFmpegWorkerForApp target), which keeps the GPL assembly out of the MIT compile closure. That exemption is path-specific — any other project, and any Compile Include, is still forbidden.
# $CHANGED already unions committed + staged + unstaged + untracked (step 0).
bash .claude/scripts/check-gpl-mit-boundary-diff.sh --files $CHANGED
Exit 0 = clean; exit 1 = violation(s), printed as file:line. Only src/Beutl.FFmpegWorker/ itself ships Beutl.FFmpegWorker linkages freely; src/Beutl/Beutl.csproj may use the sanctioned build-order-only ProjectReference described above; tests/Beutl.FFmpegBenchmarks is exempted (a BenchmarkDotNet project that intentionally link-compiles worker source files for direct-call benchmarking — not shipped in the MIT app). Every other project — including the MIT IPC layer at src/Beutl.FFmpegIpc/ — must reach the worker through the IPC protocol, never via ProjectReference (even with ReferenceOutputAssembly="false") or <Compile Include="...FFmpegWorker..." />. Any violation — stop.
Pick the smallest set of projects that cover the diff:
src/X/... → build src/X/X.csproj.axaml → build the project that owns itBeutl.slnxdotnet build <projects> -c Debug --nologo
Report the first 5 unique CS-codes plus file:line on failure.
Map each touched src/ project to its test project (see tests/CLAUDE.md). Run the union:
dotnet test Beutl.slnx -f net10.0 --settings coverlet.runsettings \
--filter "FullyQualifiedName~<substring-per-touched-area>" \
--logger "console;verbosity=normal"
On failure, list failing FQN + first error line. Do not auto-fix.
In parallel (separate Task tool calls in one message):
@beutl-xaml-binder if any .axaml is in CHANGED@beutl-reviewer alwaysWait for both, then merge their findings under "### Audit" sections.
## Pre-PR checks — <quick|full>
- Format: PASS|FAIL (<details>)
- GPL/MIT boundary: PASS|FAIL (<details>)
- Build: PASS|FAIL (<details>)
- Tests: PASS|FAIL|SKIPPED (<details>)
### Audit (full only)
- XAML compiled bindings: …
- 4-axis review: …
/beutl-pre-pr full./beutl-coverage afterwards — that workflow is heavier and intentionally separate.Source: b-editor/beutl — distributed by TomeVault.