Crypt-Age

 view release on metacpan or  search on metacpan

.claude/agents/crypt-age-release-checker.md  view on Meta::CPAN

   to the unreleased `$VERSION` sitting in that distribution's local repo.

3. **`Changes`** — a `{{$NEXT}}` section exists and covers the user-visible changes
   since the last release (`git log --oneline v<last>..`). Entries name the effect on a
   caller or on the file format, not the internal refactor.

4. **`dzil build`** — runs clean: no missing files, no warnings. Note that `.claude/`
   and `CLAUDE.md` **are** shipped in the tarball, deliberately: this distribution
   discloses how it was built, so there is no `gather_exclude_match` in `dist.ini` and
   their presence is not a finding. What *is* a finding: anything under `.claude/` that
   should never be published — a stray `settings.local.json`, credentials, session
   state. `.gitignore` keeps those untracked and `Git::GatherDir` ships tracked files
   only, so check that the untracked set is still what it should be.

5. **Interop proof — the one specific to this distribution.** A release claims byte
   compatibility with `age`. Check whether `t/04-interop.t` actually *ran*: it
   `plan skip_all`s when neither `age` nor `rage` is on PATH, and the suite then reports
   `All tests successful` having asserted nothing about compatibility. Report the state
   plainly — "interop verified against age <version>" or "interop NOT verified, no
   binary" — and treat the latter as a release blocker, not a note.

.gitignore  view on Meta::CPAN

# Claude Code — commit: skills/, agents/, rules/, hooks/, settings.json
# Ignore: local overrides, credentials, session data

# Tracked: shared config & extensibility
!/.claude/
.claude/*
!.claude/settings.json
!.claude/agents/
!.claude/agents/**
!.claude/skills/
!.claude/skills/**
!.claude/rules/
!.claude/rules/**
!.claude/hooks/
!.claude/hooks/**

# Local overrides (machine-specific)
.claude/*.local.*
.claude/local/

# Credentials & session state (never track)
.claude/.credentials.json
.claude/statsig/
.claude/todos/
.claude/projects/

# Build artifacts (Dist::Zilla)
Crypt-Age-*/
Crypt-Age-*.tar.gz
.build/
blib/
MANIFEST

CLAUDE.md  view on Meta::CPAN

The agents carry their skills via `briefing.skills` (see `.claude/agents/`); the main
agent delegates rather than loading them. Skill sources live under `.claude/skills/` —
`getty-perl-core`, `getty-perl-moo` and `getty-perl-release-author-getty` are hardlinked
from `~/dev/skills/perl/`, `kanban-issues-karr-cli` from `~/dev/karr/`; `crypt-age-core`
is owned by this repo.

Work is coordinated on the repo's `karr` board (`karr board`).

`.claude/` and this file ship inside the CPAN tarball on purpose — the distribution
discloses how it was built. There is deliberately no `gather_exclude_match` in
`dist.ini`; `.gitignore` is what keeps credentials, session state and machine-local
overrides out, since `Git::GatherDir` ships tracked files only.

## Downstream

`File::SOPS` and `kubernetes-ocp` pin `Crypt::Age` in their `cpanfile`s. A release here
leaves those pins stale — file that as a ticket on the other repo's board, never as an
edit from here.



( run in 1.357 second using v1.01-cache-2.11-cpan-007c89162af )