[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M753JSV4X5AXGYDASYZJVP77":3,"skill-same:01M753JSV4X5AXGYDASYZJVP77":45},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M753JSV4X5AXGYDASYZJVP77","guardrail-harvest",null,"Convert a flagged defect's class into a durable guardrail — a precise automated gate or a documented rule + checklist line — in the same change. Use whenever the user, a review, or a failing gate flags a defect.","wbednarczyk\u002Fbrawler","wbednarczyk","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F36985049?v=4","01M753JA53R9MP6D5CVRAS70NS","Wojciech Bednarczyk","01M753JA67Y5020F3EM027RCKE",1,"MPL-2.0","https:\u002F\u002Fgithub.com\u002Fwbednarczyk\u002Fbrawler\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fguardrail-harvest\u002FSKILL.md",[],[],"2026-11-12 13:55:43",false,"---\nname: guardrail-harvest\ndescription: Convert a flagged defect's class into a durable guardrail — a precise automated gate or a documented rule + checklist line — in the same change. Use whenever the user, a review, or a failing gate flags a defect.\n---\n\n# Guardrail Harvest\n\nUse this workflow whenever a defect is flagged — by the user, by a code review, by a failing gate, or by noticing your own mistake — and at the close of every slice\u002Fepic. Its job is to convert the **class** of defect into a durable rule or automated check so the next agent (any agent) cannot repeat it. Policy: [ADR 0045](..\u002F..\u002F..\u002Fdocs\u002Fadr\u002F0045-guardrail-harvest-loop.md), extending [ADR 0038](..\u002F..\u002F..\u002Fdocs\u002Fadr\u002F0038-enforcement-as-guardrails.md).\n\nThis is not optional polish. A flagged defect is not \"done\" when the instance is fixed — it is done when the class is closed.\n\n## Steps\n\n1. **Name the class, not the instance.** Write one sentence: \"Agents tend to \u003Cdo X> when they should \u003Cdo Y>.\" Generalize past the specific file. (Example: \"Agents render a qualified ticker as plain text instead of using `TickerLabel`.\")\n\n2. **Find the root cause — why was nothing stopping it?** Usually one of: an undocumented convention, a component\u002Frule that lives somewhere the self-check doesn't point at, or a missing gate. Fix that blind spot, not just the symptom.\n\n3. **Choose the enforcement (gate vs doc) deliberately.** Per [ADR 0045](..\u002F..\u002F..\u002Fdocs\u002Fadr\u002F0045-guardrail-harvest-loop.md) Decision 2:\n   - **Automated gate** (lint rule, guard\u002Fcontract test, type, layout-contract test) — only if the violation is **precisely** detectable, i.e. you can write a predicate that fires on the wrong thing and is clean across the *entire existing codebase*. Run it repo-wide before committing to it.\n   - **If a gate would produce false positives, do NOT add it.** A noisy gate gets disabled and erodes the whole posture. Encode the lesson as a **documented rule** in the canonical doc for the area, plus a self-check \u002F review-checklist item.\n   - When unsure, prototype the gate, run it across `src\u002F**`, and look at every hit. If legitimate code is flagged, fall back to a doc rule.\n\n4. **Implement the guardrail in the same change as the fix.** Land the instance fix and its class guardrail together.\n\n5. **Put it where every agent reads it.** Durable rules go in `CLAUDE.md`, the relevant canonical doc (`docs\u002Fui-authoring.md`, `docs\u002Fcontracts.md`, `docs\u002Fdata-model.md`, …), an ADR, or an automated check — never only in agent-private memory ([ADR 0045](..\u002F..\u002F..\u002Fdocs\u002Fadr\u002F0045-guardrail-harvest-loop.md) Decision 4). Link the new rule\u002Fgate from the canonical doc so it is discoverable. **If the lesson is a \"remember to check X\" rather than a code rule, add it as a line to the [Definition of Done](..\u002F..\u002F..\u002Fdocs\u002Fengineering-workflow.md) checklist** — that checklist is the living home for harvested verification steps.\n\n6. **State the harvest in your handoff.** Note what class was closed and how (gate or doc), so the user can see the loop ran.\n\n## Anti-patterns\n\n- Fixing only the instance the user pointed at and moving on.\n- Adding a broad lint\u002Ftest gate that flags legitimate code \"to be safe\" — this is the failure this loop exists to prevent.\n- Writing the lesson into private memory instead of the repo.\n- Deferring the guardrail to \"later\" — later never comes; the next agent repeats the mistake first.\n","# Guardrail Harvest\n\nUse this workflow whenever a defect is flagged — by the user, by a code review, by a failing gate, or by noticing your own mistake — and at the close of every slice\u002Fepic. Its job is to convert the **class** of defect into a durable rule or automated check so the next agent (any agent) cannot repeat it. Policy: [ADR 0045](..\u002F..\u002F..\u002Fdocs\u002Fadr\u002F0045-guardrail-harvest-loop.md), extending [ADR 0038](..\u002F..\u002F..\u002Fdocs\u002Fadr\u002F0038-enforcement-as-guardrails.md).\n\nThis is not optional polish. A flagged defect is not \"done\" when the instance is fixed — it is done when the class is closed.\n\n## Steps\n\n1. **Name the class, not the instance.** Write one sentence: \"Agents tend to \u003Cdo X> when they should \u003Cdo Y>.\" Generalize past the specific file. (Example: \"Agents render a qualified ticker as plain text instead of using `TickerLabel`.\")\n\n2. **Find the root cause — why was nothing stopping it?** Usually one of: an undocumented convention, a component\u002Frule that lives somewhere the self-check doesn't point at, or a missing gate. Fix that blind spot, not just the symptom.\n\n3. **Choose the enforcement (gate vs doc) deliberately.** Per [ADR 0045](..\u002F..\u002F..\u002Fdocs\u002Fadr\u002F0045-guardrail-harvest-loop.md) Decision 2:\n   - **Automated gate** (lint rule, guard\u002Fcontract test, type, layout-contract test) — only if the violation is **precisely** detectable, i.e. you can write a predicate that fires on the wrong thing and is clean across the *entire existing codebase*. Run it repo-wide before committing to it.\n   - **If a gate would produce false positives, do NOT add it.** A noisy gate gets disabled and erodes the whole posture. Encode the lesson as a **documented rule** in the canonical doc for the area, plus a self-check \u002F review-checklist item.\n   - When unsure, prototype the gate, run it across `src\u002F**`, and look at every hit. If legitimate code is flagged, fall back to a doc rule.\n\n4. **Implement the guardrail in the same change as the fix.** Land the instance fix and its class guardrail together.\n\n5. **Put it where every agent reads it.** Durable rules go in `CLAUDE.md`, the relevant canonical doc (`docs\u002Fui-authoring.md`, `docs\u002Fcontracts.md`, `docs\u002Fdata-model.md`, …), an ADR, or an automated check — never only in agent-private memory ([ADR 0045](..\u002F..\u002F..\u002Fdocs\u002Fadr\u002F0045-guardrail-harvest-loop.md) Decision 4). Link the new rule\u002Fgate from the canonical doc so it is discoverable. **If the lesson is a \"remember to check X\" rather than a code rule, add it as a line to the [Definition of Done](..\u002F..\u002F..\u002Fdocs\u002Fengineering-workflow.md) checklist** — that checklist is the living home for harvested verification steps.\n\n6. **State the harvest in your handoff.** Note what class was closed and how (gate or doc), so the user can see the loop ran.\n\n## Anti-patterns\n\n- Fixing only the instance the user pointed at and moving on.\n- Adding a broad lint\u002Ftest gate that flags legitimate code \"to be safe\" — this is the failure this loop exists to prevent.\n- Writing the lesson into private memory instead of the repo.\n- Deferring the guardrail to \"later\" — later never comes; the next agent repeats the mistake first.\n",{"name":5,"description":7},"master","59d8936cc078fab7337ebe282e6155627d3ab47a",".claude\u002Fskills\u002Fguardrail-harvest",0,"https:\u002F\u002Fgithub.com\u002Fwbednarczyk\u002Fbrawler","https:\u002F\u002Fgithub.com\u002Fwbednarczyk","2026-11-01 08:56:22",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add wbednarczyk\u002Fbrawler --skill guardrail-harvest",{"tool":37,"command":38},"bunx","bunx skills add wbednarczyk\u002Fbrawler --skill guardrail-harvest",{"tool":40,"command":41},"pnpm","pnpm dlx skills add wbednarczyk\u002Fbrawler --skill guardrail-harvest","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fwbednarczyk\u002Fbrawler\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fguardrail-harvest\u002FSKILL.md",true,[],[46,53,60,67,74,81],{"skillNo":47,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":50,"categories":51,"keywords":52,"publishedAt":19},"01M753K8XP1MXGASEJEC1595HH","ship-pr","Use when a change is implemented and needs to land as a PR — branching, evidence, commits, PR creation, CI watching, or when CI jobs fail and you must decide rerun-vs-fix. Also use when a \"green\" claim is about to be made.","https:\u002F\u002Fgithub.com\u002Fwbednarczyk\u002Fbrawler\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fship-pr\u002FSKILL.md",[],[],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":59,"publishedAt":19},"01M753K3KKKY24G2YJAEB6FMK2","repoctx","Use repoctx for fast, indexed code navigation in this repo. Beats grep\u002Ffind\u002Fcat on structural questions about symbols, definitions, the call graph (who-calls \u002F callees \u002F callgraph), and surrounding source.","https:\u002F\u002Fgithub.com\u002Fwbednarczyk\u002Fbrawler\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Frepoctx\u002FSKILL.md",[],[],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":19},"01M753K09Y1KY1AZ7CQ5EW2MF4","packaging","Build and smoke-test Brawler release artifacts — portable Windows .exe from Linux\u002FWSL via cargo-xwin, Linux .deb\u002F.rpm\u002FAppImage, native Windows fallback. Use for packaging, cross-build verification, or Windows hands-on testing paths.","https:\u002F\u002Fgithub.com\u002Fwbednarczyk\u002Fbrawler\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fpackaging\u002FSKILL.md",[],[],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":19},"01M753JWMZ4XEPRW4K6HYJ2ATB","investing-domain","Domain lens for designing\u002Fbuilding Brawler — how an equity investor actually reads companies (fundamental analysis, quality assessment, GPW specifics). Load when designing UI hierarchies, panels, journeys, or analytics for company data.","https:\u002F\u002Fgithub.com\u002Fwbednarczyk\u002Fbrawler\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Finvesting-domain\u002FSKILL.md",[],[],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":19},"01M753JKSKT8B696SMMDNPRYSD","brawler-mcp","Use when you (an AI agent) are connected to Brawler over its MCP server and need to read the user's investment research or write back into it — including acquiring KPIs from an issuer report (\"process all pending KPI ingests\", staging observations, resuming a pending run, a lease that expired, a validation that failed). Covers tool discovery, the read\u002Fact tiers, mandatory-source (provenance) rules, the KPI-ingest run workflow, internal-id conventions, the permanent denylist, and safe read→analyze→write sequences. Load it before your first tools\u002Fcall against Brawler.","https:\u002F\u002Fgithub.com\u002Fwbednarczyk\u002Fbrawler\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fbrawler-mcp\u002FSKILL.md",[],[],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":19},"01M753JF37R868TS9QD6JBJHT6","brawler-design","Use before ANY Brawler UI work — writing\u002Fchanging JSX, drawing a mockup, styleguide or visual-language work, choosing colors\u002Ftypography\u002Flabels, designing a panel or empty state. Binds the generic design skills to Brawler's normative design language (ADR 0104) and authoring contract.","https:\u002F\u002Fgithub.com\u002Fwbednarczyk\u002Fbrawler\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fbrawler-design\u002FSKILL.md",[],[]]