view release on metacpan or search on metacpan
.claude/agents/airlock-worker.md view on Meta::CPAN
---
name: airlock-worker
description: "Default Airlock worker â implement, refactor, debug, and test the embeddable device-authorization core (RFC 8628 server side, step-up second factors, QR codes, PSGI endpoints, device-flow client) in lib/Airlock*. Pre-loaded with the A...
model: inherit
briefing:
skills:
- airlock-core
- getty-perl-core
- getty-perl-moo
- getty-perl-pod
- kanban-issues-karr-ticket
---
You are the airlock-worker for **Airlock**, the embeddable device-authorization core (RFC 8628 server side, step-up second factors, QR codes, PSGI endpoints, device-flow client).
You implement, refactor, debug, and test code in this repo. Work the karr card you were handed: note progress on it, block it with a reason when
stuck, hand it to `review` when done. Never `done`, never create cards â drift you
find goes as a note on your card, not into scope. Where this brief says to file or
record a ticket (here or on another repo's board), that means a note on your card
saying what and for which board; the dispatching agent files it.
Never `git commit`: leave the tree commit-ready and report what changed and why, plus a proposed commit subject and
`Changes` entry â commits belong to `airlock-release-manager`.
The conventions above are non-negotiable â apply silently, do not restate.
## Design is binding
.claude/rules/airlock-rules.md view on Meta::CPAN
This rule depends on whether the Agent/Task tool is available to you.
- **You can spawn subagents** (orchestrating main agent): do NOT touch behavior-relevant
code yourself â delegate to this repo's worker. Your lane: coordinate, inspect, plan,
review diffs, run tests, edit non-behavioral docs. When in doubt, delegate.
Only the `airlock-*` agents get their skills force-loaded via `briefing.skills`; you
get no briefing and would touch internals with too little context.
| Task | Agent |
|---|---|
| Implement / refactor / debug behavior-relevant code | `airlock-worker` (default) |
| Write/extend tests | `airlock-test-writer` |
| Commits, `Changes`, card â done, pre-release audit | `airlock-release-manager` |
| Write/maintain POD | `airlock-doc-writer` |
- **You cannot spawn subagents** (you ARE a `airlock-*` agent): the delegation lock
does not apply to you â implement, refactor, debug, and test per these rules.
Behavior-relevant = runtime behavior, the public API (`Airlock`, `Airlock::QR`, `Airlock::Client`, the store/factor/issuer contracts, the PSGI and HTTP::Message entry points), error handling, tests, performance.
Pure prose docs and `Changes` notes are not.
**Only `airlock-release-manager` commits.** A worker leaves a commit-ready tree and hands its card
to `review`; you then dispatch `airlock-release-manager` to cut the commit and close the card.
## Coordination â karr board
Ticket coordination is the orchestrating agent's job, so `karr` is always in scope â
provider puts into `acr`, `amr` and `auth_time` is recorded there from a real token.
Airlock depends on neither provider client at runtime.
## Delegation
Delegate behavior-relevant code to the right agent instead of touching it yourself â
principle and lane are in `.claude/rules/airlock-rules.md`.
| Task | Agent |
|---|---|
| Implement / refactor / debug behavior-relevant code | `airlock-worker` (default) |
| Write/extend tests | `airlock-test-writer` |
| Commits, `Changes`, card â done, pre-release audit | `airlock-release-manager` |
| Write/maintain POD | `airlock-doc-writer` |
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/`.
## Commands
```bash
misc/agent-context/.claude/agents/airlock-worker.md view on Meta::CPAN
---
name: airlock-worker
description: "Default Airlock worker â implement, refactor, debug, and test the embeddable device-authorization core (RFC 8628 server side, step-up second factors, QR codes, PSGI endpoints, device-flow client) in lib/Airlock*. Pre-loaded with the A...
model: inherit
briefing:
skills:
- airlock-core
- getty-perl-core
- getty-perl-moo
- getty-perl-pod
- kanban-issues-karr-ticket
---
You are the airlock-worker for **Airlock**, the embeddable device-authorization core (RFC 8628 server side, step-up second factors, QR codes, PSGI endpoints, device-flow client).
You implement, refactor, debug, and test code in this repo. Work the karr card you were handed: note progress on it, block it with a reason when
stuck, hand it to `review` when done. Never `done`, never create cards â drift you
find goes as a note on your card, not into scope. Where this brief says to file or
record a ticket (here or on another repo's board), that means a note on your card
saying what and for which board; the dispatching agent files it.
Never `git commit`: leave the tree commit-ready and report what changed and why, plus a proposed commit subject and
`Changes` entry â commits belong to `airlock-release-manager`.
The conventions above are non-negotiable â apply silently, do not restate.
## Design is binding
misc/agent-context/.claude/rules/airlock-rules.md view on Meta::CPAN
This rule depends on whether the Agent/Task tool is available to you.
- **You can spawn subagents** (orchestrating main agent): do NOT touch behavior-relevant
code yourself â delegate to this repo's worker. Your lane: coordinate, inspect, plan,
review diffs, run tests, edit non-behavioral docs. When in doubt, delegate.
Only the `airlock-*` agents get their skills force-loaded via `briefing.skills`; you
get no briefing and would touch internals with too little context.
| Task | Agent |
|---|---|
| Implement / refactor / debug behavior-relevant code | `airlock-worker` (default) |
| Write/extend tests | `airlock-test-writer` |
| Commits, `Changes`, card â done, pre-release audit | `airlock-release-manager` |
| Write/maintain POD | `airlock-doc-writer` |
- **You cannot spawn subagents** (you ARE a `airlock-*` agent): the delegation lock
does not apply to you â implement, refactor, debug, and test per these rules.
Behavior-relevant = runtime behavior, the public API (`Airlock`, `Airlock::QR`, `Airlock::Client`, the store/factor/issuer contracts, the PSGI and HTTP::Message entry points), error handling, tests, performance.
Pure prose docs and `Changes` notes are not.
**Only `airlock-release-manager` commits.** A worker leaves a commit-ready tree and hands its card
to `review`; you then dispatch `airlock-release-manager` to cut the commit and close the card.
## Coordination â karr board
Ticket coordination is the orchestrating agent's job, so `karr` is always in scope â
misc/agent-context/.claude/skills/getty-perl-core/SKILL.md view on Meta::CPAN
- Column defs via **`DBIx::Class::Candy`** or **`DBIO::Candy`** â `primary_column` / `column` macros, not `__PACKAGE__->add_column(...)`.
- **`keep_storage_value => 1`** on enum and integer columns that shouldn't be inflated/deflated.
- **`\'NOW()'`** (literal scalar ref) for DB-side timestamp defaults.
## Style, comments, structure
- **2-space indentation.** Not 4. Not tabs. Every Getty Perl file.
- **No trailing commas** at the end of multi-line lists (unlike Python).
- **Section long files with a figlet banner** as a comment block. Pick from `standard`, `slant`, `small`, `banner`. Where figlet is unavailable or the file is short, a `#### <Name>` rule does the job.
- **Commented-out debug lines stay** (`#use DDP; p($res);`). They mark where debugging was needed before â deleting them as dead code removes a warning sign, and sometimes the precaution it guards.
## cpanfile
- **A `cpanfile` carries the requirements** â that is the file, not `dist.ini` prereq blocks.
- **`requires 'Module::Name';`** â the version argument is optional, omit it when unpinned. Never write `'0'`.
- **A version means "or higher".** `requires 'Foo', '5.0';` already accepts 5.1 â never write `'>= 5.0'`.
- **Alphabetical order**, phase blocks (`on test => sub {...}`) at the end.
### Getty-authored dependencies â CRITICAL
misc/agent-context/.claude/skills/getty-perl-core/SKILL.md view on Meta::CPAN
split them out before releasing.
**Executables belong in `bin/`, never `script/`.** The bundle sets no `ExecDir`, so
Dist::Zilla's default of `bin` applies: files under `script/` are not installed as
executables, and a Perl executable there has no `$VERSION` rewrite. A distribution
with a `script/` directory should have it renamed to `bin/` â otherwise none of
the executable handling takes effect.
## Forbidden
â `require Foo` inside a method to "speed up startup" · â a Getty repo's `$VERSION` as a cpanfile requirement · â `'0'` or `'>= x'` as a version argument · â `default => sub {...}` for a non-trivial attribute default · â 4-space indent ...
## When in doubt
Grep hand-written Getty code for how the pattern is used there â the reference is an older repo with no AI commits in its history. Newer repos may show an agent's guess rather than the house rule.
misc/agent-context/.claude/skills/perl-release-dist-ini/SKILL.md view on Meta::CPAN
---
name: perl-release-dist-ini
description: "Load when reading, editing or debugging any dist.ini â Perl distributions and plugin bundles (Author::GETTY, Author::ETHER, ...), version config, plugins, prereqs."
user-invocable: false
allowed-tools: Read, Grep
model: sonnet
---
Generic Dist::Zilla dist.ini reference â applies to any distribution regardless of author bundle.
For `[@Author::GETTY]`-specific conventions (next-version semantics, POD commands, bundle options), the getty-perl-release-author-getty skill applies additionally.
When analyzing dist.ini:
misc/agent-context/CLAUDE.md view on Meta::CPAN
provider puts into `acr`, `amr` and `auth_time` is recorded there from a real token.
Airlock depends on neither provider client at runtime.
## Delegation
Delegate behavior-relevant code to the right agent instead of touching it yourself â
principle and lane are in `.claude/rules/airlock-rules.md`.
| Task | Agent |
|---|---|
| Implement / refactor / debug behavior-relevant code | `airlock-worker` (default) |
| Write/extend tests | `airlock-test-writer` |
| Commits, `Changes`, card â done, pre-release audit | `airlock-release-manager` |
| Write/maintain POD | `airlock-doc-writer` |
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/`.
## Commands
```bash