[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C1P56ZE52PD2DHC3CNNWZM":3,"skill-same:01M6C1P56ZE52PD2DHC3CNNWZM":97},{"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":26,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M6C1P56ZE52PD2DHC3CNNWZM","test-normalize",null,"Repair and standardize a testing regime through concrete file plans, guarded deployment receipts and repeatable verification of runner and oracle behavior.","jmagly\u002Faiwg","jmagly","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1159087?v=4","01M6C10AK8N2WCSQN11FYGTJWN","Joseph Magly","01M6C10AQ8A2RMED1Y1BSVY7NF",229,"MIT","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Faddons\u002Ftesting-quality\u002Fskills\u002Ftest-normalize\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39],"test","test normalize","normalize","testing","oracle","deployment","verification","file","receipts","behavior","runner","repair","plans","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nplatforms: [all]\nversion: 2.0.0\nname: test-normalize\ndescription: Repair and standardize a testing regime through concrete file plans, guarded deployment receipts and repeatable verification of runner and oracle behavior.\n---\n\n# Test normalization\n\nStart from an evidence-backed assessment or a confirmed individual finding. For an unaudited whole testing regime, run\n`test-conformance` first. Use [the normalization plan template](..\u002F..\u002Ftemplates\u002Fnormalization-plan.md) and the\n[workflow](..\u002F..\u002Fdocs\u002Fconformance-workflow.md).\n\nSelect a finite batch and write the intended behavioral acceptance condition. Prioritize fail-open validators, omitted\ntests and ineffective gates before cosmetic fixture conventions. Existing authorized cleanup covers necessary reversible\nedits; ask only when a concrete step is outside that authorization.\n\nInspect `templates --action list` for a suitable platform bundle. Use `templates --action develop` to produce a custom\neditable bundle when needed, then validate and review it. `templates --action deploy` plans\u002Fapplies platform files\nthrough the same ownership and receipt rules; provider addon deployment and target test configuration deployment are\nseparate operations.\n\nPrepare explicit `{path, content}` edits; `content: null` means intentional deletion. Run `plan` to capture complete\nbefore\u002Fafter state. Review its actual paths and changed behavior, then `apply` within the authorized scope. Preserve the\nreceipt; changed hashes or receipt collisions require investigation and a new plan, not a forced write. No arbitrary\nshell commands belong inside an edit plan.\n\nRun the affected tests and discovery, negative controls, and declared wider verification. Update source-bound reviews\nand regenerate the assessment\u002Freport. If the batch causes a regression, use `rollback` only while its receipt and\npost-apply state remain valid. A partial transaction requires inspection and a fresh recovery plan; rollback refuses\nunrelated drift.\n\nRepeat with a new plan and a stated finite batch budget. Stop on conformance, an unresolved external prerequisite, or\nbudget exhaustion; report remaining findings. Do not silence tests, reduce thresholds or remove required checks to\nsatisfy the gate. A normalization template standardizes a convention; its successful deployment alone does not prove\nreal tests.\n","# Test normalization\n\nStart from an evidence-backed assessment or a confirmed individual finding. For an unaudited whole testing regime, run\n`test-conformance` first. Use [the normalization plan template](..\u002F..\u002Ftemplates\u002Fnormalization-plan.md) and the\n[workflow](..\u002F..\u002Fdocs\u002Fconformance-workflow.md).\n\nSelect a finite batch and write the intended behavioral acceptance condition. Prioritize fail-open validators, omitted\ntests and ineffective gates before cosmetic fixture conventions. Existing authorized cleanup covers necessary reversible\nedits; ask only when a concrete step is outside that authorization.\n\nInspect `templates --action list` for a suitable platform bundle. Use `templates --action develop` to produce a custom\neditable bundle when needed, then validate and review it. `templates --action deploy` plans\u002Fapplies platform files\nthrough the same ownership and receipt rules; provider addon deployment and target test configuration deployment are\nseparate operations.\n\nPrepare explicit `{path, content}` edits; `content: null` means intentional deletion. Run `plan` to capture complete\nbefore\u002Fafter state. Review its actual paths and changed behavior, then `apply` within the authorized scope. Preserve the\nreceipt; changed hashes or receipt collisions require investigation and a new plan, not a forced write. No arbitrary\nshell commands belong inside an edit plan.\n\nRun the affected tests and discovery, negative controls, and declared wider verification. Update source-bound reviews\nand regenerate the assessment\u002Freport. If the batch causes a regression, use `rollback` only while its receipt and\npost-apply state remain valid. A partial transaction requires inspection and a fresh recovery plan; rollback refuses\nunrelated drift.\n\nRepeat with a new plan and a stated finite batch budget. Stop on conformance, an unresolved external prerequisite, or\nbudget exhaustion; report remaining findings. Do not silence tests, reduce thresholds or remove required checks to\nsatisfy the gate. A normalization template standardizes a convention; its successful deployment alone does not prove\nreal tests.\n",{"name":5,"version":45,"namespace":46,"platforms":47,"description":7},"2.0.0","aiwg",[48],"all","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Faddons\u002Ftesting-quality\u002Fskills\u002Ftest-normalize",36,"https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg","https:\u002F\u002Faiwg.io","https:\u002F\u002Fgithub.com\u002Fjmagly","https:\u002F\u002Fintegrolabs.io","ml\u002Fai, industrial automation, safety\u002Fsecurity, ssi\r\n\r\nmagly.net\r\nintegrolabs.io\r\naiwg.io\r\nfortemi.com\r\npagenary.com\r\nbytecask.com","2026-11-12 00:33:10",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add jmagly\u002Faiwg --skill test-normalize",{"tool":65,"command":66},"bunx","bunx skills add jmagly\u002Faiwg --skill test-normalize",{"tool":68,"command":69},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill test-normalize","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Faddons\u002Ftesting-quality\u002Fskills\u002Ftest-normalize\u002FSKILL.md",true,[73,79,85,89,93],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"sections\u002Fdoctrine.md","REFERENCE","参考文档",4711,"https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgstack\u002Fblob\u002Fmain\u002Fdesign-shotgun\u002Fsections\u002Fdoctrine.md",{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"sections\u002Fdoctrine.md.tmpl","OTHER","其他",18,"https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgstack\u002Fblob\u002Fmain\u002Fdesign-shotgun\u002Fsections\u002Fdoctrine.md.tmpl",{"path":86,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":87,"sourceHtmlUrl":88},"sections\u002Fmanifest.json",779,"https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgstack\u002Fblob\u002Fmain\u002Fdesign-shotgun\u002Fsections\u002Fmanifest.json",{"path":90,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":91,"sourceHtmlUrl":92},"sections\u002Fpreamble.md",22396,"https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgstack\u002Fblob\u002Fmain\u002Fdesign-shotgun\u002Fsections\u002Fpreamble.md",{"path":94,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":95,"sourceHtmlUrl":96},"SKILL.md.tmpl",12858,"https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgstack\u002Fblob\u002Fmain\u002Fdesign-shotgun\u002FSKILL.md.tmpl",[98,125,149,155,162,176],{"skillNo":99,"name":100,"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":105,"publishedAt":40},"01M70QA0BSYJ49EES9V4RE8QH1","host-hardening","Read-only system hardening baseline and plan-first host hardening recommendations for SSH, Docker bind addresses, firewall persistence, datastores, exporters and audit retention.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[104],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[106,107,108,109,110,111,112,113,114,33,115,116,117,118,119,120,121,122,123,124],"host","host hardening","hardening","read","re","recommendations","remediation","plan","port","Bash","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":135,"publishedAt":40},"01M70PNT2Z4HMZPRBTAF6073NN","exposure-analysis","Read-only firewall analysis and effective host exposure reconstruction for Docker published ports, UFW bypass, stale rules, CDN scope, IPv6 asymmetry and external probe allowlists.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fforensics\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[131,134],{"categoryNo":132,"categoryName":133,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[136,137,138,109,139,114,140,141,115,142,106,143,117,144,145,120,121,146,147,148],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator","write",{"skillNo":150,"name":100,"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":151,"categories":152,"keywords":154,"publishedAt":40},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[153],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[108,106,107,116,109,124,112,111,119,113,114,33,115,123,117,118,110,120,121,122],{"skillNo":156,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":161,"publishedAt":40},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[159,160],{"categoryNo":132,"categoryName":133,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[137,136,120,139,114,140,115,138,106,143,117,144,145,109,121,142,141,146,147,148],{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":169,"publishedAt":40},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[168],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[170,171,172,173,174,175],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":180,"categories":181,"keywords":183,"publishedAt":40},"01M6CB4AVK1W76MFMPP0JP32CJ","pi-local","Pi-local duplicate-precedence fixture.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Fproviders\u002Fpi\u002Fproject\u002F.pi\u002Fskills\u002Fpi-local\u002FSKILL.md",[182],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[184,185,144,186,171],"pi","pi local","duplicate"]