tasks
1. Scaffold project files
1.1
.gitignore(copy verbatim from Air-Plugin-Hilite)1.2
.github/workflows/test.yml(actions/checkout@v6, matches MailForm/Rakudoc convention)1.3
LICENSE(Artistic License 2.0, verbatim)1.4
dist.ini(name = Air::Plugin::Donate;[ReadmeFromPod] enabled = false;[UploadToZef];[Badges] provider = github-actions/test.yml)1.5
META6.json(depends: ["Air"],provides: {"Air::Plugin::Donate": "lib/Air/Plugin/Donate.rakumod"}, tags["air","donate","stripe","html","web"])1.6
Changes(Revision history for Air::Plugin::Donate\n\n{{$NEXT}}\n)
2. Implement plugin
2.1
lib/Air/Plugin/Donate.rakumodārole Air::Plugin::Donate does Tag,has Str $.key is required,$.heading/$.blurb/$.labeldefaults,multi method HTMLrenderingarticle [ h3 ...; p ...; a :href("https://donate.stripe.com/$!key"), :role<button>, :target<_blank>, ... ], exportedsub donate(*@a,*%h) is export {...}
3. Tests
3.1
t/01-basic.rakutestā constructdonate(:key<test_123>),isa-okcheck, assert.HTMLcontains the Stripe link
4. Docs
4.1
README.mdā Synopsis, Description, Stripe Account Setup (create account ā Payment Links ā New ā configure amount ā copy trailing id ā pass as:key<...>ā go-live steps ā optional receipt emails), Installation, Author, Copyright/License
5. Git
5.1
git init+ create/check out a new working branch (notmain) ā do not commit
6. Verify
6.1
raku -Ilib -e 'use Air::Plugin::Donate'compiles cleanly6.2
prove6 -I. tpasses6.3 Manual render check: Pico
<article>card with correct<a role="button" href="https://donate.stripe.com/test">Donate</a>link