[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7CTMCSWDKHEEEXKGWEXB2PS":3,"skill-same:01M7CTMCSWDKHEEEXKGWEXB2PS":57},{"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":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":14,"repositoryHtmlUrl":28,"repositoryHomepageUrl":29,"ownerHtmlUrl":30,"ownerBlogUrl":31,"ownerDescription":6,"updatedAt":32,"install":33,"resources":46},"01M7CTMCSWDKHEEEXKGWEXB2PS","how",null,"Explore the codebase and explain how a subsystem, a feature or a flow works, as the architecture and runtime flow a senior engineer needs before working in it, with the files and functions to look at. Use for 'how does X work', a code walkthrough before changing code you do not know, and placement, ownership and layering questions ('where should this live', 'which package owns this', 'is this the right layer'). For why the code is the way it is, use discover:why. Not for a question that reading one function answers.","lyngon\u002Fdevkit","lyngon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F70928830?v=4","01M7CTHVD57GT6VR6Y5SES6GKR","Lyngon","01M7CTHVDSGGTXSY9S7M5MA8RA",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Flyngon\u002Fdevkit\u002Fblob\u002Fmain\u002Fplugins\u002Fdiscover\u002Fskills\u002Fhow\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: how\ndescription: Explore the codebase and explain how a subsystem, a feature or a flow works, as the architecture and runtime flow a senior engineer needs before working in it, with the files and functions to look at. Use for 'how does X work', a code walkthrough before changing code you do not know, and placement, ownership and layering questions ('where should this live', 'which package owns this', 'is this the right layer'). For why the code is the way it is, use discover:why. Not for a question that reading one function answers.\nargument-hint: \"\u003Cthe question, naming the code, subsystem or flow it is about>\"\n---\n\n# How\n\nExplore the codebase to answer \"how does X work?\" questions.\nProduce architectural explanations at the level of a senior engineer onboarding onto a subsystem, enough to build a working mental model, not so much that it reads like annotated source code.\n\nExplorers and the explainer are subagents that inherit the session's model.\nThey read and search, and they change nothing.\n\n## Assess complexity\n\nIf the scope is ambiguous, state your interpretation and explore.\nThe operator can redirect.\n\n- **Simple** (a single module, a small utility, a narrow question such as \"how does function X work\"): no explorers. One explainer explores and explains in a single pass. Go to \"Explain directly\".\n- **Complex** (a subsystem spanning multiple files or services, a cross-cutting feature, a full architectural overview): spawn parallel explorers first, then hand off to the explainer. Go to \"Explore\".\n\nWhen in doubt, take the simple path.\n\n## Explore, for a complex question\n\nDecompose the question into 2 to 4 exploration angles, each a distinct slice of the subsystem.\nSpawn all explorers in a single message, so that they run concurrently, and go on only once every finding is back.\n\nEach explorer gets the prompt in `references\u002Fexplorer-prompt.md` with its angle filled in.\nThen go to \"Synthesize\".\n\n## Explain directly, for a simple question\n\nSpawn one subagent that explores and explains in one pass.\n\nBuild its prompt from `references\u002Fexplainer-prompt.md` without the explorer-findings section.\nGo to \"Present\".\n\n## Synthesize, for a complex question\n\nOnce all explorers have returned, spawn one subagent to synthesize their findings into one explanation.\n\nBuild its prompt from `references\u002Fexplainer-prompt.md` with every explorer's findings filled in.\n\n## Present\n\nOnce the explainer's output is back, present it to the operator.\nLight edits for clarity or context from the conversation are fine.\nDo not substantially rewrite it.\n\n## Output format\n\nThe explanation uses the sections defined in `references\u002Fexplainer-prompt.md`, dropping any that do not apply: Overview, Key concepts, How it works, Where things live, Gotchas.\n","# How\n\nExplore the codebase to answer \"how does X work?\" questions.\nProduce architectural explanations at the level of a senior engineer onboarding onto a subsystem, enough to build a working mental model, not so much that it reads like annotated source code.\n\nExplorers and the explainer are subagents that inherit the session's model.\nThey read and search, and they change nothing.\n\n## Assess complexity\n\nIf the scope is ambiguous, state your interpretation and explore.\nThe operator can redirect.\n\n- **Simple** (a single module, a small utility, a narrow question such as \"how does function X work\"): no explorers. One explainer explores and explains in a single pass. Go to \"Explain directly\".\n- **Complex** (a subsystem spanning multiple files or services, a cross-cutting feature, a full architectural overview): spawn parallel explorers first, then hand off to the explainer. Go to \"Explore\".\n\nWhen in doubt, take the simple path.\n\n## Explore, for a complex question\n\nDecompose the question into 2 to 4 exploration angles, each a distinct slice of the subsystem.\nSpawn all explorers in a single message, so that they run concurrently, and go on only once every finding is back.\n\nEach explorer gets the prompt in `references\u002Fexplorer-prompt.md` with its angle filled in.\nThen go to \"Synthesize\".\n\n## Explain directly, for a simple question\n\nSpawn one subagent that explores and explains in one pass.\n\nBuild its prompt from `references\u002Fexplainer-prompt.md` without the explorer-findings section.\nGo to \"Present\".\n\n## Synthesize, for a complex question\n\nOnce all explorers have returned, spawn one subagent to synthesize their findings into one explanation.\n\nBuild its prompt from `references\u002Fexplainer-prompt.md` with every explorer's findings filled in.\n\n## Present\n\nOnce the explainer's output is back, present it to the operator.\nLight edits for clarity or context from the conversation are fine.\nDo not substantially rewrite it.\n\n## Output format\n\nThe explanation uses the sections defined in `references\u002Fexplainer-prompt.md`, dropping any that do not apply: Overview, Key concepts, How it works, Where things live, Gotchas.\n",{"name":5,"description":7,"argument-hint":24},"\u003Cthe question, naming the code, subsystem or flow it is about>","main","7d4c29d5ef25e4bff96b8ed951739cd04811984b","plugins\u002Fdiscover\u002Fskills\u002Fhow","https:\u002F\u002Fgithub.com\u002Flyngon\u002Fdevkit","https:\u002F\u002Fwww.lyngon.com","https:\u002F\u002Fgithub.com\u002Flyngon","www.lyngon.com","2026-11-14 19:00:56",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add lyngon\u002Fdevkit --skill how",{"tool":39,"command":40},"bunx","bunx skills add lyngon\u002Fdevkit --skill how",{"tool":42,"command":43},"pnpm","pnpm dlx skills add lyngon\u002Fdevkit --skill how","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flyngon\u002Fdevkit\u002Fblob\u002Fmain\u002Fplugins\u002Fdiscover\u002Fskills\u002Fhow\u002FSKILL.md",true,[47,53],{"path":48,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":51,"sourceHtmlUrl":52},"references\u002Fexplainer-prompt.md","REFERENCE","参考文档",3090,"https:\u002F\u002Fgithub.com\u002Flyngon\u002Fdevkit\u002Fblob\u002Fmain\u002Fplugins\u002Fdiscover\u002Fskills\u002Fhow\u002Freferences\u002Fexplainer-prompt.md",{"path":54,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":55,"sourceHtmlUrl":56},"references\u002Fexplorer-prompt.md",2756,"https:\u002F\u002Fgithub.com\u002Flyngon\u002Fdevkit\u002Fblob\u002Fmain\u002Fplugins\u002Fdiscover\u002Fskills\u002Fhow\u002Freferences\u002Fexplorer-prompt.md",[58,65,72,79,86,93],{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":19},"01M7CTNRE8KXX2CG9Q2XYYBTDE","unslop","Remove AI writing patterns from prose and give it a voice. Use whenever writing or editing non-code text (docs, READMEs, decision records, posts, commit messages, PR descriptions), before handing it over, and on request: \"unslop\", \"humanize\", \"make this sound human\", \"clean up this writing\", \"edit for voice\", \"de-AI this text\".","https:\u002F\u002Fgithub.com\u002Flyngon\u002Fdevkit\u002Fblob\u002Fmain\u002Fplugins\u002Fwriting\u002Fskills\u002Funslop\u002FSKILL.md",[],[],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":19},"01M7CTNHG9ENS5D6GCA9283V08","technical","Layered technical-writing standard: Diátaxis structure, Google developer style sentences, STE instruction rules, Global English syntax. Use before writing or reviewing docs, RFCs, readmes, PR descriptions, or commit messages, every time, however small the document.","https:\u002F\u002Fgithub.com\u002Flyngon\u002Fdevkit\u002Fblob\u002Fmain\u002Fplugins\u002Fwriting\u002Fskills\u002Ftechnical\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":19},"01M7CTND9T9J9P1TR6RRDVAXF4","simpler","Restate the last message in plain human language, with no jargon. Use when the reader did not follow the last message and says so: \"bro\", \"say that simpler\", \"in plain words\", \"no jargon\".","https:\u002F\u002Fgithub.com\u002Flyngon\u002Fdevkit\u002Fblob\u002Fmain\u002Fplugins\u002Fwriting\u002Fskills\u002Fsimpler\u002FSKILL.md",[],[],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":19},"01M7CTN8H1N39FCQ67AM7WD4S2","init","Set up a fresh repository, or adopt an existing one, to Lyngon conventions. Interviews the owner relentlessly about purpose, failure modes, audiences, stack and constraints, then writes INTENT.md, .claude\u002FCLAUDE.md, README.md, CONCEPTS.md, decision records, devenv, git hooks, CI and every package in the kind-first Lyngon layout. User-invoked only.","https:\u002F\u002Fgithub.com\u002Flyngon\u002Fdevkit\u002Fblob\u002Fmain\u002Fplugins\u002Frepo\u002Fskills\u002Finit\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":19},"01M7CTN36H4AR1GATK3KE5E85X","add-package","Create a package in a Lyngon repository in the directory its kind decides (apps\u002F, libs\u002F, contracts\u002F, tools\u002F, infra\u002F), with README.md, devenv.nix and the layer lint, and register it in its workspace and devenv. Use whenever a new app, service, CLI, library, adapter, contract, schema, tool, infra module or environment is needed, including when one feature needs several packages. Never create a package by hand.","https:\u002F\u002Fgithub.com\u002Flyngon\u002Fdevkit\u002Fblob\u002Fmain\u002Fplugins\u002Frepo\u002Fskills\u002Fadd-package\u002FSKILL.md",[],[],{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":19},"01M7CTMZE95Q1FJWKJRB8WCX4E","index","The index of Lyngon's principles, one line per principle saying when it applies and what it demands, each with a file under references\u002F. Invoke before work that takes judgment, such as a design choice, a refactor, a bug fix, a test, a measurement, a script, a document or a question to the owner; then read the file of each principle that applies.","https:\u002F\u002Fgithub.com\u002Flyngon\u002Fdevkit\u002Fblob\u002Fmain\u002Fplugins\u002Fprinciples\u002Fskills\u002Findex\u002FSKILL.md",[],[]]