Airlock

 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 —

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

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



( run in 1.289 second using v1.01-cache-2.11-cpan-036bef1c656 )