[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KM5TH0ARBC0RCM1MVW8JQJ":3,"skill-same:01M6KM5TH0ARBC0RCM1MVW8JQJ":53},{"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":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":6,"ownerHtmlUrl":37,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":38,"install":39,"resources":52},"01M6KM5TH0ARBC0RCM1MVW8JQJ","query-layer-discipline",null,"Keep reads in selectors\u002Fquerysets and keep write logic in services without using jig.","Tetra-Research\u002Fjig","Tetra-Research","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F146581685?v=4","01M6KM4EG0ZAWRDQPSJZ4T4CWN","Tetra Research","01M6KM4EMC95A68J3CRCKTDNZD",6,"MIT","https:\u002F\u002Fgithub.com\u002FTetra-Research\u002Fjig\u002Fblob\u002Fmain\u002Feval\u002Fhead2head\u002Fprofiles\u002Fcontrol\u002Fskills\u002Fquery-layer-discipline\u002FSKILL.md",[],[19,20,21,22,23,24,25,26],"discipline","query","layer","query layer discipline","services","write","logic","keep","2026-11-10 10:12:30",false,"---\nname: query-layer-discipline\ndescription: Keep reads in selectors\u002Fquerysets and keep write logic in services without using jig.\n---\n\n# Query Layer Discipline (Control)\n\nUse this skill when introducing new read patterns.\nImplement the file edits directly. Do not return a checklist-only response.\n\n## Required Variables\n\n- `model_name`\n- `queryset_name`\n- `manager_name`\n- `selector_name`\n- `selector_file`\n- `view_name`\n\n## Required Output Contract\n\n1. Modify `models.py`, `selectors.py`, and `views.py`.\n2. In `models.py`, define `class EntityQuerySet(models.QuerySet)` with an `active(self)` method returning `self.filter(status=\"active\")`.\n3. In `models.py`, define `class EntityManager(models.Manager)` with:\n- `get_queryset(self)` returning `EntityQuerySet(self.model, using=self._db)`\n- `active(self)` returning `self.get_queryset().active()`\n4. In `class Entity(models.Model)`, assign `objects = EntityManager()` before the field declarations.\n5. In `selectors.py`, import `Entity` from `.models`.\n6. In `selectors.py`, define `def select_active_entities():` returning a parenthesized chained expression:\n- `Entity.objects.active()`\n- `.select_related()`\n7. In `views.py`, import `select_active_entities` from `.selectors`.\n8. In `entity_list`, assign `records = select_active_entities()` and preserve `return {\"results\": []}`.\n\n## Guardrails\n\n- Avoid query logic scattered in views.\n- Use the exact identifiers provided in the required variables.\n- Do not introduce additional selector helpers or unrelated view changes.\n","# Query Layer Discipline (Control)\n\nUse this skill when introducing new read patterns.\nImplement the file edits directly. Do not return a checklist-only response.\n\n## Required Variables\n\n- `model_name`\n- `queryset_name`\n- `manager_name`\n- `selector_name`\n- `selector_file`\n- `view_name`\n\n## Required Output Contract\n\n1. Modify `models.py`, `selectors.py`, and `views.py`.\n2. In `models.py`, define `class EntityQuerySet(models.QuerySet)` with an `active(self)` method returning `self.filter(status=\"active\")`.\n3. In `models.py`, define `class EntityManager(models.Manager)` with:\n- `get_queryset(self)` returning `EntityQuerySet(self.model, using=self._db)`\n- `active(self)` returning `self.get_queryset().active()`\n4. In `class Entity(models.Model)`, assign `objects = EntityManager()` before the field declarations.\n5. In `selectors.py`, import `Entity` from `.models`.\n6. In `selectors.py`, define `def select_active_entities():` returning a parenthesized chained expression:\n- `Entity.objects.active()`\n- `.select_related()`\n7. In `views.py`, import `select_active_entities` from `.selectors`.\n8. In `entity_list`, assign `records = select_active_entities()` and preserve `return {\"results\": []}`.\n\n## Guardrails\n\n- Avoid query logic scattered in views.\n- Use the exact identifiers provided in the required variables.\n- Do not introduce additional selector helpers or unrelated view changes.\n",{"name":5,"description":7},"main","ab37f4809db1129e69d61246bd7a5d3b21b7f79b","eval\u002Fhead2head\u002Fprofiles\u002Fcontrol\u002Fskills\u002Fquery-layer-discipline",0,"https:\u002F\u002Fgithub.com\u002FTetra-Research\u002Fjig","https:\u002F\u002Fgithub.com\u002FTetra-Research","2026-04-10 09:57:50",{"source":8,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add Tetra-Research\u002Fjig --skill query-layer-discipline",{"tool":45,"command":46},"bunx","bunx skills add Tetra-Research\u002Fjig --skill query-layer-discipline",{"tool":48,"command":49},"pnpm","pnpm dlx skills add Tetra-Research\u002Fjig --skill query-layer-discipline","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FTetra-Research\u002Fjig\u002Fblob\u002Fmain\u002Feval\u002Fhead2head\u002Fprofiles\u002Fcontrol\u002Fskills\u002Fquery-layer-discipline\u002FSKILL.md",true,[],[54,80,104,120,140,154],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":27},"01M6KMDJNF2XFW5VKNHT5KGA7M","velocity","Systematic DX improvement hunt — find friction, inconsistency, and missing abstractions across PRs, code, or tickets, then feed findings into \u002Fimprove. Use when looking for ways to accelerate development or compound Claude Code's utility.","https:\u002F\u002Fgithub.com\u002FTetra-Research\u002Fjig\u002Fblob\u002Fmain\u002Fskills\u002Fvelocity\u002FSKILL.md",[],[56,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79],"improvement","hunt","for","true","Accelerate","utility","ticket","missing","scope","id","module","across","dx","use","improve","Bash","code","development","component",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":91,"publishedAt":27},"01M6KMDF2VAYVDDQWM4A2HDZ5P","upgrade","Upgrade an existing skill or agent by auditing it, gathering user references, and rewriting it with real content. Use when a skill is thin, sloppy, missing gotchas, or needs improvement. Different from \u002Fimprove which creates new extensions.","https:\u002F\u002Fgithub.com\u002FTetra-Research\u002Fjig\u002Fblob\u002Fmain\u002Fskills\u002Fupgrade\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[82,92,93,94,68,95,96,74,97,24,98,99,75,76,100,101,102,61,103],"edit","with","it","existing skill","references","user","read","grep","content","which","Existing","extensions",{"skillNo":105,"name":75,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":110,"publishedAt":27},"01M6KMDABCDDRWHCPVGRJ7G3N1","Deliberately improve Claude Code by creating or updating skills, agents, hooks, rules, or MCP servers. Use when Claude keeps making the same mistake, a workflow is tedious, a new pattern needs enforcement, or you want to compound Claude's utility.","https:\u002F\u002Fgithub.com\u002FTetra-Research\u002Fjig\u002Fblob\u002Fmain\u002Fskills\u002Fimprove\u002FSKILL.md",[109],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[75,111,112,66,77,113,114,74,92,24,98,99,115,76,116,117,118,119],"pattern","you","enforcement","hooks","Rules","mcp servers","compound","workflow","MCP",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":27},"01M6KMD6HSWSET1HRR5AHT9HFT","clean-copy","Recreate the current branch with a clean, narrative commit history. Use before creating a PR from a messy development branch, after exploratory coding with WIP commits, or when commit history is hard to review.","https:\u002F\u002Fgithub.com\u002FTetra-Research\u002Fjig\u002Fblob\u002Fmain\u002Fskills\u002Fclean-copy\u002FSKILL.md",[],[127,128,129,99,130,131,76,132,78,133,134,135,136,137,64,93,138,139,74,98],"clean","copy","clean copy","history","gh","commits","pr","commit","review","branch","branch-name","narrative","name",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":27},"01M6KMD10AN05R0Q0PQPP8ZF16","audit","Audit installed skills and agents against best practices. Use when reviewing skill quality, checking for common problems, or before upgrading existing skills. Read-only — produces a report, changes nothing.","https:\u002F\u002Fgithub.com\u002FTetra-Research\u002Fjig\u002Fblob\u002Fmain\u002Fskills\u002Faudit\u002FSKILL.md",[],[142,147,102,63,148,149,74,98,99,150,151,152,153],"changes","read-only","only","common","quality","best practices","report",{"skillNo":155,"name":156,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":27},"01M6KMCX8WE6FFXZ9X50ESNHAF","typescript-update-model","https:\u002F\u002Fgithub.com\u002FTetra-Research\u002Fjig\u002Fblob\u002Fmain\u002Fexamples\u002Ftypescript-update-model\u002FSKILL.md",[],[160,161,162,163],"update","model","typescript update model","typescript"]