[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EDT4B5EW664Z9S4KCM9SCC":3,"skill-same:01M6EDT4B5EW664Z9S4KCM9SCC":99},{"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":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":56,"ownerHtmlUrl":57,"ownerBlogUrl":58,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6EDT4B5EW664Z9S4KCM9SCC","lerd-preflight",null,"Run the full local verification gate for lerd before committing — build, test, vet, gofmt, UI tests, installer tests, then install the local build and smoke-test. Use before every commit or PR, and whenever asked to \"verify\", \"check CI locally\", or \"make sure it's green\".","lerd-env\u002Flerd","lerd-env","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F295201541?v=4","01M6EDSM8JFPD2Y57QMB2TMKH5","Lerd","01M6EDSMD3WKYZ4W9K3SA8MMCP",1512,"MIT","https:\u002F\u002Fgithub.com\u002Flerd-env\u002Flerd\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Flerd-preflight\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"lerd preflight","preflight","smoke","check ci locally","for","sure","make","tests","vet","full","local","green","build","gate","installer","test","use","install","verification gate","check","verify","ci","ui","verification","run","pr","commit","2026-11-10 10:12:30",false,"---\nname: lerd-preflight\ndescription: Run the full local verification gate for lerd before committing — build, test, vet, gofmt, UI tests, installer tests, then install the local build and smoke-test. Use before every commit or PR, and whenever asked to \"verify\", \"check CI locally\", or \"make sure it's green\".\n---\n\n# lerd preflight\n\nRun the exact checks CI runs, locally, plus install + smoke. Stop at the first\nfailure, report it plainly with the output, and fix before proceeding. Do not\nreport \"green\" unless every step below actually passed.\n\n## 1. Format (fastest signal)\n\n```bash\ngofmt -l .            # must print nothing\n```\n\nIf it lists files, run `gofmt -w .`, then re-check.\n\n## 2. Build the UI only if it changed\n\nIf anything under `internal\u002Fui\u002Fweb\u002F` changed:\n\n```bash\nmake build-ui\nmake test-ui          # Vitest\n```\n\nSkip both if you only touched Go — the embedded `dist\u002F` is reused.\n\n## 3. Go build, test, vet\n\n```bash\nCGO_ENABLED=1 go build .\u002Fcmd\u002Flerd\nCGO_ENABLED=1 go test .\u002F...\nCGO_ENABLED=1 go vet .\u002F...\n```\n\nOn macOS or a host without libayatana-appindicator, use the nogui path instead:\n`CGO_ENABLED=0 go build -tags nogui .\u002Fcmd\u002Flerd` (and `go test -tags nogui .\u002F...`).\n\n## 4. Installer tests, if install.sh changed\n\n```bash\nbats tests\u002Finstaller\u002Finstaller.bats\n```\n\n## 5. Install and smoke-test\n\n```bash\nmake install          # → ~\u002F.local\u002Fbin\u002Flerd, restarts lerd-ui\u002Fwatcher\n```\n\nThen actually drive the affected surface — a CLI command, a UI page, an MCP call —\nand observe the behaviour. A change with a runtime surface is not verified by\ntests alone. For UI-only work, `make install` restarts `lerd-ui`; reload the\ndashboard and exercise the changed view.\n\n## Rules\n\n- Never `sudo`. If a step needs privilege, ask the human to run it.\n- Never install anywhere but `~\u002F.local\u002Fbin\u002Flerd`.\n- If a step is skipped (e.g. UI tests because the UI was untouched), say so\n  explicitly rather than implying full coverage.\n","# lerd preflight\n\nRun the exact checks CI runs, locally, plus install + smoke. Stop at the first\nfailure, report it plainly with the output, and fix before proceeding. Do not\nreport \"green\" unless every step below actually passed.\n\n## 1. Format (fastest signal)\n\n```bash\ngofmt -l .            # must print nothing\n```\n\nIf it lists files, run `gofmt -w .`, then re-check.\n\n## 2. Build the UI only if it changed\n\nIf anything under `internal\u002Fui\u002Fweb\u002F` changed:\n\n```bash\nmake build-ui\nmake test-ui          # Vitest\n```\n\nSkip both if you only touched Go — the embedded `dist\u002F` is reused.\n\n## 3. Go build, test, vet\n\n```bash\nCGO_ENABLED=1 go build .\u002Fcmd\u002Flerd\nCGO_ENABLED=1 go test .\u002F...\nCGO_ENABLED=1 go vet .\u002F...\n```\n\nOn macOS or a host without libayatana-appindicator, use the nogui path instead:\n`CGO_ENABLED=0 go build -tags nogui .\u002Fcmd\u002Flerd` (and `go test -tags nogui .\u002F...`).\n\n## 4. Installer tests, if install.sh changed\n\n```bash\nbats tests\u002Finstaller\u002Finstaller.bats\n```\n\n## 5. Install and smoke-test\n\n```bash\nmake install          # → ~\u002F.local\u002Fbin\u002Flerd, restarts lerd-ui\u002Fwatcher\n```\n\nThen actually drive the affected surface — a CLI command, a UI page, an MCP call —\nand observe the behaviour. A change with a runtime surface is not verified by\ntests alone. For UI-only work, `make install` restarts `lerd-ui`; reload the\ndashboard and exercise the changed view.\n\n## Rules\n\n- Never `sudo`. If a step needs privilege, ask the human to run it.\n- Never install anywhere but `~\u002F.local\u002Fbin\u002Flerd`.\n- If a step is skipped (e.g. UI tests because the UI was untouched), say so\n  explicitly rather than implying full coverage.\n",{"name":5,"description":7},"main","42002a83742a4b695919dfe85fefd0764874dbdd",".claude\u002Fskills\u002Flerd-preflight",97,"https:\u002F\u002Fgithub.com\u002Flerd-env\u002Flerd","http:\u002F\u002Flerd.sh","https:\u002F\u002Fgithub.com\u002Flerd-env","https:\u002F\u002Flerd.sh","Open source local PHP development environment for Linux and macOS","2026-11-11 22:35:41",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add lerd-env\u002Flerd --skill lerd-preflight",{"tool":67,"command":68},"bunx","bunx skills add lerd-env\u002Flerd --skill lerd-preflight",{"tool":70,"command":71},"pnpm","pnpm dlx skills add lerd-env\u002Flerd --skill lerd-preflight","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flerd-env\u002Flerd\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Flerd-preflight\u002FSKILL.md",true,[75,81,85,91,95],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"assets\u002Fmodule-help.csv","ASSET","资产文件",112,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fbmad-module-builder\u002Fassets\u002Fsetup-skill-template\u002Fassets\u002Fmodule-help.csv",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"assets\u002Fmodule.yaml",96,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fbmad-module-builder\u002Fassets\u002Fsetup-skill-template\u002Fassets\u002Fmodule.yaml",{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},"scripts\u002Fcleanup-legacy.py","SCRIPT","脚本",7743,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fbmad-module-builder\u002Fassets\u002Fsetup-skill-template\u002Fscripts\u002Fcleanup-legacy.py",{"path":92,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":93,"sourceHtmlUrl":94},"scripts\u002Fmerge-config.py",14139,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fbmad-module-builder\u002Fassets\u002Fsetup-skill-template\u002Fscripts\u002Fmerge-config.py",{"path":96,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":97,"sourceHtmlUrl":98},"scripts\u002Fmerge-help-csv.py",6607,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fbmad-module-builder\u002Fassets\u002Fsetup-skill-template\u002Fscripts\u002Fmerge-help-csv.py",[100,114,139,167],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":46},"01M6EDT7MBV4DY2DEB1Y8AH6WQ","lerd-hello","Greets lerd sites. Use when the user asks to greet a site.","https:\u002F\u002Fgithub.com\u002Flerd-env\u002Flerd\u002Fblob\u002Fmain\u002Finternal\u002Fplugins\u002Fskeleton\u002FSKILL.md",[],[107,108,109,110,111,35,112,113],"hello","lerd hello","when","sites","greet","user","site",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":46},"01M6EDT0CJRTDGAXGZF2HJZ16B","lerd-open-pr","Draft and open a pull request the lerd way — issue-first, correct issue linking, human prose, none of the banned sections. Use when asked to open, prepare, or draft a PR for lerd. Never creates anything on GitHub without explicit per-action approval.","https:\u002F\u002Fgithub.com\u002Flerd-env\u002Flerd\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Flerd-open-pr\u002FSKILL.md",[],[121,122,44,123,124,125,126,127,128,129,130,131,132,109,133,35,23,134,135,136,137,138],"lerd open pr","open pr","open","correct","first","prose","approval","pull","pull request","prepare","github","linking","request","action","human","draft","issue","never",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":46},"01M6EDSW8C2VGTZDVPTVN6QAJB","lerd-add-service","Add or edit a lerd service preset (database, cache, search engine, admin dashboard) as YAML in the lerd-services store. Use whenever the task is to add a new service, a new version of a service, or wire a service into projects — never add services in Go.","https:\u002F\u002Fgithub.com\u002Flerd-env\u002Flerd\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Flerd-add-service\u002FSKILL.md",[],[146,147,148,149,150,151,152,153,154,138,155,35,156,157,158,159,160,161,162,163,164,165,166],"service","add service","lerd add service","add","new","search engine","store","task","cache","version","edit","engine","projects","services","as","yaml","admin","search","database","preset","dashboard",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":46},"01M6EDSR4GW8FY3HPXCEY0XGKV","lerd-add-framework","Add or extend a lerd framework definition (a new PHP framework or a new major version) as versioned YAML in the lerd-frameworks store. Use whenever the task involves framework detection, per-framework workers, env wiring, doctor checks, custom commands, or scaffolding — never branch on a framework name in Go.","https:\u002F\u002Fgithub.com\u002Flerd-env\u002Flerd\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Flerd-add-framework\u002FSKILL.md",[],[149,174,175,153,176,177,152,178,179,160,180,181,182,183,184,138,155,35,185,186,161,187,188,150,189],"lerd add framework","framework","wiring","custom","name","env","commands","scaffolding","frameworks","definition","workers","branch","detection","doctor","go","extend"]