The vex README already maintains a canonical CLAUDE.md integration
snippet, so embedding it here would duplicate and drift. Instead, link
to upstream and list the five additions worth keeping locally: MCP
server line, skip-vex rule, subagent reminder, auto_update accuracy
fix, and the --semantic ONNX download caveat.
Documents install on macOS/Linux (Homebrew) and Windows (cargo build
from source — no prebuilt Windows binary in v1.5.0). Includes per-project
bootstrap (.vex.toml with semantic + auto_update, vex index) and the
vex-mcp registration at user scope so it covers all projects.
Two real failures hit during notify-bridge v0.8.1 release that section 1
and section 10.1 didn't cover:
1. New section 1.1 — backend pytest in a per-run /tmp/venv. Single-package
ephemeral runners get away with pip install -e into the toolcache;
monorepos on persistent Gitea Act Runners (TrueNAS) hit
"error: uninstall-no-record-file" the second time a broken wheel
install leaks across runs. Venv per run, fresh site-packages, no leak.
2. New section 10.1.1 — pip wheel --no-deps on hatchling has been
observed to produce wheels with METADATA missing the Version field.
importlib.metadata.version() returns None and the UI advertises
0.0.0+unknown. Defense-in-depth: also expose __version__ from
__init__.py and pick the max of (metadata, __version__, source
pyproject) in the resolver. Documented when it's needed and when
section 10.1 alone is fine.
3. New section 14 troubleshooting entry — quotes the exact pip error
message and points at section 1.1 (prevention) and a one-shot
site-packages cleanup recipe (recovery on a stuck runner).
Substantial revision of dolgolyov-git-release-publisher SKILL.md.
New steps:
- Step 2: pre-flight guards (branch, remote sync, duplicate tag, dirty tree)
- Step 4: pre-release checks - detect project type, inspect CI config, run
tests/lint/typecheck/build locally before tagging
- Step 15: post-tag CI watch (link-only or poll until run finishes)
Improvements:
- SSH remote support in Step 1
- Detect prerelease tags separately in Step 3
- NUL-separated git log + BREAKING CHANGE: body scan in Step 5
- Prerelease version bumps (-rc.N / -beta.N / -alpha.N) in Step 8
- Mode A (RELEASE_NOTES.md overwrite) vs Mode B (CHANGELOG.md prepend) in Step 11
- Signed-tag detection in Step 14
New edge cases: redo-after-CI-failure flow, signed tags, tag-already-on-HEAD.
Also updates the one-line description in claude-code-tools.md and bumps
README last-updated date.
The step uses a generic DOCKER_REDEPLOY_WEBHOOK_URL secret and is not
Portainer-specific — any redeploy webhook endpoint works. Rename the step
label, echo line, and warning to reflect the generic nature.
Three separate things sink portable-Python-on-Windows VBS launchers,
all learned from a debugging session where a wled-screen-controller
shortcut silently did nothing:
1. wscript parses .vbs as ANSI — any UTF-8 byte (em-dash, smart quote,
even in a comment) triggers a dialog that lies about the cause:
"Not enough memory resources are available to complete this
operation." It's actually an encoding parse failure.
2. LF line endings parse inconsistently across WSH versions. Always
normalize to CRLF.
3. pythonw.exe has null stdout/stderr; libraries that touch those at
startup (uvicorn, structlog) can crash silently before the first
log line. python.exe with WshShell.Run cmd, 0, False gives real
stream handles attached to a hidden window — same visual result,
reliable startup.
Also added a build-script snippet that normalizes the VBS
automatically so nobody has to remember these rules.
Two cooperating bugs we hit in production caused a Pillow version
mismatch error on in-place upgrades. Documenting both so future
projects do not reproduce them.
- Section 4.3: removed the "delete .py, keep .pyc" snippet (no
compileall step ever ran, so the dist shipped with no .py and no
.pyc — every package's submodules were unimportable). Added a
warning box and the correct compileall -b pattern.
- Section 6: NSIS Core section now shows explicit RMDir /r of payload
dirs before File /r. NSIS File /r is a merge, not a replace, so
upgrades produce half-old/half-new site-packages.
- Section 14: new troubleshooting entry "Pillow / package version
mismatch on upgrade" with the symptom, both root causes, and a
file-state table showing how the mismatch arises.
Bare labels like 'dev' or 'nightly' break pip/setuptools when
stamped into pyproject.toml. Add a regex check that falls back
to 0.0.0.dev0 with a warning, plus a callout explaining the
gotcha.
Describes a workflow_dispatch-triggered build.yml that produces
CI artifacts without creating a Gitea release. Useful for testing
builds before tagging.
Standalone workflow: push v* tag → create Gitea release with
optional RELEASE_NOTES.md. No builds or artifacts — just the
release entry. Links to full CI/CD guide for extensions.
LocalRepos.md stores paths to local repos that should be kept in
sync when CI/CD documentation is updated. Added mandatory rule
to CLAUDE.md to propagate relevant changes.
- Section 10: Single source of truth via pyproject.toml + importlib.metadata,
CI version stamping, Docker build args, updated fallback chain
- Section 11: Release provider abstraction, PEP 440 version normalization,
install type detection, update service pattern, NSIS silent install,
portable ZIP/tarball swap scripts, API endpoints, frontend integration
Document the VBS wrapper approach for launching Windows apps
without console window flash. Update NSIS example to prefer
VBS over direct bat execution.
- Move ECC setup guide reference from README to claude-code-tools.md
- Add CLAUDE.md with mandatory README sync rule
- Add "Last updated" date to README
- README is now a clean index of repo contents
Add ::warning:: annotation and fallback to fetch existing release
when tag already has a release. Add troubleshooting section for
re-triggering failed release workflows. Fix markdown lint warnings.
Three silent-failure bugs: python3 Store stub, claude-vscode entrypoint
rejected, observer disabled by default. All must be fixed for observations
to flow.
Separate AST Index into its own Skills section, add descriptions
for both extension mechanisms, and fix markdown lint warnings.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>