[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CD3BC6G0Q2MDNW6X51XHBQ":3,"skill-same:01M6CD3BC6G0Q2MDNW6X51XHBQ":86},{"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":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":14,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M6CD3BC6G0Q2MDNW6X51XHBQ","taste-lints",null,"Custom lints with agent-readable remediation instructions. Enforces taste invariants (file size, naming conventions, structured logging, complexity) and surfaces errors that agents can act on directly. Use when writing or reviewing code to catch style violations early.","loriensleafs\u002Fbrain","loriensleafs","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F315385?v=4","01M6CCYZETMCJPTHNS258YRCBC","Peter Kloss","01M6CCYZK25T8516A39S9PCJT7",0,"MIT","https:\u002F\u002Fgithub.com\u002Floriensleafs\u002Fbrain\u002Fblob\u002Fmain\u002Ftemplates\u002Fskills\u002Ftaste-lints\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35],"taste lints","writing","code","qa","logging","file","remediation","instructions","implementer","use","complexity","surfaces","2026-11-10 10:12:30",false,"---\nname: taste-lints\ndescription: Custom lints with agent-readable remediation instructions. Enforces taste invariants (file size, naming conventions, structured logging, complexity) and surfaces errors that agents can act on directly. Use when writing or reviewing code to catch style violations early.\nlicense: MIT\nagents: [qa, implementer, analyst]\nmodel: claude-sonnet-4-5\nmetadata:\n  version: 1.0.0\n---\n\n# Taste Lints\n\nCustom lints where error messages become agent-readable remediation instructions.\n\nInspired by [OpenAI Harness Engineering](https:\u002F\u002Fopenai.com\u002Findex\u002Fharness-engineering\u002F):\n\n> \"We statically enforce structured logging, naming conventions for schemas and types,\n> file size limits, and platform-specific reliability requirements with custom lints.\n> Because the lints are custom, we write the error messages to inject remediation\n> instructions into agent context.\"\n\n## Triggers\n\n| Trigger Phrase | Operation |\n|----------------|-----------|\n| `run taste lints` | taste_lints.py on staged or specified files |\n| `check file size` | taste_lints.py with file-size rule only |\n| `check naming conventions` | taste_lints.py with naming rule only |\n| `lint taste invariants` | taste_lints.py full scan |\n| `taste lint report` | taste_lints.py with JSON output |\n\n## When to Use\n\nUse this skill when:\n\n- Writing or editing source files (catch taste violations early)\n- Preparing code for PR submission\n- Reviewing code for style and convention compliance\n- Adding new files to the project\n\n## Taste Invariants\n\n### 1. File Size Limits\n\nFiles exceeding line thresholds indicate poor cohesion.\n\n| Threshold | Lines | Severity |\n|-----------|-------|----------|\n| Warning | 301-500 | warning |\n| Error | 501+ | error |\n\n### 2. Naming Conventions\n\n| Pattern | Rule | Applies To |\n|---------|------|------------|\n| `snake_case` | Python files, functions, variables | `*.py` |\n| `kebab-case` | Skill directories, YAML files | `.claude\u002Fskills\u002F`, `*.yml` |\n| `PascalCase` | PowerShell functions, classes | `*.ps1`, `*.psm1` |\n| `UPPER_CASE` | Constants, environment variables | All languages |\n| `invoke_` prefix | Hook scripts | `.claude\u002Fhooks\u002F` |\n\n### 3. Function Complexity\n\nFunctions exceeding cyclomatic complexity 10 need decomposition.\n\n### 4. Skill Prompt Size\n\nSkills exceeding 500 lines need progressive disclosure refactoring.\n\n## Process\n\n1. Run `bun run .claude\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts` with target files\n2. Review AGENT_REMEDIATION blocks in output\n3. Apply suggested fixes\n4. Re-run to confirm compliance\n\n## Usage\n\n```bash\n# Scan staged files\nbun run .claude\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts --git-staged\n\n# Scan specific files\nbun run .claude\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts path\u002Fto\u002Ffile.py\n\n# Scan a directory\nbun run .claude\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts --directory src\u002F\n\n# JSON output\nbun run .claude\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts --format json --git-staged\n\n# Run specific rules only\nbun run .claude\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts --rules file-size,naming\n```\n\n## Exit Codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | No violations found |\n| 1 | Script error (bad arguments, file not found) |\n| 10 | Violations detected |\n\n## Suppression\n\nAdd a comment to suppress a specific rule on a file:\n\n```python\n# taste-lint: ignore file-size\n```\n\nValid rules: `file-size`, `naming`, `complexity`, `skill-size`\n","# Taste Lints\n\nCustom lints where error messages become agent-readable remediation instructions.\n\nInspired by [OpenAI Harness Engineering](https:\u002F\u002Fopenai.com\u002Findex\u002Fharness-engineering\u002F):\n\n> \"We statically enforce structured logging, naming conventions for schemas and types,\n> file size limits, and platform-specific reliability requirements with custom lints.\n> Because the lints are custom, we write the error messages to inject remediation\n> instructions into agent context.\"\n\n## Triggers\n\n| Trigger Phrase | Operation |\n|----------------|-----------|\n| `run taste lints` | taste_lints.py on staged or specified files |\n| `check file size` | taste_lints.py with file-size rule only |\n| `check naming conventions` | taste_lints.py with naming rule only |\n| `lint taste invariants` | taste_lints.py full scan |\n| `taste lint report` | taste_lints.py with JSON output |\n\n## When to Use\n\nUse this skill when:\n\n- Writing or editing source files (catch taste violations early)\n- Preparing code for PR submission\n- Reviewing code for style and convention compliance\n- Adding new files to the project\n\n## Taste Invariants\n\n### 1. File Size Limits\n\nFiles exceeding line thresholds indicate poor cohesion.\n\n| Threshold | Lines | Severity |\n|-----------|-------|----------|\n| Warning | 301-500 | warning |\n| Error | 501+ | error |\n\n### 2. Naming Conventions\n\n| Pattern | Rule | Applies To |\n|---------|------|------------|\n| `snake_case` | Python files, functions, variables | `*.py` |\n| `kebab-case` | Skill directories, YAML files | `.claude\u002Fskills\u002F`, `*.yml` |\n| `PascalCase` | PowerShell functions, classes | `*.ps1`, `*.psm1` |\n| `UPPER_CASE` | Constants, environment variables | All languages |\n| `invoke_` prefix | Hook scripts | `.claude\u002Fhooks\u002F` |\n\n### 3. Function Complexity\n\nFunctions exceeding cyclomatic complexity 10 need decomposition.\n\n### 4. Skill Prompt Size\n\nSkills exceeding 500 lines need progressive disclosure refactoring.\n\n## Process\n\n1. Run `bun run .claude\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts` with target files\n2. Review AGENT_REMEDIATION blocks in output\n3. Apply suggested fixes\n4. Re-run to confirm compliance\n\n## Usage\n\n```bash\n# Scan staged files\nbun run .claude\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts --git-staged\n\n# Scan specific files\nbun run .claude\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts path\u002Fto\u002Ffile.py\n\n# Scan a directory\nbun run .claude\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts --directory src\u002F\n\n# JSON output\nbun run .claude\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts --format json --git-staged\n\n# Run specific rules only\nbun run .claude\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts --rules file-size,naming\n```\n\n## Exit Codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | No violations found |\n| 1 | Script error (bad arguments, file not found) |\n| 10 | Violations detected |\n\n## Suppression\n\nAdd a comment to suppress a specific rule on a file:\n\n```python\n# taste-lint: ignore file-size\n```\n\nValid rules: `file-size`, `naming`, `complexity`, `skill-size`\n",{"name":5,"model":41,"agents":42,"license":15,"metadata":44,"description":7},"claude-sonnet-4-5",[27,32,43],"analyst",{"version":45},"1.0.0","main","2bd10cb7ca989f88dbf338b57957763718eda59b","templates\u002Fskills\u002Ftaste-lints","https:\u002F\u002Fgithub.com\u002Floriensleafs\u002Fbrain","https:\u002F\u002Fgithub.com\u002Floriensleafs","2026-03-11 23:51:59",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add loriensleafs\u002Fbrain --skill taste-lints",{"tool":58,"command":59},"bunx","bunx skills add loriensleafs\u002Fbrain --skill taste-lints",{"tool":61,"command":62},"pnpm","pnpm dlx skills add loriensleafs\u002Fbrain --skill taste-lints","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Floriensleafs\u002Fbrain\u002Fblob\u002Fmain\u002Ftemplates\u002Fskills\u002Ftaste-lints\u002FSKILL.md",true,[66,72,76,80],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"examples\u002Fcrud-api.md","REFERENCE","参考文档",12373,"https:\u002F\u002Fgithub.com\u002Fwelflau\u002Fai-dev-system\u002Fblob\u002Fmain\u002Fbackend\u002Fskills\u002Fmarketplace\u002Fcodebuddy-plugins-official\u002Fexternal_plugins\u002Fnextjs-expert\u002Fskills\u002Froute-handlers\u002Fexamples\u002Fcrud-api.md",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fhttp-methods.md",8123,"https:\u002F\u002Fgithub.com\u002Fwelflau\u002Fai-dev-system\u002Fblob\u002Fmain\u002Fbackend\u002Fskills\u002Fmarketplace\u002Fcodebuddy-plugins-official\u002Fexternal_plugins\u002Fnextjs-expert\u002Fskills\u002Froute-handlers\u002Freferences\u002Fhttp-methods.md",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fstreaming-responses.md",10692,"https:\u002F\u002Fgithub.com\u002Fwelflau\u002Fai-dev-system\u002Fblob\u002Fmain\u002Fbackend\u002Fskills\u002Fmarketplace\u002Fcodebuddy-plugins-official\u002Fexternal_plugins\u002Fnextjs-expert\u002Fskills\u002Froute-handlers\u002Freferences\u002Fstreaming-responses.md",{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"scripts\u002Ftaste_lints.ts","SCRIPT","脚本",16164,"https:\u002F\u002Fgithub.com\u002Floriensleafs\u002Fbrain\u002Fblob\u002Fmain\u002Ftemplates\u002Fskills\u002Ftaste-lints\u002Fscripts\u002Ftaste_lints.ts",[87,101,118,141,165,176],{"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":36},"01M6CD3KHDHPR633RVP95G4XWN","validation-authority","Treat upstream validators as authoritative. Align local config to them. Use when validation fails unexpectedly, before modifying validator behavior, or when tempted to change upstream tool code.","https:\u002F\u002Fgithub.com\u002Floriensleafs\u002Fbrain\u002Fblob\u002Fmain\u002Ftemplates\u002Fskills\u002Fvalidation-authority\u002FSKILL.md",[],[94,95,32,33,96,97,98,99,100,26],"validation authority","validation","config","change","behavior","architect","tool",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":36},"01M6CD3H29Q8FWN9YETT8YVQTS","using-brain-memory","Guidance for using Brain semantic memory effectively. Applies Zettelkasten atomic note principles with observations and relations. Use when deciding whether to query or create notes, structuring note content, or understanding the semantic knowledge graph.","https:\u002F\u002Fgithub.com\u002Floriensleafs\u002Fbrain\u002Fblob\u002Fmain\u002Ftemplates\u002Fskills\u002Fusing-forgetful-memory\u002FSKILL.md",[],[108,109,110,111,33,112,113,114,115,116,117],"memory","using brain memory","content","guidance","context","knowledge","knowledge graph","graph","create","notes",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":36},"01M6CD3E2KTTMNSWXRJAAZA7D1","threat-modeling","Structured security analysis using OWASP Four-Question Framework and STRIDE methodology. Generates threat matrices with risk ratings, mitigations, and prioritization. Use for attack surface analysis, security architecture review, or when asking what can go wrong.","https:\u002F\u002Fgithub.com\u002Floriensleafs\u002Fbrain\u002Fblob\u002Fmain\u002Ftemplates\u002Fskills\u002Fthreat-modeling\u002FSKILL.md",[],[125,126,127,99,128,129,130,131,132,133,134,135,136,137,138,139,33,140],"threat modeling","threat","prioritization","stride","analysis","risk","owasp","methodology","framework","security analysis","architecture review","architecture","security","go","review","question",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":36},"01M6CD37Z7VD22BH42TG0GM66V","style-enforcement","Validate code against style rules from .editorconfig, StyleCop.json, and Directory.Build.props. Detects line ending violations, naming convention issues, indentation problems, and charset mismatches across C#, Python, TypeScript, and JavaScript. Produces JSON reports for pre-commit hooks and CI pipelines.","https:\u002F\u002Fgithub.com\u002Floriensleafs\u002Fbrain\u002Fblob\u002Fmain\u002Ftemplates\u002Fskills\u002Fstyle-enforcement\u002FSKILL.md",[],[148,149,150,151,152,32,153,154,155,156,157,27,158,26,159,160,161,162,163,164],"enforcement","style enforcement","reports","hooks","validate","Rules","json","pre-commit","editorconfig","ci","issues","pipelines","commit","javascript","python","typescript","directory",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":171,"publishedAt":36},"01M6CD35JW73TPMCZBF9DTDEE8","steering-matcher","Match file paths against steering file glob patterns to determine applicable steering guidance. Use when orchestrator needs to inject context-aware guidance based on files being modified.","https:\u002F\u002Fgithub.com\u002Floriensleafs\u002Fbrain\u002Fblob\u002Fmain\u002Ftemplates\u002Fskills\u002Fsteering-matcher\u002FSKILL.md",[],[172,173,29,112,111,174,33,175],"steering matcher","haiku","files","orchestrator",{"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":36},"01M6CD32KG07KWP69SY6F4471S","slashcommandcreator","Autonomous meta-skill for creating high-quality custom slash commands using 5-phase workflow with multi-agent validation and quality gates. Use when user requests new slash command, reusable prompt automation, or wants to convert repetitive workflows into documented commands.","https:\u002F\u002Fgithub.com\u002Floriensleafs\u002Fbrain\u002Fblob\u002Fmain\u002Ftemplates\u002Fskills\u002Fslashcommandcreator\u002FSKILL.md",[182],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[178,184,185,33,32,186,187,188,189,190,191,192,99,193,95,194,195,196,197,137],"multi-agent","reusable","autonomous","user","command","prompt","quality","convert","critic","Meta","quality gates","workflows","automation","workflow"]