{"id":"baca4949-c2d9-4367-ac3b-af12bf750121","shortId":"wwHsrG","kind":"skill","title":"feature-radar-validate","tagline":"Validate SKILL.md frontmatter and .feature-radar/ files against format rules. Runs\nvalidate.sh, reports errors/warnings, and auto-fixes issues. MUST use this skill after\nediting any SKILL.md or .feature-radar/ file — catches format bugs like the 1024-char\ndescription limit before","description":"# Validate Feature Radar\n\nRun `skills/feature-radar-validate/scripts/validate.sh` from the project root to check SKILL.md frontmatter and `.feature-radar/` SPEC compliance, then fix any issues found.\n\n## Why This Matters\n\nThe `description` field in SKILL.md has a hard 1024-character limit enforced by the skill registry. Exceeding it silently breaks skill registration. Similarly, `.feature-radar/` files must follow SPEC.md naming and metadata conventions or downstream tools can't parse them. This skill catches these issues before they cause problems.\n\n## Workflow\n\n### Step 1: Run Validation\n\n```bash\nbash skills/feature-radar-validate/scripts/validate.sh\n```\n\nRead the full output. Note the exit code:\n- **Exit 0**: all checks passed (may still have warnings)\n- **Exit 1**: errors found — must be fixed\n\n### Step 2: Report Results\n\nPresent the results clearly:\n\n```\n── Feature Radar: Validate ──\n\nErrors:   {n}\nWarnings: {n}\n\n{List each error/warning with file path and issue}\n```\n\nIf everything passes, say so and stop. No further action needed.\n\n### Step 3: Auto-Fix (if errors or warnings found)\n\nFor each issue, apply the appropriate fix:\n\n| Issue | Fix Strategy |\n|-------|-------------|\n| `description` > 1024 chars | Trim to fit — cut the least essential trigger phrases or examples first, keep the core \"what it does\" and \"Use when\" intact. Show before/after char count. |\n| `description` missing \"Use when\" | Add a \"Use when:\" section based on the skill's purpose |\n| `name` not kebab-case | Rename to kebab-case |\n| `name` missing | Derive from directory name |\n| Body > 500 lines | Flag for user — this requires judgment about what to extract into reference files |\n| Filename not `{nn}-{slug}.md` | Rename file to correct format |\n| Missing `**Status**:` / `**Impact**:` / `**Effort**:` | Add field with a placeholder value, ask user to confirm |\n| `base.md` count mismatch | Update the Tracking Summary table counts |\n\nAfter fixing, re-run `bash skills/feature-radar-validate/scripts/validate.sh` to confirm all errors are resolved.\n\n### Step 4: Completion Summary\n\n```\n── Feature Radar: Validate Complete ──\n\nFiles fixed:   ~ {path} ({what changed})\nErrors fixed:  {n}\nWarnings fixed: {n}\nRemaining:     {n} (need user input)\n```\n\n## Proactive Triggering\n\nWhen you notice yourself editing `skills/*/SKILL.md` or `.feature-radar/**/*.md`, run validation afterward without being asked. A quick `bash skills/feature-radar-validate/scripts/validate.sh` check takes seconds and prevents silent breakage.","tags":["feature","radar","validate","runkids","agent-skill-repository","agent-skills","agentic-skills","ai-skills","claude-code-skills","coding-agents","feature-tracking","product-management"],"capabilities":["skill","source-runkids","skill-feature-radar-validate","topic-agent-skill-repository","topic-agent-skills","topic-agentic-skills","topic-ai-skills","topic-claude-code-skills","topic-coding-agents","topic-feature-tracking","topic-product-management","topic-product-management-tools","topic-skills","topic-skillshare"],"categories":["feature-radar"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/runkids/feature-radar/feature-radar-validate","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add runkids/feature-radar","source_repo":"https://github.com/runkids/feature-radar","install_from":"skills.sh"}},"qualityScore":"0.456","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 12 github stars · SKILL.md body (2,518 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-19T00:41:36.737Z","embedding":null,"createdAt":"2026-04-19T00:41:36.737Z","updatedAt":"2026-04-19T00:41:36.737Z","lastSeenAt":"2026-04-19T00:41:36.737Z","tsv":"'/skill.md':365 '0':142 '1':127,151 '1024':43,83,212 '2':158 '3':192 '4':334 '500':272 'action':189 'add':244,301 'afterward':373 'appli':204 'appropri':206 'ask':307,376 'auto':22,194 'auto-fix':21,193 'base':249 'base.md':311 'bash':130,131,325,379 'before/after':237 'bodi':271 'break':94 'breakag':387 'bug':40 'case':259,264 'catch':38,118 'caus':123 'chang':345 'char':44,213,238 'charact':84 'check':58,144,381 'clear':164 'code':140 'complet':335,340 'complianc':66 'confirm':310,328 'convent':108 'core':228 'correct':295 'count':239,312,319 'cut':217 'deriv':267 'descript':45,76,211,240 'directori':269 'downstream':110 'edit':30,363 'effort':300 'enforc':86 'error':152,168,197,330,346 'error/warning':174 'errors/warnings':19 'essenti':220 'everyth':181 'exampl':224 'exceed':91 'exit':139,141,150 'extract':283 'featur':2,10,35,49,63,99,165,337,368 'feature-radar':9,34,62,98,367 'feature-radar-valid':1 'field':77,302 'file':12,37,101,176,286,293,341 'filenam':287 'first':225 'fit':216 'fix':23,68,156,195,207,209,321,342,347,350 'flag':274 'follow':103 'format':14,39,296 'found':71,153,200 'frontmatt':7,60 'full':135 'hard':82 'impact':299 'input':356 'intact':235 'issu':24,70,120,179,203,208 'judgment':279 'kebab':258,263 'kebab-cas':257,262 'keep':226 'least':219 'like':41 'limit':46,85 'line':273 'list':172 'matter':74 'may':146 'md':291,370 'metadata':107 'mismatch':313 'miss':241,266,297 'must':25,102,154 'n':169,171,348,351,353 'name':105,255,265,270 'need':190,354 'nn':289 'note':137 'notic':361 'output':136 'pars':114 'pass':145,182 'path':177,343 'phrase':222 'placehold':305 'present':161 'prevent':385 'proactiv':357 'problem':124 'project':55 'purpos':254 'quick':378 'radar':3,11,36,50,64,100,166,338,369 're':323 're-run':322 'read':133 'refer':285 'registr':96 'registri':90 'remain':352 'renam':260,292 'report':18,159 'requir':278 'resolv':332 'result':160,163 'root':56 'rule':15 'run':16,51,128,324,371 'say':183 'second':383 'section':248 'show':236 'silent':93,386 'similar':97 'skill':28,89,95,117,252,364 'skill-feature-radar-validate' 'skill.md':6,32,59,79 'skills/feature-radar-validate/scripts/validate.sh':52,132,326,380 'slug':290 'source-runkids' 'spec':65 'spec.md':104 'status':298 'step':126,157,191,333 'still':147 'stop':186 'strategi':210 'summari':317,336 'tabl':318 'take':382 'tool':111 'topic-agent-skill-repository' 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-skills' 'topic-claude-code-skills' 'topic-coding-agents' 'topic-feature-tracking' 'topic-product-management' 'topic-product-management-tools' 'topic-skills' 'topic-skillshare' 'track':316 'trigger':221,358 'trim':214 'updat':314 'use':26,233,242,246 'user':276,308,355 'valid':4,5,48,129,167,339,372 'validate.sh':17 'valu':306 'warn':149,170,199,349 'without':374 'workflow':125","prices":[{"id":"2d16fe07-7c2d-44bb-af7e-640abfd83452","listingId":"baca4949-c2d9-4367-ac3b-af12bf750121","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"runkids","category":"feature-radar","install_from":"skills.sh"},"createdAt":"2026-04-19T00:41:36.737Z"}],"sources":[{"listingId":"baca4949-c2d9-4367-ac3b-af12bf750121","source":"github","sourceId":"runkids/feature-radar/feature-radar-validate","sourceUrl":"https://github.com/runkids/feature-radar/tree/main/skills/feature-radar-validate","isPrimary":false,"firstSeenAt":"2026-04-19T00:41:36.737Z","lastSeenAt":"2026-04-19T00:41:36.737Z"}],"details":{"listingId":"baca4949-c2d9-4367-ac3b-af12bf750121","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"runkids","slug":"feature-radar-validate","github":{"repo":"runkids/feature-radar","stars":12,"topics":["agent-skill-repository","agent-skills","agentic-skills","ai","ai-skills","claude-code-skills","coding-agents","competitive-analysis-tools","feature-tracking","product-management","product-management-tools","skills","skillshare"],"license":"mit","html_url":"https://github.com/runkids/feature-radar","pushed_at":"2026-03-08T15:30:41Z","description":"📡 AI skill that helps your coding agent discover, track, and prioritize what to build next.","skill_md_sha":"46735678000a7a31a2a072ec6737271b7c53a880","skill_md_path":"skills/feature-radar-validate/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/runkids/feature-radar/tree/main/skills/feature-radar-validate"},"layout":"multi","source":"github","category":"feature-radar","frontmatter":{"name":"feature-radar-validate","description":"Validate SKILL.md frontmatter and .feature-radar/ files against format rules. Runs\nvalidate.sh, reports errors/warnings, and auto-fixes issues. MUST use this skill after\nediting any SKILL.md or .feature-radar/ file — catches format bugs like the 1024-char\ndescription limit before they break skill registration.\nUse when:\n- User says \"validate\", \"check format\", \"lint skills\", \"run validation\"\n- You just edited a SKILL.md (description, name, or body) — run proactively\n- You created or modified files in .feature-radar/ — run proactively\n- Before committing changes that touch skills/ or .feature-radar/\n- User asks \"are my skills valid?\", \"verify skills\", \"check skill format\"\nIMPORTANT: Use this proactively after ANY edit to skills/ or .feature-radar/ files,\neven if the user doesn't ask for it. Format validation prevents silent breakage."},"skills_sh_url":"https://skills.sh/runkids/feature-radar/feature-radar-validate"},"updatedAt":"2026-04-19T00:41:36.737Z"}}