[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MZKBZ3B9DM157P4P5JT1W7":3,"skill-same:01M6MZKBZ3B9DM157P4P5JT1W7":77},{"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":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":54,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M6MZKBZ3B9DM157P4P5JT1W7","instrlint",null,"Lint and optimize agent instruction files. Use when the user wants to lint, audit, refactor, or optimize their CLAUDE.md, AGENTS.md, .cursorrules, or related instruction files — finds dead rules, token waste, duplicates, contradictions, and stale references. Produces a scored health report (0–100) with auto-fix and host-orchestrated LLM verification.","jed1978\u002Finstrlint","jed1978","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7637298?v=4","01M6MZK9ABYW19FWPASHF1HWEX","Jed Lin","01M6MZK9ENQ4T7DZQYKKQJGSEN",8,"MIT","https:\u002F\u002Fgithub.com\u002Fjed1978\u002Finstrlint\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finstrlint\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"stale","auto-fix","cursorrules","with","host","token","optimize","references","files","lint","duplicates","auto","use","fix","Rules","health","audit","verification","report","2026-11-10 10:12:30",false,"---\nname: instrlint\ndescription: Lint and optimize agent instruction files. Use when the user wants to lint, audit, refactor, or optimize their CLAUDE.md, AGENTS.md, .cursorrules, or related instruction files — finds dead rules, token waste, duplicates, contradictions, and stale references. Produces a scored health report (0–100) with auto-fix and host-orchestrated LLM verification.\n---\n\n# instrlint\n\nLint and optimize agent instruction files. Produces a scored health report across three dimensions: token budget, dead rules, and structure.\n\n## Command Resolution Protocol\n\nWhen the user runs `\u002Finstrlint [args]`:\n\n1. **Detect language** — identify conversation language → output: locale\n   - 繁體中文 → `zh-TW`\n   - English or any other → `en`\n\n2. **Check `--verify`** — if args contain `--verify` → jump to LLM Verification Protocol below. Otherwise continue.\n\n3. **Map command** — parse user args against this table → output: base command\n\n   | User args | Base command |\n   |-----------|-------------|\n   | _(none)_ | `npx instrlint@latest` |\n   | `budget` | `npx instrlint@latest budget` |\n   | `deadrules` | `npx instrlint@latest deadrules` |\n   | `structure` | `npx instrlint@latest structure` |\n   | `--fix` | `npx instrlint@latest --fix` |\n   | `ci --fail-on warning` | `npx instrlint@latest ci --fail-on warning` |\n\n4. **Build final command** — append flags from steps 1 and 3:\n   `{base command} --format markdown --lang {locale}`\n   Exception: `--fix` omits `--format markdown` (output is a fix summary, not a report).\n\n5. **Execute and present** — run the command → present the markdown output directly to the user. Never summarize or paraphrase.\n\n## LLM Verification Protocol (`--verify`)\n\ncontradiction \u002F duplicate \u002F structure detectors are text heuristics and may produce false positives. You (the host agent) can judge these semantically.\n\n**Protocol:** instrlint never calls an LLM API. It writes suspicious findings as `candidates.json`, you judge them and write `verdicts.json`, then instrlint merges the results back into the report.\n\n### Quick steps\n\n1. `npx instrlint@latest --emit-candidates instrlint-candidates.json --skip-report --lang \u003Cdetected>`\n2. Read `instrlint-candidates.json` and judge each candidate using criteria from [references\u002Fjudgment-framework.md](references\u002Fjudgment-framework.md) (`confirmed` \u002F `rejected` \u002F `uncertain`)\n3. Write `instrlint-verdicts.json` with your verdicts (`id` must match 12-char hex from candidates)\n4. `npx instrlint@latest --apply-verdicts instrlint-verdicts.json --format markdown --lang \u003Cdetected>`\n\n## Splitting Guidance\n\nWhen instrlint reports either of these conditions, **do not paste the suggestion text directly** — run the splitting decision walkthrough instead:\n\n- Budget warning: root instruction file exceeds recommended line count (> 200 lines)\n- Structure findings contain path-scope suggestions (`messageKey: structure.scopePathScoped`)\n\n### Walkthrough flow\n\n1. **Read** the file, list major sections (heading + line count)\n2. **Classify each section** using the 4-bucket framework (see [references\u002Fjudgment-framework.md](references\u002Fjudgment-framework.md))\n3. **Present a decision table** to the user (section \u002F lines \u002F recommended action \u002F reason)\n4. **Ask** the user: \"Minimum split (bucket 1 only) \u002F Full split (buckets 1+2+3) \u002F Custom\"\n5. **Execute**: bucket 1 → extract to rules directory with `paths:` \u002F `globs:` frontmatter; bucket 2 → extract without path-scope; bucket 3 → replace with one-line pointer\n","# instrlint\n\nLint and optimize agent instruction files. Produces a scored health report across three dimensions: token budget, dead rules, and structure.\n\n## Command Resolution Protocol\n\nWhen the user runs `\u002Finstrlint [args]`:\n\n1. **Detect language** — identify conversation language → output: locale\n   - 繁體中文 → `zh-TW`\n   - English or any other → `en`\n\n2. **Check `--verify`** — if args contain `--verify` → jump to LLM Verification Protocol below. Otherwise continue.\n\n3. **Map command** — parse user args against this table → output: base command\n\n   | User args | Base command |\n   |-----------|-------------|\n   | _(none)_ | `npx instrlint@latest` |\n   | `budget` | `npx instrlint@latest budget` |\n   | `deadrules` | `npx instrlint@latest deadrules` |\n   | `structure` | `npx instrlint@latest structure` |\n   | `--fix` | `npx instrlint@latest --fix` |\n   | `ci --fail-on warning` | `npx instrlint@latest ci --fail-on warning` |\n\n4. **Build final command** — append flags from steps 1 and 3:\n   `{base command} --format markdown --lang {locale}`\n   Exception: `--fix` omits `--format markdown` (output is a fix summary, not a report).\n\n5. **Execute and present** — run the command → present the markdown output directly to the user. Never summarize or paraphrase.\n\n## LLM Verification Protocol (`--verify`)\n\ncontradiction \u002F duplicate \u002F structure detectors are text heuristics and may produce false positives. You (the host agent) can judge these semantically.\n\n**Protocol:** instrlint never calls an LLM API. It writes suspicious findings as `candidates.json`, you judge them and write `verdicts.json`, then instrlint merges the results back into the report.\n\n### Quick steps\n\n1. `npx instrlint@latest --emit-candidates instrlint-candidates.json --skip-report --lang \u003Cdetected>`\n2. Read `instrlint-candidates.json` and judge each candidate using criteria from [references\u002Fjudgment-framework.md](references\u002Fjudgment-framework.md) (`confirmed` \u002F `rejected` \u002F `uncertain`)\n3. Write `instrlint-verdicts.json` with your verdicts (`id` must match 12-char hex from candidates)\n4. `npx instrlint@latest --apply-verdicts instrlint-verdicts.json --format markdown --lang \u003Cdetected>`\n\n## Splitting Guidance\n\nWhen instrlint reports either of these conditions, **do not paste the suggestion text directly** — run the splitting decision walkthrough instead:\n\n- Budget warning: root instruction file exceeds recommended line count (> 200 lines)\n- Structure findings contain path-scope suggestions (`messageKey: structure.scopePathScoped`)\n\n### Walkthrough flow\n\n1. **Read** the file, list major sections (heading + line count)\n2. **Classify each section** using the 4-bucket framework (see [references\u002Fjudgment-framework.md](references\u002Fjudgment-framework.md))\n3. **Present a decision table** to the user (section \u002F lines \u002F recommended action \u002F reason)\n4. **Ask** the user: \"Minimum split (bucket 1 only) \u002F Full split (buckets 1+2+3) \u002F Custom\"\n5. **Execute**: bucket 1 → extract to rules directory with `paths:` \u002F `globs:` frontmatter; bucket 2 → extract without path-scope; bucket 3 → replace with one-line pointer\n",{"name":5,"description":7},"main","9c2ed3bd9eac710ee4ab8d144439e83eff72644a",".claude\u002Fskills\u002Finstrlint",1,"https:\u002F\u002Fgithub.com\u002Fjed1978\u002Finstrlint","https:\u002F\u002Fgithub.com\u002Fjed1978","https:\u002F\u002Fwww.clearforge.com.tw\u002Fabout\u002F","Developer tooling & AI agents. C# veteran · DDD practitioner · Creator of instrlint. ??","2026-04-10 11:35:32",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add jed1978\u002Finstrlint --skill instrlint",{"tool":63,"command":64},"bunx","bunx skills add jed1978\u002Finstrlint --skill instrlint",{"tool":66,"command":67},"pnpm","pnpm dlx skills add jed1978\u002Finstrlint --skill instrlint","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjed1978\u002Finstrlint\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finstrlint\u002FSKILL.md",true,[71],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Fjudgment-framework.md","REFERENCE","参考文档",5793,"https:\u002F\u002Fgithub.com\u002Fjed1978\u002Finstrlint\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Finstrlint\u002Freferences\u002Fjudgment-framework.md",[78,87,99],{"skillNo":79,"name":80,"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":81,"categories":82,"keywords":86,"publishedAt":43},"01M6MZKQ52NYKSJ6B9S0JPGJKK","deploy","https:\u002F\u002Fgithub.com\u002Fjed1978\u002Finstrlint\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fsample-project\u002F.claude\u002Fskills\u002Fdeploy\u002FSKILL.md",[83],{"categoryNo":84,"categoryName":85,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",[80],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":43},"01M6MZKN8THT639Q3S2XT9XP9M","search","Web search skill for Codex","https:\u002F\u002Fgithub.com\u002Fjed1978\u002Finstrlint\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fcodex-project\u002F.agents\u002Fskills\u002Fsearch\u002FSKILL.md",[],[89,94,95,96,97,98],"for","search skill","web search","web","codex",{"skillNo":100,"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":101,"categories":102,"keywords":104,"publishedAt":43},"01M6MZKFP0J3GH3X1TX5FN1846","https:\u002F\u002Fgithub.com\u002Fjed1978\u002Finstrlint\u002Fblob\u002Fmain\u002Fskills\u002Finstrlint\u002FSKILL.md",[103],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[5,30,25,26,27,28,29,33,31,32,24,34,35,36,37,38,39,40,41,42]]