release
無料Release a new version of the DCC system
日本語の概要は準備中です。原文の説明を表示しています。
Create a pull request for the DCC system. Handles branch verify, i18n translation, checks, E2E gate, simplify, commit, push, create/update PR, review, auto-fix. No version bump — that happens on main at release time.
日本語の概要は準備中です。原文の説明を表示しています。
実行スコア 未検証
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Execute each step below sequentially using your tools directly. Run everything in the main context except for Step 12 (review agent).
If arguments are provided, treat them as the base branch (default: main).
This repo is pnpm-only. package.json has "preinstall": "npx only-allow pnpm" and packageManager: pnpm@11.25.0, and only pnpm-lock.yaml is
committed. Every command below is pnpm run ...; never npm.
Run git branch --show-current to get the current branch name.
main or master: STOP and tell the user to create/checkout a feature branch.Tim does his own git work in this checkout, so re-verify git status right
before any branch operation and stop if the tree is mid-merge or mid-rebase.
If any lang/*.json files have been modified (check git diff --name-only main...HEAD and git diff --name-only):
lang/en.json: For every key added to en.json, add properly translated equivalents to ALL other language files (cn.json, de.json, es.json, fr.json, it.json, pl.json). Never leave English text in non-English files.lang/en.json: Remove the same keys from all other language files.pnpm run compare-lang to verify all language files have matching keys. Fix any discrepancies before proceeding.If NO lang files were modified in the diff, check whether any new game.i18n.localize() or game.i18n.format() calls were added in changed JS/HBS files that reference keys not present in lang/en.json. If so, add the missing keys to en.json and translate to all other languages.
Do NOT change version.txt in the PR. The bump always lands on main as
its own commit, after the PR merges (that's the /release skill's job —
see docs/dev/RELEASE_PROCESS.md).
Why: PRs are squash-merged, so a bump inside the PR gets folded into the
feature commit. The foundry-release-action builds release notes from commits
since the last release but excludes the commit that carries the
version.txt change — so the PR vanishes from its own release notes (this
bit #849 in v0.70.35 and #852 in v0.70.37).
If the diff already touches version.txt, revert that change before
committing and mention it in the final summary.
system.json or package.json versions either — the GitHub
Action derives them from version.txt.module/vendor/dcc-core-lib/ is generated output, synced by pnpm run sync-core-lib (the /sync-core-lib skill). Check the diff for it:
git diff --name-only main...HEAD -- module/vendor/dcc-core-lib | head
VERSION.json bump, or a commit that isn't a vendor: sync ... commit):
STOP and report. The fix belongs upstream in moonloch/dcc-core-lib,
then flows in through the sync skill.sync-core-lib. A permanent
adapter workaround for a lib bug is not acceptable; if the lib PR has
already merged, run the sync and drop the workaround in this PR instead.CLAUDE.md requires that any behavior change updates the affected unit tests
and the browser-tests/e2e/ Playwright specs in the same change.
grep -rn "<old class|old text|old flag|old selector>" browser-tests/e2e/ module/**/__tests__/
Rewrite every stale assertion to the new contract.A change to a chat card, roll, sheet, data model, or any user-visible output that touches no spec almost always means one was missed. Say so in the summary if you concluded none was needed, and why.
Run pnpm run check (which runs format, test, and compare-lang).
pnpm run check is Vitest-only. If the diff touches the attack, chat-card,
roll, or sheet paths (broadly: module/*attack*, module/chat*,
module/*roll*, module/*sheet*, module/vendor/dcc-core-lib/, styles/,
templates/), the full browser-tests/e2e suite must run before pushing.
pnpm run e2e:env test # full suite, isolated per-worktree env (#893)
pnpm run e2e:env test some-spec.spec.js # single spec while iterating (no `--` separator)
Notes:
module/** while a run is in flight — a run
that spans an edit mixes code versions into one green summary. Batch edits
between runs.v14-features effect toggle and two-weapon primary in adapter-dispatch.spec.js
(#867). (The fresh-world welcome-tour overlay is now suppressed at login by
prepareClientSettings in browser-tests/e2e/fixtures.js.)git diff --stat to identify modified files.game.i18n.localize()styles/ are listed in system.json's styles array (layer system) at the right source-order positionpnpm run check. If checks fail, revert those changes.Update the docs the diff actually invalidates. The usual suspects:
| Change | Doc |
|---|---|
Public/extension surface (class registration, hooks, CONFIG.DCC) | docs/dev/EXTENSION_API.md — known to drift; check it every time |
| New/changed classes, data models, dispatch flow | docs/dev/ARCHITECTURE.md |
| New spec, fixture, or test command | docs/dev/TESTING.md, docs/dev/TEST_COVERAGE.md |
| New i18n conventions | docs/dev/I18N.md |
| Compendium/pack workflow | docs/dev/PACKS.md, docs/dev/LEVELDB_WORKFLOW.md |
| Release/versioning behavior | docs/dev/RELEASE_PROCESS.md |
| New setting or user-visible feature | docs/user-guide/, README.md |
| New rule for how Claude works in this repo | CLAUDE.md |
Include the doc updates in the same commits/PR.
Grep for any class, function, constant, hook name, setting key, or template path that was renamed or removed in the diff, then search for its usage in all four dependent modules:
../../modules/dcc-qol../../modules/xcc../../modules/mcc-classes../../modules/dcc-crawl-classesmcc-classes and dcc-crawl-classes are real consumers of the class
registration / extension API, so extension-surface changes are most likely to
break there.
If a dependent module references something that was changed, STOP and report the potential breakage to the user before proceeding.
git status and git diff to see all changes.git add . (.husky/pre-commit: pnpm run format && git add . && pnpm test). It sweeps every untracked file into the
commit, so staging specific paths is not enough on its own — before
committing, confirm git status shows no stray untracked files, and move
scratch files out of the repo (use the session scratchpad) if it does.chore: translate new i18n keys to all languages)version.txt is bumped on main after the merge (Step 3)git add <specific files> — avoid git add -A (and see the hook caveat above).Co-Authored-By: / Claude-Session: lines from the
session's attribution system-reminder). Do not hardcode a model version
here — it goes stale every release.git push -u origin $(git branch --show-current)
If push is rejected due to conflicts, STOP and report to user.
gh pr view --json number,title,url 2>/dev/nullgh pr create:## Summary (bullet points) and ## Test plan (checklist)gh pr edit --title "..." --body "...":git diff main...HEAD (or the base branch passed as an argument) to understand the full scope of changes for the PR description.Launch the foundryvtt-dev:foundryvtt-reviewer agent using the Agent tool, pointed at the current working directory. Do not use isolation: "worktree": the reviewer is read-only (Read, Grep, Glob), so it cannot switch branches or modify anything — and when running inside a per-issue work:start worktree, a spawned worktree comes from the shared parent repo and lands on a stale worktree-agent-* branch that does not contain the PR's changes.
The reviewer will check for CLAUDE.md compliance, bugs, style issues, empty catches, swallowed errors, and test coverage gaps.
Collect and consolidate findings. Categorize as: Critical, High, Medium, Low.
Fix the findings categorized Critical or High in Step 14 (the reviewer emits severities, not numeric confidence scores — judge by severity). For each:
pnpm run check — plus the affected E2E spec(s) if the fix touches an E2E-gated path (Step 7).Escalation: If more than 3 issues need fixing, confirm with user before proceeding.
If a fix is complex or risky, report it instead of implementing it. Leave Medium/Low findings for the summary.
Output a structured summary:
[PR SUMMARY]
PR URL: <url>
Version: unchanged (bump happens on main at release time)
i18n: <count> keys added/removed across <count> language files
Tests: unit <updated/added> | E2E <specs updated / suite run or "not required (paths untouched)">
Commits: <count> (<original> original + <fix> fixes)
Issues fixed: <count>
Remaining: <count> (manual review suggested)
Dependent modules: OK / <issues found>
core-lib: clean / <temporary workaround pending sync>
Status: Ready for review / Needs attention
STOP and report (do not proceed automatically) when:
module/vendor/dcc-core-lib/ was hand-editeddcc-qol, xcc, mcc-classes, dcc-crawl-classes) reference changed/removed APIspnpm run compare-lang and fix before proceeding.e2e:env handles it since #898 — if it still hangs, report rather than retrying blindly.まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
Release a new version of the DCC system
日本語の概要は準備中です。原文の説明を表示しています。
Sync the vendored dcc-core-lib copy after a lib fix merges upstream, then clean up temporary adapter workarounds. Use after a moonloch/dcc-core-lib PR lands, or when asked to update module/vendor/dcc-core-lib.
日本語の概要は準備中です。原文の説明を表示しています。