{"id":"b08fd012-bd0a-4070-bd6f-0202da3f260b","shortId":"Vu4DTs","kind":"skill","title":"project-root-scoped-local-skill-loading","tagline":"Resolve a stable project root first, then load local skills relative to that scope before combining them with other sources.","description":"# SKILL: Project-Root Scoped Local Skill Loading\n**Domain:** skill-loading\n**Trigger:** Apply when local commands or skills must be discovered from the current workspace and later merged with other registries such as MCP or bundled sources.\n**Source Pattern:** Distilled from reviewed command-surface, skill-discovery, and CLI capability implementations.\n\n## Core Method\nResolve the canonical project scope before loading any local command or skill surface. Feed that stable root into the local loader so discovery is anchored to the workspace boundary rather than to whatever transient working directory or caller context happened to invoke the pipeline. Once the local set is loaded from that scoped root, it can be safely merged with remote or external sources without mixing project-relative lookup with cross-source combination logic.\n\n## Key Rules\n- Determine a stable project root first and pass that explicit scope into the local skill loader.\n- Keep local loading separate from later merge logic so source-specific discovery remains easy to reason about.\n- Treat the project root as the authoritative boundary for local skills, not the caller's incidental cwd.\n- Load the local project surface before combining it with external registries so downstream dedupe and formatting see one correctly scoped local set.\n\n## Example Application\nIf a coding agent builds a skill listing from both the current repository and connected MCP servers, resolve the repository root first, load local skills relative to that root, then merge the resulting local commands with the MCP skills. This prevents a subdirectory invocation from silently narrowing the local skill surface.\n\n## Anti-Patterns (What NOT to do)\n- Do not call the local loader against an arbitrary runtime cwd when the real scope should be the project root.\n- Do not intertwine project-root resolution with multi-source merging; local scoping should be correct before any external source is introduced.","tags":["project","root","scoped","local","skill","loading","cskill","agents","ychampion","agent-skills","ai-agents","cli"],"capabilities":["skill","source-ychampion","skill-project-root-scoped-local-skill-loading","topic-agent-skills","topic-ai-agents","topic-cli","topic-coding-agents","topic-context-engineering","topic-developer-tools","topic-mcp","topic-multi-agent","topic-terminal-ui"],"categories":["cskill-agents"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/ychampion/cskill-agents/project-root-scoped-local-skill-loading","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add ychampion/cskill-agents","source_repo":"https://github.com/ychampion/cskill-agents","install_from":"skills.sh"}},"qualityScore":"0.467","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 34 github stars · SKILL.md body (1,962 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-22T00:56:54.795Z","embedding":null,"createdAt":"2026-04-18T22:21:04.061Z","updatedAt":"2026-04-22T00:56:54.795Z","lastSeenAt":"2026-04-22T00:56:54.795Z","tsv":"'agent':239 'anchor':107 'anti':288 'anti-pattern':287 'appli':41 'applic':235 'arbitrari':302 'authorit':201 'boundari':111,202 'build':240 'bundl':64 'call':296 'caller':120,208 'canon':85 'capabl':79 'cli':78 'code':238 'combin':23,157,218 'command':44,72,92,270 'command-surfac':71 'connect':250 'context':121 'core':81 'correct':230,330 'cross':155 'cross-sourc':154 'current':52,247 'cwd':211,304 'dedup':225 'determin':161 'directori':118 'discov':49 'discoveri':76,105,189 'distil':68 'domain':36 'downstream':224 'easi':191 'exampl':234 'explicit':170 'extern':145,221,333 'feed':96 'first':13,166,257 'format':227 'happen':122 'implement':80 'incident':210 'intertwin':316 'introduc':336 'invoc':279 'invok':124 'keep':177 'key':159 'later':55,182 'list':243 'load':7,15,35,39,89,132,179,212,258 'loader':103,176,299 'local':5,16,33,43,91,102,129,174,178,204,214,232,259,269,284,298,326 'logic':158,184 'lookup':152 'mcp':62,251,273 'merg':56,141,183,266,325 'method':82 'mix':148 'multi':323 'multi-sourc':322 'must':47 'narrow':282 'one':229 'pass':168 'pattern':67,289 'pipelin':126 'prevent':276 'project':2,11,30,86,150,164,197,215,312,318 'project-rel':149 'project-root':29,317 'project-root-scoped-local-skill-load':1 'rather':112 'real':307 'reason':193 'registri':59,222 'relat':18,151,261 'remain':190 'remot':143 'repositori':248,255 'resolut':320 'resolv':8,83,253 'result':268 'review':70 'root':3,12,31,99,136,165,198,256,264,313,319 'rule':160 'runtim':303 'safe':140 'scope':4,21,32,87,135,171,231,308,327 'see':228 'separ':180 'server':252 'set':130,233 'silent':281 'skill':6,17,28,34,38,46,75,94,175,205,242,260,274,285 'skill-discoveri':74 'skill-load':37 'skill-project-root-scoped-local-skill-loading' 'sourc':27,65,66,146,156,187,324,334 'source-specif':186 'source-ychampion' 'specif':188 'stabl':10,98,163 'subdirectori':278 'surfac':73,95,216,286 'topic-agent-skills' 'topic-ai-agents' 'topic-cli' 'topic-coding-agents' 'topic-context-engineering' 'topic-developer-tools' 'topic-mcp' 'topic-multi-agent' 'topic-terminal-ui' 'transient':116 'treat':195 'trigger':40 'whatev':115 'without':147 'work':117 'workspac':53,110","prices":[{"id":"9d40802e-b8bc-44d4-9736-a72fe9488754","listingId":"b08fd012-bd0a-4070-bd6f-0202da3f260b","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"ychampion","category":"cskill-agents","install_from":"skills.sh"},"createdAt":"2026-04-18T22:21:04.061Z"}],"sources":[{"listingId":"b08fd012-bd0a-4070-bd6f-0202da3f260b","source":"github","sourceId":"ychampion/cskill-agents/project-root-scoped-local-skill-loading","sourceUrl":"https://github.com/ychampion/cskill-agents/tree/main/skills/project-root-scoped-local-skill-loading","isPrimary":false,"firstSeenAt":"2026-04-18T22:21:04.061Z","lastSeenAt":"2026-04-22T00:56:54.795Z"}],"details":{"listingId":"b08fd012-bd0a-4070-bd6f-0202da3f260b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"ychampion","slug":"project-root-scoped-local-skill-loading","github":{"repo":"ychampion/cskill-agents","stars":34,"topics":["agent-skills","ai-agents","cli","coding-agents","context-engineering","developer-tools","mcp","multi-agent","terminal-ui"],"license":"mit","html_url":"https://github.com/ychampion/cskill-agents","pushed_at":"2026-04-04T14:13:23Z","description":"Agent skills for coding CLIs, multi-agent runtimes, context engines, MCP extensions, and terminal tooling. Instead of using claude code's source code, give your agent skills to create your own!","skill_md_sha":"e32ff9abde65e0f6520796d0838d93c323adcc78","skill_md_path":"skills/project-root-scoped-local-skill-loading/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/ychampion/cskill-agents/tree/main/skills/project-root-scoped-local-skill-loading"},"layout":"multi","source":"github","category":"cskill-agents","frontmatter":{"name":"project-root-scoped-local-skill-loading","description":"Resolve a stable project root first, then load local skills relative to that scope before combining them with other sources."},"skills_sh_url":"https://skills.sh/ychampion/cskill-agents/project-root-scoped-local-skill-loading"},"updatedAt":"2026-04-22T00:56:54.795Z"}}