[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DF4V2JZ3A18NFKKZCFQZP4":3,"skill-same:01M7DF4V2JZ3A18NFKKZCFQZP4":73},{"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":28,"commitSha":29,"skillDirectory":5,"forksCount":14,"repositoryHtmlUrl":30,"repositoryHomepageUrl":6,"ownerHtmlUrl":31,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":32,"install":33,"resources":46},"01M7DF4V2JZ3A18NFKKZCFQZP4","foxit-pr-check",null,"Review a branch or pull request prepared for a Fox-IT open-source repository (fox-it\u002Fdissect.*, dissect.target, dissect.cstruct, flow.record, acquire, ...) against Fox-IT's contribution rules before it is pushed or opened: the Developing, Style guide and Tooling pages (docs.dissect.tools\u002Fen\u002Flatest\u002Fcontributing\u002F), the repository's own tox.ini, pyproject.toml (Ruff) and pull request template. USE FOR: commit message format (50-character imperative subject, 72-column body), fix\u002F and feature\u002F branches, one change per branch, the PR description and its closing keyword, running the repo's tox lint and tests, missing unit tests, type hints, names, cstruct definitions, dependency reasons, and whether the CLA (DissectBot) is accepted. DO NOT USE FOR: reviewing what the code does (correctness, design); repositories outside fox-it; accepting the CLA (only the author may).","AtomicGaryBusey\u002FAGB-Agent-Skills","AtomicGaryBusey","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F400815?v=4","01M7DF4S67FCV25ZMS928S4GJR","Alex Harmon","01M7DF4S6YMMZHBZW1NBACG80M",0,"MIT","https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Ffoxit-pr-check\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: foxit-pr-check\ndescription: \"Review a branch or pull request prepared for a Fox-IT open-source repository (fox-it\u002Fdissect.*, dissect.target, dissect.cstruct, flow.record, acquire, ...) against Fox-IT's contribution rules before it is pushed or opened: the Developing, Style guide and Tooling pages (docs.dissect.tools\u002Fen\u002Flatest\u002Fcontributing\u002F), the repository's own tox.ini, pyproject.toml (Ruff) and pull request template. USE FOR: commit message format (50-character imperative subject, 72-column body), fix\u002F and feature\u002F branches, one change per branch, the PR description and its closing keyword, running the repo's tox lint and tests, missing unit tests, type hints, names, cstruct definitions, dependency reasons, and whether the CLA (DissectBot) is accepted. DO NOT USE FOR: reviewing what the code does (correctness, design); repositories outside fox-it; accepting the CLA (only the author may).\"\nmetadata:\n  author: local\n  version: \"1.0.0\"\n  sources: \"docs.dissect.tools contributing pages (Developing, Style guide, Tooling) as read 2026-10-24; each target repository's tox.ini, pyproject.toml and .github\u002Fpull_request_template.md, read at check time\"\n---\n\n# Fox-IT pull request check\n\nFox-IT's projects share one contribution process (Dissect's documentation). This skill checks that a contribution\n**conforms** to it, so CI and the reviewers see a pull request that follows the rules. It does not judge whether the\nchange is right; review that separately.\n\n**Sources, in order of authority** (details and every rule: `references\u002Fguides.md`):\n\n1. The target repository's `tox.ini` and `pyproject.toml`: what CI runs. They use **Ruff** (lint and format, line\n   length 120, Google docstrings) and **vermin** (the minimum Python). The guide pages still name Black and Flake8.\n2. Its `.github\u002Fpull_request_template.md` (commit style, description, closing keywords).\n3. The Developing, Style guide and Tooling pages.\n\n## Run the checker\n\n`scripts\u002Ffoxit_pr_check.py` (standard library; needs `git`, and `gh` for `--pr` and `--check-cla`) checks a clone\non the branch to submit, with Fox-IT's repository as a remote (usually `upstream`):\n\n```bash\npython3 ~\u002F.claude\u002Fskills\u002Ffoxit-pr-check\u002Fscripts\u002Ffoxit_pr_check.py PATH\u002FTO\u002FCLONE \\\n    --pr-body pr.md --run-tox            # before opening: the description as a file, and the repo's own tox\npython3 ~\u002F.claude\u002Fskills\u002Ffoxit-pr-check\u002Fscripts\u002Ffoxit_pr_check.py PATH\u002FTO\u002FCLONE --pr 42 --check-cla   # once opened\n```\n\n- `git fetch upstream` first: \"based on main\" is checked against the last fetch.\n- `--run-tox` runs the repo's `tox -e lint` and `tox -e py3` (tox 4.27 or later provisions Ruff, vermin and pytest\n  itself; `--tox PATH` for a tox outside `PATH`). CI also runs `pypy3`, and a failing CI gets no manual review.\n- Exit status 0 with no FAIL, 1 with any, 2 when the check could not run. `--json` for the findings as data.\n\n| Level | Meaning |\n|---|---|\n| **FAIL** | Breaks a stated rule (a lower-case or full-stop subject, no blank line after it, no fox-it remote, working on `main`, tox failing, an AI attribution trailer) |\n| **WARN** | A rule stated loosely (\"as much as possible\"), or a heuristic: subject over 50, not imperative, body over 72, no `fix\u002F` prefix, several commits, no test, names, hints, an inline cstruct, a dependency without a reason, no closing keyword |\n| **PASS** \u002F **INFO** | Checked and fine; or not checked, with why |\n\n## Then judge what no tool can\n\nWork through the \"Left to judgement\" list in `references\u002Fguides.md`: one self-contained change; a description that\nsays what and why and how to test; Google docstrings (summary line, blank line, `Args:`\u002F`Returns:`\u002F`Raises:`, no\ntypes); import groups; cstruct naming close to the original; `dissect.target`'s path rule. Confirm each WARN or\ndismiss it with a reason.\n\n## Report\n\nList FAIL first, then WARN, each with its rule ID, the file or commit, and the fix. Say what ran (`--run-tox` or not,\nthe tox environments, the CLA check) and what did not. Do not push, open the pull request, or comment on it unless\nthe user asks for that step.\n\n## The CLA and attribution\n\n- DissectBot posts Fox-IT's Contribution License Agreement on an account's first pull request. Accepting it is a\n  legal act: tell the author the exact reply (`@DissectBot agree`, or `@DissectBot agree company=\"...\"` for work\n  made for an employer), and never post it for them.\n- `ai-attribution` is this skill's local policy, not Fox-IT's: the CLA has the author represent each contribution\n  as their own creation, so commits and the description carry no `Co-Authored-By: Claude`, `Claude-Session:` or\n  \"Generated with\" lines. Remove them before pushing.\n","# Fox-IT pull request check\n\nFox-IT's projects share one contribution process (Dissect's documentation). This skill checks that a contribution\n**conforms** to it, so CI and the reviewers see a pull request that follows the rules. It does not judge whether the\nchange is right; review that separately.\n\n**Sources, in order of authority** (details and every rule: `references\u002Fguides.md`):\n\n1. The target repository's `tox.ini` and `pyproject.toml`: what CI runs. They use **Ruff** (lint and format, line\n   length 120, Google docstrings) and **vermin** (the minimum Python). The guide pages still name Black and Flake8.\n2. Its `.github\u002Fpull_request_template.md` (commit style, description, closing keywords).\n3. The Developing, Style guide and Tooling pages.\n\n## Run the checker\n\n`scripts\u002Ffoxit_pr_check.py` (standard library; needs `git`, and `gh` for `--pr` and `--check-cla`) checks a clone\non the branch to submit, with Fox-IT's repository as a remote (usually `upstream`):\n\n```bash\npython3 ~\u002F.claude\u002Fskills\u002Ffoxit-pr-check\u002Fscripts\u002Ffoxit_pr_check.py PATH\u002FTO\u002FCLONE \\\n    --pr-body pr.md --run-tox            # before opening: the description as a file, and the repo's own tox\npython3 ~\u002F.claude\u002Fskills\u002Ffoxit-pr-check\u002Fscripts\u002Ffoxit_pr_check.py PATH\u002FTO\u002FCLONE --pr 42 --check-cla   # once opened\n```\n\n- `git fetch upstream` first: \"based on main\" is checked against the last fetch.\n- `--run-tox` runs the repo's `tox -e lint` and `tox -e py3` (tox 4.27 or later provisions Ruff, vermin and pytest\n  itself; `--tox PATH` for a tox outside `PATH`). CI also runs `pypy3`, and a failing CI gets no manual review.\n- Exit status 0 with no FAIL, 1 with any, 2 when the check could not run. `--json` for the findings as data.\n\n| Level | Meaning |\n|---|---|\n| **FAIL** | Breaks a stated rule (a lower-case or full-stop subject, no blank line after it, no fox-it remote, working on `main`, tox failing, an AI attribution trailer) |\n| **WARN** | A rule stated loosely (\"as much as possible\"), or a heuristic: subject over 50, not imperative, body over 72, no `fix\u002F` prefix, several commits, no test, names, hints, an inline cstruct, a dependency without a reason, no closing keyword |\n| **PASS** \u002F **INFO** | Checked and fine; or not checked, with why |\n\n## Then judge what no tool can\n\nWork through the \"Left to judgement\" list in `references\u002Fguides.md`: one self-contained change; a description that\nsays what and why and how to test; Google docstrings (summary line, blank line, `Args:`\u002F`Returns:`\u002F`Raises:`, no\ntypes); import groups; cstruct naming close to the original; `dissect.target`'s path rule. Confirm each WARN or\ndismiss it with a reason.\n\n## Report\n\nList FAIL first, then WARN, each with its rule ID, the file or commit, and the fix. Say what ran (`--run-tox` or not,\nthe tox environments, the CLA check) and what did not. Do not push, open the pull request, or comment on it unless\nthe user asks for that step.\n\n## The CLA and attribution\n\n- DissectBot posts Fox-IT's Contribution License Agreement on an account's first pull request. Accepting it is a\n  legal act: tell the author the exact reply (`@DissectBot agree`, or `@DissectBot agree company=\"...\"` for work\n  made for an employer), and never post it for them.\n- `ai-attribution` is this skill's local policy, not Fox-IT's: the CLA has the author represent each contribution\n  as their own creation, so commits and the description carry no `Co-Authored-By: Claude`, `Claude-Session:` or\n  \"Generated with\" lines. Remove them before pushing.\n",{"name":5,"metadata":24,"description":7},{"author":25,"sources":26,"version":27},"local","docs.dissect.tools contributing pages (Developing, Style guide, Tooling) as read 2026-10-24; each target repository's tox.ini, pyproject.toml and .github\u002Fpull_request_template.md, read at check time","1.0.0","main","25208c05f7001837f6e22745480c87965f257ef4","https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills","https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey","2026-10-25 13:54:02",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add AtomicGaryBusey\u002FAGB-Agent-Skills --skill foxit-pr-check",{"tool":39,"command":40},"bunx","bunx skills add AtomicGaryBusey\u002FAGB-Agent-Skills --skill foxit-pr-check",{"tool":42,"command":43},"pnpm","pnpm dlx skills add AtomicGaryBusey\u002FAGB-Agent-Skills --skill foxit-pr-check","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Ffoxit-pr-check\u002FSKILL.md",true,[47,53,59,63,69],{"path":48,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":51,"sourceHtmlUrl":52},".claude-plugin\u002Fplugin.json","REFERENCE","参考文档",596,"https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Ffoxit-pr-check\u002F.claude-plugin\u002Fplugin.json",{"path":54,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":57,"sourceHtmlUrl":58},".gitignore","OTHER","其他",29,"https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Ffoxit-pr-check\u002F.gitignore",{"path":60,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":61,"sourceHtmlUrl":62},"references\u002Fguides.md",5036,"https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Ffoxit-pr-check\u002Freferences\u002Fguides.md",{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"scripts\u002Ffoxit_pr_check.py","SCRIPT","脚本",19960,"https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Ffoxit-pr-check\u002Fscripts\u002Ffoxit_pr_check.py",{"path":70,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":71,"sourceHtmlUrl":72},"scripts\u002Ftest_foxit_pr_check.py",10168,"https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Ffoxit-pr-check\u002Fscripts\u002Ftest_foxit_pr_check.py",[74,80,86,93,99,105],{"skillNo":75,"name":76,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":19},"01M7DF6QCVMKYKHWFM3P6SZ5Y9","wcag22-a11y","https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Fwcag22-a11y\u002Fevals\u002Fplugin\u002Fskills\u002Fwcag22-a11y\u002FSKILL.md",[],[],{"skillNo":81,"name":76,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":19},"01M7DF66YYXNZK8EK0XS8G9J0B","Audit web content for WCAG 2.2 conformance (also WCAG 2.1\u002F2.0 Level A\u002FAA) with tool-assisted and manual checks. USE FOR: accessibility (a11y) audits and reviews of web pages, sites, HTML, components (React\u002FJSX\u002FTSX, Vue, Svelte, server templates) and CSS; colour contrast; keyboard access, focus order, focus visible, focus not obscured; target size; screen reader issues in markup (names, roles and states, ARIA); forms, labels and error messages; reflow, zoom and text spacing; accessible authentication, consistent help, redundant entry, dragging; status messages; VPAT\u002FACR evidence and Section 508 \u002F EN 301 549 mapping at the WCAG level. DO NOT USE FOR: native mobile app platform guidelines beyond WCAG applicability, legal advice, PDF remediation (unless the content is HTML), SEO, performance or security audits, ISO 999 indexes, RFC 3339 timestamps, ASD-STE100 writing.","https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Fwcag22-a11y\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":19},"01M7DF5YQE08BZR4E37GRTA2BE","ste100","Write, rewrite, audit, or answer questions about ASD-STE100 Simplified Technical English (STE, STE100), the controlled language for technical documentation. USE FOR: drafting or rewriting READMEs, guides, manuals, runbooks, install docs, procedures, and help text in STE; technical writing review and STE conformance audits with rule IDs and severities; word questions such as 'Is utilize allowed in ASD-STE100?' or 'is this an approved word?'; approved words, part of speech, technical nouns and technical verbs, a DOCS_TERMS.md term list; sentence length (20\u002F25 words), active voice, imperative steps, WARNING\u002FCAUTION\u002FNOTE safety instructions, punctuation. DO NOT USE FOR: code, code comments, commit messages, chat replies, marketing copy, non-English text, ISO 999 indexes, RFC 3339 timestamps.","https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Fste100\u002FSKILL.md",[],[],{"skillNo":94,"name":95,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":19},"01M7DF5VAT2BW9GN3AW3YCBDPH","rfc3339-ixdtf","https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Frfc3339-ixdtf\u002Fevals\u002Fplugin\u002Fskills\u002Frfc3339-ixdtf\u002FSKILL.md",[],[],{"skillNo":100,"name":95,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":19},"01M7DF5D0YCHPFT0SXEPD3VRRN","Audit code for RFC 3339 (Internet timestamps, the usual 'ISO timestamp format' of APIs and logs) and RFC 9557 (IXDTF: suffixes such as 2026-09-24T12:00:00+02:00[Europe\u002FParis] and [u-ca=hebrew] tags; Z now means 'local offset unknown'). USE FOR: parsing, validating or emitting these timestamps in any language (Python, JS and Temporal ZonedDateTime, Java, .NET, Go, Rust, Swift); choosing Z or +00:00 when the offset is unknown; leap second 23:59:60 legality; reviewing producers, consumers and schemas (JSON Schema\u002FOpenAPI format date-time, protobuf Timestamp, API contracts); ServiceNow GlideDateTime and Fluent SDK date handling; running conformance vectors against a parser; scanning source for risky date-time APIs (strftime %z, literal 'Z'). DO NOT USE FOR: ISO 8601 durations, week or ordinal dates, intervals; HTTP-date or RFC 5322 email dates; time-zone arithmetic unrelated to serialization.","https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Frfc3339-ixdtf\u002FSKILL.md",[],[],{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":19},"01M7DF543MP7D8J6DP8W84H6HB","iso999","Audit indexes and index-producing software for adherence to ISO 999:1996 (content, organization and presentation of indexes). USE FOR: reviewing a back-of-book index or book index; code that generates indexes (collation\u002Ffiling, locators and page ranges, see\u002Fsee also resolution, subheading nesting; makeindex\u002Fxindy styles, Sphinx genindex, Docusaurus\u002FMkDocs index plugins, custom indexers); linting a generated index (text, Markdown, LaTeX .ind, HTML); reviewing index entries and markup in doc sources (\\index{}, .. index::, DITA indexterm). DO NOT USE FOR: general source-code quality, search-engine\u002Fdatabase indexes, keyword extraction, tables of contents, or choosing what subjects to index (ISO 5963).","https:\u002F\u002Fgithub.com\u002FAtomicGaryBusey\u002FAGB-Agent-Skills\u002Fblob\u002Fmain\u002Fiso999\u002FSKILL.md",[],[]]