[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CXZW1V13REB3P886DYPAS1":3,"skill-same:01M6CXZW1V13REB3P886DYPAS1":76},{"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":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M6CXZW1V13REB3P886DYPAS1","sniff",null,"Detect a project's CSS architecture, preprocessors, lint tooling, cascade layers, and custom-property adoption.","RebelliousSmile\u002Fmy-claude-marketplace","RebelliousSmile","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F40766799?v=4","01M6CXW595637KNM9Z3TYT9F7R","François-Xavier Guillois","01M6CXW5DBBQTQ9JM1BKH9VQGK",1,"MIT","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-css\u002Fskills\u002Fsniff\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33],"frontend","css","architecture","lint","audit","adoption","Bash","tooling","files","project","2026-11-10 10:12:30",false,"---\nname: sniff\ndescription: >-\n  Detect a project's CSS architecture, preprocessors, lint tooling, cascade layers, and custom-property adoption.\nauthor: François-Xavier Guillois\nversion: 0.5.0\nvibe_version: \">=1.0.0\"\npermissions:\n  - bash\n  - files\ntags:\n  - frontend\n  - audit\n  - css\n---\n\nRead [host portability](..\u002F..\u002Freferences\u002Fhost-portability.md) before resolving plugin files, invoking sibling skills, or persisting project guidance.\n\n# sc-css:sniff\n\nDétecteur d'architecture CSS et producteur de pivot manifeste.\n\n## Actions disponibles\n\n| # | Action | Rôle | Input |\n|---|--------|------|-------|\n| 01 | `scan` | Détecter architecture + stack, émettre pivot manifeste | chemins des fichiers CSS\u002FSCSS du projet |\n\n## Default flow\n\nAction unique : `scan`. Le skill **n'installe rien** — `sc-css` ne fournit aucun fichier de pivot\nsous `.claude\u002Frules\u002F07-quality\u002F`. Le manifeste décrit l'état détecté ; il ne déclenche pas d'écriture.\n\n## Modèle conceptuel\n\n- **Architecture** : le style d'organisation des règles (BEM, utility-first, SMACSS, ITCSS, ad-hoc).\n- **Stack** : outils en place (préprocesseur, linter, bundler CSS).\n- **Maturité** : degré d'adoption de custom properties et cascade layers — indicateurs d'une base modernisable.\n- **Pivot manifeste** : document JSON émis en fin de scan, consommé par audit et improve pour charger les patterns pertinents.\n\n## Indicateurs de détection\n\n| Signal | Détection |\n|--------|-----------|\n| `package.json` → `sass`, `postcss`, `less` | préprocesseur |\n| `.stylelintrc*`, `biome.json` | linter CSS |\n| Fichiers `*.module.css`, `*.module.scss` | CSS Modules |\n| Classes `tw-`, `text-`, `flex`, `grid` systématiques | Tailwind \u002F utility-first |\n| Classes `__`, `--` systématiques | BEM |\n| `@layer` dans les fichiers | cascade layers adoptés |\n| `--` custom properties omniprésentes | design tokens en custom props |\n| Aucune des structures ci-dessus | architecture ad-hoc |\n\n## Règles transversales\n\n- Si aucun fichier CSS\u002FSCSS\u002FLess n'est trouvé, arrêter avec un message explicite.\n- Le scan est **read-only** : il écrit le manifeste, rien d'autre. Ne jamais annoncer l'installation\n  d'un fichier de règle — le plugin n'en fournit aucun.\n- Signaler les gaps : pattern détecté dont le traitement relève d'un skill (`improve`, `legacy`) —\n  en nommant le skill, jamais un fichier à installer.\n- Rapport en plain-text avec `✅ \u002F ❌` par item — pas de tableaux Markdown.\n","Read [host portability](..\u002F..\u002Freferences\u002Fhost-portability.md) before resolving plugin files, invoking sibling skills, or persisting project guidance.\n\n# sc-css:sniff\n\nDétecteur d'architecture CSS et producteur de pivot manifeste.\n\n## Actions disponibles\n\n| # | Action | Rôle | Input |\n|---|--------|------|-------|\n| 01 | `scan` | Détecter architecture + stack, émettre pivot manifeste | chemins des fichiers CSS\u002FSCSS du projet |\n\n## Default flow\n\nAction unique : `scan`. Le skill **n'installe rien** — `sc-css` ne fournit aucun fichier de pivot\nsous `.claude\u002Frules\u002F07-quality\u002F`. Le manifeste décrit l'état détecté ; il ne déclenche pas d'écriture.\n\n## Modèle conceptuel\n\n- **Architecture** : le style d'organisation des règles (BEM, utility-first, SMACSS, ITCSS, ad-hoc).\n- **Stack** : outils en place (préprocesseur, linter, bundler CSS).\n- **Maturité** : degré d'adoption de custom properties et cascade layers — indicateurs d'une base modernisable.\n- **Pivot manifeste** : document JSON émis en fin de scan, consommé par audit et improve pour charger les patterns pertinents.\n\n## Indicateurs de détection\n\n| Signal | Détection |\n|--------|-----------|\n| `package.json` → `sass`, `postcss`, `less` | préprocesseur |\n| `.stylelintrc*`, `biome.json` | linter CSS |\n| Fichiers `*.module.css`, `*.module.scss` | CSS Modules |\n| Classes `tw-`, `text-`, `flex`, `grid` systématiques | Tailwind \u002F utility-first |\n| Classes `__`, `--` systématiques | BEM |\n| `@layer` dans les fichiers | cascade layers adoptés |\n| `--` custom properties omniprésentes | design tokens en custom props |\n| Aucune des structures ci-dessus | architecture ad-hoc |\n\n## Règles transversales\n\n- Si aucun fichier CSS\u002FSCSS\u002FLess n'est trouvé, arrêter avec un message explicite.\n- Le scan est **read-only** : il écrit le manifeste, rien d'autre. Ne jamais annoncer l'installation\n  d'un fichier de règle — le plugin n'en fournit aucun.\n- Signaler les gaps : pattern détecté dont le traitement relève d'un skill (`improve`, `legacy`) —\n  en nommant le skill, jamais un fichier à installer.\n- Rapport en plain-text avec `✅ \u002F ❌` par item — pas de tableaux Markdown.\n",{"name":5,"tags":39,"author":12,"version":40,"description":7,"permissions":41,"vibe_version":43},[24,28,25],"0.5.0",[42,32],"bash",">=1.0.0","main","a33208351920c3cd0562b6ccf0846a9abe46741c","plugins\u002Fsc-css\u002Fskills\u002Fsniff",0,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace","https:\u002F\u002Fgithub.com\u002FRebelliousSmile","https:\u002F\u002Fwww.scriptami.com\u002F","2026-11-11 04:40:59",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add RebelliousSmile\u002Fmy-claude-marketplace --skill sniff",{"tool":58,"command":59},"bunx","bunx skills add RebelliousSmile\u002Fmy-claude-marketplace --skill sniff",{"tool":61,"command":62},"pnpm","pnpm dlx skills add RebelliousSmile\u002Fmy-claude-marketplace --skill sniff","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-css\u002Fskills\u002Fsniff\u002FSKILL.md",true,[66,72],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"actions\u002F01-scan.md","REFERENCE","参考文档",2540,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-css\u002Fskills\u002Fsniff\u002Factions\u002F01-scan.md",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"evals\u002Fscenarios.json",331,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-css\u002Fskills\u002Fsniff\u002Fevals\u002Fscenarios.json",[77,86,99,106,111,117],{"skillNo":78,"name":79,"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":80,"categories":81,"keywords":82,"publishedAt":34},"01M6CY3N1KXYQQG47SD4966CMS","web-optimize","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Fvalid\u002Fplugins\u002Fovercode\u002Fskills\u002Fweb-optimize\u002FSKILL.md",[],[83,84,85],"web","optimize","web optimize",{"skillNo":87,"name":88,"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":89,"categories":90,"keywords":96,"publishedAt":34},"01M6CY3KR1H8WTNM1GV1SH6DY8","data-optimize","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Fvalid\u002Fplugins\u002Fovercode\u002Fskills\u002Fdata-optimize\u002FSKILL.md",[91],{"categoryNo":92,"categoryName":93,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[97,84,98],"data","data optimize",{"skillNo":100,"name":101,"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":102,"categories":103,"keywords":104,"publishedAt":34},"01M6CY3JJJGXQG2X5X5PVTTB2A","ap-optimize","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Fvalid\u002Fplugins\u002Fovercode\u002Fskills\u002Fap-optimize\u002FSKILL.md",[],[84,105],"ap optimize",{"skillNo":107,"name":79,"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":108,"categories":109,"keywords":110,"publishedAt":34},"01M6CY3HD94NANM2AE5JA7Z22D","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Forphan\u002Fplugins\u002Fovercode\u002Fskills\u002Fweb-optimize\u002FSKILL.md",[],[83,84,85],{"skillNo":112,"name":88,"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":113,"categories":114,"keywords":116,"publishedAt":34},"01M6CY3G6M0NC688HYCFD9TDV1","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Forphan\u002Fplugins\u002Fovercode\u002Fskills\u002Fdata-optimize\u002FSKILL.md",[115],{"categoryNo":92,"categoryName":93,"taxonomyType":94,"taxonomyTypeDesc":95},[97,84,98],{"skillNo":118,"name":101,"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":119,"categories":120,"keywords":121,"publishedAt":34},"01M6CY3ES1CAT89NKBXPBGEFZ9","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Forphan\u002Fplugins\u002Fovercode\u002Fskills\u002Fap-optimize\u002FSKILL.md",[],[84,105]]