[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X70W9S2AJYVJ76PBPCSHMD":3,"skill-same:01M6X70W9S2AJYVJ76PBPCSHMD":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":53,"ownerDescription":55,"updatedAt":56,"install":57,"resources":69},"01M6X70W9S2AJYVJ76PBPCSHMD","laravel-mail",null,"Use when building Laravel emails — Mailables, Markdown templates, queued sending, attachments, previews — even when the user says 'send this as an email' without naming Mailables.","event4u-app\u002Fagent-config","event4u-app","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F199339632?v=4","01M6X5TWBNCQCE1VDKT4E9KF7N","event4u.app","01M6X5TWF4HRM266RG2Q5VVH1X",19,"MIT","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Flaravel-mail\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"laravel mail","laravel","mail","emails","when","send","true","naming","professional","false","as","email","use","user","markdown","templates","attachments","engineering","2026-11-10 10:12:30",false,"---\nmodel_tier: medium\nname: laravel-mail\ndescription: \"Use when building Laravel emails — Mailables, Markdown templates, queued sending, attachments, previews — even when the user says 'send this as an email' without naming Mailables.\"\ndomain: engineering\nworkspaces:\n  - engineering\npacks:\n  - laravel\ntrust:\n  level: professional\ninstall:\n  default: false\n  removable: true\n---\n\n# laravel-mail\n\n## When to use\n\nUse this skill when building email functionality:\n- Mailable classes with HTML\u002FBlade or Markdown templates\n- Queued email sending\n- Attachments and inline images\n- Mail testing and previewing\n\nFor **simple notification emails** (one-off messages), see [laravel-notifications](..\u002Flaravel-notifications\u002FSKILL.md).\nUse Mailables when you need full control over the email template.\n\n## Procedure: Create a Mailable\n\n1. **Inspect existing mailables** — Review `app\u002FMail\u002F` for naming, base class, queueing convention, and the templates in `resources\u002Fviews\u002Femails\u002F` for the project's markdown style.\n2. **Generate class** — `php artisan make:mail InvoiceMail --markdown=emails.invoice`.\n3. **Configure** — Set subject, from, attachments, queuing (`ShouldQueue`).\n4. **Create template** — Markdown template in `resources\u002Fviews\u002Femails\u002F`.\n5. **Verify** — Send test email, confirm rendering and delivery.\n\n### Example\n\n```bash\nphp artisan make:mail InvoiceMail --markdown=emails.invoice\n```\n\n```php\ndeclare(strict_types=1);\n\nnamespace App\\Mail;\n\nuse App\\Models\\Invoice;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Mail\\Mailable;\nuse Illuminate\\Mail\\Mailables\\Content;\nuse Illuminate\\Mail\\Mailables\\Envelope;\nuse Illuminate\\Queue\\SerializesModels;\n\nclass InvoiceMail extends Mailable implements ShouldQueue\n{\n    use Queueable;\n    use SerializesModels;\n\n    public function __construct(\n        private readonly Invoice $invoice,\n    ) {}\n\n    public function envelope(): Envelope\n    {\n        return new Envelope(\n            subject: 'Invoice #' . $this->invoice->getNumber(),\n            replyTo: ['billing@example.com'],\n        );\n    }\n\n    public function content(): Content\n    {\n        return new Content(\n            markdown: 'emails.invoice',\n            with: [\n                'invoice' => $this->invoice,\n                'url' => route('invoices.show', $this->invoice->getId()),\n            ],\n        );\n    }\n\n    \u002F** @return array\u003Cint, \\Illuminate\\Mail\\Mailables\\Attachment> *\u002F\n    public function attachments(): array\n    {\n        return [\n            Attachment::fromPath('\u002Fpath\u002Fto\u002Finvoice.pdf')\n                ->as('invoice-' . $this->invoice->getNumber() . '.pdf')\n                ->withMime('application\u002Fpdf'),\n        ];\n    }\n}\n```\n\n## Markdown templates\n\n```blade\n{{-- resources\u002Fviews\u002Femails\u002Finvoice.blade.php --}}\n\u003Cx-mail::message>\n# Invoice {{ $invoice->getNumber() }}\n\nThank you for your order. Here is your invoice summary:\n\n\u003Cx-mail::table>\n| Item | Amount |\n|:-----|-------:|\n@foreach ($invoice->getItems() as $item)\n| {{ $item->getName() }} | {{ $item->getFormattedAmount() }} |\n@endforeach\n| **Total** | **{{ $invoice->getFormattedTotal() }}** |\n\u003C\u002Fx-mail::table>\n\n\u003Cx-mail::button :url=\"$url\">\nView Invoice\n\u003C\u002Fx-mail::button>\n\nThanks,\u003Cbr>\n{{ config('app.name') }}\n\u003C\u002Fx-mail::message>\n```\n\n## Sending mail\n\n```php\n\u002F\u002F Send immediately\nMail::to($user)->send(new InvoiceMail($invoice));\n\n\u002F\u002F Queue for background sending (preferred)\nMail::to($user)->queue(new InvoiceMail($invoice));\n\n\u002F\u002F Send later\nMail::to($user)->later(now()->addMinutes(10), new InvoiceMail($invoice));\n\n\u002F\u002F Multiple recipients\nMail::to($users)\n    ->cc($manager)\n    ->bcc('archive@example.com')\n    ->send(new InvoiceMail($invoice));\n```\n\n## Testing\n\n```php\n\u002F\u002F Assert mail was sent\nMail::fake();\n\n\u002F\u002F ... trigger action ...\n\nMail::assertSent(InvoiceMail::class, function (InvoiceMail $mail) use ($user) {\n    return $mail->hasTo($user->getEmail());\n});\n\nMail::assertNotSent(InvoiceMail::class);\nMail::assertNothingSent();\nMail::assertQueued(InvoiceMail::class);\n```\n\n## Previewing in browser\n\n```php\n\u002F\u002F routes\u002Fweb.php (local only)\nRoute::get('\u002Fmail-preview', function () {\n    $invoice = Invoice::factory()->create();\n    return new InvoiceMail($invoice);\n});\n```\n\n## Surviving the mail client\n\nAn email is not a web page. Mail clients strip, rewrite, and ignore CSS that\nevery browser honors, so a template that renders correctly in\n`\u002Fmail-preview` tells you nothing about the inbox. Markdown templates (above)\ngive you a tested baseline for free — this section is what to hold to when a\ndesign forces you off them.\n\n**Four requirements, in order of what breaks first:**\n\n1. **Table-based layout, not flexbox or grid.** Use nested `\u003Ctable>` elements\n   with `role=\"presentation\"`, a fixed outer width of 600px, and `cellpadding`\n   \u002F `cellspacing` \u002F `border` set to `0`. `display: flex` and\n   `display: grid` are unsupported or partially supported in the Windows\n   Outlook family and collapse to a single stacked column.\n2. **Inline styles, not a `\u003Cstyle>` block.** Write `style=\"…\"` on the element.\n   A `\u003Chead>\u003Cstyle>` block is stripped outright by some webmail clients, and\n   class selectors then match nothing. Use a CSS inliner at build time if the\n   template is authored with classes — never ship the classes unresolved. Keep\n   a `\u003Cstyle>` block only for what cannot be inlined (media queries), and treat\n   everything in it as optional.\n3. **No web fonts, no background images, no external JS.** Declare a font stack\n   ending in a system fallback; a remote font silently degrades. Background\n   images require the `v:fill` VML fallback in Outlook, so put the color on\n   `bgcolor` and treat the image as decoration.\n4. **Explicit width and alt text on every image, and no image-only content.**\n   Images are blocked by default in several clients, so an email whose call to\n   action is an image is an email with no call to action.\n\n**The client list worth testing, and what breaks in each:**\n\n| Client | What breaks |\n|---|---|\n| **Outlook 2016-2019 \u002F Windows (Word engine)** | `flex`, `grid`, `float`, `max-width`, `border-radius`, background images, `padding` on `\u003Cdiv>`; the strictest target — if it renders, most others do |\n| **Outlook.com \u002F Outlook 365 web** | strips `\u003Cstyle>` blocks in some views; rewrites `class` attributes; ignores `margin` on several elements |\n| **Gmail web** | clips the message past ~102 KB of HTML with a \"view entire message\" link — anything below the clip, including the unsubscribe link, is not seen; strips `\u003Cstyle>` when the message is clipped |\n| **Gmail app (iOS \u002F Android)** | no support for embedded `\u003Cstyle>` on non-Gmail accounts; media queries ignored there, so the mobile layout must be the fluid default |\n| **Apple Mail \u002F iOS Mail** | the most permissive; auto-scales small text and auto-links dates and addresses unless suppressed — a false green if it is the only client you check |\n| **Dark mode (Apple Mail, Outlook, Gmail)** | colors are force-inverted; a logo on a hardcoded white background becomes a white box on dark, and `#000` text on a transparent background becomes invisible |\n\n**Verify against a real client, not a preview route.** `\u002Fmail-preview` renders in\na browser and proves none of the above. Send to real accounts, or use a\nrendering service, before the template ships.\n\n## Core rules\n\n- **Always queue emails** — implement `ShouldQueue` to avoid blocking requests.\n- **Use Markdown templates** for consistent styling across email clients.\n- **Use Envelope + Content** pattern (Laravel 11+) — not the old `build()` method.\n- **Test with `Mail::fake()`** — verify recipients, content, and queuing.\n- **Keep Mailables focused** — one Mailable per email type.\n\n## Output format\n\n1. Mailable class with envelope, content, and attachments\n2. Blade\u002FMarkdown email template\n3. Queued mail dispatch integration\n\n## Auto-trigger keywords\n\n- Mailable\n- email template\n- send mail\n- Mail::to\n- markdown email\n- mail attachment\n\n## Gotcha\n\n- Always queue emails (`ShouldQueue`) — synchronous sending blocks the request.\n- The model forgets that mail templates are Blade files — they need to be published\u002Fcreated.\n- Don't test email content with `Mail::fake()` alone — it doesn't render the template. Use `Mail::assertSent()` with closure.\n\n## Do NOT\n\n- Do NOT send emails synchronously in request lifecycle — always queue.\n- Do NOT use `build()` method — use `envelope()`, `content()`, `attachments()`.\n- Do NOT hardcode email addresses — use config or environment variables.\n- Do NOT put HTML in Mailable classes — use Blade templates.\n","# laravel-mail\n\n## When to use\n\nUse this skill when building email functionality:\n- Mailable classes with HTML\u002FBlade or Markdown templates\n- Queued email sending\n- Attachments and inline images\n- Mail testing and previewing\n\nFor **simple notification emails** (one-off messages), see [laravel-notifications](..\u002Flaravel-notifications\u002FSKILL.md).\nUse Mailables when you need full control over the email template.\n\n## Procedure: Create a Mailable\n\n1. **Inspect existing mailables** — Review `app\u002FMail\u002F` for naming, base class, queueing convention, and the templates in `resources\u002Fviews\u002Femails\u002F` for the project's markdown style.\n2. **Generate class** — `php artisan make:mail InvoiceMail --markdown=emails.invoice`.\n3. **Configure** — Set subject, from, attachments, queuing (`ShouldQueue`).\n4. **Create template** — Markdown template in `resources\u002Fviews\u002Femails\u002F`.\n5. **Verify** — Send test email, confirm rendering and delivery.\n\n### Example\n\n```bash\nphp artisan make:mail InvoiceMail --markdown=emails.invoice\n```\n\n```php\ndeclare(strict_types=1);\n\nnamespace App\\Mail;\n\nuse App\\Models\\Invoice;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Mail\\Mailable;\nuse Illuminate\\Mail\\Mailables\\Content;\nuse Illuminate\\Mail\\Mailables\\Envelope;\nuse Illuminate\\Queue\\SerializesModels;\n\nclass InvoiceMail extends Mailable implements ShouldQueue\n{\n    use Queueable;\n    use SerializesModels;\n\n    public function __construct(\n        private readonly Invoice $invoice,\n    ) {}\n\n    public function envelope(): Envelope\n    {\n        return new Envelope(\n            subject: 'Invoice #' . $this->invoice->getNumber(),\n            replyTo: ['billing@example.com'],\n        );\n    }\n\n    public function content(): Content\n    {\n        return new Content(\n            markdown: 'emails.invoice',\n            with: [\n                'invoice' => $this->invoice,\n                'url' => route('invoices.show', $this->invoice->getId()),\n            ],\n        );\n    }\n\n    \u002F** @return array\u003Cint, \\Illuminate\\Mail\\Mailables\\Attachment> *\u002F\n    public function attachments(): array\n    {\n        return [\n            Attachment::fromPath('\u002Fpath\u002Fto\u002Finvoice.pdf')\n                ->as('invoice-' . $this->invoice->getNumber() . '.pdf')\n                ->withMime('application\u002Fpdf'),\n        ];\n    }\n}\n```\n\n## Markdown templates\n\n```blade\n{{-- resources\u002Fviews\u002Femails\u002Finvoice.blade.php --}}\n\u003Cx-mail::message>\n# Invoice {{ $invoice->getNumber() }}\n\nThank you for your order. Here is your invoice summary:\n\n\u003Cx-mail::table>\n| Item | Amount |\n|:-----|-------:|\n@foreach ($invoice->getItems() as $item)\n| {{ $item->getName() }} | {{ $item->getFormattedAmount() }} |\n@endforeach\n| **Total** | **{{ $invoice->getFormattedTotal() }}** |\n\u003C\u002Fx-mail::table>\n\n\u003Cx-mail::button :url=\"$url\">\nView Invoice\n\u003C\u002Fx-mail::button>\n\nThanks,\u003Cbr>\n{{ config('app.name') }}\n\u003C\u002Fx-mail::message>\n```\n\n## Sending mail\n\n```php\n\u002F\u002F Send immediately\nMail::to($user)->send(new InvoiceMail($invoice));\n\n\u002F\u002F Queue for background sending (preferred)\nMail::to($user)->queue(new InvoiceMail($invoice));\n\n\u002F\u002F Send later\nMail::to($user)->later(now()->addMinutes(10), new InvoiceMail($invoice));\n\n\u002F\u002F Multiple recipients\nMail::to($users)\n    ->cc($manager)\n    ->bcc('archive@example.com')\n    ->send(new InvoiceMail($invoice));\n```\n\n## Testing\n\n```php\n\u002F\u002F Assert mail was sent\nMail::fake();\n\n\u002F\u002F ... trigger action ...\n\nMail::assertSent(InvoiceMail::class, function (InvoiceMail $mail) use ($user) {\n    return $mail->hasTo($user->getEmail());\n});\n\nMail::assertNotSent(InvoiceMail::class);\nMail::assertNothingSent();\nMail::assertQueued(InvoiceMail::class);\n```\n\n## Previewing in browser\n\n```php\n\u002F\u002F routes\u002Fweb.php (local only)\nRoute::get('\u002Fmail-preview', function () {\n    $invoice = Invoice::factory()->create();\n    return new InvoiceMail($invoice);\n});\n```\n\n## Surviving the mail client\n\nAn email is not a web page. Mail clients strip, rewrite, and ignore CSS that\nevery browser honors, so a template that renders correctly in\n`\u002Fmail-preview` tells you nothing about the inbox. Markdown templates (above)\ngive you a tested baseline for free — this section is what to hold to when a\ndesign forces you off them.\n\n**Four requirements, in order of what breaks first:**\n\n1. **Table-based layout, not flexbox or grid.** Use nested `\u003Ctable>` elements\n   with `role=\"presentation\"`, a fixed outer width of 600px, and `cellpadding`\n   \u002F `cellspacing` \u002F `border` set to `0`. `display: flex` and\n   `display: grid` are unsupported or partially supported in the Windows\n   Outlook family and collapse to a single stacked column.\n2. **Inline styles, not a `\u003Cstyle>` block.** Write `style=\"…\"` on the element.\n   A `\u003Chead>\u003Cstyle>` block is stripped outright by some webmail clients, and\n   class selectors then match nothing. Use a CSS inliner at build time if the\n   template is authored with classes — never ship the classes unresolved. Keep\n   a `\u003Cstyle>` block only for what cannot be inlined (media queries), and treat\n   everything in it as optional.\n3. **No web fonts, no background images, no external JS.** Declare a font stack\n   ending in a system fallback; a remote font silently degrades. Background\n   images require the `v:fill` VML fallback in Outlook, so put the color on\n   `bgcolor` and treat the image as decoration.\n4. **Explicit width and alt text on every image, and no image-only content.**\n   Images are blocked by default in several clients, so an email whose call to\n   action is an image is an email with no call to action.\n\n**The client list worth testing, and what breaks in each:**\n\n| Client | What breaks |\n|---|---|\n| **Outlook 2016-2019 \u002F Windows (Word engine)** | `flex`, `grid`, `float`, `max-width`, `border-radius`, background images, `padding` on `\u003Cdiv>`; the strictest target — if it renders, most others do |\n| **Outlook.com \u002F Outlook 365 web** | strips `\u003Cstyle>` blocks in some views; rewrites `class` attributes; ignores `margin` on several elements |\n| **Gmail web** | clips the message past ~102 KB of HTML with a \"view entire message\" link — anything below the clip, including the unsubscribe link, is not seen; strips `\u003Cstyle>` when the message is clipped |\n| **Gmail app (iOS \u002F Android)** | no support for embedded `\u003Cstyle>` on non-Gmail accounts; media queries ignored there, so the mobile layout must be the fluid default |\n| **Apple Mail \u002F iOS Mail** | the most permissive; auto-scales small text and auto-links dates and addresses unless suppressed — a false green if it is the only client you check |\n| **Dark mode (Apple Mail, Outlook, Gmail)** | colors are force-inverted; a logo on a hardcoded white background becomes a white box on dark, and `#000` text on a transparent background becomes invisible |\n\n**Verify against a real client, not a preview route.** `\u002Fmail-preview` renders in\na browser and proves none of the above. Send to real accounts, or use a\nrendering service, before the template ships.\n\n## Core rules\n\n- **Always queue emails** — implement `ShouldQueue` to avoid blocking requests.\n- **Use Markdown templates** for consistent styling across email clients.\n- **Use Envelope + Content** pattern (Laravel 11+) — not the old `build()` method.\n- **Test with `Mail::fake()`** — verify recipients, content, and queuing.\n- **Keep Mailables focused** — one Mailable per email type.\n\n## Output format\n\n1. Mailable class with envelope, content, and attachments\n2. Blade\u002FMarkdown email template\n3. Queued mail dispatch integration\n\n## Auto-trigger keywords\n\n- Mailable\n- email template\n- send mail\n- Mail::to\n- markdown email\n- mail attachment\n\n## Gotcha\n\n- Always queue emails (`ShouldQueue`) — synchronous sending blocks the request.\n- The model forgets that mail templates are Blade files — they need to be published\u002Fcreated.\n- Don't test email content with `Mail::fake()` alone — it doesn't render the template. Use `Mail::assertSent()` with closure.\n\n## Do NOT\n\n- Do NOT send emails synchronously in request lifecycle — always queue.\n- Do NOT use `build()` method — use `envelope()`, `content()`, `attachments()`.\n- Do NOT hardcode email addresses — use config or environment variables.\n- Do NOT put HTML in Mailable classes — use Blade templates.\n",{"name":5,"packs":42,"trust":43,"domain":36,"install":44,"model_tier":46,"workspaces":47,"description":7},[20],{"level":27},{"default":38,"removable":45},true,"medium",[36],"main","12bd765ce1d800501d45dfb8232102793af01290","src\u002Fskills\u002Flaravel-mail",1,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config","https:\u002F\u002Fevent4u.app","https:\u002F\u002Fgithub.com\u002Fevent4u-app","Your events in your hand","2026-11-11 22:25:41",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":45},[59,62,65],{"tool":60,"command":61},"npx","npx skills add event4u-app\u002Fagent-config --skill laravel-mail",{"tool":63,"command":64},"bunx","bunx skills add event4u-app\u002Fagent-config --skill laravel-mail",{"tool":66,"command":67},"pnpm","pnpm dlx skills add event4u-app\u002Fagent-config --skill laravel-mail","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Flaravel-mail\u002FSKILL.md",[],[71,89,102,114,126,135],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":82,"publishedAt":37},"01M6X84PK96XBPENXH66JCTSD1","unknown-key-fixture","Declares a key the schema does not know.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Funknown-key\u002FSKILL.md",[77],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[83,84,85,86,87,88],"unknown key fixture","Unknown key","fixture","unknown","schema","package",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":96,"publishedAt":37},"01M6X84HW7NAHZ7GZMQ9RXK1XJ","portable-fixture","Declares only semantics the MCP-lite carrier transports whole.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fportable\u002FSKILL.md",[95],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},[85,97,98,99,100,88,101],"portable","portable fixture","engineer","only","MCP",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":109,"publishedAt":37},"01M6X84F29FE0RGGZ1ZTFGZTX2","non-portable-fixture","Declares a runtime semantic the carrier drops.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fnon-portable\u002FSKILL.md",[108],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},[98,110,97,85,111,112,113,88],"non portable fixture","semantic","high","runtime",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":121,"publishedAt":37},"01M6X848F706PT9MDCX75JKJ6B","candidate-zero-width","A candidate whose prose carries an invisible joiner.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fzero-width-injection\u002FSKILL.md",[120],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},[122,123,124,125],"candidate zero width","candidate","ZeRO","prose",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":133,"publishedAt":37},"01M6X841SSC2T31VDF41SA6DG1","candidate-disclosure-suppression","A candidate whose prose tells the agent to withhold from the user.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdisclosure-suppression\u002FSKILL.md",[132],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},[134,123,125,32],"candidate disclosure suppression",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":142,"publishedAt":37},"01M6X83TFS5AGPBPVTQNWP0BB3","candidate-dangerous-frontmatter","A candidate claiming an unscoped tool grant and a permission bypass.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdangerous-frontmatter\u002FSKILL.md",[141],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},[143,123,144,145,146,147],"candidate dangerous frontmatter","frontmatter","shell","permission","tool"]