chore: add CLAUDE.md, /release skill, and permission allowlist additions - #32
Merged
Conversation
Encodes lessons from shipping v0.1.0 (build/lint commands, git worktree workflow, and which publish-facing actions get gated to the human user) into a repo-root CLAUDE.md so future sessions don't rediscover them. Adds a `/release` skill that operationalizes docs/release.md into an explicit agent/user step sequence, including a failure-recovery path for a tag that gets pushed against a broken release-prep state. Appends read-only gh-command entries to .claude/settings.json's allowlist (no mutating commands). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Encodes what this session learned shipping pall8t v0.1.0 into the repo so future sessions/teammates don't rediscover it from scratch:
CLAUDE.md(repo root): build/verify commands (miseisn't installed in the dev container — runcargodirectly; cross-target lint required for#[cfg(target_os)]branches), the git worktree workflow, and which publish-facing actions the permission system gates to the human user (tag pushes,gh repo create, pushes to the Homebrew tap,gh pr merge) — framed as "publishing anything public-facing may need the user," not a closed list, since a push to an existing public repo (the tap) was gated too. Links out to README/docs rather than duplicating them..claude/skills/release/SKILL.md: an operational, step-by-step/releaseskill derived fromdocs/release.md, with explicit agent/user actor labels per step, the artifact-verification commands (checksum, tarball layout, Mach-O ARM64 magic bytes) that were actually used to verify v0.1.0, and a failure-recovery note for the case where a tag gets pushed against a release-prep state that turns out to be broken. Cross-linked fromdocs/release.md..claude/settings.json: appended read-onlyghallowlist entries (gh pr diff,gh pr checks,gh run list/view/watch,gh release list/view) that prompted repeatedly this session. Nothing mutating.Review notes
Ran
/code-reviewand/skeptical-reviewon the diff. The skeptical review caught real issues, fixed in this PR:CLAUDE.mdoriginally stated the permission gates as an absolute, closed list; reworded to reflect that it's an externally-enforced, empirically-observed pattern, not a repo invariant — and to stop implying that pushes to existing public repos are safe (they aren't; the tap push was gated too).Cargo.toml/CHANGELOG.mdonmainactually match the version before handing the tag command to the user), sincerelease.ymlonly validates the tag after it's already pushed.CLAUDE.mdimplied the pre-commit lint hook runs automatically; clarified it's opt-in (mise run setup-hooks/git config core.hooksPath .githooks).ghversions; downgraded to a bonus check with the.sha256file as the authoritative one.A
/simplifypass then deduplicated the tag/push command snippet (was written out identically in bothdocs/release.mdand the skill — now only in the skill, withdocs/release.mdpointing to it) and removed a session-dated self-reference ("gated the session this skill was written") in favor of a stable statement.Test plan
python3 -m json.tool .claude/settings.json— valid JSONcargo test— all tests pass (docs/config-only change, included per the mandated gate)/code-review+/skeptical-review— findings addressed, described above.github/workflows/*.yml,scripts/lint.sh,mise.toml, and.githooks/pre-commit🤖 Generated with Claude Code