[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BY4H11FSTEB64W7JVD4W5E":3,"skill-same:01M6BY4H11FSTEB64W7JVD4W5E":52},{"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":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":6,"ownerHtmlUrl":35,"ownerBlogUrl":36,"ownerDescription":6,"updatedAt":37,"install":38,"resources":51},"01M6BY4H11FSTEB64W7JVD4W5E","post-edit-conventions",null,"Monorepo coding conventions to follow when writing or editing code in this repository","tylerbutler\u002Ftools-monorepo","tylerbutler","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F19589?v=4","01M6BY414FRX1V1TCNCPMS81ZE","Tyler Butler","01M6BY4195PZPBKNQ8N9J1Z9WG",3,"MIT","https:\u002F\u002Fgithub.com\u002Ftylerbutler\u002Ftools-monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fpost-edit-conventions\u002FSKILL.md",[],[19,20,21,22,23,24],"post edit conventions","writing","code","repository","coding","monorepo","2026-11-10 10:12:30",false,"---\nname: post-edit-conventions\ndescription: Monorepo coding conventions to follow when writing or editing code in this repository\nuser-invocable: false\n---\n\n## Coding Conventions\n\nAlways follow these conventions when writing or editing code in this monorepo:\n\n### Formatting\n- **Tabs** for indentation (never spaces)\n- Biome handles formatting — don't manually adjust style\n\n### File Extensions\n- **No `.js` files** — use `.mjs` or `.cjs` for JavaScript\n- TypeScript files use `.ts` (ESM is default via `\"type\": \"module\"`)\n- This is enforced by the `NoJsFileExtensions` repopo policy\n\n### Imports\n- **No barrel re-exports** — import directly from the source module, not through index files\n- Use `pathe` instead of `node:path` for cross-platform path handling\n- Use `fs\u002Fpromises` (async) instead of `fs` sync methods (`readFile` not `readFileSync`)\n- Use explicit file extensions in imports where required\n\n### Dependencies\n- Internal workspace deps use `workspace:^` protocol\n- Never add runtime dependencies to `@tylerbu\u002Ffundamentals` (zero-dep package)\n- Use `pnpm` exclusively (never npm or yarn)\n\n### TypeScript\n- Use proper types — avoid `any`\n- Prefer `satisfies` over `as` for type assertions\n- Don't add lint-disable comments to work around type issues\n- All packages extend base tsconfig from `config\u002Ftsconfig.strict.json`\n\n### Package Structure\n- Output directory is `esm\u002F` (not `dist\u002F` or `lib\u002F`)\n- Source in `src\u002F`, tests in `test\u002F`\n- Every package needs `\"type\": \"module\"` in package.json\n- Package.json keys must be sorted (enforced by repopo)\n\n### Testing\n- Use Vitest (not Jest)\n- Test files: `test\u002F**\u002F*.test.ts`\n- Merge base config: `import defaultConfig from \"..\u002F..\u002Fconfig\u002Fvitest.config\"`\n","## Coding Conventions\n\nAlways follow these conventions when writing or editing code in this monorepo:\n\n### Formatting\n- **Tabs** for indentation (never spaces)\n- Biome handles formatting — don't manually adjust style\n\n### File Extensions\n- **No `.js` files** — use `.mjs` or `.cjs` for JavaScript\n- TypeScript files use `.ts` (ESM is default via `\"type\": \"module\"`)\n- This is enforced by the `NoJsFileExtensions` repopo policy\n\n### Imports\n- **No barrel re-exports** — import directly from the source module, not through index files\n- Use `pathe` instead of `node:path` for cross-platform path handling\n- Use `fs\u002Fpromises` (async) instead of `fs` sync methods (`readFile` not `readFileSync`)\n- Use explicit file extensions in imports where required\n\n### Dependencies\n- Internal workspace deps use `workspace:^` protocol\n- Never add runtime dependencies to `@tylerbu\u002Ffundamentals` (zero-dep package)\n- Use `pnpm` exclusively (never npm or yarn)\n\n### TypeScript\n- Use proper types — avoid `any`\n- Prefer `satisfies` over `as` for type assertions\n- Don't add lint-disable comments to work around type issues\n- All packages extend base tsconfig from `config\u002Ftsconfig.strict.json`\n\n### Package Structure\n- Output directory is `esm\u002F` (not `dist\u002F` or `lib\u002F`)\n- Source in `src\u002F`, tests in `test\u002F`\n- Every package needs `\"type\": \"module\"` in package.json\n- Package.json keys must be sorted (enforced by repopo)\n\n### Testing\n- Use Vitest (not Jest)\n- Test files: `test\u002F**\u002F*.test.ts`\n- Merge base config: `import defaultConfig from \"..\u002F..\u002Fconfig\u002Fvitest.config\"`\n",{"name":5,"description":7,"user-invocable":26},"main","77276eebb35d712fe74fbae30800230ea0dcefb9",".claude\u002Fskills\u002Fpost-edit-conventions",1,"https:\u002F\u002Fgithub.com\u002Ftylerbutler\u002Ftools-monorepo","https:\u002F\u002Fgithub.com\u002Ftylerbutler","https:\u002F\u002Ftylerbutler.com","2026-11-06 00:26:46",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add tylerbutler\u002Ftools-monorepo --skill post-edit-conventions",{"tool":44,"command":45},"bunx","bunx skills add tylerbutler\u002Ftools-monorepo --skill post-edit-conventions",{"tool":47,"command":48},"pnpm","pnpm dlx skills add tylerbutler\u002Ftools-monorepo --skill post-edit-conventions","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftylerbutler\u002Ftools-monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fpost-edit-conventions\u002FSKILL.md",true,[],[53,66,78,88,98,110],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":59,"publishedAt":25},"01M6BY4Q9V1GKP9ZXTY2DNHHRW","scaffold-package","Scaffold a new package in the monorepo with correct conventions, configs, and policy compliance","https:\u002F\u002Fgithub.com\u002Ftylerbutler\u002Ftools-monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fscaffold-package\u002FSKILL.md",[],[60,61,62,24,63,64,65],"scaffold package","package","scaffold","correct","compliance","policy",{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":25},"01M6BY4MV3T5NTQ5ZTQ2PKG4GS","release-check","Validate release readiness - changesets, policy compliance, build, test, and dependency sync","https:\u002F\u002Fgithub.com\u002Ftylerbutler\u002Ftools-monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frelease-check\u002FSKILL.md",[],[73,74,64,75,76,77,65],"release check","release","validate","sync","test",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":25},"01M6BY4KARPR8HM67XTAP6QK6G","pr-changeset-check","Check if PR has appropriate changesets before creating","https:\u002F\u002Fgithub.com\u002Ftylerbutler\u002Ftools-monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fpr-changeset-check\u002FSKILL.md",[],[85,86,87],"pr changeset check","changeset","pr",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":25},"01M6BY4EX1CAKF4FG9MNM3T91G","oclif-command-guide","Reference for OCLIF command patterns, base classes, and conventions used in CLI packages","https:\u002F\u002Fgithub.com\u002Ftylerbutler\u002Ftools-monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Foclif-command-guide\u002FSKILL.md",[],[95,96,97],"oclif command guide","cli","packages",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":25},"01M6BY4D2HXVXDG8TGZ7PG6X4G","nx-task-guide","Reference for Nx task architecture, orchestration patterns, and how to add or modify build tasks","https:\u002F\u002Fgithub.com\u002Ftylerbutler\u002Ftools-monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fnx-task-guide\u002FSKILL.md",[],[105,106,107,108,109],"nx task guide","orchestration","architecture","tasks","how",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":25},"01M6BY4BQ8KB6C1JJ1JAZMNRR0","nx-affected","Run Nx affected commands for the current changes","https:\u002F\u002Fgithub.com\u002Ftylerbutler\u002Ftools-monorepo\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fnx-affected\u002FSKILL.md",[],[117,118],"nx affected","run"]