[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-azure-sensei":3,"mdc--8nki3o-key":35,"related-org-azure-sensei":1500,"related-repo-azure-sensei":1667},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"sensei","improve skill frontmatter compliance","**WORKFLOW SKILL** — Iteratively improve skill frontmatter compliance using the Ralph loop pattern. WHEN: \"run sensei\", \"sensei help\", \"improve skill\", \"fix frontmatter\", \"skill compliance\", \"frontmatter audit\", \"score skill\", \"check skill tokens\". INVOKES: token counting tools, test runners, git commands. FOR SINGLE OPERATIONS: use token CLI directly for counts\u002Fchecks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"azure","Azure (Microsoft)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fazure.png","Azure",[13,15,18,21],{"name":11,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"Compliance","compliance",{"name":19,"slug":20,"type":14},"Process Optimization","process-optimization",{"name":22,"slug":23,"type":14},"Technical Writing","technical-writing",133,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools","2026-07-12T08:17:32.970921","MIT",248,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"Tools repository leveraged by the Azure SDK team.","https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools\u002Ftree\u002FHEAD\u002Fplugins\u002Fazure-sdk-tools\u002Fskills\u002Fsensei","---\nname: sensei\ndescription: \"**WORKFLOW SKILL** — Iteratively improve skill frontmatter compliance using the Ralph loop pattern. WHEN: \\\"run sensei\\\", \\\"sensei help\\\", \\\"improve skill\\\", \\\"fix frontmatter\\\", \\\"skill compliance\\\", \\\"frontmatter audit\\\", \\\"score skill\\\", \\\"check skill tokens\\\". INVOKES: token counting tools, test runners, git commands. FOR SINGLE OPERATIONS: use token CLI directly for counts\u002Fchecks.\"\nlicense: MIT\nmetadata:\n  author: Microsoft\n  version: \"1.0.5\"\n---\n\n# Sensei\n\n> \"A true master teaches not by telling, but by refining.\" - The Skill Sensei\n\nAutomates skill frontmatter improvement using the [Ralph loop pattern](https:\u002F\u002Fgithub.com\u002Fsoderlind\u002Fralph) - iteratively improving skills until they reach Medium-High compliance with passing tests, then checking token usage and prompting for action.\n\n## Help\n\nWhen user says \"sensei help\" or asks how to use sensei, show this:\n\n```\n╔══════════════════════════════════════════════════════════════════╗\n║  SENSEI - Skill Frontmatter Compliance Improver                  ║\n╠══════════════════════════════════════════════════════════════════╣\n║                                                                  ║\n║  USAGE:                                                          ║\n║    Run sensei on \u003Cskill-name>              # Single skill        ║\n║    Run sensei on \u003Cskill-name> --skip-integration  # Fast mode    ║\n║    Run sensei on \u003Cskill1>, \u003Cskill2>, ...   # Multiple skills     ║\n║    Run sensei on all Low-adherence skills  # Batch by score      ║\n║    Run sensei on all skills                # All skills       ║\n║                                                                  ║\n║  EXAMPLES:                                                       ║\n║    Run sensei on appinsights-instrumentation                     ║\n║    Run sensei on azure-security --skip-integration               ║\n║    Run sensei on azure-security, azure-observability             ║\n║    Run sensei on all Low-adherence skills                        ║\n║                                                                  ║\n║  WHAT IT DOES:                                                   ║\n║    1. READ      - Load skill's SKILL.md, tests, and token count  ║\n║    2. SCORE     - Check compliance (Low\u002FMedium\u002FMedium-High\u002FHigh) ║\n║    3. SCAFFOLD  - Create tests from template if missing          ║\n║    4. IMPROVE   - Add WHEN: triggers (cross-model optimized)     ║\n║    5. TEST      - Run tests, fix if needed                       ║\n║    6. REFERENCES- Validate markdown links                        ║\n║    7. TOKENS    - Check token budget, gather suggestions         ║\n║    8. SUMMARY   - Show before\u002Fafter with suggestions             ║\n║    9. PROMPT    - Ask: Commit, Create Issue, or Skip?            ║\n║   10. REPEAT    - Until Medium-High score + tests pass           ║\n║                                                                  ║\n║  TARGET SCORE: Medium-High                                       ║\n║    ✓ Description > 150 chars, ≤ 60 words                         ║\n║    ✓ Has \"WHEN:\" trigger phrases (preferred)                     ║\n║    ✓ No \"DO NOT USE FOR:\" (unless disambiguation-critical)         ║\n║    ✓ SKILL.md \u003C 500 tokens (soft limit)                          ║\n║                                                                  ║\n║  MORE INFO:                                                      ║\n║    See .github\u002Fskills\u002Fsensei\u002FREADME.md for full documentation    ║\n║                                                                  ║\n╚══════════════════════════════════════════════════════════════════╝\n```\n\n## When to Use\n\n- Improving a skill's frontmatter compliance score\n- Adding trigger phrases and anti-triggers to skill descriptions\n- Batch-improving multiple skills at once\n- Auditing and fixing Low-adherence skills\n\n## Invocation Modes\n\n### Single Skill\n```\nRun sensei on azure-deploy\n```\n\n### Multiple Skills\n```\nRun sensei on azure-security, azure-observability\n```\n\n### By Adherence Level\n```\nRun sensei on all Low-adherence skills\n```\n\n### All Skills\n```\nRun sensei on all skills\n```\n\n### GEPA Mode (Deep Optimization)\n```\nRun sensei on my-skill --gepa\nRun sensei on my-skill --gepa --skip-integration\nRun sensei on all skills --gepa\n```\n\nWhen `--gepa` is used, Step 5 (IMPROVE) is replaced with GEPA evolutionary optimization.\nInstead of template-based improvements, GEPA parses trigger prompt arrays from the existing\ntest harness and combines them with content quality heuristics to build a fitness function.\nAn LLM proposes and evaluates many candidate improvements automatically. Note: GEPA does not\nexecute Jest tests directly — it uses the test data (prompts) as evaluation inputs.\n\n**GEPA score-only mode** (no LLM calls, just evaluate current quality):\n```\nRun sensei score my-skill\nRun sensei score all skills\n```\n\n## The Ralph Loop\n\nFor each skill, execute this loop until score >= Medium-High AND tests pass:\n\n1. **READ** - Load `.github\u002Fskills\u002F{skill-name}\u002FSKILL.md`, tests, and token count\n2. **SCORE** - Run spec-based compliance check (see [SCORING.md](references\u002FSCORING.md)):\n   - Validate `name` per [agentskills.io spec](https:\u002F\u002Fagentskills.io\u002Fspecification) (no `--`, no start\u002Fend `-`, lowercase alphanumeric)\n   - Check description length and word count (≤60 words)\n   - Check triggers (WHEN: preferred, USE FOR: accepted)\n   - Warn on \"DO NOT USE FOR:\" (risky in multi-skill environments — **exception**: REQUIRED for skills that share trigger overlap with broader skills like `azure-prepare`)\n   - Preserve optional spec fields (`license`, `metadata`, `allowed-tools`) if present\n3. **CHECK** - If score >= Medium-High AND tests pass → go to TOKENS step\n4. **SCAFFOLD** - If `tests\u002F{skill-name}\u002F` doesn't exist, create from `tests\u002F_template\u002F`\n5. **IMPROVE FRONTMATTER** - Add WHEN: triggers (stay under 60 words and 1024 chars)\n5b. **IMPROVE WITH GEPA** (when `--gepa` flag is set) — Replaces step 5 (IMPROVE FRONTMATTER) with automated optimization; step 6 (IMPROVE TESTS) still runs normally:\n   - Auto-discovers `tests\u002F{skill-name}\u002Ftriggers.test.ts` and extracts prompt arrays\n   - Builds a GEPA evaluator scoring content quality + trigger accuracy based on those trigger prompt arrays (not Jest test pass\u002Ffail results)\n   - Runs `python .github\u002Fskills\u002Fsensei\u002Fscripts\u002Fgepa\u002Fauto_evaluator.py optimize --skill {skill-name} --skills-dir .github\u002Fskills --tests-dir tests`\n   - Shows diff of optimized SKILL.md for user approval\n   - GEPA uses existing test trigger definitions as configuration — it does not execute, replace, or modify Jest tests\n6. **IMPROVE TESTS** - Update `shouldTriggerPrompts` and `shouldNotTriggerPrompts` to match the finalized frontmatter (including any GEPA changes)\n7. **VERIFY** - Run `cd tests && npm test -- --testPathPatterns={skill-name}`\n8. **VALIDATE REFERENCES** - Run `cd scripts && npm run references {skill-name}` to check markdown links\n9. **TOKENS** - Check token budget and line count (\u003C 500 lines per spec), gather optimization suggestions\n10. **SUMMARY** - Display before\u002Fafter comparison with unimplemented suggestions\n11. **PROMPT** - Ask user: Commit, Create Issue, or Skip?\n12. **REPEAT** - Go to step 2 (max 5 iterations per skill)\n\n## Scoring Criteria (Quick Reference)\n\nSensei validates skills against the [agentskills.io specification](https:\u002F\u002Fagentskills.io\u002Fspecification). See [SCORING.md](references\u002FSCORING.md) for full details.\n\n| Score | Requirements |\n|-------|--------------|\n| **Invalid** | Name fails spec validation (consecutive hyphens, start\u002Fend hyphen, uppercase, etc.) |\n| **Low** | Basic description, no explicit triggers |\n| **Medium** | Has trigger keywords\u002Fphrases, description > 150 chars, >60 words |\n| **Medium-High** | Has \"WHEN:\" (preferred) or \"USE FOR:\" triggers, ≤60 words |\n| **High** | Medium-High + compatibility field |\n\n**Target: Medium-High** (distinctive triggers, concise description)\n\n> ⚠️ \"DO NOT USE FOR:\" is **risky in multi-skill environments** (15+ overlapping skills) — causes keyword contamination on fast-pattern-matching models. Safe for small, isolated skill sets. Use positive routing with `WHEN:` for cross-model safety.\n>\n> **Exception — disambiguation-critical skills:** When a skill's `USE FOR` triggers directly overlap with a broader skill (e.g., `azure-prepare` owns \"deploy to Azure\"), `DO NOT USE FOR:` is **REQUIRED** to prevent the broader skill from capturing prompts that belong to the specialized skill. Removing it causes routing regressions. Integration tests validate this routing -- run them before removing any `DO NOT USE FOR:` clause.\n\n**Strongly recommended** (reported as suggestions if missing):\n- `license` — identifies the license applied to the skill\n- `metadata.version` — tracks the skill version for consumers\n\n## Frontmatter Template\n\nPer the [agentskills.io spec](https:\u002F\u002Fagentskills.io\u002Fspecification), required and optional fields:\n\n```yaml\n---\nname: skill-name\ndescription: \"[ACTION VERB] [UNIQUE_DOMAIN]. [One clarifying sentence]. WHEN: \\\"trigger 1\\\", \\\"trigger 2\\\", \\\"trigger 3\\\".\"\nlicense: MIT\nmetadata:\n  version: \"1.0\"\n# Other optional spec fields — preserve if already present:\n# metadata.author: example-org\n# allowed-tools: Bash(git:*) Read\n---\n```\n\n> **IMPORTANT:** Use inline double-quoted strings for descriptions. Do NOT use `>-` folded scalars (incompatible with skills.sh). Do NOT use `|` literal blocks (preserves newlines). Keep total description under 1024 characters and ≤60 words.\n\n> ⚠️ **\"DO NOT USE FOR:\" carries context-dependent risk.** In multi-skill environments (10+ skills with overlapping domains), anti-trigger clauses introduce the very keywords that cause wrong-skill activation on Claude Sonnet and fast-pattern-matching models ([evidence](https:\u002F\u002Fgist.github.com\u002Fkvenkatrajan\u002F52e6e77f5560ca30640490b4cc65d109)). For small, isolated skill sets (1-5 skills), the risk is low. When in doubt, use positive routing with `WHEN:` and distinctive quoted phrases.\n>\n> **Exception:** `DO NOT USE FOR:` is **REQUIRED** when a specialized skill's triggers overlap with a broader skill (e.g., `azure-hosted-copilot-sdk` vs. `azure-prepare` on \"deploy to Azure\"). Without the negative discriminator, the broader skill captures prompts that should route to the specialized one. Always run integration tests before removing a `DO NOT USE FOR:` clause.\n\n## Test Scaffolding\n\nWhen tests don't exist, scaffold from `tests\u002F_template\u002F`:\n\n```bash\ncp -r tests\u002F_template tests\u002F{skill-name}\n```\n\nThen update:\n1. `SKILL_NAME` constant in all test files\n2. `shouldTriggerPrompts` - 5+ prompts matching new frontmatter triggers\n3. `shouldNotTriggerPrompts` - 5+ prompts matching anti-triggers\n\n**Commit Messages:**\n```\nsensei: improve {skill-name} frontmatter\n```\n\n## Constraints\n\n- Only modify `.github\u002Fskills\u002F` - these are the Azure skills used by Copilot\n- `.github\u002Fskills\u002F` contains meta-skills like sensei for developer tooling\n- Max 5 iterations per skill before moving on\n- Description must stay under 1024 characters\n- SKILL.md should stay under 500 tokens (soft limit)\n- Tests must pass before prompting for action\n- User chooses: Commit, Create Issue, or Skip after each skill\n\n## Flags\n\n| Flag | Description |\n|------|-------------|\n| `--skip-integration` | Skip integration tests for faster iteration. Only runs unit and trigger tests. |\n| `--gepa` | Use GEPA evolutionary optimization instead of template-based improvement. Auto-discovers tests and builds evaluator at runtime. |\n\n> ⚠️ Skipping integration tests speeds up the loop but may miss runtime issues. Consider running full tests before final commit.\n\n## Reference Documentation\n\n- [SCORING.md](references\u002FSCORING.md) - Detailed scoring criteria\n- [LOOP.md](references\u002FLOOP.md) - Ralph loop workflow details\n- [EXAMPLES.md](references\u002FEXAMPLES.md) - Before\u002Fafter examples\n- [TOKEN-INTEGRATION.md](references\u002FTOKEN-INTEGRATION.md) - Token budget integration\n\n## Related Skills\n\n- [markdown-token-optimizer](\u002F.github\u002Fskills\u002Fmarkdown-token-optimizer) - Token analysis and optimization\n- [skill-authoring](\u002F.github\u002Fskills\u002Fskill-authoring) - Skill writing guidelines\n",{"data":36,"body":40},{"name":4,"description":6,"license":27,"metadata":37},{"author":38,"version":39},"Microsoft","1.0.5",{"type":41,"children":42},"root",[43,51,61,77,84,89,102,108,133,139,146,155,161,170,176,185,191,200,206,215,228,239,248,254,259,597,603,622,730,740,810,820,844,850,862,1078,1107,1181,1187,1198,1230,1235,1269,1277,1286,1292,1343,1349,1404,1412,1418,1463,1469,1494],{"type":44,"tag":45,"props":46,"children":47},"element","h1",{"id":4},[48],{"type":49,"value":50},"text","Sensei",{"type":44,"tag":52,"props":53,"children":54},"blockquote",{},[55],{"type":44,"tag":56,"props":57,"children":58},"p",{},[59],{"type":49,"value":60},"\"A true master teaches not by telling, but by refining.\" - The Skill Sensei",{"type":44,"tag":56,"props":62,"children":63},{},[64,66,75],{"type":49,"value":65},"Automates skill frontmatter improvement using the ",{"type":44,"tag":67,"props":68,"children":72},"a",{"href":69,"rel":70},"https:\u002F\u002Fgithub.com\u002Fsoderlind\u002Fralph",[71],"nofollow",[73],{"type":49,"value":74},"Ralph loop pattern",{"type":49,"value":76}," - iteratively improving skills until they reach Medium-High compliance with passing tests, then checking token usage and prompting for action.",{"type":44,"tag":78,"props":79,"children":81},"h2",{"id":80},"help",[82],{"type":49,"value":83},"Help",{"type":44,"tag":56,"props":85,"children":86},{},[87],{"type":49,"value":88},"When user says \"sensei help\" or asks how to use sensei, show this:",{"type":44,"tag":90,"props":91,"children":95},"pre",{"className":92,"code":94,"language":49},[93],"language-text","╔══════════════════════════════════════════════════════════════════╗\n║  SENSEI - Skill Frontmatter Compliance Improver                  ║\n╠══════════════════════════════════════════════════════════════════╣\n║                                                                  ║\n║  USAGE:                                                          ║\n║    Run sensei on \u003Cskill-name>              # Single skill        ║\n║    Run sensei on \u003Cskill-name> --skip-integration  # Fast mode    ║\n║    Run sensei on \u003Cskill1>, \u003Cskill2>, ...   # Multiple skills     ║\n║    Run sensei on all Low-adherence skills  # Batch by score      ║\n║    Run sensei on all skills                # All skills       ║\n║                                                                  ║\n║  EXAMPLES:                                                       ║\n║    Run sensei on appinsights-instrumentation                     ║\n║    Run sensei on azure-security --skip-integration               ║\n║    Run sensei on azure-security, azure-observability             ║\n║    Run sensei on all Low-adherence skills                        ║\n║                                                                  ║\n║  WHAT IT DOES:                                                   ║\n║    1. READ      - Load skill's SKILL.md, tests, and token count  ║\n║    2. SCORE     - Check compliance (Low\u002FMedium\u002FMedium-High\u002FHigh) ║\n║    3. SCAFFOLD  - Create tests from template if missing          ║\n║    4. IMPROVE   - Add WHEN: triggers (cross-model optimized)     ║\n║    5. TEST      - Run tests, fix if needed                       ║\n║    6. REFERENCES- Validate markdown links                        ║\n║    7. TOKENS    - Check token budget, gather suggestions         ║\n║    8. SUMMARY   - Show before\u002Fafter with suggestions             ║\n║    9. PROMPT    - Ask: Commit, Create Issue, or Skip?            ║\n║   10. REPEAT    - Until Medium-High score + tests pass           ║\n║                                                                  ║\n║  TARGET SCORE: Medium-High                                       ║\n║    ✓ Description > 150 chars, ≤ 60 words                         ║\n║    ✓ Has \"WHEN:\" trigger phrases (preferred)                     ║\n║    ✓ No \"DO NOT USE FOR:\" (unless disambiguation-critical)         ║\n║    ✓ SKILL.md \u003C 500 tokens (soft limit)                          ║\n║                                                                  ║\n║  MORE INFO:                                                      ║\n║    See .github\u002Fskills\u002Fsensei\u002FREADME.md for full documentation    ║\n║                                                                  ║\n╚══════════════════════════════════════════════════════════════════╝\n",[96],{"type":44,"tag":97,"props":98,"children":100},"code",{"__ignoreMap":99},"",[101],{"type":49,"value":94},{"type":44,"tag":78,"props":103,"children":105},{"id":104},"when-to-use",[106],{"type":49,"value":107},"When to Use",{"type":44,"tag":109,"props":110,"children":111},"ul",{},[112,118,123,128],{"type":44,"tag":113,"props":114,"children":115},"li",{},[116],{"type":49,"value":117},"Improving a skill's frontmatter compliance score",{"type":44,"tag":113,"props":119,"children":120},{},[121],{"type":49,"value":122},"Adding trigger phrases and anti-triggers to skill descriptions",{"type":44,"tag":113,"props":124,"children":125},{},[126],{"type":49,"value":127},"Batch-improving multiple skills at once",{"type":44,"tag":113,"props":129,"children":130},{},[131],{"type":49,"value":132},"Auditing and fixing Low-adherence skills",{"type":44,"tag":78,"props":134,"children":136},{"id":135},"invocation-modes",[137],{"type":49,"value":138},"Invocation Modes",{"type":44,"tag":140,"props":141,"children":143},"h3",{"id":142},"single-skill",[144],{"type":49,"value":145},"Single Skill",{"type":44,"tag":90,"props":147,"children":150},{"className":148,"code":149,"language":49},[93],"Run sensei on azure-deploy\n",[151],{"type":44,"tag":97,"props":152,"children":153},{"__ignoreMap":99},[154],{"type":49,"value":149},{"type":44,"tag":140,"props":156,"children":158},{"id":157},"multiple-skills",[159],{"type":49,"value":160},"Multiple Skills",{"type":44,"tag":90,"props":162,"children":165},{"className":163,"code":164,"language":49},[93],"Run sensei on azure-security, azure-observability\n",[166],{"type":44,"tag":97,"props":167,"children":168},{"__ignoreMap":99},[169],{"type":49,"value":164},{"type":44,"tag":140,"props":171,"children":173},{"id":172},"by-adherence-level",[174],{"type":49,"value":175},"By Adherence Level",{"type":44,"tag":90,"props":177,"children":180},{"className":178,"code":179,"language":49},[93],"Run sensei on all Low-adherence skills\n",[181],{"type":44,"tag":97,"props":182,"children":183},{"__ignoreMap":99},[184],{"type":49,"value":179},{"type":44,"tag":140,"props":186,"children":188},{"id":187},"all-skills",[189],{"type":49,"value":190},"All Skills",{"type":44,"tag":90,"props":192,"children":195},{"className":193,"code":194,"language":49},[93],"Run sensei on all skills\n",[196],{"type":44,"tag":97,"props":197,"children":198},{"__ignoreMap":99},[199],{"type":49,"value":194},{"type":44,"tag":140,"props":201,"children":203},{"id":202},"gepa-mode-deep-optimization",[204],{"type":49,"value":205},"GEPA Mode (Deep Optimization)",{"type":44,"tag":90,"props":207,"children":210},{"className":208,"code":209,"language":49},[93],"Run sensei on my-skill --gepa\nRun sensei on my-skill --gepa --skip-integration\nRun sensei on all skills --gepa\n",[211],{"type":44,"tag":97,"props":212,"children":213},{"__ignoreMap":99},[214],{"type":49,"value":209},{"type":44,"tag":56,"props":216,"children":217},{},[218,220,226],{"type":49,"value":219},"When ",{"type":44,"tag":97,"props":221,"children":223},{"className":222},[],[224],{"type":49,"value":225},"--gepa",{"type":49,"value":227}," is used, Step 5 (IMPROVE) is replaced with GEPA evolutionary optimization.\nInstead of template-based improvements, GEPA parses trigger prompt arrays from the existing\ntest harness and combines them with content quality heuristics to build a fitness function.\nAn LLM proposes and evaluates many candidate improvements automatically. Note: GEPA does not\nexecute Jest tests directly — it uses the test data (prompts) as evaluation inputs.",{"type":44,"tag":56,"props":229,"children":230},{},[231,237],{"type":44,"tag":232,"props":233,"children":234},"strong",{},[235],{"type":49,"value":236},"GEPA score-only mode",{"type":49,"value":238}," (no LLM calls, just evaluate current quality):",{"type":44,"tag":90,"props":240,"children":243},{"className":241,"code":242,"language":49},[93],"Run sensei score my-skill\nRun sensei score all skills\n",[244],{"type":44,"tag":97,"props":245,"children":246},{"__ignoreMap":99},[247],{"type":49,"value":242},{"type":44,"tag":78,"props":249,"children":251},{"id":250},"the-ralph-loop",[252],{"type":49,"value":253},"The Ralph Loop",{"type":44,"tag":56,"props":255,"children":256},{},[257],{"type":49,"value":258},"For each skill, execute this loop until score >= Medium-High AND tests pass:",{"type":44,"tag":260,"props":261,"children":262},"ol",{},[263,281,398,408,432,498,524,540,557,567,577,587],{"type":44,"tag":113,"props":264,"children":265},{},[266,271,273,279],{"type":44,"tag":232,"props":267,"children":268},{},[269],{"type":49,"value":270},"READ",{"type":49,"value":272}," - Load ",{"type":44,"tag":97,"props":274,"children":276},{"className":275},[],[277],{"type":49,"value":278},".github\u002Fskills\u002F{skill-name}\u002FSKILL.md",{"type":49,"value":280},", tests, and token count",{"type":44,"tag":113,"props":282,"children":283},{},[284,289,291,297,299],{"type":44,"tag":232,"props":285,"children":286},{},[287],{"type":49,"value":288},"SCORE",{"type":49,"value":290}," - Run spec-based compliance check (see ",{"type":44,"tag":67,"props":292,"children":294},{"href":293},"references\u002FSCORING.md",[295],{"type":49,"value":296},"SCORING.md",{"type":49,"value":298},"):\n",{"type":44,"tag":109,"props":300,"children":301},{},[302,340,345,350,370],{"type":44,"tag":113,"props":303,"children":304},{},[305,307,313,315,322,324,330,332,338],{"type":49,"value":306},"Validate ",{"type":44,"tag":97,"props":308,"children":310},{"className":309},[],[311],{"type":49,"value":312},"name",{"type":49,"value":314}," per ",{"type":44,"tag":67,"props":316,"children":319},{"href":317,"rel":318},"https:\u002F\u002Fagentskills.io\u002Fspecification",[71],[320],{"type":49,"value":321},"agentskills.io spec",{"type":49,"value":323}," (no ",{"type":44,"tag":97,"props":325,"children":327},{"className":326},[],[328],{"type":49,"value":329},"--",{"type":49,"value":331},", no start\u002Fend ",{"type":44,"tag":97,"props":333,"children":335},{"className":334},[],[336],{"type":49,"value":337},"-",{"type":49,"value":339},", lowercase alphanumeric)",{"type":44,"tag":113,"props":341,"children":342},{},[343],{"type":49,"value":344},"Check description length and word count (≤60 words)",{"type":44,"tag":113,"props":346,"children":347},{},[348],{"type":49,"value":349},"Check triggers (WHEN: preferred, USE FOR: accepted)",{"type":44,"tag":113,"props":351,"children":352},{},[353,355,360,362,368],{"type":49,"value":354},"Warn on \"DO NOT USE FOR:\" (risky in multi-skill environments — ",{"type":44,"tag":232,"props":356,"children":357},{},[358],{"type":49,"value":359},"exception",{"type":49,"value":361},": REQUIRED for skills that share trigger overlap with broader skills like ",{"type":44,"tag":97,"props":363,"children":365},{"className":364},[],[366],{"type":49,"value":367},"azure-prepare",{"type":49,"value":369},")",{"type":44,"tag":113,"props":371,"children":372},{},[373,375,381,383,389,390,396],{"type":49,"value":374},"Preserve optional spec fields (",{"type":44,"tag":97,"props":376,"children":378},{"className":377},[],[379],{"type":49,"value":380},"license",{"type":49,"value":382},", ",{"type":44,"tag":97,"props":384,"children":386},{"className":385},[],[387],{"type":49,"value":388},"metadata",{"type":49,"value":382},{"type":44,"tag":97,"props":391,"children":393},{"className":392},[],[394],{"type":49,"value":395},"allowed-tools",{"type":49,"value":397},") if present",{"type":44,"tag":113,"props":399,"children":400},{},[401,406],{"type":44,"tag":232,"props":402,"children":403},{},[404],{"type":49,"value":405},"CHECK",{"type":49,"value":407}," - If score >= Medium-High AND tests pass → go to TOKENS step",{"type":44,"tag":113,"props":409,"children":410},{},[411,416,418,424,426],{"type":44,"tag":232,"props":412,"children":413},{},[414],{"type":49,"value":415},"SCAFFOLD",{"type":49,"value":417}," - If ",{"type":44,"tag":97,"props":419,"children":421},{"className":420},[],[422],{"type":49,"value":423},"tests\u002F{skill-name}\u002F",{"type":49,"value":425}," doesn't exist, create from ",{"type":44,"tag":97,"props":427,"children":429},{"className":428},[],[430],{"type":49,"value":431},"tests\u002F_template\u002F",{"type":44,"tag":113,"props":433,"children":434},{},[435,440,442,447,449,454,456],{"type":44,"tag":232,"props":436,"children":437},{},[438],{"type":49,"value":439},"IMPROVE FRONTMATTER",{"type":49,"value":441}," - Add WHEN: triggers (stay under 60 words and 1024 chars)\n5b. ",{"type":44,"tag":232,"props":443,"children":444},{},[445],{"type":49,"value":446},"IMPROVE WITH GEPA",{"type":49,"value":448}," (when ",{"type":44,"tag":97,"props":450,"children":452},{"className":451},[],[453],{"type":49,"value":225},{"type":49,"value":455}," flag is set) — Replaces step 5 (IMPROVE FRONTMATTER) with automated optimization; step 6 (IMPROVE TESTS) still runs normally:\n",{"type":44,"tag":109,"props":457,"children":458},{},[459,472,477,488,493],{"type":44,"tag":113,"props":460,"children":461},{},[462,464,470],{"type":49,"value":463},"Auto-discovers ",{"type":44,"tag":97,"props":465,"children":467},{"className":466},[],[468],{"type":49,"value":469},"tests\u002F{skill-name}\u002Ftriggers.test.ts",{"type":49,"value":471}," and extracts prompt arrays",{"type":44,"tag":113,"props":473,"children":474},{},[475],{"type":49,"value":476},"Builds a GEPA evaluator scoring content quality + trigger accuracy based on those trigger prompt arrays (not Jest test pass\u002Ffail results)",{"type":44,"tag":113,"props":478,"children":479},{},[480,482],{"type":49,"value":481},"Runs ",{"type":44,"tag":97,"props":483,"children":485},{"className":484},[],[486],{"type":49,"value":487},"python .github\u002Fskills\u002Fsensei\u002Fscripts\u002Fgepa\u002Fauto_evaluator.py optimize --skill {skill-name} --skills-dir .github\u002Fskills --tests-dir tests",{"type":44,"tag":113,"props":489,"children":490},{},[491],{"type":49,"value":492},"Shows diff of optimized SKILL.md for user approval",{"type":44,"tag":113,"props":494,"children":495},{},[496],{"type":49,"value":497},"GEPA uses existing test trigger definitions as configuration — it does not execute, replace, or modify Jest tests",{"type":44,"tag":113,"props":499,"children":500},{},[501,506,508,514,516,522],{"type":44,"tag":232,"props":502,"children":503},{},[504],{"type":49,"value":505},"IMPROVE TESTS",{"type":49,"value":507}," - Update ",{"type":44,"tag":97,"props":509,"children":511},{"className":510},[],[512],{"type":49,"value":513},"shouldTriggerPrompts",{"type":49,"value":515}," and ",{"type":44,"tag":97,"props":517,"children":519},{"className":518},[],[520],{"type":49,"value":521},"shouldNotTriggerPrompts",{"type":49,"value":523}," to match the finalized frontmatter (including any GEPA changes)",{"type":44,"tag":113,"props":525,"children":526},{},[527,532,534],{"type":44,"tag":232,"props":528,"children":529},{},[530],{"type":49,"value":531},"VERIFY",{"type":49,"value":533}," - Run ",{"type":44,"tag":97,"props":535,"children":537},{"className":536},[],[538],{"type":49,"value":539},"cd tests && npm test -- --testPathPatterns={skill-name}",{"type":44,"tag":113,"props":541,"children":542},{},[543,548,549,555],{"type":44,"tag":232,"props":544,"children":545},{},[546],{"type":49,"value":547},"VALIDATE REFERENCES",{"type":49,"value":533},{"type":44,"tag":97,"props":550,"children":552},{"className":551},[],[553],{"type":49,"value":554},"cd scripts && npm run references {skill-name}",{"type":49,"value":556}," to check markdown links",{"type":44,"tag":113,"props":558,"children":559},{},[560,565],{"type":44,"tag":232,"props":561,"children":562},{},[563],{"type":49,"value":564},"TOKENS",{"type":49,"value":566}," - Check token budget and line count (\u003C 500 lines per spec), gather optimization suggestions",{"type":44,"tag":113,"props":568,"children":569},{},[570,575],{"type":44,"tag":232,"props":571,"children":572},{},[573],{"type":49,"value":574},"SUMMARY",{"type":49,"value":576}," - Display before\u002Fafter comparison with unimplemented suggestions",{"type":44,"tag":113,"props":578,"children":579},{},[580,585],{"type":44,"tag":232,"props":581,"children":582},{},[583],{"type":49,"value":584},"PROMPT",{"type":49,"value":586}," - Ask user: Commit, Create Issue, or Skip?",{"type":44,"tag":113,"props":588,"children":589},{},[590,595],{"type":44,"tag":232,"props":591,"children":592},{},[593],{"type":49,"value":594},"REPEAT",{"type":49,"value":596}," - Go to step 2 (max 5 iterations per skill)",{"type":44,"tag":78,"props":598,"children":600},{"id":599},"scoring-criteria-quick-reference",[601],{"type":49,"value":602},"Scoring Criteria (Quick Reference)",{"type":44,"tag":56,"props":604,"children":605},{},[606,608,614,616,620],{"type":49,"value":607},"Sensei validates skills against the ",{"type":44,"tag":67,"props":609,"children":611},{"href":317,"rel":610},[71],[612],{"type":49,"value":613},"agentskills.io specification",{"type":49,"value":615},". See ",{"type":44,"tag":67,"props":617,"children":618},{"href":293},[619],{"type":49,"value":296},{"type":49,"value":621}," for full details.",{"type":44,"tag":623,"props":624,"children":625},"table",{},[626,645],{"type":44,"tag":627,"props":628,"children":629},"thead",{},[630],{"type":44,"tag":631,"props":632,"children":633},"tr",{},[634,640],{"type":44,"tag":635,"props":636,"children":637},"th",{},[638],{"type":49,"value":639},"Score",{"type":44,"tag":635,"props":641,"children":642},{},[643],{"type":49,"value":644},"Requirements",{"type":44,"tag":646,"props":647,"children":648},"tbody",{},[649,666,682,698,714],{"type":44,"tag":631,"props":650,"children":651},{},[652,661],{"type":44,"tag":653,"props":654,"children":655},"td",{},[656],{"type":44,"tag":232,"props":657,"children":658},{},[659],{"type":49,"value":660},"Invalid",{"type":44,"tag":653,"props":662,"children":663},{},[664],{"type":49,"value":665},"Name fails spec validation (consecutive hyphens, start\u002Fend hyphen, uppercase, etc.)",{"type":44,"tag":631,"props":667,"children":668},{},[669,677],{"type":44,"tag":653,"props":670,"children":671},{},[672],{"type":44,"tag":232,"props":673,"children":674},{},[675],{"type":49,"value":676},"Low",{"type":44,"tag":653,"props":678,"children":679},{},[680],{"type":49,"value":681},"Basic description, no explicit triggers",{"type":44,"tag":631,"props":683,"children":684},{},[685,693],{"type":44,"tag":653,"props":686,"children":687},{},[688],{"type":44,"tag":232,"props":689,"children":690},{},[691],{"type":49,"value":692},"Medium",{"type":44,"tag":653,"props":694,"children":695},{},[696],{"type":49,"value":697},"Has trigger keywords\u002Fphrases, description > 150 chars, >60 words",{"type":44,"tag":631,"props":699,"children":700},{},[701,709],{"type":44,"tag":653,"props":702,"children":703},{},[704],{"type":44,"tag":232,"props":705,"children":706},{},[707],{"type":49,"value":708},"Medium-High",{"type":44,"tag":653,"props":710,"children":711},{},[712],{"type":49,"value":713},"Has \"WHEN:\" (preferred) or \"USE FOR:\" triggers, ≤60 words",{"type":44,"tag":631,"props":715,"children":716},{},[717,725],{"type":44,"tag":653,"props":718,"children":719},{},[720],{"type":44,"tag":232,"props":721,"children":722},{},[723],{"type":49,"value":724},"High",{"type":44,"tag":653,"props":726,"children":727},{},[728],{"type":49,"value":729},"Medium-High + compatibility field",{"type":44,"tag":56,"props":731,"children":732},{},[733,738],{"type":44,"tag":232,"props":734,"children":735},{},[736],{"type":49,"value":737},"Target: Medium-High",{"type":49,"value":739}," (distinctive triggers, concise description)",{"type":44,"tag":52,"props":741,"children":742},{},[743,763],{"type":44,"tag":56,"props":744,"children":745},{},[746,748,753,755,761],{"type":49,"value":747},"⚠️ \"DO NOT USE FOR:\" is ",{"type":44,"tag":232,"props":749,"children":750},{},[751],{"type":49,"value":752},"risky in multi-skill environments",{"type":49,"value":754}," (15+ overlapping skills) — causes keyword contamination on fast-pattern-matching models. Safe for small, isolated skill sets. Use positive routing with ",{"type":44,"tag":97,"props":756,"children":758},{"className":757},[],[759],{"type":49,"value":760},"WHEN:",{"type":49,"value":762}," for cross-model safety.",{"type":44,"tag":56,"props":764,"children":765},{},[766,771,773,779,781,786,788,794,796,801,803,808],{"type":44,"tag":232,"props":767,"children":768},{},[769],{"type":49,"value":770},"Exception — disambiguation-critical skills:",{"type":49,"value":772}," When a skill's ",{"type":44,"tag":97,"props":774,"children":776},{"className":775},[],[777],{"type":49,"value":778},"USE FOR",{"type":49,"value":780}," triggers directly overlap with a broader skill (e.g., ",{"type":44,"tag":97,"props":782,"children":784},{"className":783},[],[785],{"type":49,"value":367},{"type":49,"value":787}," owns \"deploy to Azure\"), ",{"type":44,"tag":97,"props":789,"children":791},{"className":790},[],[792],{"type":49,"value":793},"DO NOT USE FOR:",{"type":49,"value":795}," is ",{"type":44,"tag":232,"props":797,"children":798},{},[799],{"type":49,"value":800},"REQUIRED",{"type":49,"value":802}," to prevent the broader skill from capturing prompts that belong to the specialized skill. Removing it causes routing regressions. Integration tests validate this routing -- run them before removing any ",{"type":44,"tag":97,"props":804,"children":806},{"className":805},[],[807],{"type":49,"value":793},{"type":49,"value":809}," clause.",{"type":44,"tag":56,"props":811,"children":812},{},[813,818],{"type":44,"tag":232,"props":814,"children":815},{},[816],{"type":49,"value":817},"Strongly recommended",{"type":49,"value":819}," (reported as suggestions if missing):",{"type":44,"tag":109,"props":821,"children":822},{},[823,833],{"type":44,"tag":113,"props":824,"children":825},{},[826,831],{"type":44,"tag":97,"props":827,"children":829},{"className":828},[],[830],{"type":49,"value":380},{"type":49,"value":832}," — identifies the license applied to the skill",{"type":44,"tag":113,"props":834,"children":835},{},[836,842],{"type":44,"tag":97,"props":837,"children":839},{"className":838},[],[840],{"type":49,"value":841},"metadata.version",{"type":49,"value":843}," — tracks the skill version for consumers",{"type":44,"tag":78,"props":845,"children":847},{"id":846},"frontmatter-template",[848],{"type":49,"value":849},"Frontmatter Template",{"type":44,"tag":56,"props":851,"children":852},{},[853,855,860],{"type":49,"value":854},"Per the ",{"type":44,"tag":67,"props":856,"children":858},{"href":317,"rel":857},[71],[859],{"type":49,"value":321},{"type":49,"value":861},", required and optional fields:",{"type":44,"tag":90,"props":863,"children":867},{"className":864,"code":865,"language":866,"meta":99,"style":99},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\nname: skill-name\ndescription: \"[ACTION VERB] [UNIQUE_DOMAIN]. [One clarifying sentence]. WHEN: \\\"trigger 1\\\", \\\"trigger 2\\\", \\\"trigger 3\\\".\"\nlicense: MIT\nmetadata:\n  version: \"1.0\"\n# Other optional spec fields — preserve if already present:\n# metadata.author: example-org\n# allowed-tools: Bash(git:*) Read\n---\n","yaml",[868],{"type":44,"tag":97,"props":869,"children":870},{"__ignoreMap":99},[871,883,904,986,1003,1016,1042,1052,1061,1070],{"type":44,"tag":872,"props":873,"children":876},"span",{"class":874,"line":875},"line",1,[877],{"type":44,"tag":872,"props":878,"children":880},{"style":879},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[881],{"type":49,"value":882},"---\n",{"type":44,"tag":872,"props":884,"children":886},{"class":874,"line":885},2,[887,892,898],{"type":44,"tag":872,"props":888,"children":890},{"style":889},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[891],{"type":49,"value":312},{"type":44,"tag":872,"props":893,"children":895},{"style":894},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[896],{"type":49,"value":897},":",{"type":44,"tag":872,"props":899,"children":901},{"style":900},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[902],{"type":49,"value":903}," skill-name\n",{"type":44,"tag":872,"props":905,"children":907},{"class":874,"line":906},3,[908,913,917,922,927,933,938,942,946,950,955,959,963,967,972,976,981],{"type":44,"tag":872,"props":909,"children":910},{"style":889},[911],{"type":49,"value":912},"description",{"type":44,"tag":872,"props":914,"children":915},{"style":894},[916],{"type":49,"value":897},{"type":44,"tag":872,"props":918,"children":919},{"style":894},[920],{"type":49,"value":921}," \"",{"type":44,"tag":872,"props":923,"children":924},{"style":900},[925],{"type":49,"value":926},"[ACTION VERB] [UNIQUE_DOMAIN]. [One clarifying sentence]. WHEN: ",{"type":44,"tag":872,"props":928,"children":930},{"style":929},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[931],{"type":49,"value":932},"\\\"",{"type":44,"tag":872,"props":934,"children":935},{"style":900},[936],{"type":49,"value":937},"trigger 1",{"type":44,"tag":872,"props":939,"children":940},{"style":929},[941],{"type":49,"value":932},{"type":44,"tag":872,"props":943,"children":944},{"style":900},[945],{"type":49,"value":382},{"type":44,"tag":872,"props":947,"children":948},{"style":929},[949],{"type":49,"value":932},{"type":44,"tag":872,"props":951,"children":952},{"style":900},[953],{"type":49,"value":954},"trigger 2",{"type":44,"tag":872,"props":956,"children":957},{"style":929},[958],{"type":49,"value":932},{"type":44,"tag":872,"props":960,"children":961},{"style":900},[962],{"type":49,"value":382},{"type":44,"tag":872,"props":964,"children":965},{"style":929},[966],{"type":49,"value":932},{"type":44,"tag":872,"props":968,"children":969},{"style":900},[970],{"type":49,"value":971},"trigger 3",{"type":44,"tag":872,"props":973,"children":974},{"style":929},[975],{"type":49,"value":932},{"type":44,"tag":872,"props":977,"children":978},{"style":900},[979],{"type":49,"value":980},".",{"type":44,"tag":872,"props":982,"children":983},{"style":894},[984],{"type":49,"value":985},"\"\n",{"type":44,"tag":872,"props":987,"children":989},{"class":874,"line":988},4,[990,994,998],{"type":44,"tag":872,"props":991,"children":992},{"style":889},[993],{"type":49,"value":380},{"type":44,"tag":872,"props":995,"children":996},{"style":894},[997],{"type":49,"value":897},{"type":44,"tag":872,"props":999,"children":1000},{"style":900},[1001],{"type":49,"value":1002}," MIT\n",{"type":44,"tag":872,"props":1004,"children":1006},{"class":874,"line":1005},5,[1007,1011],{"type":44,"tag":872,"props":1008,"children":1009},{"style":889},[1010],{"type":49,"value":388},{"type":44,"tag":872,"props":1012,"children":1013},{"style":894},[1014],{"type":49,"value":1015},":\n",{"type":44,"tag":872,"props":1017,"children":1019},{"class":874,"line":1018},6,[1020,1025,1029,1033,1038],{"type":44,"tag":872,"props":1021,"children":1022},{"style":889},[1023],{"type":49,"value":1024},"  version",{"type":44,"tag":872,"props":1026,"children":1027},{"style":894},[1028],{"type":49,"value":897},{"type":44,"tag":872,"props":1030,"children":1031},{"style":894},[1032],{"type":49,"value":921},{"type":44,"tag":872,"props":1034,"children":1035},{"style":900},[1036],{"type":49,"value":1037},"1.0",{"type":44,"tag":872,"props":1039,"children":1040},{"style":894},[1041],{"type":49,"value":985},{"type":44,"tag":872,"props":1043,"children":1045},{"class":874,"line":1044},7,[1046],{"type":44,"tag":872,"props":1047,"children":1049},{"style":1048},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1050],{"type":49,"value":1051},"# Other optional spec fields — preserve if already present:\n",{"type":44,"tag":872,"props":1053,"children":1055},{"class":874,"line":1054},8,[1056],{"type":44,"tag":872,"props":1057,"children":1058},{"style":1048},[1059],{"type":49,"value":1060},"# metadata.author: example-org\n",{"type":44,"tag":872,"props":1062,"children":1064},{"class":874,"line":1063},9,[1065],{"type":44,"tag":872,"props":1066,"children":1067},{"style":1048},[1068],{"type":49,"value":1069},"# allowed-tools: Bash(git:*) Read\n",{"type":44,"tag":872,"props":1071,"children":1073},{"class":874,"line":1072},10,[1074],{"type":44,"tag":872,"props":1075,"children":1076},{"style":879},[1077],{"type":49,"value":882},{"type":44,"tag":52,"props":1079,"children":1080},{},[1081],{"type":44,"tag":56,"props":1082,"children":1083},{},[1084,1089,1091,1097,1099,1105],{"type":44,"tag":232,"props":1085,"children":1086},{},[1087],{"type":49,"value":1088},"IMPORTANT:",{"type":49,"value":1090}," Use inline double-quoted strings for descriptions. Do NOT use ",{"type":44,"tag":97,"props":1092,"children":1094},{"className":1093},[],[1095],{"type":49,"value":1096},">-",{"type":49,"value":1098}," folded scalars (incompatible with skills.sh). Do NOT use ",{"type":44,"tag":97,"props":1100,"children":1102},{"className":1101},[],[1103],{"type":49,"value":1104},"|",{"type":49,"value":1106}," literal blocks (preserves newlines). Keep total description under 1024 characters and ≤60 words.",{"type":44,"tag":52,"props":1108,"children":1109},{},[1110,1138],{"type":44,"tag":56,"props":1111,"children":1112},{},[1113,1115,1120,1122,1129,1131,1136],{"type":49,"value":1114},"⚠️ ",{"type":44,"tag":232,"props":1116,"children":1117},{},[1118],{"type":49,"value":1119},"\"DO NOT USE FOR:\" carries context-dependent risk.",{"type":49,"value":1121}," In multi-skill environments (10+ skills with overlapping domains), anti-trigger clauses introduce the very keywords that cause wrong-skill activation on Claude Sonnet and fast-pattern-matching models (",{"type":44,"tag":67,"props":1123,"children":1126},{"href":1124,"rel":1125},"https:\u002F\u002Fgist.github.com\u002Fkvenkatrajan\u002F52e6e77f5560ca30640490b4cc65d109",[71],[1127],{"type":49,"value":1128},"evidence",{"type":49,"value":1130},"). For small, isolated skill sets (1-5 skills), the risk is low. When in doubt, use positive routing with ",{"type":44,"tag":97,"props":1132,"children":1134},{"className":1133},[],[1135],{"type":49,"value":760},{"type":49,"value":1137}," and distinctive quoted phrases.",{"type":44,"tag":56,"props":1139,"children":1140},{},[1141,1146,1148,1153,1154,1158,1160,1166,1168,1173,1175,1180],{"type":44,"tag":232,"props":1142,"children":1143},{},[1144],{"type":49,"value":1145},"Exception:",{"type":49,"value":1147}," ",{"type":44,"tag":97,"props":1149,"children":1151},{"className":1150},[],[1152],{"type":49,"value":793},{"type":49,"value":795},{"type":44,"tag":232,"props":1155,"children":1156},{},[1157],{"type":49,"value":800},{"type":49,"value":1159}," when a specialized skill's triggers overlap with a broader skill (e.g., ",{"type":44,"tag":97,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":49,"value":1165},"azure-hosted-copilot-sdk",{"type":49,"value":1167}," vs. ",{"type":44,"tag":97,"props":1169,"children":1171},{"className":1170},[],[1172],{"type":49,"value":367},{"type":49,"value":1174}," on \"deploy to Azure\"). Without the negative discriminator, the broader skill captures prompts that should route to the specialized one. Always run integration tests before removing a ",{"type":44,"tag":97,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":49,"value":793},{"type":49,"value":809},{"type":44,"tag":78,"props":1182,"children":1184},{"id":1183},"test-scaffolding",[1185],{"type":49,"value":1186},"Test Scaffolding",{"type":44,"tag":56,"props":1188,"children":1189},{},[1190,1192,1197],{"type":49,"value":1191},"When tests don't exist, scaffold from ",{"type":44,"tag":97,"props":1193,"children":1195},{"className":1194},[],[1196],{"type":49,"value":431},{"type":49,"value":897},{"type":44,"tag":90,"props":1199,"children":1203},{"className":1200,"code":1201,"language":1202,"meta":99,"style":99},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cp -r tests\u002F_template tests\u002F{skill-name}\n","bash",[1204],{"type":44,"tag":97,"props":1205,"children":1206},{"__ignoreMap":99},[1207],{"type":44,"tag":872,"props":1208,"children":1209},{"class":874,"line":875},[1210,1215,1220,1225],{"type":44,"tag":872,"props":1211,"children":1212},{"style":879},[1213],{"type":49,"value":1214},"cp",{"type":44,"tag":872,"props":1216,"children":1217},{"style":900},[1218],{"type":49,"value":1219}," -r",{"type":44,"tag":872,"props":1221,"children":1222},{"style":900},[1223],{"type":49,"value":1224}," tests\u002F_template",{"type":44,"tag":872,"props":1226,"children":1227},{"style":900},[1228],{"type":49,"value":1229}," tests\u002F{skill-name}\n",{"type":44,"tag":56,"props":1231,"children":1232},{},[1233],{"type":49,"value":1234},"Then update:",{"type":44,"tag":260,"props":1236,"children":1237},{},[1238,1249,1259],{"type":44,"tag":113,"props":1239,"children":1240},{},[1241,1247],{"type":44,"tag":97,"props":1242,"children":1244},{"className":1243},[],[1245],{"type":49,"value":1246},"SKILL_NAME",{"type":49,"value":1248}," constant in all test files",{"type":44,"tag":113,"props":1250,"children":1251},{},[1252,1257],{"type":44,"tag":97,"props":1253,"children":1255},{"className":1254},[],[1256],{"type":49,"value":513},{"type":49,"value":1258}," - 5+ prompts matching new frontmatter triggers",{"type":44,"tag":113,"props":1260,"children":1261},{},[1262,1267],{"type":44,"tag":97,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":49,"value":521},{"type":49,"value":1268}," - 5+ prompts matching anti-triggers",{"type":44,"tag":56,"props":1270,"children":1271},{},[1272],{"type":44,"tag":232,"props":1273,"children":1274},{},[1275],{"type":49,"value":1276},"Commit Messages:",{"type":44,"tag":90,"props":1278,"children":1281},{"className":1279,"code":1280,"language":49},[93],"sensei: improve {skill-name} frontmatter\n",[1282],{"type":44,"tag":97,"props":1283,"children":1284},{"__ignoreMap":99},[1285],{"type":49,"value":1280},{"type":44,"tag":78,"props":1287,"children":1289},{"id":1288},"constraints",[1290],{"type":49,"value":1291},"Constraints",{"type":44,"tag":109,"props":1293,"children":1294},{},[1295,1308,1318,1323,1328,1333,1338],{"type":44,"tag":113,"props":1296,"children":1297},{},[1298,1300,1306],{"type":49,"value":1299},"Only modify ",{"type":44,"tag":97,"props":1301,"children":1303},{"className":1302},[],[1304],{"type":49,"value":1305},".github\u002Fskills\u002F",{"type":49,"value":1307}," - these are the Azure skills used by Copilot",{"type":44,"tag":113,"props":1309,"children":1310},{},[1311,1316],{"type":44,"tag":97,"props":1312,"children":1314},{"className":1313},[],[1315],{"type":49,"value":1305},{"type":49,"value":1317}," contains meta-skills like sensei for developer tooling",{"type":44,"tag":113,"props":1319,"children":1320},{},[1321],{"type":49,"value":1322},"Max 5 iterations per skill before moving on",{"type":44,"tag":113,"props":1324,"children":1325},{},[1326],{"type":49,"value":1327},"Description must stay under 1024 characters",{"type":44,"tag":113,"props":1329,"children":1330},{},[1331],{"type":49,"value":1332},"SKILL.md should stay under 500 tokens (soft limit)",{"type":44,"tag":113,"props":1334,"children":1335},{},[1336],{"type":49,"value":1337},"Tests must pass before prompting for action",{"type":44,"tag":113,"props":1339,"children":1340},{},[1341],{"type":49,"value":1342},"User chooses: Commit, Create Issue, or Skip after each skill",{"type":44,"tag":78,"props":1344,"children":1346},{"id":1345},"flags",[1347],{"type":49,"value":1348},"Flags",{"type":44,"tag":623,"props":1350,"children":1351},{},[1352,1368],{"type":44,"tag":627,"props":1353,"children":1354},{},[1355],{"type":44,"tag":631,"props":1356,"children":1357},{},[1358,1363],{"type":44,"tag":635,"props":1359,"children":1360},{},[1361],{"type":49,"value":1362},"Flag",{"type":44,"tag":635,"props":1364,"children":1365},{},[1366],{"type":49,"value":1367},"Description",{"type":44,"tag":646,"props":1369,"children":1370},{},[1371,1388],{"type":44,"tag":631,"props":1372,"children":1373},{},[1374,1383],{"type":44,"tag":653,"props":1375,"children":1376},{},[1377],{"type":44,"tag":97,"props":1378,"children":1380},{"className":1379},[],[1381],{"type":49,"value":1382},"--skip-integration",{"type":44,"tag":653,"props":1384,"children":1385},{},[1386],{"type":49,"value":1387},"Skip integration tests for faster iteration. Only runs unit and trigger tests.",{"type":44,"tag":631,"props":1389,"children":1390},{},[1391,1399],{"type":44,"tag":653,"props":1392,"children":1393},{},[1394],{"type":44,"tag":97,"props":1395,"children":1397},{"className":1396},[],[1398],{"type":49,"value":225},{"type":44,"tag":653,"props":1400,"children":1401},{},[1402],{"type":49,"value":1403},"Use GEPA evolutionary optimization instead of template-based improvement. Auto-discovers tests and builds evaluator at runtime.",{"type":44,"tag":52,"props":1405,"children":1406},{},[1407],{"type":44,"tag":56,"props":1408,"children":1409},{},[1410],{"type":49,"value":1411},"⚠️ Skipping integration tests speeds up the loop but may miss runtime issues. Consider running full tests before final commit.",{"type":44,"tag":78,"props":1413,"children":1415},{"id":1414},"reference-documentation",[1416],{"type":49,"value":1417},"Reference Documentation",{"type":44,"tag":109,"props":1419,"children":1420},{},[1421,1430,1441,1452],{"type":44,"tag":113,"props":1422,"children":1423},{},[1424,1428],{"type":44,"tag":67,"props":1425,"children":1426},{"href":293},[1427],{"type":49,"value":296},{"type":49,"value":1429}," - Detailed scoring criteria",{"type":44,"tag":113,"props":1431,"children":1432},{},[1433,1439],{"type":44,"tag":67,"props":1434,"children":1436},{"href":1435},"references\u002FLOOP.md",[1437],{"type":49,"value":1438},"LOOP.md",{"type":49,"value":1440}," - Ralph loop workflow details",{"type":44,"tag":113,"props":1442,"children":1443},{},[1444,1450],{"type":44,"tag":67,"props":1445,"children":1447},{"href":1446},"references\u002FEXAMPLES.md",[1448],{"type":49,"value":1449},"EXAMPLES.md",{"type":49,"value":1451}," - Before\u002Fafter examples",{"type":44,"tag":113,"props":1453,"children":1454},{},[1455,1461],{"type":44,"tag":67,"props":1456,"children":1458},{"href":1457},"references\u002FTOKEN-INTEGRATION.md",[1459],{"type":49,"value":1460},"TOKEN-INTEGRATION.md",{"type":49,"value":1462}," - Token budget integration",{"type":44,"tag":78,"props":1464,"children":1466},{"id":1465},"related-skills",[1467],{"type":49,"value":1468},"Related Skills",{"type":44,"tag":109,"props":1470,"children":1471},{},[1472,1483],{"type":44,"tag":113,"props":1473,"children":1474},{},[1475,1481],{"type":44,"tag":67,"props":1476,"children":1478},{"href":1477},"\u002F.github\u002Fskills\u002Fmarkdown-token-optimizer",[1479],{"type":49,"value":1480},"markdown-token-optimizer",{"type":49,"value":1482}," - Token analysis and optimization",{"type":44,"tag":113,"props":1484,"children":1485},{},[1486,1492],{"type":44,"tag":67,"props":1487,"children":1489},{"href":1488},"\u002F.github\u002Fskills\u002Fskill-authoring",[1490],{"type":49,"value":1491},"skill-authoring",{"type":49,"value":1493}," - Skill writing guidelines",{"type":44,"tag":1495,"props":1496,"children":1497},"style",{},[1498],{"type":49,"value":1499},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1501,"total":1666},[1502,1519,1538,1555,1570,1585,1598,1611,1622,1635,1648,1655],{"slug":1503,"name":1503,"fn":1504,"description":1505,"org":1506,"tags":1507,"stars":1516,"repoUrl":1517,"updatedAt":1518},"azure-arg-external-evaluation-policy-author","author and test Azure Resource Graph policies","Use when the user wants to author, design, or test an Azure Policy that queries Azure Resource Graph (ARG) at request-time — i.e. a policy whose deny\u002Faudit decision depends on data from elsewhere in the subscription (sibling\u002Fparent resource state, RG-wide invariants, multi-hop relationships, etc.). Formally called Azure Policy External Evaluation; sometimes referred to colloquially as \"Invoke\". Drives an iterative KQL co-design loop against the user's real subscription via `az graph query`, then emits a policy definition, assignment, `.http` test flow, and an `EXPLANATION.md` companion. Read-only; never provisions anything.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1508,1509,1510,1513],{"name":11,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":1511,"slug":1512,"type":14},"Governance","governance",{"name":1514,"slug":1515,"type":14},"Policy","policy",1686,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-policy","2026-07-12T08:17:48.378432",{"slug":1520,"name":1520,"fn":1521,"description":1522,"org":1523,"tags":1524,"stars":1535,"repoUrl":1536,"updatedAt":1537},"azure-blueprints-migration","migrate Azure Blueprints to Template Specs","Use when a user needs to migrate off Azure Blueprints (definitions and\u002For assignments) to Template Specs and Deployment Stacks before the January 31, 2027 retirement. Covers inventory, export, conversion to Bicep, policy decoupling, Template Spec publishing, Deployment Stack deployment with deny-settings, validation, and cutover.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1525,1526,1529,1532],{"name":11,"slug":8,"type":14},{"name":1527,"slug":1528,"type":14},"Deployment","deployment",{"name":1530,"slug":1531,"type":14},"Infrastructure as Code","infrastructure-as-code",{"name":1533,"slug":1534,"type":14},"Migration","migration",260,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-blueprints","2026-07-12T08:17:49.646405",{"slug":1539,"name":1539,"fn":1540,"description":1541,"org":1542,"tags":1543,"stars":24,"repoUrl":25,"updatedAt":1554},"apiview-feedback-resolution","resolve APIView feedback on Azure SDKs","Analyze and resolve APIView review feedback on Azure SDK PRs. **UTILITY SKILL**. USE FOR: APIView comments, API review feedback, SDK API surface changes. DO NOT USE FOR: general code review, non-APIView feedback. INVOKES: azure-sdk-mcp:azsdk_apiview_get_comments, azure-sdk-mcp:azsdk_typespec_customized_code_update.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1544,1547,1548,1551],{"name":1545,"slug":1546,"type":14},"API Development","api-development",{"name":11,"slug":8,"type":14},{"name":1549,"slug":1550,"type":14},"Code Review","code-review",{"name":1552,"slug":1553,"type":14},"Documentation","documentation","2026-07-12T08:17:43.350876",{"slug":1556,"name":1556,"fn":1557,"description":1558,"org":1559,"tags":1560,"stars":24,"repoUrl":25,"updatedAt":1569},"azsdk-common-live-and-recorded-tests","deploy resources and run Azure SDK tests","Deploy test resources and run Azure SDK tests in live, record, or playback mode. WHEN: \"run live tests\", \"run recorded tests\", \"deploy test resources\", \"record tests\", \"run tests in record mode\", \"clean up test resources\", \"run tests against live resources\". DO NOT USE FOR: writing new tests, authoring Bicep templates, playback-only test runs without resource deployment. INVOKES: azure-sdk-mcp:azsdk_package_run_tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1561,1562,1563,1566],{"name":11,"slug":8,"type":14},{"name":1527,"slug":1528,"type":14},{"name":1564,"slug":1565,"type":14},"SDK","sdk",{"name":1567,"slug":1568,"type":14},"Testing","testing","2026-07-12T08:17:44.718943",{"slug":1571,"name":1571,"fn":1572,"description":1573,"org":1574,"tags":1575,"stars":24,"repoUrl":25,"updatedAt":1584},"azsdk-common-prepare-release-plan","manage Azure SDK release plan work items","Create, get, update, abandon, and link SDK PRs to release plan work items for Azure SDK releases. **UTILITY SKILL**. USE FOR: \"create release plan\", \"get release plan\", \"update release plan\", \"update API spec in release plan\", \"update SDK details in release plan\", \"abandon release plan\", \"link SDK PR to plan\", \"namespace approval\", \"check release plan status\". DO NOT USE FOR: SDK code generation, pipeline troubleshooting, API review feedback. INVOKES: azure-sdk-mcp:azsdk_create_release_plan, azure-sdk-mcp:azsdk_get_release_plan, azure-sdk-mcp:azsdk_get_release_plan_for_spec_pr, azure-sdk-mcp:azsdk_update_release_plan, azure-sdk-mcp:azsdk_update_api_spec_pull_request_in_release_plan, azure-sdk-mcp:azsdk_update_sdk_details_in_release_plan, azure-sdk-mcp:azsdk_abandon_release_plan, azure-sdk-mcp:azsdk_link_sdk_pull_request_to_release_plan, azure-sdk-mcp:azsdk_link_namespace_approval_issue.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1576,1577,1580,1583],{"name":11,"slug":8,"type":14},{"name":1578,"slug":1579,"type":14},"GitHub","github",{"name":1581,"slug":1582,"type":14},"Project Management","project-management",{"name":1564,"slug":1565,"type":14},"2026-07-12T08:17:38.345387",{"slug":1586,"name":1586,"fn":1587,"description":1588,"org":1589,"tags":1590,"stars":24,"repoUrl":25,"updatedAt":1597},"azsdk-common-sdk-release","release Azure SDK packages","Check release readiness and trigger the release pipeline for Azure SDK packages. **UTILITY SKILL**. USE FOR: \"release SDK\", \"trigger release\", \"check release readiness\", \"release pipeline\", \"publish package\", \"ship SDK\". DO NOT USE FOR: SDK development, code generation, pipeline debugging, release plan creation. INVOKES: azure-sdk-mcp:azsdk_release_sdk.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1591,1592,1595,1596],{"name":11,"slug":8,"type":14},{"name":1593,"slug":1594,"type":14},"CI\u002FCD","ci-cd",{"name":1527,"slug":1528,"type":14},{"name":1564,"slug":1565,"type":14},"2026-07-12T08:17:34.27607",{"slug":1599,"name":1599,"fn":1600,"description":1601,"org":1602,"tags":1603,"stars":24,"repoUrl":25,"updatedAt":1610},"azure-typespec-author","author and modify Azure TypeSpec API specifications","Authors and modifies Azure TypeSpec (.tsp) API specifications. USE FOR: any TypeSpec\u002Ftsp change — api versions (add, bump, preview, stable, promote), resources, operations, models, properties, decorators, visibility, constraints, breaking changes, LRO, suppressions, operationId, spread model. Covers ARM resource-manager and data-plane services. DO NOT USE FOR: SDK generation, releasing SDK packages, or single MCP tool calls. INVOKES: azure-sdk-mcp:azsdk_typespec_generate_authoring_plan, azure-sdk-mcp:azsdk_run_typespec_validation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1604,1605,1606,1609],{"name":1545,"slug":1546,"type":14},{"name":11,"slug":8,"type":14},{"name":1607,"slug":1608,"type":14},"OpenAPI","openapi",{"name":22,"slug":23,"type":14},"2026-07-12T08:17:39.603232",{"slug":1612,"name":1612,"fn":1613,"description":1614,"org":1615,"tags":1616,"stars":24,"repoUrl":25,"updatedAt":1621},"generate-sdk-locally","generate and test Azure SDKs locally","Generate, build, and test Azure SDKs locally from TypeSpec with automatic customization. WHEN: \"generate SDK locally\", \"build SDK\", \"run SDK tests\", \"run CI checks\", \"validate package\", \"run checks\", \"update changelog\", \"fix SDK build errors\", \"fix breaking changes\", \"resolve SDK generation errors\", \"customize TypeSpec\", \"rename SDK client\", \"rename SDK model\", \"hide operation from SDK\", \"fix analyzer errors\", \"resolve customization drift\", \"create subclient\", \"update metadata\", \"update version\". DO NOT USE FOR: publishing to package registries, CI pipeline configuration, API design review. INVOKES: azsdk_verify_setup, azsdk_package_generate_code, azsdk_package_build_code, azsdk_package_run_check, azsdk_package_run_tests, azsdk_customized_code_update, azsdk_package_update_changelog_content, azsdk_package_update_metadata, azsdk_package_update_version.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1617,1618,1619,1620],{"name":11,"slug":8,"type":14},{"name":1593,"slug":1594,"type":14},{"name":1564,"slug":1565,"type":14},{"name":1567,"slug":1568,"type":14},"2026-07-12T08:17:37.08523",{"slug":1480,"name":1480,"fn":1623,"description":1624,"org":1625,"tags":1626,"stars":24,"repoUrl":25,"updatedAt":1634},"optimize markdown files for token efficiency","Analyze markdown files for token efficiency and reduce context-window bloat. **UTILITY SKILL**. DO NOT USE FOR: code optimization, general file editing, non-markdown files. TRIGGERS: optimize markdown, reduce tokens, token count, token bloat, too many tokens, make concise, shrink file, file too large, optimize for AI, token efficiency, verbose markdown, reduce file size. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1627,1630,1633],{"name":1628,"slug":1629,"type":14},"LLM","llm",{"name":1631,"slug":1632,"type":14},"Performance","performance",{"name":22,"slug":23,"type":14},"2026-07-12T08:17:42.080413",{"slug":1636,"name":1636,"fn":1637,"description":1638,"org":1639,"tags":1640,"stars":24,"repoUrl":25,"updatedAt":1647},"pipeline-troubleshooting","troubleshoot Azure SDK CI pipelines","Diagnose and resolve failures in Azure SDK CI and generation pipelines. **UTILITY SKILL**. USE FOR: \"pipeline failed\", \"build failure\", \"CI check failing\", \"SDK generation error\", \"reproduce pipeline locally\", \"debug SDK pipeline\". DO NOT USE FOR: local build issues without pipeline context, API design review, SDK publishing. INVOKES: azure-sdk-mcp:azsdk_analyze_pipeline, azure-sdk-mcp:azsdk_package_build_code, azure-sdk-mcp:azsdk_package_run_check.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1641,1642,1643,1646],{"name":11,"slug":8,"type":14},{"name":1593,"slug":1594,"type":14},{"name":1644,"slug":1645,"type":14},"Debugging","debugging",{"name":1564,"slug":1565,"type":14},"2026-07-12T08:17:40.821512",{"slug":4,"name":4,"fn":5,"description":6,"org":1649,"tags":1650,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1651,1652,1653,1654],{"name":11,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":19,"slug":20,"type":14},{"name":22,"slug":23,"type":14},{"slug":1491,"name":1491,"fn":1656,"description":1657,"org":1658,"tags":1659,"stars":24,"repoUrl":25,"updatedAt":1665},"author agent skills for agentskills.io","Write Agent Skills that comply with the agentskills.io specification. WHEN: \"create a skill\", \"new skill\", \"write a skill\", \"skill template\", \"skill structure\", \"review skill\", \"skill PR\", \"skill compliance\", \"SKILL.md format\", \"skill frontmatter\", \"skill best practices\". DO NOT USE FOR: improving existing skills (use sensei), general documentation. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1660,1661,1664],{"name":1552,"slug":1553,"type":14},{"name":1662,"slug":1663,"type":14},"Plugin Development","plugin-development",{"name":22,"slug":23,"type":14},"2026-07-12T08:17:35.873862",109,{"items":1668,"total":1072},[1669,1676,1683,1690,1697,1704,1711],{"slug":1539,"name":1539,"fn":1540,"description":1541,"org":1670,"tags":1671,"stars":24,"repoUrl":25,"updatedAt":1554},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1672,1673,1674,1675],{"name":1545,"slug":1546,"type":14},{"name":11,"slug":8,"type":14},{"name":1549,"slug":1550,"type":14},{"name":1552,"slug":1553,"type":14},{"slug":1556,"name":1556,"fn":1557,"description":1558,"org":1677,"tags":1678,"stars":24,"repoUrl":25,"updatedAt":1569},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1679,1680,1681,1682],{"name":11,"slug":8,"type":14},{"name":1527,"slug":1528,"type":14},{"name":1564,"slug":1565,"type":14},{"name":1567,"slug":1568,"type":14},{"slug":1571,"name":1571,"fn":1572,"description":1573,"org":1684,"tags":1685,"stars":24,"repoUrl":25,"updatedAt":1584},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1686,1687,1688,1689],{"name":11,"slug":8,"type":14},{"name":1578,"slug":1579,"type":14},{"name":1581,"slug":1582,"type":14},{"name":1564,"slug":1565,"type":14},{"slug":1586,"name":1586,"fn":1587,"description":1588,"org":1691,"tags":1692,"stars":24,"repoUrl":25,"updatedAt":1597},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1693,1694,1695,1696],{"name":11,"slug":8,"type":14},{"name":1593,"slug":1594,"type":14},{"name":1527,"slug":1528,"type":14},{"name":1564,"slug":1565,"type":14},{"slug":1599,"name":1599,"fn":1600,"description":1601,"org":1698,"tags":1699,"stars":24,"repoUrl":25,"updatedAt":1610},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1700,1701,1702,1703],{"name":1545,"slug":1546,"type":14},{"name":11,"slug":8,"type":14},{"name":1607,"slug":1608,"type":14},{"name":22,"slug":23,"type":14},{"slug":1612,"name":1612,"fn":1613,"description":1614,"org":1705,"tags":1706,"stars":24,"repoUrl":25,"updatedAt":1621},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1707,1708,1709,1710],{"name":11,"slug":8,"type":14},{"name":1593,"slug":1594,"type":14},{"name":1564,"slug":1565,"type":14},{"name":1567,"slug":1568,"type":14},{"slug":1480,"name":1480,"fn":1623,"description":1624,"org":1712,"tags":1713,"stars":24,"repoUrl":25,"updatedAt":1634},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1714,1715,1716],{"name":1628,"slug":1629,"type":14},{"name":1631,"slug":1632,"type":14},{"name":22,"slug":23,"type":14}]