Skip to main content

consumer-release-gates

Reproduce an alef-generated consumer repo's release gate locally before cutting a release, and verify published package names against the real manifest rather than a guessed coordinate. Use this skill before tagging a release in any repo whose bindings are generated by alef, or when auditing whether a package actually reached its registry.

소스 정보

저장소
xberg-io/agent-conventions
최근 소스 활동
2026년 8월 25일 08:54
감지된 SKILL.md 언어
영어
스타
8
포크
2

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
consumer-release-gates
description
Reproduce an alef-generated consumer repo's release gate locally before cutting a release, and verify published package names against the real manifest rather than a guessed coordinate. Use this skill before tagging a release in any repo whose bindings are generated by alef, or when auditing whether a package actually reached its registry.
license
MIT
# Consumer Release Gates A consumer repo's release workflow runs a gate before it will publish anything. Reproduce it locally — it answers in under a second and is the same check the release workflow runs. ## Reproduce the gate before tagging ```bash cd <consumer-repo> && alef validate versions --json | jq '{ok, bad:[.checks[]|select(.ok==false)]}' ``` `ok: false` means the release will publish **nothing** — the gate failing skips the primary registry publish job, and every downstream language-package build then fails with a version resolution error against a registry version that was never pushed. Those failures look like many unrelated bugs; they are one cascade from a single failed gate. A `blocked_on_publish` entry in a check is expected and tolerated by design — `all_ok()` ignores it, because a lockfile holding a dependency on the not-yet-published version genuinely cannot resolve before publish. Only entries with `blocked_on_publish: null` are real failures. Fix a real failure with `cargo update --offline -w` run in the lockfile's own directory — it relocks offline in one shot. **Run the gate after the version bump, never before.** The bump re-runs alef's version sync, which rewrites manifest versions and leaves lockfiles stale again — checking before the bump validates a state the bump is about to invalidate. ## Verify a published package by its real manifest name, not a guessed one Different registries use different casing/separator conventions for the same package (underscores vs. hyphens, a shortened vs. a full name, a group ID that doesn't match the repo name). Guessing the coordinate manufactures phantom "never published" findings. Before querying any registry: 1. Read the actual name out of the manifest the registry publishes from — `*.gemspec`, `pubspec.yaml`, `pom.xml`, `composer.json`, `package.json`, `Cargo.toml` — never infer it from the repo name. 2. Query the authoritative endpoint, not a search UI that can false-negative: e.g. prefer `repo1.maven.org/maven2/<group-path>/<artifact>/maven-metadata.xml` over a Maven search page. 3. `crates.io`'s API requires a `User-Agent` header — an unauthenticated request without one returns not-found regardless of whether the crate exists. 4. A per-language config block being absent from `alef.toml` (e.g. no `[crates.php]` override) means that language uses its defaults, not that publishing is disabled for it. Absence of an override is not evidence of "not published" — query the registry before reporting a gap. 5. Watch for name collisions with unrelated third-party packages already occupying the "obvious" name on a given registry — confirm you're looking at the right owner/coordinate, not just a package that exists. A fabricated gap is worse than a missed real one: it sends real effort at a non-problem, and once one reported "gap" turns out to be noise, a genuine gap in the same report becomes easy to dismiss too.
GitHub에서 보기