[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C19TVNJ4YPB5953WVXSWQ7":3,"skill-same:01M6C19TVNJ4YPB5953WVXSWQ7":65},{"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":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":46,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6C19TVNJ4YPB5953WVXSWQ7","mention-lint",null,"Lint @-mentions for style consistency and correctness","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\u002Faiwg-utils\u002Fskills\u002Fmention-lint\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32],"lint","mention lint","style","correctness","consistency","for","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: mention-lint\nplatforms: [all]\ndescription: Lint @-mentions for style consistency and correctness\n---\n\n\u003C!-- AIWG-SKILL-CALLOUT -->\n> **Skill access pattern (post-kernel-pivot, 2026.5+)**\n>\n> Skill names referenced in this document are AIWG skills, **not slash commands**. Most are not kernel-listed and cannot be invoked as `\u002Fskill-name` by the platform. Reach them via:\n>\n> ```bash\n> aiwg discover \"\u003Ccapability>\"\n> aiwg show skill \u003Cname> --body\n> ```\n>\n> Only kernel-listed skills (`aiwg-doctor`, `aiwg-refresh`, `aiwg-status`, `aiwg-help`, `use`, `steward`) are directly invokable as slash commands. See [skill-discovery rule](..\u002F..\u002F..\u002Faddons\u002Faiwg-utils\u002Frules\u002Fskill-discovery.md).\n\n\n# @-Mention Linting\n\nValidate @-mention style and fix common issues.\n\n## Usage\n\n```bash\n\u002Fmention-lint                    # Lint current directory\n\u002Fmention-lint --fix              # Auto-fix fixable issues\n\u002Fmention-lint --strict           # Exit with error on any issue\n\u002Fmention-lint --rules ML001,ML005  # Run specific rules only\n```\n\n## Options\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| --target | . | Directory to lint |\n| --fix | false | Auto-fix fixable issues |\n| --strict | false | Exit with error on any issue |\n| --rules | all | Comma-separated rule IDs |\n\n## Lint Rules\n\n| Rule | Description | Severity | Auto-fix |\n|------|-------------|----------|----------|\n| ML001 | @-mention path does not exist | error | no |\n| ML002 | @-mention uses wrong case | warning | yes |\n| ML003 | Missing required prefix (.aiwg\u002F, src\u002F, test\u002F) | warning | yes |\n| ML004 | Uses deprecated path pattern | warning | yes |\n| ML005 | Invalid ID format (UC-NNN, ADR-NNN) | warning | yes |\n| ML006 | Duplicate @-mentions in same file | info | yes |\n| ML007 | @-mention in wrong section | info | no |\n| ML008 | Orphan @-mention (no back-reference) | info | no |\n| ML009 | Circular @-mention chain | warning | no |\n| ML010 | @-mention exceeds max depth (>3 hops) | warning | no |\n\n## Output Example\n\n```\nsrc\u002Fservices\u002Fauth\u002Flogin.ts\n  L3:  ML005 @.aiwg\u002Frequirements\u002FUC-3-auth.md should be UC-003 (auto-fixable)\n  L5:  ML001 @.aiwg\u002Farchitecture\u002Fadrs\u002FADR-999.md does not exist\n\ntest\u002Fintegration\u002Fauth.test.ts\n  L2:  ML003 @auth\u002Flogin.ts should be @$AIWG_ROOT\u002Fsrc\u002Fauth\u002Flogin.ts (auto-fixable)\n\n.aiwg\u002Farchitecture\u002Fsoftware-architecture-doc.md\n  L45: ML008 References @.aiwg\u002Frequirements\u002FUC-005.md but no back-reference\n\nSummary: 4 issues (1 error, 2 warnings, 1 info)\n         3 auto-fixable (run with --fix)\n```\n\n## Rule Details\n\n### ML001: Path Does Not Exist\n\n```\nError: @.aiwg\u002Frequirements\u002FUC-999.md → file not found\n```\nNot auto-fixable. Remove reference or create file.\n\n### ML002: Wrong Case\n\n```\nWarning: @.aiwg\u002FRequirements\u002FUC-001.md should be @.aiwg\u002Frequirements\u002FUC-001.md\nFix: Correct case to match filesystem\n```\n\n### ML003: Missing Prefix\n\n```\nWarning: @auth\u002Flogin.ts should be @$AIWG_ROOT\u002Fsrc\u002Fauth\u002Flogin.ts\nFix: Add appropriate prefix\n```\n\n### ML004: Deprecated Pattern\n\n```\nWarning: @requirements\u002FUC-001.md should be @.aiwg\u002Frequirements\u002FUC-001.md\nFix: Update to current pattern\n```\n\n### ML005: Invalid ID Format\n\n```\nWarning: UC-3 should be UC-003 (3-digit format)\nWarning: ADR-5-auth should be ADR-005-auth\nFix: Zero-pad numeric IDs\n```\n\n### ML006: Duplicate Mentions\n\n```\nInfo: @.aiwg\u002Frequirements\u002FUC-001.md appears 3 times\nFix: Remove duplicates, keep first occurrence\n```\n\n## CLI Equivalent\n\n```bash\naiwg mention-lint [--target \u003Cdir>] [--fix] [--strict]\n```\n\n## Related Commands\n\n- `mention-wire` - Add @-mentions\n- `mention-validate` - Validate @-mentions exist\n- `mention-conventions` - Display conventions\n\nLint @-mentions for: $ARGUMENTS\n\n## References\n\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002FREADME.md — aiwg-utils addon overview\n- @$AIWG_ROOT\u002Fdocs\u002Fcli-reference.md — CLI reference for mention-lint command\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Frules\u002Fresearch-before-decision.md — Verify paths exist before referencing\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002FREADME.md — SDLC artifacts that use @-mention conventions\n","\u003C!-- AIWG-SKILL-CALLOUT -->\n> **Skill access pattern (post-kernel-pivot, 2026.5+)**\n>\n> Skill names referenced in this document are AIWG skills, **not slash commands**. Most are not kernel-listed and cannot be invoked as `\u002Fskill-name` by the platform. Reach them via:\n>\n> ```bash\n> aiwg discover \"\u003Ccapability>\"\n> aiwg show skill \u003Cname> --body\n> ```\n>\n> Only kernel-listed skills (`aiwg-doctor`, `aiwg-refresh`, `aiwg-status`, `aiwg-help`, `use`, `steward`) are directly invokable as slash commands. See [skill-discovery rule](..\u002F..\u002F..\u002Faddons\u002Faiwg-utils\u002Frules\u002Fskill-discovery.md).\n\n\n# @-Mention Linting\n\nValidate @-mention style and fix common issues.\n\n## Usage\n\n```bash\n\u002Fmention-lint                    # Lint current directory\n\u002Fmention-lint --fix              # Auto-fix fixable issues\n\u002Fmention-lint --strict           # Exit with error on any issue\n\u002Fmention-lint --rules ML001,ML005  # Run specific rules only\n```\n\n## Options\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| --target | . | Directory to lint |\n| --fix | false | Auto-fix fixable issues |\n| --strict | false | Exit with error on any issue |\n| --rules | all | Comma-separated rule IDs |\n\n## Lint Rules\n\n| Rule | Description | Severity | Auto-fix |\n|------|-------------|----------|----------|\n| ML001 | @-mention path does not exist | error | no |\n| ML002 | @-mention uses wrong case | warning | yes |\n| ML003 | Missing required prefix (.aiwg\u002F, src\u002F, test\u002F) | warning | yes |\n| ML004 | Uses deprecated path pattern | warning | yes |\n| ML005 | Invalid ID format (UC-NNN, ADR-NNN) | warning | yes |\n| ML006 | Duplicate @-mentions in same file | info | yes |\n| ML007 | @-mention in wrong section | info | no |\n| ML008 | Orphan @-mention (no back-reference) | info | no |\n| ML009 | Circular @-mention chain | warning | no |\n| ML010 | @-mention exceeds max depth (>3 hops) | warning | no |\n\n## Output Example\n\n```\nsrc\u002Fservices\u002Fauth\u002Flogin.ts\n  L3:  ML005 @.aiwg\u002Frequirements\u002FUC-3-auth.md should be UC-003 (auto-fixable)\n  L5:  ML001 @.aiwg\u002Farchitecture\u002Fadrs\u002FADR-999.md does not exist\n\ntest\u002Fintegration\u002Fauth.test.ts\n  L2:  ML003 @auth\u002Flogin.ts should be @$AIWG_ROOT\u002Fsrc\u002Fauth\u002Flogin.ts (auto-fixable)\n\n.aiwg\u002Farchitecture\u002Fsoftware-architecture-doc.md\n  L45: ML008 References @.aiwg\u002Frequirements\u002FUC-005.md but no back-reference\n\nSummary: 4 issues (1 error, 2 warnings, 1 info)\n         3 auto-fixable (run with --fix)\n```\n\n## Rule Details\n\n### ML001: Path Does Not Exist\n\n```\nError: @.aiwg\u002Frequirements\u002FUC-999.md → file not found\n```\nNot auto-fixable. Remove reference or create file.\n\n### ML002: Wrong Case\n\n```\nWarning: @.aiwg\u002FRequirements\u002FUC-001.md should be @.aiwg\u002Frequirements\u002FUC-001.md\nFix: Correct case to match filesystem\n```\n\n### ML003: Missing Prefix\n\n```\nWarning: @auth\u002Flogin.ts should be @$AIWG_ROOT\u002Fsrc\u002Fauth\u002Flogin.ts\nFix: Add appropriate prefix\n```\n\n### ML004: Deprecated Pattern\n\n```\nWarning: @requirements\u002FUC-001.md should be @.aiwg\u002Frequirements\u002FUC-001.md\nFix: Update to current pattern\n```\n\n### ML005: Invalid ID Format\n\n```\nWarning: UC-3 should be UC-003 (3-digit format)\nWarning: ADR-5-auth should be ADR-005-auth\nFix: Zero-pad numeric IDs\n```\n\n### ML006: Duplicate Mentions\n\n```\nInfo: @.aiwg\u002Frequirements\u002FUC-001.md appears 3 times\nFix: Remove duplicates, keep first occurrence\n```\n\n## CLI Equivalent\n\n```bash\naiwg mention-lint [--target \u003Cdir>] [--fix] [--strict]\n```\n\n## Related Commands\n\n- `mention-wire` - Add @-mentions\n- `mention-validate` - Validate @-mentions exist\n- `mention-conventions` - Display conventions\n\nLint @-mentions for: $ARGUMENTS\n\n## References\n\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002FREADME.md — aiwg-utils addon overview\n- @$AIWG_ROOT\u002Fdocs\u002Fcli-reference.md — CLI reference for mention-lint command\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Frules\u002Fresearch-before-decision.md — Verify paths exist before referencing\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002FREADME.md — SDLC artifacts that use @-mention conventions\n",{"name":5,"namespace":38,"platforms":39,"description":7},"aiwg",[40],"all","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Fskills\u002Fmention-lint",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-14 10:46:34",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add jmagly\u002Faiwg --skill mention-lint",{"tool":57,"command":58},"bunx","bunx skills add jmagly\u002Faiwg --skill mention-lint",{"tool":60,"command":61},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill mention-lint","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Fskills\u002Fmention-lint\u002FSKILL.md",true,[],[66,94,118,124,131,145],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":73,"publishedAt":33},"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",[72],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93],"host","host hardening","hardening","read","re","recommendations","remediation","plan","port","verification","Bash","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":104,"publishedAt":33},"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",[100,103],{"categoryNo":101,"categoryName":102,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[105,106,107,77,108,82,109,110,84,111,74,112,86,113,114,89,90,115,116,117],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator","write",{"skillNo":119,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":123,"publishedAt":33},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[122],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[76,74,75,85,77,93,80,79,88,81,82,83,84,92,86,87,78,89,90,91],{"skillNo":125,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":130,"publishedAt":33},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[128,129],{"categoryNo":101,"categoryName":102,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[106,105,89,108,82,109,84,107,74,112,86,113,114,77,90,111,110,115,116,117],{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":138,"publishedAt":33},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[137],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[139,140,141,142,143,144],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":152,"publishedAt":33},"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",[151],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[153,154,113,155,140],"pi","pi local","duplicate"]