Skip to content

chore: add CLAUDE.md, /release skill, and permission allowlist additions - #32

Merged
TakiTake merged 1 commit into
mainfrom
chore/agent-config
Jul 12, 2026
Merged

chore: add CLAUDE.md, /release skill, and permission allowlist additions#32
TakiTake merged 1 commit into
mainfrom
chore/agent-config

Conversation

@TakiTake

Copy link
Copy Markdown
Owner

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 (mise isn't installed in the dev container — run cargo directly; 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 /release skill derived from docs/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 from docs/release.md.
  • .claude/settings.json: appended read-only gh allowlist 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-review and /skeptical-review on the diff. The skeptical review caught real issues, fixed in this PR:

  • CLAUDE.md originally 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).
  • The release skill had no guidance for what happens if the release workflow fails after a tag is already public — added an explicit "if the release workflow fails" recovery path, plus a pre-tag sanity check (confirm Cargo.toml/CHANGELOG.md on main actually match the version before handing the tag command to the user), since release.yml only validates the tag after it's already pushed.
  • CLAUDE.md implied the pre-commit lint hook runs automatically; clarified it's opt-in (mise run setup-hooks / git config core.hooksPath .githooks).
  • The digest cross-check in the skill's artifact-verification step was framed as a hard requirement but the field can be null on some gh versions; downgraded to a bonus check with the .sha256 file as the authoritative one.

A /simplify pass then deduplicated the tag/push command snippet (was written out identically in both docs/release.md and the skill — now only in the skill, with docs/release.md pointing 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 JSON
  • cargo test — all tests pass (docs/config-only change, included per the mandated gate)
  • /code-review + /skeptical-review — findings addressed, described above
  • Verified every technical claim in CLAUDE.md/SKILL.md against the actual .github/workflows/*.yml, scripts/lint.sh, mise.toml, and .githooks/pre-commit

🤖 Generated with Claude Code

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>
@TakiTake
TakiTake merged commit aca6d66 into main Jul 12, 2026
2 checks passed
@TakiTake
TakiTake deleted the chore/agent-config branch July 12, 2026 13:08
@TakiTake TakiTake mentioned this pull request Jul 25, 2026
7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant